def test_pbc_orth_lda_ints(self): ref = numpy.array([numpy.einsum('gi,gj,g->ij', ao[0].conj(), ao[0], vxc[0]) for ao in ao_kpts_orth]) pcell, contr_coeff = uncontract(cell_orth) out = eval_mat(pcell, vxc[0], hermi=0, kpts=kpts) out = numpy.einsum('pi,kpq,qj->kij', contr_coeff, out, contr_coeff) self.assertAlmostEqual(abs(out-ref).max(), 0, 9) out = eval_mat(pcell, vxc[0], hermi=1, kpts=kpts) out = numpy.einsum('pi,kpq,qj->kij', contr_coeff, out, contr_coeff) self.assertAlmostEqual(abs(out-ref).max(), 0, 9)
def test_nonorth_lda_ints(self): ao = ao_north ref = numpy.einsum('gi,gj,g->ij', ao[0], ao[0], vxc[0]) pcell, contr_coeff = uncontract(mol_north) out = eval_mat(pcell, vxc[0]) out = numpy.einsum('pi,pq,qj->ij', contr_coeff, out, contr_coeff) self.assertAlmostEqual(abs(out - ref).max(), 0, 9) out = eval_mat(pcell, vxc[0], hermi=1) out = numpy.einsum('pi,pq,qj->ij', contr_coeff, out, contr_coeff) self.assertAlmostEqual(abs(out - ref).max(), 0, 9)
def test_nonorth_lda_ints(self): ao = ao_north ref = numpy.einsum('gi,gj,g->ij', ao[0], ao[0], vxc[0]) pcell, contr_coeff = uncontract(mol_north) out = eval_mat(pcell, vxc[0]) out = numpy.einsum('pi,pq,qj->ij', contr_coeff, out, contr_coeff) self.assertAlmostEqual(abs(out-ref).max(), 0, 9) out = eval_mat(pcell, vxc[0], hermi=1) out = numpy.einsum('pi,pq,qj->ij', contr_coeff, out, contr_coeff) self.assertAlmostEqual(abs(out-ref).max(), 0, 9)
def test_pbc_nonorth_overlap(self): ref = cell_north.pbc_intor('int1e_ovlp', kpts=kpts) pcell, contr_coeff = uncontract(cell_north) pcell.mesh = [30] * 3 w = gen_grid.UniformGrids(pcell).weights out = eval_mat(pcell, w, hermi=0, kpts=kpts) out = numpy.einsum('pi,kpq,qj->kij', contr_coeff, out, contr_coeff) self.assertAlmostEqual(abs(out - ref).max(), 0, 9) out = eval_mat(pcell, w, hermi=1, kpts=kpts) out = numpy.einsum('pi,kpq,qj->kij', contr_coeff, out, contr_coeff) self.assertAlmostEqual(abs(out - ref).max(), 0, 9)
def test_pbc_orth_overlap(self): ref = cell_orth.pbc_intor('int1e_ovlp', kpts=kpts) pcell, contr_coeff = uncontract(cell_orth) pcell.mesh = [30]*3 w = gen_grid.UniformGrids(pcell).weights out = eval_mat(pcell, w, hermi=0, kpts=kpts) out = numpy.einsum('pi,kpq,qj->kij', contr_coeff, out, contr_coeff) self.assertAlmostEqual(abs(out-ref).max(), 0, 9) out = eval_mat(pcell, w, hermi=1, kpts=kpts) out = numpy.einsum('pi,kpq,qj->kij', contr_coeff, out, contr_coeff) self.assertAlmostEqual(abs(out-ref).max(), 0, 9)
def test_nonorth_gga_ints(self): ao = ao_north ref = numpy.einsum('ngi,gj,ng->ij', ao, ao[0], vxc) pcell, contr_coeff = uncontract(mol_north) out = eval_mat(pcell, vxc, xctype='GGA', hermi=0) out = numpy.einsum('pi,pq,qj->ij', contr_coeff, out, contr_coeff) self.assertAlmostEqual(abs(out - ref).max(), 0, 9)
def test_nonorth_gga_ints(self): ao = ao_north ref = numpy.einsum('ngi,gj,ng->ij', ao, ao[0], vxc) pcell, contr_coeff = uncontract(mol_north) out = eval_mat(pcell, vxc, xctype='GGA', hermi=0) out = numpy.einsum('pi,pq,qj->ij', contr_coeff, out, contr_coeff) self.assertAlmostEqual(abs(out-ref).max(), 0, 9)
def test_pbc_orth_gga_ints(self): ref = numpy.array([numpy.einsum('ngi,gj,ng->ij', ao.conj(), ao[0], vxc) for ao in ao_kpts_orth]) pcell, contr_coeff = uncontract(cell_orth) out = eval_mat(pcell, vxc, xctype='GGA', hermi=0, kpts=kpts) out = numpy.einsum('pi,kpq,qj->kij', contr_coeff, out, contr_coeff) self.assertAlmostEqual(abs(out-ref).max(), 0, 9) #out = eval_mat(pcell, vxc, xctype='GGA', hermi=1, kpts=kpts) self.assertRaises(RuntimeError, eval_mat, pcell, vxc, xctype='GGA', hermi=1, kpts=kpts)