Esempio n. 1
0
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
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_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()
Esempio n. 4
0
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)
Esempio n. 5
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
Esempio n. 6
0
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)
Esempio n. 7
0
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
Esempio n. 8
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. 9
0
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)
Esempio n. 10
0
def test_default(lattice):
    gf = gauge(lattice)
    assert gf.location == "CUDA"
    assert gf.reconstruct == "NO"
    assert gf.geometry == "VECTOR"