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)
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
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)
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
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