Ejemplo n.º 1
0
def test_2323_contraction(no, nv, frac):
    w = np.ascontiguousarray(np.random.rand(nv, nv, nv, nv))
    t_shape = (no, no, nv, nv)
    nnz = int(np.prod(t_shape) * frac)
    t2 = create_sparse_ndarray(t_shape, nnz)

    m = int(t2.size * frac)

    # Compress by getting the largest m elements
    t2_compressed = SparseTensor4d(t2, t2.shape, m, "largest")

    # t2new += lib.einsum('abcd,ijcd->ijab', Wvvvv, tau)
    t2_new_np = np.einsum("abcd,ijcd->ijab", w, t2, order="C")
    t2_new_fri = np.zeros(t2.shape, order="C")
    contract_DTSpT(w, t2_compressed, t2_new_fri, "2323")
    npt.assert_almost_equal(t2_new_fri, t2_new_np)
Ejemplo n.º 2
0
def test_0312_contraction(no, nv, frac):
    t_shape = (no, no, nv, nv)
    nnz = int(np.prod(t_shape) * frac)
    t2 = create_sparse_ndarray(t_shape, nnz)
    ovov = np.ascontiguousarray(np.random.rand(no, nv, no, nv))

    m = int(t2.size * frac)

    # Compress by getting the largest m elements
    t2_compressed = SparseTensor4d(t2, t2.shape, m, "largest")

    Wakci_np = -0.5 * np.einsum("lckd,ilda->akci", ovov, t2, order="C")
    Wakci = np.zeros(Wakci_np.shape, order="C")
    contract_DTSpT(ovov, t2_compressed, Wakci, "0312")

    npt.assert_almost_equal(Wakci, Wakci_np)
Ejemplo n.º 3
0
def test_0101_contraction(no, nv, frac):
    w = np.ascontiguousarray(np.random.rand(no, no, no, no))

    t_shape = (no, no, nv, nv)
    nnz = int(np.prod(t_shape) * frac)
    t2 = create_sparse_ndarray(t_shape, nnz)

    m = int(t2.size * frac)

    # Compress by getting the largest m elements
    t2_compressed = SparseTensor4d(t2, t2.shape, m, "largest")

    t2_new_np = np.einsum("klij,klab->ijab", w, t2, order="C")
    t2_new_fri = np.zeros(t2.shape, order="C")
    contract_DTSpT(w, t2_compressed, t2_new_fri, "0101")

    npt.assert_almost_equal(t2_new_fri, t2_new_np)
Ejemplo n.º 4
0
def test_1323_contraction(no, nv, frac):
    t_shape = (no, no, nv, nv)
    nnz = int(np.prod(t_shape) * frac)
    t2 = create_sparse_ndarray(t_shape, nnz)

    ovov = np.ascontiguousarray(np.random.rand(no, nv, no, nv))

    m = int(t2.size * frac)

    # Compress by getting the largest m elements
    t2_compressed = SparseTensor4d(t2, t2.shape, m, "largest")

    Wklij_np = np.einsum("kcld,ijcd->klij", ovov, t2, order="C")
    Wklij = np.zeros(Wklij_np.shape, order="C")
    contract_DTSpT(ovov, t2_compressed, Wklij, "1323")

    npt.assert_almost_equal(Wklij, Wklij_np)