def test_nonorth_lda_rho(self): ao = ao_north ref = numpy.einsum('gi,ij,gj->g', ao[0], dm[0], ao[0].conj()) pcell, contr_coeff = uncontract(mol_north) dm1 = numpy.einsum('pi,ij,qj->pq', contr_coeff, dm[0], contr_coeff) out = eval_rho(pcell, dm1) self.assertAlmostEqual(abs(out - ref).max(), 0, 9) out = eval_rho(pcell, dm1, hermi=1) self.assertAlmostEqual(abs(out - ref).max(), 0, 9)
def test_nonorth_lda_rho(self): ao = ao_north ref = numpy.einsum('gi,ij,gj->g', ao[0], dm[0], ao[0].conj()) pcell, contr_coeff = uncontract(mol_north) dm1 = numpy.einsum('pi,ij,qj->pq', contr_coeff, dm[0], contr_coeff) out = eval_rho(pcell, dm1) self.assertAlmostEqual(abs(out-ref).max(), 0, 9) out = eval_rho(pcell, dm1, hermi=1) self.assertAlmostEqual(abs(out-ref).max(), 0, 9)
def test_pbc_nonorth_lda_rho(self): ref = sum([numpy.einsum('gi,ij,gj->g', ao[0], dm[k], ao[0].conj()) for k,ao in enumerate(ao_kpts_north)]) pcell, contr_coeff = uncontract(cell_north) dm1 = numpy.einsum('pi,kij,qj->kpq', contr_coeff, dm, contr_coeff) out = eval_rho(pcell, dm1, kpts=kpts) self.assertAlmostEqual(abs(out-ref).max(), 0, 9) out = eval_rho(pcell, dm1, hermi=1, kpts=kpts) self.assertTrue(out.dtype == numpy.double) self.assertAlmostEqual(abs(out-ref).max(), 0, 9)
def test_pbc_nonorth_lda_rho(self): ref = sum([numpy.einsum('gi,ij,gj->g', ao[0], dm[k], ao[0].conj()) for k,ao in enumerate(ao_kpts_north)]) pcell, contr_coeff = uncontract(cell_north) dm1 = numpy.einsum('pi,kij,qj->kpq', contr_coeff, dm, contr_coeff) out = eval_rho(pcell, dm1, kpts=kpts) self.assertAlmostEqual(abs(out-ref).max(), 0, 9) out = eval_rho(pcell, dm1, hermi=1, kpts=kpts) self.assertTrue(out.dtype == numpy.double) self.assertAlmostEqual(abs(out-ref).max(), 0, 9)
def test_pbc_nonorth_gga_rho(self): ao = ao_gamma_north ref = numpy.einsum('ngi,ij,gj->ng', ao, dm[0], ao[0].conj()) pcell, contr_coeff = uncontract(cell_north) dm1 = numpy.einsum('pi,ij,qj->pq', contr_coeff, dm[0], contr_coeff) out = eval_rho(pcell, dm1, xctype='GGA') self.assertAlmostEqual(abs(out-ref).max(), 0, 9) ref = sum([numpy.einsum('ngi,ij,gj->ng', ao, dm[k], ao[0].conj()) for k,ao in enumerate(ao_kpts_north)]) dm1 = numpy.einsum('pi,kij,qj->kpq', contr_coeff, dm, contr_coeff) out = eval_rho(pcell, dm1, kpts=kpts, xctype='GGA') self.assertAlmostEqual(abs(out-ref).max(), 0, 9)
def test_pbc_nonorth_gga_rho(self): ao = ao_gamma_north ref = numpy.einsum('ngi,ij,gj->ng', ao, dm[0], ao[0].conj()) pcell, contr_coeff = uncontract(cell_north) dm1 = numpy.einsum('pi,ij,qj->pq', contr_coeff, dm[0], contr_coeff) out = eval_rho(pcell, dm1, xctype='GGA') self.assertAlmostEqual(abs(out-ref).max(), 0, 9) ref = sum([numpy.einsum('ngi,ij,gj->ng', ao, dm[k], ao[0].conj()) for k,ao in enumerate(ao_kpts_north)]) dm1 = numpy.einsum('pi,kij,qj->kpq', contr_coeff, dm, contr_coeff) out = eval_rho(pcell, dm1, kpts=kpts, xctype='GGA') self.assertAlmostEqual(abs(out-ref).max(), 0, 9)
def test_nonorth_gga_rho(self): ao = ao_north ref = numpy.einsum('ngi,ij,gj->ng', ao, dm[0], ao[0].conj()) pcell, contr_coeff = uncontract(mol_north) dm1 = numpy.einsum('pi,ij,qj->pq', contr_coeff, dm[0], contr_coeff) out = eval_rho(pcell, dm1, xctype='GGA') self.assertAlmostEqual(abs(out-ref).max(), 0, 9) #out = eval_rho(pcell, dm1, hermi=1, xctype='GGA') self.assertRaises(RuntimeError, eval_rho, pcell, dm1, xctype='GGA', hermi=1)
def test_nonorth_gga_rho(self): ao = ao_north ref = numpy.einsum('ngi,ij,gj->ng', ao, dm[0], ao[0].conj()) pcell, contr_coeff = uncontract(mol_north) dm1 = numpy.einsum('pi,ij,qj->pq', contr_coeff, dm[0], contr_coeff) out = eval_rho(pcell, dm1, xctype='GGA') self.assertAlmostEqual(abs(out-ref).max(), 0, 9) #out = eval_rho(pcell, dm1, hermi=1, xctype='GGA') self.assertRaises(RuntimeError, eval_rho, pcell, dm1, xctype='GGA', hermi=1)
def test_pbc_nonorth_lda_rho_submesh(self): cell = gto.M(atom='H 2 3 4; H 3 4 3', basis=[[0, (2.2, 1)], [1, (1.9, 1)]], unit='B', mesh=[7, 6, 5], a=numpy.eye(3) * 8 + numpy.random.rand(3, 3)) grids = cell.get_uniform_grids() ao = cell.pbc_eval_gto('GTOval', grids) nao = cell.nao_nr() dm = numpy.random.random((nao, nao)) dm = dm + dm.T ref = numpy.einsum('gi,ij,gj->g', ao, dm, ao.conj()) ref = ref.reshape(cell.mesh)[1:6, 2:5, 2:4].ravel() out = eval_rho(cell, dm, offset=[1, 2, 2], submesh=[5, 3, 2]) self.assertAlmostEqual(abs(out - ref).max(), 0, 9)
def test_pbc_nonorth_lda_rho_submesh(self): cell = gto.M(atom='H 2 3 4; H 3 4 3', basis=[[0, (2.2, 1)], [1, (1.9, 1)]], unit='B', mesh=[7,6,5], a=numpy.eye(3)*8+numpy.random.rand(3,3)) grids = cell.get_uniform_grids() ao = cell.pbc_eval_gto('GTOval', grids) nao = cell.nao_nr() dm = numpy.random.random((nao,nao)) dm = dm + dm.T ref = numpy.einsum('gi,ij,gj->g', ao, dm, ao.conj()) ref = ref.reshape(cell.mesh)[1:6,2:5,2:4].ravel() out = eval_rho(cell, dm, offset=[1,2,2], submesh=[5,3,2]) self.assertAlmostEqual(abs(out-ref).max(), 0, 9)