def test_params(lib, lattice, device, dtype): gf = gauge(lattice, dtype=dtype, device=device) dirac = gf.Dirac() params = dirac.quda_params assert dirac.precision == gf.precision assert params.type == dirac.quda_type assert params.kappa == dirac.kappa assert params.m5 == dirac.m5 assert params.Ls == dirac.Ls assert params.mu == dirac.mu assert params.epsilon == dirac.epsilon
def test_zero(lib, lattice, device, gamma, dtype=None): gf = gauge(lattice, dtype=dtype, device=device) gf.gaussian() dirac = gf.Dirac(kappa=0.01) rhs = spinor(lattice, dtype=dtype, device=device, gamma_basis=gamma) rhs.uniform() mat = dirac.M out = mat.solve(rhs) res = mat(out) res.field -= rhs.field res = res.norm() / rhs.norm() assert res < 1e-9
def test_zero(lib, lattice, device, dtype): gf = gauge(lattice, dtype=dtype, device=device) gf.zero() assert (gf.field == 0).all() assert gf.plaquette() == (0, 0, 0) assert gf.topological_charge() == (0, (0, 0, 0)) assert gf.norm1() == 0 assert gf.norm2() == 0 assert gf.abs_max() == 0 assert gf.abs_min() == 0 assert gf.project() == 4 * np.prod(lattice) gf.zero()
def test_unity(lib, lattice, procs, device, dtype): comm = get_cart(procs) gf = gauge(lattice, dtype=dtype, device=device, comm=comm) gf.unity() assert gf.norm1() == 3 * 4 * np.prod(lattice) * np.prod(procs) assert gf.norm2() == 3 * 4 * np.prod(lattice) * np.prod(procs) assert gf.abs_max() == 1 assert gf.abs_min() == 0 assert gf.project() == 0 assert gf.plaquette() == (1, 1, 1) topo = gf.topological_charge() assert np.isclose(topo[0], -3 / 4 / np.pi ** 2 * np.prod(lattice) * np.prod(procs)) assert topo[1] == (0, 0, 0)
def test_matrix(lib, lattice, device, dtype): gf = gauge(lattice, dtype=dtype, device=device) dirac = gf.Dirac() matrix = dirac.M assert matrix.key == "M" assert "Wilson" in matrix.name assert matrix.shift == 0 assert matrix.precision == get_precision(dtype) assert matrix.flops == 0 assert matrix.hermitian == False assert matrix.is_wilson == True assert matrix.is_staggered == False assert matrix.is_dwf == False assert matrix.is_coarse == False
def test_unity(lib, lattice, device, dtype): gf = gauge(lattice, dtype=dtype, device=device) gf.unity() assert gf.plaquette() == (1, 1, 1) topo = gf.topological_charge() assert np.isclose(topo[0], -3 / 4 / np.pi**2 * np.prod(lattice)) assert topo[1] == (0, 0, 0) assert gf.norm1() == 3 * 4 * np.prod(lattice) assert gf.norm2() == 3 * 4 * np.prod(lattice) assert gf.norm1() == 3 * 4 * np.prod(lattice) assert gf.norm2() == 3 * 4 * np.prod(lattice) assert gf.abs_max() == 1 assert gf.abs_min() == 0 assert gf.project() == 0 assert np.allclose(gf.plaquette_field().trace(), 3) assert np.allclose(gf.rectangle_field().trace(), 3)
def test_params(lib, lattice, device, dtype): gf = gauge(lattice, dtype=dtype, device=device) params = gf.quda_params assert gf.is_native() assert params.nColor == 3 assert params.nFace == 0 assert params.reconstruct == gf.quda_reconstruct assert params.location == gf.quda_location assert params.order == gf.quda_order assert params.t_boundary == gf.quda_t_boundary assert params.link_type == gf.quda_link_type assert params.geometry == gf.quda_geometry assert addressof(params.gauge) == gf.ptr assert params.Precision() == gf.quda_precision assert params.nDim == gf.ndims assert tuple(params.x)[:gf.ndims] == gf.dims assert params.pad == gf.pad assert params.ghostExchange == gf.quda_ghost_exchange
def test_zero(lib, lattice, device, gamma, dtype=None): gf = gauge(lattice, dtype=dtype, device=device) gf.zero() sf = spinor(lattice, dtype=dtype, device=device, gamma_basis=gamma) sf.uniform() kappa = random() dirac = gf.Dirac(kappa=kappa) assert (dirac.M(sf).field == sf.field).all() assert (dirac.Mdag(sf).field == sf.field).all() assert (dirac.MdagM(sf).field == sf.field).all() assert (dirac.MMdag(sf).field == sf.field).all() mu = random() dirac = gf.Dirac(kappa=kappa, mu=mu) sfmu = (2 * kappa * mu) * 1j * sf.gamma5().field assert np.allclose(dirac.M(sf).field, sf.field + sfmu) assert np.allclose(dirac.Mdag(sf).field, sf.field - sfmu) assert np.allclose( dirac.MdagM(sf).field, (1 + (2 * kappa * mu)**2) * sf.field) assert np.allclose( dirac.MMdag(sf).field, (1 + (2 * kappa * mu)**2) * sf.field)
def test_random(lib, lattice, device, dtype): gf = gauge(lattice, dtype=dtype, device=device) gf.gaussian() assert np.allclose(gf.plaquette()[0], gf.plaquette_field().trace().mean() / 3)
def test_default(lattice): gf = gauge(lattice) assert gf.location == "CUDA" assert gf.reconstruct == "NO" assert gf.geometry == "VECTOR"