Beispiel #1
0
 def ao2mo(self, mo_coeff=None):
     nmo = self.nmo
     mem_incore = nmo**4*2 * 8/1e6
     mem_now = lib.current_memory()[0]
     if (self._scf._eri is not None and
         (mem_incore+mem_now < self.max_memory) or self.mol.incore_anyway):
         return gccsd._make_eris_incore(self, mo_coeff)
     elif getattr(self._scf, 'with_df', None):
         raise NotImplementedError
     else:
         return gccsd._make_eris_outcore(self, mo_coeff)
Beispiel #2
0
 def ao2mo(self, mo_coeff=None):
     nmo = self.nmo
     mem_incore = nmo**4*2 * 8/1e6
     mem_now = lib.current_memory()[0]
     if (self._scf._eri is not None and
         (mem_incore+mem_now < self.max_memory) or self.mol.incore_anyway):
         return gccsd._make_eris_incore(self, mo_coeff)
     elif getattr(self._scf, 'with_df', None):
         raise NotImplementedError
     else:
         return gccsd._make_eris_outcore(self, mo_coeff)
Beispiel #3
0
    def test_ERIS(self):
        gcc = gccsd.GCCSD(mf, frozen=4)
        numpy.random.seed(9)
        mo_coeff0 = numpy.random.random(mf.mo_coeff.shape) - .9
        nao = mo_coeff0.shape[0] // 2
        orbspin = numpy.array([
            0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 1, 1,
            0, 1, 0, 1
        ])
        mo_coeff0[nao:, orbspin == 0] = 0
        mo_coeff0[:nao, orbspin == 1] = 0
        mo_coeff1 = mo_coeff0.copy()
        mo_coeff1[-1, 0] = 1e-12

        eris = gccsd._make_eris_incore(gcc, mo_coeff0)
        self.assertAlmostEqual(lib.finger(eris.oooo), 15.97533838570434, 9)
        self.assertAlmostEqual(lib.finger(eris.ooov), -80.97666019169982, 9)
        self.assertAlmostEqual(lib.finger(eris.oovv), 278.00028168381675, 9)
        self.assertAlmostEqual(lib.finger(eris.ovov), 2.34326750142844, 9)
        self.assertAlmostEqual(lib.finger(eris.ovvv), 908.61659731634768, 9)
        self.assertAlmostEqual(lib.finger(eris.vvvv), 756.77383112217694, 9)

        eris = gccsd._make_eris_outcore(gcc, mo_coeff0)
        self.assertAlmostEqual(lib.finger(eris.oooo), 15.97533838570434, 9)
        self.assertAlmostEqual(lib.finger(eris.ooov), -80.97666019169982, 9)
        self.assertAlmostEqual(lib.finger(eris.oovv), 278.00028168381675, 9)
        self.assertAlmostEqual(lib.finger(eris.ovov), 2.34326750142844, 9)
        self.assertAlmostEqual(lib.finger(eris.ovvv), 908.61659731634768, 9)
        self.assertAlmostEqual(lib.finger(eris.vvvv), 756.77383112217694, 9)

        eris = gccsd._make_eris_incore(gcc, mo_coeff1)
        self.assertAlmostEqual(lib.finger(eris.oooo), 15.97533838570434, 9)
        self.assertAlmostEqual(lib.finger(eris.ooov), -80.97666019169982, 9)
        self.assertAlmostEqual(lib.finger(eris.oovv), 278.00028168381675, 9)
        self.assertAlmostEqual(lib.finger(eris.ovov), 2.34326750142844, 9)
        self.assertAlmostEqual(lib.finger(eris.ovvv), 908.61659731634768, 9)
        self.assertAlmostEqual(lib.finger(eris.vvvv), 756.77383112217694, 9)

        gcc.max_memory = 0
        eris = gcc.ao2mo(mo_coeff1)
        self.assertAlmostEqual(lib.finger(eris.oooo), 15.97533838570434, 9)
        self.assertAlmostEqual(lib.finger(eris.ooov), -80.97666019169982, 9)
        self.assertAlmostEqual(lib.finger(eris.oovv), 278.00028168381675, 9)
        self.assertAlmostEqual(lib.finger(eris.ovov), 2.34326750142844, 9)
        self.assertAlmostEqual(lib.finger(eris.ovvv), 908.61659731634768, 9)
        self.assertAlmostEqual(lib.finger(eris.vvvv), 756.77383112217694, 9)
Beispiel #4
0
    def test_ERIS(self):
        gcc = gccsd.GCCSD(mf, frozen=4)
        numpy.random.seed(9)
        mo_coeff0 = numpy.random.random(mf.mo_coeff.shape) - .9
        nao = mo_coeff0.shape[0]//2
        orbspin = numpy.array([0,1,0,1,0,1,0,0,1,0,1,0,1,1,0,0,1,0,1,0,1,1,0,1,0,1])
        mo_coeff0[nao:,orbspin==0] = 0
        mo_coeff0[:nao,orbspin==1] = 0
        mo_coeff1 = mo_coeff0.copy()
        mo_coeff1[-1,0] = 1e-12

        eris = gccsd._make_eris_incore(gcc, mo_coeff0)
        self.assertAlmostEqual(lib.finger(eris.oooo),  15.97533838570434, 9)
        self.assertAlmostEqual(lib.finger(eris.ooov), -80.97666019169982, 9)
        self.assertAlmostEqual(lib.finger(eris.oovv), 278.00028168381675, 9)
        self.assertAlmostEqual(lib.finger(eris.ovov),   2.34326750142844, 9)
        self.assertAlmostEqual(lib.finger(eris.ovvv), 908.61659731634768, 9)
        self.assertAlmostEqual(lib.finger(eris.vvvv), 756.77383112217694, 9)

        eris = gccsd._make_eris_outcore(gcc, mo_coeff0)
        self.assertAlmostEqual(lib.finger(eris.oooo),  15.97533838570434, 9)
        self.assertAlmostEqual(lib.finger(eris.ooov), -80.97666019169982, 9)
        self.assertAlmostEqual(lib.finger(eris.oovv), 278.00028168381675, 9)
        self.assertAlmostEqual(lib.finger(eris.ovov),   2.34326750142844, 9)
        self.assertAlmostEqual(lib.finger(eris.ovvv), 908.61659731634768, 9)
        self.assertAlmostEqual(lib.finger(eris.vvvv), 756.77383112217694, 9)

        eris = gccsd._make_eris_incore(gcc, mo_coeff1)
        self.assertAlmostEqual(lib.finger(eris.oooo),  15.97533838570434, 9)
        self.assertAlmostEqual(lib.finger(eris.ooov), -80.97666019169982, 9)
        self.assertAlmostEqual(lib.finger(eris.oovv), 278.00028168381675, 9)
        self.assertAlmostEqual(lib.finger(eris.ovov),   2.34326750142844, 9)
        self.assertAlmostEqual(lib.finger(eris.ovvv), 908.61659731634768, 9)
        self.assertAlmostEqual(lib.finger(eris.vvvv), 756.77383112217694, 9)

        gcc.max_memory = 0
        eris = gcc.ao2mo(mo_coeff1)
        self.assertAlmostEqual(lib.finger(eris.oooo),  15.97533838570434, 9)
        self.assertAlmostEqual(lib.finger(eris.ooov), -80.97666019169982, 9)
        self.assertAlmostEqual(lib.finger(eris.oovv), 278.00028168381675, 9)
        self.assertAlmostEqual(lib.finger(eris.ovov),   2.34326750142844, 9)
        self.assertAlmostEqual(lib.finger(eris.ovvv), 908.61659731634768, 9)
        self.assertAlmostEqual(lib.finger(eris.vvvv), 756.77383112217694, 9)