def test_dmd_high_cost(self): cell = gto.Cell() cell.atom = ''' C 0.000000000000 0.000000000000 0.000000000000 C 1.685068664391 1.685068664391 1.685068664391 ''' cell.basis = {'C': [[0, (0.8, 1.0)], [1, (1.0, 1.0)]]} 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 = 5 cell.build() nmp = [1, 1, 2] # treating 1*1*2 supercell at gamma point supcell = super_cell(cell, nmp) gmf = scf.GHF(supcell, exxdiv=None) ehf = gmf.kernel() gcc = cc.GCCSD(gmf) gcc.conv_tol = 1e-12 gcc.conv_tol_normt = 1e-10 gcc.max_cycle = 250 ecc, t1, t2 = gcc.kernel() print('GHF energy (supercell) %.7f \n' % (float(ehf) / 2.)) print('GCCSD correlation energy (supercell) %.7f \n' % (float(ecc) / 2.)) eom = eom_gccsd.EOMIP(gcc) e1, v = eom.ipccsd(nroots=2) eom = eom_gccsd.EOMEA(gcc) e2, v = eom.eaccsd(nroots=2, koopmans=True) # Running HF and CCSD with 1x1x2 Monkhorst-Pack k-point mesh kmf = scf.KGHF(cell, kpts=cell.make_kpts(nmp), exxdiv=None) ehf2 = kmf.kernel() mycc = cc.KGCCSD(kmf) mycc.conv_tol = 1e-12 mycc.conv_tol_normt = 1e-10 mycc.max_cycle = 250 ecc2, t1, t2 = mycc.kernel() print('GHF energy %.7f \n' % (float(ehf2))) print('GCCSD correlation energy %.7f \n' % (float(ecc2))) kptlist = cell.make_kpts(nmp) eom = EOMIP(mycc) e1_obt, v = eom.ipccsd(nroots=2, kptlist=[0]) eom = EOMEA(mycc) e2_obt, v = eom.eaccsd(nroots=2, koopmans=True, kptlist=[0]) assert (ehf / 2 - ehf2 < 1e-10) assert (ecc / 2 - ecc2 < 1e-10) assert (e1[0] - (e1_obt[0][0]) < 1e-7) assert (e2[0] - (e2_obt[0][0]) < 1e-7)
def test_n3_diffuse_frozen(self): ehf2 = kmf.e_tot self.assertAlmostEqual(ehf2, -6.1870676561725695, 6) mycc_frozen = cc.KGCCSD(kmf, frozen=[[0, 1], [0, 1, 2, 3]]) mycc_frozen.conv_tol = 1e-7 mycc_frozen.conv_tol_normt = 1e-7 eris = mycc_frozen.ao2mo() eris.mo_energy = [ eris.fock[ikpt].diagonal().real for ikpt in range(mycc_frozen.nkpts) ] ecc2, t1, t2 = mycc_frozen.kernel(eris=eris) self.assertAlmostEqual(ecc2, -0.0442506265840587, 6) eom = EOMIP(mycc_frozen) imds = eom.make_imds(eris=eris) e1_obt, v = eom.ipccsd(nroots=3, koopmans=False, kptlist=[0], imds=imds) self.assertAlmostEqual(e1_obt[0][0], -1.1316152294295743, 6) self.assertAlmostEqual(e1_obt[0][1], -1.1316152294295743, 6) self.assertAlmostEqual(e1_obt[0][2], -1.104163717600433, 6) e1_obt, v = eom.ipccsd(nroots=3, koopmans=True, kptlist=[1], imds=imds) self.assertAlmostEqual(e1_obt[0][0], -0.8983145129187627, 6) self.assertAlmostEqual(e1_obt[0][1], -0.8983145129187627, 6) self.assertAlmostEqual(e1_obt[0][2], -0.8983139520017552, 6) eom = EOMEA(mycc_frozen) imds = eom.make_imds(eris=eris) e2_obt, v = eom.eaccsd(nroots=3, kptlist=[0], imds=imds) self.assertAlmostEqual(e2_obt[0][0], 1.2572812499753756, 6) self.assertAlmostEqual(e2_obt[0][1], 1.2572812532456588, 6) self.assertAlmostEqual(e2_obt[0][2], 1.280747357928012, 6) eom = EOMEA(mycc_frozen) e2_obt, v = eom.eaccsd(nroots=3, koopmans=True, kptlist=[1], imds=imds) self.assertAlmostEqual(e2_obt[0][0], 1.229802629928757, 6) self.assertAlmostEqual(e2_obt[0][1], 1.229802629928764, 6) self.assertAlmostEqual(e2_obt[0][2], 1.384394578043613, 6)
def test_n3_diffuse_star(self): '''Tests EOM-CCSD* method.''' cell = make_test_cell.test_cell_n3_diffuse() nmp = [1, 1, 2] ''' # treating 1*1*2 supercell at gamma point supcell = super_cell(cell,nmp) gmf = scf.GHF(supcell,exxdiv=None) ehf = gmf.kernel() gcc = cc.GCCSD(gmf) gcc.conv_tol=1e-12 gcc.conv_tol_normt=1e-10 gcc.max_cycle=250 ecc, t1, t2 = gcc.kernel() print('GHF energy (supercell) %.7f \n' % (float(ehf)/2.)) print('GCCSD correlation energy (supercell) %.7f \n' % (float(ecc)/2.)) #eom = eom_gccsd.EOMIP(gcc) #e1, v = eom.ipccsd_star(nroots=6, koopmans=True) eom = eom_gccsd.EOMEA(gcc) e2, v = eom.eaccsd_star(nroots=9, koopmans=True) ''' ehf2 = kmf.e_tot self.assertAlmostEqual(ehf2, -6.1870676561725695, 6) ecc2 = mycc.e_corr self.assertAlmostEqual(ecc2, -0.0676483716898783, 6) eom = EOMIP(mycc) e1_obt = eom.ipccsd_star(nroots=3, koopmans=True, kptlist=[0], eris=eris) self.assertAlmostEqual(e1_obt[0][0], -1.1452481194582802, 6) self.assertAlmostEqual(e1_obt[0][1], -1.1452481194456137, 6) self.assertAlmostEqual(e1_obt[0][2], -1.1174912094746994, 6) eom = EOMEA(mycc) e1_obt = eom.eaccsd_star(nroots=2, koopmans=True, kptlist=[0, 1], eris=eris) self.assertAlmostEqual(e1_obt[0][0], 1.260627794895514, 6) self.assertAlmostEqual(e1_obt[0][1], 1.260627794895514, 6) self.assertAlmostEqual(e1_obt[1][0], 1.2222607619733454, 6) self.assertAlmostEqual(e1_obt[1][1], 1.2222607619733026, 6)
def test_n3_diffuse(self): cell = make_test_cell.test_cell_n3_diffuse() nmp = [1, 1, 2] ''' # treating 1*1*2 supercell at gamma point supcell = super_cell(cell,nmp) gmf = scf.GHF(supcell,exxdiv=None) ehf = gmf.kernel() gcc = cc.GCCSD(gmf) gcc.conv_tol=1e-12 gcc.conv_tol_normt=1e-10 gcc.max_cycle=250 ecc, t1, t2 = gcc.kernel() print('GHF energy (supercell) %.7f \n' % (float(ehf)/2.)) print('GCCSD correlation energy (supercell) %.7f \n' % (float(ecc)/2.)) eom = eom_gccsd.EOMIP(gcc) e1, v = eom.ipccsd(nroots=6) eom = eom_gccsd.EOMEA(gcc) e2, v = eom.eaccsd(nroots=6, left=True, koopmans=True) ''' # Running HF and CCSD with 1x1x2 Monkhorst-Pack k-point mesh ehf2 = kmf.e_tot self.assertAlmostEqual(ehf2, -6.1870676561725695, 6) ecc2 = mycc.e_corr self.assertAlmostEqual(ecc2, -0.0676483716898783, 6) eom = EOMIP(mycc) imds = eom.make_imds(eris=eris) # Basic ipccsd e1_obt, v = eom.ipccsd(nroots=3, left=True, kptlist=[0], imds=imds) self.assertAlmostEqual(e1_obt[0][0], -1.14894700482871, 6) self.assertAlmostEqual(e1_obt[0][1], -1.148947004822481, 6) self.assertAlmostEqual(e1_obt[0][2], -1.108819439453179, 6) # Ensure left is working e1_obt, v = eom.ipccsd(nroots=3, kptlist=[0], imds=imds) self.assertAlmostEqual(e1_obt[0][0], -1.1489469962099519, 6) self.assertAlmostEqual(e1_obt[0][1], -1.1489469961858796, 6) self.assertAlmostEqual(e1_obt[0][2], -1.1088194518036925, 6) # Ensure kptlist behaves correctly e1_obt, v = eom.ipccsd(nroots=3, koopmans=True, kptlist=[1], imds=imds) self.assertAlmostEqual(e1_obt[0][0], -0.9074337292436309, 6) self.assertAlmostEqual(e1_obt[0][1], -0.9074337292161299, 6) self.assertAlmostEqual(e1_obt[0][2], -0.9074331788469051, 6) eom = EOMEA(mycc) imds = eom.make_imds(eris=eris) # Basic eaccsd e2_obt, v = eom.eaccsd(nroots=3, kptlist=[0], imds=imds) self.assertAlmostEqual(e2_obt[0][0], 1.2669788613362731, 6) self.assertAlmostEqual(e2_obt[0][1], 1.2669788614703625, 6) self.assertAlmostEqual(e2_obt[0][2], 1.278883205515518, 6) # Ensure left is working e2_obt, v = eom.eaccsd(nroots=3, left=True, kptlist=[0], imds=imds) self.assertAlmostEqual(e2_obt[0][0], 1.266978976813125, 6) self.assertAlmostEqual(e2_obt[0][1], 1.266978976822988, 6) self.assertAlmostEqual(e2_obt[0][2], 1.278883205348326, 6) # Ensure kptlist behaves correctly e2_obt, v = eom.eaccsd(nroots=3, koopmans=True, kptlist=[1], imds=imds) self.assertAlmostEqual(e2_obt[0][0], 1.227583017804503, 6) self.assertAlmostEqual(e2_obt[0][1], 1.2275830178298166, 6) self.assertAlmostEqual(e2_obt[0][2], 1.3830379190440196, 6) # Basis eeccsd eom = EOMEE(mycc) imds = eom.make_imds(eris=eris) ee, v = eom.eeccsd(nroots=3, kptlist=[0], imds=imds) self.assertAlmostEqual(ee[0][0], 0.118301677904104, 6) self.assertAlmostEqual(ee[0][1], 0.118301914631351, 6) self.assertAlmostEqual(ee[0][2], 0.128285117266903, 6) ee, v = eom.eeccsd(nroots=3, kptlist=[1], imds=imds) self.assertAlmostEqual(ee[0][0], 0.07928010716890202, 6) self.assertAlmostEqual(ee[0][1], 0.07928011416043479, 6) self.assertAlmostEqual(ee[0][2], 0.07928011417159982, 6)