Ejemplo n.º 1
0
 def test_scs_build_ump2(self):
     (eoa, eob), (eva,
                  evb), (xija_aa,
                         xija_ab), (xabi_aa, xabi_ab) = aux.ump2._parse_uhf(
                             self.uhf.e, self.eri[0], self.uhf.chempot)
     _, _, (xija_bb, xija_ba), (xabi_bb, xabi_ba) = aux.ump2._parse_uhf(
         self.uhf.e[::-1], self.eri[1][::-1], self.uhf.chempot[::-1])
     nocca, noccb, nvira, nvirb = eoa.size, eob.size, eva.size, evb.size
     oa, ob, va, vb = slice(None, nocca), slice(None, noccb), slice(
         nocca, None), slice(noccb, None)
     se_a = aux.build_ump2(self.uhf.e,
                           self.eri[0],
                           chempot=self.uhf.chempot,
                           wtol=0,
                           os_factor=1.2,
                           ss_factor=0.33)
     se_b = aux.build_ump2(self.uhf.e[::-1],
                           self.eri[1][::-1],
                           chempot=self.uhf.chempot[::-1],
                           wtol=0,
                           os_factor=1.2,
                           ss_factor=0.33)
     e_mp2_a = self.get_emp2(se_a.e_vir, se_a.v_vir, oa, 0)
     e_mp2_a += self.get_emp2(se_b.e_vir, se_b.v_vir, ob, 1)
     e_mp2_b = self.get_emp2(se_a.e_occ, se_a.v_occ, va, 0)
     e_mp2_b += self.get_emp2(se_b.e_occ, se_b.v_occ, vb, 1)
     self.assertAlmostEqual(self.e_mp2_scs, e_mp2_a, 8)
     self.assertAlmostEqual(self.e_mp2_scs, e_mp2_b, 8)
Ejemplo n.º 2
0
 def setUpClass(self):
     import warnings
     warnings.simplefilter('ignore', FutureWarning)
     self.m = mol.Molecule(atoms='O 0 0 0; H 0 0 1; H 0 1 0',
                           basis='cc-pvdz')
     self.rhf = hf.RHF(self.m).run()
     self.uhf = hf.UHF(self.m).run()
     self.gf = aux.Aux(self.rhf.e,
                       np.eye(self.rhf.nao),
                       chempot=self.rhf.chempot)
     self.se = aux.build_rmp2(self.rhf.e,
                              self.rhf.eri_mo,
                              chempot=self.rhf.chempot)
     self.gf_a = aux.Aux(self.uhf.e[0],
                         np.eye(self.uhf.nao),
                         chempot=self.uhf.chempot[0])
     self.gf_b = aux.Aux(self.uhf.e[1],
                         np.eye(self.uhf.nao),
                         chempot=self.uhf.chempot[1])
     self.se_a = aux.build_ump2(self.uhf.e,
                                self.uhf.eri_mo[0],
                                chempot=self.uhf.chempot)
     self.se_b = aux.build_ump2(self.uhf.e[::-1],
                                self.uhf.eri_mo[1][::-1],
                                chempot=self.uhf.chempot[::-1])
     self.e_rmp2 = -0.20905684700662164
     self.e_ump2 = -0.20905685057662993
Ejemplo n.º 3
0
    def build(self):
        eri = self.eri
        cpt_a, cpt_b = self.chempot
        s = slice(None, None, -1)
        sea = aux.build_ump2(self.hf.e,
                             self.eri[0],
                             chempot=cpt_a,
                             **self.options['_build'])
        seb = aux.build_ump2(self.hf.e[s],
                             self.eri[1][s],
                             chempot=cpt_b,
                             **self.options['_build'])

        self.se = (sea, seb)

        log.write('naux (build,alpha) = %d\n' % self.naux[0], self.verbose)
        log.write('naux (build,beta)  = %d\n' % self.naux[1], self.verbose)
Ejemplo n.º 4
0
 def setUpClass(self):
     import warnings
     warnings.simplefilter('ignore', FutureWarning)
     self.m = mol.Molecule(atoms='O 0 0 0; H 0 0 1',
                           basis='cc-pvdz',
                           spin=1)
     self.uhf = hf.UHF(self.m).run()
     self.eri = self.uhf.eri_mo
     self.se = (aux.build_ump2(self.uhf.e,
                               self.eri[0],
                               chempot=self.uhf.chempot,
                               wtol=0),
                aux.build_ump2(self.uhf.e[::-1],
                               self.eri[1][::-1],
                               chempot=self.uhf.chempot[::-1],
                               wtol=0))
     self.e_mp2 = -0.15197757655845123
     self.e_mp2_scs = -0.1502359064727459
Ejemplo n.º 5
0
 def setUpClass(self):
     import warnings
     warnings.simplefilter('ignore', FutureWarning)
     self.m = mol.Molecule(atoms='O 0 0 0; H 0 0 1',
                           basis='cc-pvdz',
                           spin=1)
     self.uhf = hf.UHF(self.m).run()
     self.uhf_df = hf.UHF(self.m, with_df=True).run()
     self.eri = self.uhf.eri_mo
     self.eri_df = self.uhf_df.eri_mo
     self.se = (aux.build_ump2(self.uhf_df.e,
                               util.einsum('qij,sqkl->sijkl',
                                           self.eri_df[0], self.eri_df),
                               chempot=self.uhf_df.chempot,
                               wtol=0),
                aux.build_ump2(self.uhf_df.e[::-1],
                               util.einsum('qij,sqkl->sijkl',
                                           self.eri_df[1],
                                           self.eri_df[::-1]),
                               chempot=self.uhf.chempot[::-1],
                               wtol=0))
     self.e_mp2 = -0.15197757655845123
     self.e_mp2_scs = -0.1502359064727459