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=0) 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.0021709465899365336, 6) self.assertAlmostEqual(ekrcc_t, ekgcc_t, 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=0) 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.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_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_111_n3(self): ngs = 5 cell = make_test_cell.test_cell_n3(ngs) # print "cell gs =", cell.gs nk = (1, 1, 1) hf_111 = -7.4117951240232118 cc_111 = -0.19468901057053406 escf, ecc = run_kcell(cell, ngs, nk) self.assertAlmostEqual(escf, hf_111, 9) self.assertAlmostEqual(ecc, cc_111, 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 = pyscf.pbc.cc.KRCCSD(kmf) ecc, t1, t2 = mycc.kernel() energy_t = kccsd_t_rhf.kernel(mycc) energy_t_bench = -0.00191443154358 self.assertAlmostEqual(energy_t, energy_t_bench, 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)
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)
def test_ccsd_t_non_hf_frozen(self): '''Tests ccsd and ccsd_t for non-Hartree-Fock references with frozen orbitals.''' 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_ccsd_t_non_hf_frozen(self): '''Tests ccsd and ccsd_t for non-Hartree-Fock references with frozen orbitals.''' 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_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 = pyscf.pbc.cc.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, 9)
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.''' 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_non_hf(self): '''Tests ccsd and ccsd_t for non-Hartree-Fock references.''' 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.''' 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)
def test_ccsd_t_hf_frozen(self): '''Tests ccsd and ccsd_t for Hartree-Fock references with frozen orbitals.''' 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)