def test_n3_cis(self): ehf_bench = [-8.651923514149, -10.530905169078] ekrhf = kmf_n3_none.e_tot self.assertAlmostEqual(ekrhf, ehf_bench[0], 6) ekrhf = kmf_n3_ewald.e_tot self.assertAlmostEqual(ekrhf, ehf_bench[1], 6) # KCIS myci = ci.KCIS(kmf_n3_none) eci, v = myci.kernel(nroots=2, kptlist=[0]) self.assertAlmostEqual(eci[0][0], 0.223920101177, 5) self.assertAlmostEqual(eci[0][1], 0.223920101177, 5) eci, v = myci.kernel(nroots=2, kptlist=[1]) self.assertAlmostEqual(eci[0][0], 0.291182202333, 5) self.assertAlmostEqual(eci[0][1], 0.330573456724, 5) myci = ci.KCIS(kmf_n3_ewald) myci.keep_exxdiv = True eci, v = myci.kernel(nroots=2, kptlist=[0]) self.assertAlmostEqual(eci[0][0], 0.693665750383, 5) self.assertAlmostEqual(eci[0][1], 0.693665750384, 5) eci, v = myci.kernel(nroots=2, kptlist=[1]) self.assertAlmostEqual(eci[0][0], 0.760927568875, 5) self.assertAlmostEqual(eci[0][1], 0.800318837778, 5)
def test_n3_cis_ewald(self): kmf_n3_ewald = scf.KRHF(cell, kpts=cell.make_kpts([2, 1, 1]), exxdiv='ewald') kmf_n3_ewald.kernel() ekrhf = kmf_n3_ewald.e_tot self.assertAlmostEqual(ekrhf, -10.530905169078, 6) myci = ci.KCIS(kmf_n3_ewald) myci.keep_exxdiv = True eci, v = myci.kernel(nroots=2, kptlist=[0]) self.assertAlmostEqual(eci[0][0], 0.693665750383, 5) self.assertAlmostEqual(eci[0][1], 0.693665750384, 5) eci, v = myci.kernel(nroots=2, kptlist=[1]) self.assertAlmostEqual(eci[0][0], 0.760927568875, 5) self.assertAlmostEqual(eci[0][1], 0.800318837778, 5)
def test_n3_cis_high_cost(self): kmf_n3_none = scf.KRHF(cell, kpts=cell.make_kpts([2, 1, 1]), exxdiv=None) kmf_n3_none.kernel() ekrhf = kmf_n3_none.e_tot self.assertAlmostEqual(ekrhf, -8.651923514149, 6) # KCIS myci = ci.KCIS(kmf_n3_none) eci, v = myci.kernel(nroots=2, kptlist=[0]) self.assertAlmostEqual(eci[0][0], 0.223920101177, 5) self.assertAlmostEqual(eci[0][1], 0.223920101177, 5) eci, v = myci.kernel(nroots=2, kptlist=[1]) self.assertAlmostEqual(eci[0][0], 0.291182202333, 5) self.assertAlmostEqual(eci[0][1], 0.330573456724, 5)
log.timer_debug1("transforming DF-CIS integrals", *cput0) return eris if __name__ == "__main__": from pyscf.pbc import gto, scf, ci cell = gto.Cell() cell.atom = """ C 0.000000000000 0.000000000000 0.000000000000 C 1.685068664391 1.685068664391 1.685068664391 """ cell.basis = "gth-szv" cell.pseudo = "gth-pade" cell.a = """ 0.000000000, 3.370137329, 3.370137329 3.370137329, 0.000000000, 3.370137329 3.370137329, 3.370137329, 0.000000000""" cell.unit = "B" cell.verbose = 7 cell.build() # Running HF and MP2 with 1x1x2 Monkhorst-Pack k-point mesh kmf = scf.KRHF(cell, kpts=cell.make_kpts([1, 1, 2]), exxdiv=None) ehf = kmf.kernel() mycis = ci.KCIS(kmf) e_cis, v_cis = mycis.kernel(nroots=1, kptlist=[0]) print(e_cis[0] - 0.2239201285373249)