Esempio n. 1
0
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)
Esempio n. 2
0
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
Esempio n. 3
0
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
Esempio n. 4
0
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)
Esempio n. 5
0
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()
Esempio n. 6
0
def test_default(lattice):
    sf = spinor(lattice)
    assert sf.location == "CUDA"
    assert sf.ncolor == 3
    assert sf.nspin == 4
    assert sf.nvec == 1