def test_init(lib, lattice, device, dtype): sf = spinor(lattice, dtype=dtype, device=device) sf.zero() assert (sf.field == 0).all() assert sf.norm1() == 0 assert sf.norm2() == 0 sf.uniform() assert np.isclose(sf.field.mean(), 0.5 + 0.5j, atol=0.1) sf.gaussian() assert np.isclose(sf.field.mean(), 0.0, atol=0.1)
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_params(lib, lattice, device, dtype): sf = spinor(lattice, dtype=dtype, device=device) params = sf.quda_params if dtype == "float64": # single wants order float4 assert sf.is_native() assert params.nColor == sf.ncolor assert params.nSpin == sf.nspin assert params.nVec == sf.nvec assert params.gammaBasis == sf.quda_gamma_basis assert params.pc_type == sf.quda_pc_type assert params.location == sf.quda_location assert params.fieldOrder == sf.quda_order assert params.siteOrder == sf.quda_site_order assert addressof(params.v) == sf.ptr assert params.Precision() == sf.quda_precision assert params.nDim == sf.ndims assert tuple(params.x)[:sf.ndims] == sf.dims assert params.pad == sf.pad assert params.ghostExchange == sf.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_gamma5(lib, lattice, device, gamma, dtype=None): sf = spinor(lattice, dtype=dtype, device=device, gamma_basis=gamma) sf.uniform() sf2 = sf.gamma5().apply_gamma5() assert (sf.field == sf2.field).all()
def test_default(lattice): sf = spinor(lattice) assert sf.location == "CUDA" assert sf.ncolor == 3 assert sf.nspin == 4 assert sf.nvec == 1