コード例 #1
0
ファイル: test_kuccsd.py プロジェクト: pyscf/pyscf
    def test_eris(self):
        numpy.random.seed(1)
        kpts = cell.make_kpts([1,1,3])
        kmf = scf.KUHF(cell, kpts=kpts, exxdiv=None)
        nmo = cell.nao_nr()
        kmf.mo_occ = numpy.zeros((2,3,nmo))
        kmf.mo_occ[0,:,:3] = 1
        kmf.mo_occ[1,:,:1] = 1
        kmf.mo_energy = (numpy.arange(nmo) +
                         numpy.random.random((2,3,nmo)) * .3)
        kmf.mo_energy[kmf.mo_occ == 0] += 2

        kmf.mo_coeff = (numpy.random.random((2,3,nmo,nmo)) +
                        numpy.random.random((2,3,nmo,nmo))*1j - .5-.5j)

        mycc = kccsd_uhf.UCCSD(kmf)
        eris = mycc.ao2mo()

        self.assertAlmostEqual(lib.finger(eris.fock[0]), 0.53719738596848132 +0.83031462049142502j, 11)
        self.assertAlmostEqual(lib.finger(eris.fock[1]), 0.043623927844025398+0.20815796288019522j, 11)

        self.assertAlmostEqual(lib.finger(eris.oooo), 0.10126616996580763    -0.89787173918481156j  , 11)
        self.assertAlmostEqual(lib.finger(eris.ooov), -0.035814310241888067  +0.20393025075274804j  , 11)
        self.assertAlmostEqual(lib.finger(eris.oovv), -0.032378345849800663  +0.015060519910448879j , 11)
        self.assertAlmostEqual(lib.finger(eris.ovov), 0.017919215232962762   -0.37180556037878837j  , 11)
        self.assertAlmostEqual(lib.finger(eris.voov), -0.33038865500581482   +0.18384096784449852j  , 11)
        self.assertAlmostEqual(lib.finger(eris.vovv), 0.078104278754223946   +0.0004014143354997223j, 11)
        self.assertAlmostEqual(lib.finger(eris.vvvv), -0.0199910973368542    -0.0019864189992825137j, 11)

        self.assertAlmostEqual(lib.finger(eris.OOOO), 0.022687859086726745   +0.0076542690105189095j, 11)
        self.assertAlmostEqual(lib.finger(eris.OOOV), -0.024119030579269278  -0.15249100640417029j  , 11)
        self.assertAlmostEqual(lib.finger(eris.OOVV), 0.085942751462484687   -0.27088394382044989j  , 11)
        self.assertAlmostEqual(lib.finger(eris.OVOV), 0.35291244981540776    +0.080119865729794376j , 11)
        self.assertAlmostEqual(lib.finger(eris.VOOV), 0.0045484393536995267  +0.0094123990059577414j, 11)
        self.assertAlmostEqual(lib.finger(eris.VOVV), -0.28341581692294759   +0.0022174023470048921j, 11)
        self.assertAlmostEqual(lib.finger(eris.VVVV), 0.96007536729340814    -0.019410945571596398j , 11)

        self.assertAlmostEqual(lib.finger(eris.ooOO), -0.32831508979976765   -0.32180378432620471j  , 11)
        self.assertAlmostEqual(lib.finger(eris.ooOV), 0.33617152217704632    -0.34130555912360216j  , 11)
        self.assertAlmostEqual(lib.finger(eris.ooVV), -0.00011230004797088339-1.2850251519380604j   , 11)
        self.assertAlmostEqual(lib.finger(eris.ovOV), 0.1365118156144336     +0.16999367231786541j  , 11)
        self.assertAlmostEqual(lib.finger(eris.voOV), 0.19736044623396901    -0.047060848969879901j , 11)
        self.assertAlmostEqual(lib.finger(eris.voVV), 0.44513499758124858    +0.06343379901453805j  , 11)
        self.assertAlmostEqual(lib.finger(eris.vvVV), -0.070971875998391304  -0.31253893124900545j  , 11)

        #self.assertAlmostEqual(lib.finger(eris.OOoo), 0.031140414688898856   -0.23913617484062258j  , 11)
        self.assertAlmostEqual(lib.finger(eris.OOov), 0.20355552926191381    +0.18712171841650935j  , 11)
        self.assertAlmostEqual(lib.finger(eris.OOvv), 0.070789122903945706   -0.013360818695166678j , 11)
        #self.assertAlmostEqual(lib.finger(eris.OVov), 0.38230103404493437    -0.019845885264560274j , 11)
        #self.assertAlmostEqual(lib.finger(eris.VOov), 0.081760186267865437   -0.052409714443657308j , 11)
        self.assertAlmostEqual(lib.finger(eris.VOvv), -0.036061642075282056  +0.019284185856121634j , 11)
コード例 #2
0
def KUCCSD(mf, frozen=None, mo_coeff=None, mo_occ=None):
    from pyscf.pbc.cc import kccsd_uhf
    if not isinstance(mf, scf.kuhf.KUHF):
        mf = scf.addons.convert_to_uhf(mf)
    return kccsd_uhf.UCCSD(mf, frozen, mo_coeff, mo_occ)
コード例 #3
0
def KUCCSD(mf, frozen=0, mo_coeff=None, mo_occ=None):
    from pyscf.pbc.cc import kccsd_uhf
    mf = scf.addons.convert_to_uhf(mf)
    return kccsd_uhf.UCCSD(mf, frozen, mo_coeff, mo_occ)