def test_rccsd_t_non_hf_against_so_frozen(self): '''Tests rccsd_t with gccsd_t with frozen orbitals.''' n = 7 cell = make_test_cell.test_cell_n3([n] * 3) #import sys #cell.stdout = sys.stdout #cell.verbose = 7 nk = [2, 1, 1] kpts = cell.make_kpts(nk) kpts -= kpts[0] kks = pbcscf.KRKS(cell, kpts=kpts) ekks = kks.kernel() khf = pbcscf.KRHF(cell) khf.__dict__.update(kks.__dict__) mycc = pbcc.KGCCSD(khf, frozen=[[], [0, 1]]) eris = mycc.ao2mo() ekgcc, t1, t2 = mycc.kernel(eris=eris) ekgcc_t = mycc.ccsd_t(eris=eris) mycc = pbcc.KRCCSD(khf, frozen=[[], [0]]) eris = mycc.ao2mo() ekrcc, t1, t2 = mycc.kernel(eris=eris) ekrcc_t = mycc.ccsd_t(eris=eris) self.assertAlmostEqual(ekrcc_t, -0.0018712836246782309, 6) self.assertAlmostEqual(ekrcc_t, ekgcc_t, 6)
def test_ccsd_t_high_cost(self): n = 14 cell = make_test_cell.test_cell_n3([n] * 3) kpts = cell.make_kpts([1, 1, 2]) kpts -= kpts[0] kmf = pbcscf.KRHF(cell, kpts=kpts, exxdiv=None) ehf = kmf.kernel() mycc = pbcc.KGCCSD(kmf) eris = mycc.ao2mo() ecc, t1, t2 = mycc.kernel(eris=eris) eris.mo_energy = [eris.fock[i].diagonal() for i in range(len(kpts))] energy_t = kccsd_t.kernel(mycc, eris=eris) energy_t_bench = -0.00191440345386 self.assertAlmostEqual(energy_t, energy_t_bench, 6) mycc = pbcc.KGCCSD(kmf, frozen=2) eris = mycc.ao2mo() ecc, t1, t2 = mycc.kernel(eris=eris) #eris.mo_energy = [eris.fock[i].diagonal() for i in range(len(kpts))] energy_t = kccsd_t.kernel(mycc, eris=eris) energy_t_bench = -0.0006758542603695721 self.assertAlmostEqual(energy_t, energy_t_bench, 6)
def test_rccsd_t_non_hf_against_so(self): '''Tests restricted ccsd and ccsd_t for non Hartree-Fock references against the general spin-orbital implementation.''' n = 7 cell = make_test_cell.test_cell_n3([n] * 3) #import sys #cell.stdout = sys.stdout #cell.verbose = 7 nk = [2, 1, 1] kpts = cell.make_kpts(nk) kpts -= kpts[0] kks = pbcscf.KRKS(cell, kpts=kpts) ekks = kks.kernel() khf = pbcscf.KRHF(cell) khf.__dict__.update(kks.__dict__) mycc = pbcc.KGCCSD(khf, frozen=None) eris = mycc.ao2mo() ekgcc, t1, t2 = mycc.kernel(eris=eris) ekgcc_t = mycc.ccsd_t(eris=eris) mycc = pbcc.KRCCSD(khf, frozen=None) eris = mycc.ao2mo() ekrcc, t1, t2 = mycc.kernel(eris=eris) ekrcc_t = mycc.ccsd_t(eris=eris) self.assertAlmostEqual(ekrcc_t, -0.0021709465899365336, 6) self.assertAlmostEqual(ekrcc_t, ekgcc_t, 6)
def test_111_n3(self): n = 11 cell = make_test_cell.test_cell_n3([n] * 3) nk = (1, 1, 1) hf_111 = -7.4117951240232118 cc_111 = -0.19468901057053406 escf, ecc = run_kcell(cell, n, nk) self.assertAlmostEqual(escf, hf_111, 9) self.assertAlmostEqual(ecc, cc_111, 6)
def test_n3_ee(self): n = 15 cell_n3 = make_test_cell.test_cell_n3([n] * 3) kmf_n3 = pbcscf.KRHF(cell_n3, cell_n3.make_kpts([2, 1, 1]), exxdiv=None) kmf_n3.kernel() kmf_n3_ewald = pbcscf.KRHF(cell_n3, cell_n3.make_kpts([2, 1, 1]), exxdiv='ewald') kmf_n3_ewald.kernel() ehf_bench = [-8.651923514149, -10.530905169078] ecc_bench = [-0.155298299344, -0.093617975270] ekrhf = kmf_n3.e_tot self.assertAlmostEqual(ekrhf, ehf_bench[0], 3) ekrhf = kmf_n3_ewald.e_tot self.assertAlmostEqual(ekrhf, ehf_bench[1], 3) mycc = pbcc.KRCCSD(kmf_n3) ekrcc, t1, t2 = mycc.kernel() self.assertAlmostEqual(ekrcc, ecc_bench[0], 3) mycc_ewald = pbcc.KRCCSD(kmf_n3_ewald) mycc_ewald.keep_exxdiv = True ekrcc, t1, t2 = mycc_ewald.kernel() self.assertAlmostEqual(ekrcc, ecc_bench[1], 3) # EOM-EE-KRCCSD singlet from pyscf.pbc.cc import eom_kccsd_rhf as eom_krccsd nroots = 2 # number of roots requested myeomee = eom_krccsd.EOMEESinglet(mycc) myeomee.max_space = nroots * 10 eee, vee = myeomee.kernel(nroots=nroots, kptlist=[0]) self.assertAlmostEqual(eee[0][0], 0.267867075425, 3) self.assertAlmostEqual(eee[0][1], 0.268704338187, 3) eee, vee = myeomee.kernel(nroots=nroots, kptlist=[1]) self.assertAlmostEqual(eee[0][0], 0.389795492091, 3) self.assertAlmostEqual(eee[0][1], 0.407782858154, 3) myeomee = eom_krccsd.EOMEESinglet(mycc_ewald) myeomee.max_space = nroots * 10 eee, vee = myeomee.kernel(nroots=nroots, kptlist=[0]) self.assertAlmostEqual(eee[0][0], 0.707047835495, 3) self.assertAlmostEqual(eee[0][1], 0.707047835495, 3) eee, vee = myeomee.kernel(nroots=nroots, kptlist=[1]) self.assertAlmostEqual(eee[0][0], 0.815872164169, 3) self.assertAlmostEqual(eee[0][1], 0.845417271088, 3)
def test_ccsd_t_high_cost(self): n = 14 cell = make_test_cell.test_cell_n3([n] * 3) kpts = cell.make_kpts([1, 1, 2]) kpts -= kpts[0] kmf = pbcscf.KRHF(cell, kpts=kpts) ehf = kmf.kernel() mycc = pbcc.KRCCSD(kmf) eris = mycc.ao2mo() ecc, t1, t2 = mycc.kernel(eris=eris) eris.mo_energy = [eris.fock[i].diagonal() for i in range(len(kpts))] energy_t = kccsd_t_rhf.kernel(mycc, eris=eris) energy_t_bench = -0.00191443154358 self.assertAlmostEqual(energy_t, energy_t_bench, 6)
def test_ccsd_t_non_hf_frozen(self): '''Tests ccsd and ccsd_t for non-Hartree-Fock references with frozen orbitals using supercell vs k-point calculation.''' n = 14 cell = make_test_cell.test_cell_n3([n] * 3) #import sys #cell.stdout = sys.stdout #cell.verbose = 7 nk = [2, 1, 1] kpts = cell.make_kpts(nk) kpts -= kpts[0] kks = pbcdft.KRKS(cell, kpts=kpts) ekks = kks.kernel() khf = pbcscf.KRHF(cell) khf.__dict__.update(kks.__dict__) mycc = pbcc.KRCCSD(khf, frozen=1) eris = mycc.ao2mo() ekcc, t1, t2 = mycc.kernel(eris=eris) ekcc_t = mycc.ccsd_t(eris=eris) # Run supercell from pyscf.pbc.tools.pbc import super_cell supcell = super_cell(cell, nk) rks = pbcdft.RKS(supcell) erks = rks.kernel() rhf = pbcscf.RHF(supcell) rhf.__dict__.update(rks.__dict__) mycc = pbcc.RCCSD(rhf, frozen=2) eris = mycc.ao2mo() ercc, t1, t2 = mycc.kernel(eris=eris) self.assertAlmostEqual(ercc / np.prod(nk), -0.11467718013872311, 6) self.assertAlmostEqual(ercc / np.prod(nk), ekcc, 6) ercc_t = mycc.ccsd_t(eris=eris) self.assertAlmostEqual(ercc_t / np.prod(nk), -0.00066503872045200996, 6) self.assertAlmostEqual(ercc_t / np.prod(nk), ekcc_t, 6)
def test_frozen_n3(self): mesh = 5 cell = make_test_cell.test_cell_n3([mesh] * 3) nk = (1, 1, 2) ehf_bench = -8.348616843863795 ecc_bench = -0.037920339437169 abs_kpts = cell.make_kpts(nk, with_gamma_point=True) # RHF calculation kmf = pbcscf.KRHF(cell, abs_kpts, exxdiv=None) kmf.conv_tol = 1e-9 ehf = kmf.scf() # KRCCSD calculation, equivalent to running supercell # calculation with frozen=[0,1,2] (if done with larger mesh) cc = pbcc.kccsd_rhf.RCCSD(kmf, frozen=[[0], [0, 1]]) cc.diis_start_cycle = 1 ecc, t1, t2 = cc.kernel() self.assertAlmostEqual(ehf, ehf_bench, 9) self.assertAlmostEqual(ecc, ecc_bench, 7)
def test_frozen_n3_high_cost(self): mesh = 5 cell = make_test_cell.test_cell_n3([mesh] * 3) nk = (1, 1, 3) ehf_bench = -9.15349763559837 ecc_bench = -0.06713556649654 abs_kpts = cell.make_kpts(nk, with_gamma_point=True) # RHF calculation kmf = pbcscf.KRHF(cell, abs_kpts, exxdiv=None) kmf.conv_tol = 1e-9 ehf = kmf.scf() # KGCCSD calculation, equivalent to running supercell # calculation with frozen=[0,1,2] (if done with larger mesh) cc = pbcc.kccsd.CCSD(kmf, frozen=[[0, 1], [], [0]]) cc.diis_start_cycle = 1 ecc, t1, t2 = cc.kernel() self.assertAlmostEqual(ehf, ehf_bench, 9) self.assertAlmostEqual(ecc, ecc_bench, 7)
def test_ccsd_t_non_hf(self): '''Tests ccsd and ccsd_t for non-Hartree-Fock references using supercell vs k-point calculation.''' n = 14 cell = make_test_cell.test_cell_n3([n] * 3) nk = [2, 1, 1] kpts = cell.make_kpts(nk) kpts -= kpts[0] kks = pbcdft.KRKS(cell, kpts=kpts) ekks = kks.kernel() khf = pbcscf.KRHF(cell) khf.__dict__.update(kks.__dict__) mycc = pbcc.KRCCSD(khf) eris = mycc.ao2mo() ekcc, t1, t2 = mycc.kernel(eris=eris) ekcc_t = mycc.ccsd_t(eris=eris) # Run supercell from pyscf.pbc.tools.pbc import super_cell supcell = super_cell(cell, nk) rks = pbcdft.RKS(supcell) erks = rks.kernel() rhf = pbcscf.RHF(supcell) rhf.__dict__.update(rks.__dict__) mycc = pbcc.RCCSD(rhf) eris = mycc.ao2mo() ercc, t1, t2 = mycc.kernel(eris=eris) self.assertAlmostEqual(ercc / np.prod(nk), -0.15632445245405927, 6) self.assertAlmostEqual(ercc / np.prod(nk), ekcc, 6) ercc_t = mycc.ccsd_t(eris=eris) self.assertAlmostEqual(ercc_t / np.prod(nk), -0.00114619248449, 6) self.assertAlmostEqual(ercc_t / np.prod(nk), ekcc_t, 6)
def test_ccsd_t_hf_frozen(self): '''Tests ccsd and ccsd_t for Hartree-Fock references with frozen orbitals using supercell vs k-point calculation.''' n = 14 cell = make_test_cell.test_cell_n3([n] * 3) nk = [2, 1, 1] kpts = cell.make_kpts(nk) kpts -= kpts[0] kks = pbcscf.KRHF(cell, kpts=kpts) ekks = kks.kernel() khf = pbcscf.KRHF(cell) khf.__dict__.update(kks.__dict__) mycc = pbcc.KRCCSD(khf, frozen=1) eris = mycc.ao2mo() ekcc, t1, t2 = mycc.kernel(eris=eris) ekcc_t = mycc.ccsd_t(eris=eris) # Run supercell from pyscf.pbc.tools.pbc import super_cell supcell = super_cell(cell, nk) rks = pbcscf.RHF(supcell) erks = rks.kernel() rhf = pbcscf.RHF(supcell) rhf.__dict__.update(rks.__dict__) mycc = pbcc.RCCSD(rhf, frozen=2) eris = mycc.ao2mo() ercc, t1, t2 = mycc.kernel(eris=eris) self.assertAlmostEqual(ercc / np.prod(nk), -0.1137362020855094, 6) self.assertAlmostEqual(ercc / np.prod(nk), ekcc, 6) ercc_t = mycc.ccsd_t(eris=eris) self.assertAlmostEqual(ercc_t / np.prod(nk), -0.0006758642528821, 6) self.assertAlmostEqual(ercc_t / np.prod(nk), ekcc_t, 6)
import pyscf.pbc.tools.make_test_cell as make_test_cell from pyscf.pbc import gto, scf, ci from pyscf.pbc.ci import KCIS import unittest cell = make_test_cell.test_cell_n3(mesh=[29] * 3) cell.build() def tearDownModule(): global cell del cell class KnownValues(unittest.TestCase): 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]) #FIXME: value changed around commit de99aaad3 or earliear # self.assertAlmostEqual(eci[0][0], 0.291182202333, 5)
from pyscf.pbc import cc as pbcc from pyscf.pbc import scf as pbcscf from pyscf.pbc.cc.eom_kccsd_rhf import EOMIP, EOMEA from pyscf.pbc.cc.eom_kccsd_rhf import EOMIP_Ta, EOMEA_Ta from pyscf.pbc.lib import kpts_helper from pyscf.cc import eom_uccsd from pyscf.pbc.cc import kintermediates, kintermediates_rhf from pyscf import lib import unittest cell_n3d = make_test_cell.test_cell_n3_diffuse() kmf = pbcscf.KRHF(cell_n3d, cell_n3d.make_kpts((1,1,2), with_gamma_point=True), exxdiv=None) kmf.conv_tol = 1e-10 kmf.scf() cell_n3 = make_test_cell.test_cell_n3() cell_n3.mesh = [29] * 3 cell_n3.build() kmf_n3 = pbcscf.KRHF(cell_n3, cell_n3.make_kpts([2,1,1]), exxdiv=None) kmf_n3.kernel() kmf_n3_ewald = pbcscf.KRHF(cell_n3, cell_n3.make_kpts([2,1,1]), exxdiv='ewald') kmf_n3_ewald.kernel() # Helper functions def kconserve_pmatrix(nkpts, kconserv): Ps = numpy.zeros((nkpts, nkpts, nkpts, nkpts)) for ki in range(nkpts): for kj in range(nkpts): for ka in range(nkpts): # Chemist's notation for momentum conserving t2(ki,kj,ka,kb) kb = kconserv[ki, ka, kj]
def setUpModule(): global cell cell = make_test_cell.test_cell_n3(mesh=[29] * 3) cell.build()
from pyscf.pbc.cc.eom_kccsd_rhf import EOMIP_Ta, EOMEA_Ta from pyscf.pbc.lib import kpts_helper from pyscf.cc import eom_uccsd from pyscf.pbc.cc import kintermediates, kintermediates_rhf from pyscf import lib import unittest cell_n3d = make_test_cell.test_cell_n3_diffuse() kmf = pbcscf.KRHF(cell_n3d, cell_n3d.make_kpts((1, 1, 2), with_gamma_point=True), exxdiv=None) kmf.conv_tol = 1e-10 kmf.scf() n = 15 cell_n3 = make_test_cell.test_cell_n3([n] * 3) kmf_n3 = pbcscf.KRHF(cell_n3, cell_n3.make_kpts([2, 1, 1]), exxdiv=None) kmf_n3.kernel() kmf_n3_ewald = pbcscf.KRHF(cell_n3, cell_n3.make_kpts([2, 1, 1]), exxdiv='ewald') kmf_n3_ewald.kernel() # Helper functions def kconserve_pmatrix(nkpts, kconserv): Ps = numpy.zeros((nkpts, nkpts, nkpts, nkpts)) for ki in range(nkpts): for kj in range(nkpts): for ka in range(nkpts): # Chemist's notation for momentum conserving t2(ki,kj,ka,kb)