Beispiel #1
0
    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)
Beispiel #2
0
    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)
Beispiel #3
0
    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)
Beispiel #4
0
 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)
Beispiel #5
0
    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)
Beispiel #6
0
    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)
Beispiel #7
0
    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)
Beispiel #8
0
    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)
Beispiel #9
0
    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)
Beispiel #10
0
    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)
Beispiel #11
0
    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)
Beispiel #12
0
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)
Beispiel #13
0
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]
Beispiel #14
0
def setUpModule():
    global cell
    cell = make_test_cell.test_cell_n3(mesh=[29] * 3)
    cell.build()
Beispiel #15
0
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)