示例#1
0
def UMP2(mf, frozen=0, mo_coeff=None, mo_occ=None):
    __doc__ = ump2.UMP2.__doc__
    from pyscf.soscf import newton_ah

    if isinstance(mf, newton_ah._CIAH_SOSCF) or not isinstance(mf, scf.uhf.UHF):
        mf = mf.to_uhf()

    if getattr(mf, 'with_df', None):
        #raise NotImplementedError('DF-UMP2')
        return ump2.UMP2(mf, frozen, mo_coeff, mo_occ)
    else:
        return ump2.UMP2(mf, frozen, mo_coeff, mo_occ)
示例#2
0
def UMP2(mf, frozen=0, mo_coeff=None, mo_occ=None):
    __doc__ = ump2.UMP2.__doc__
    from pyscf.soscf import newton_ah

    if isinstance(mf,
                  newton_ah._CIAH_SOSCF) or not isinstance(mf, scf.uhf.UHF):
        mf = scf.addons.convert_to_uhf(mf)

    if hasattr(mf, 'with_df') and mf.with_df:
        raise NotImplementedError('DF-UMP2')
    else:
        return ump2.UMP2(mf, frozen, mo_coeff, mo_occ)
示例#3
0
    def ccsd(self, t1=None, t2=None, eris=None, mbpt2=False):
        '''Ground-state unrestricted (U)CCSD.

        Kwargs:
            mbpt2 : bool
                Use one-shot MBPT2 approximation to CCSD.
        '''
        if mbpt2:
            pt = ump2.UMP2(self._scf, self.frozen, self.mo_coeff, self.mo_occ)
            self.e_corr, self.t2 = pt.kernel(eris=eris)
            t2ab = self.t2[1]
            nocca, noccb, nvira, nvirb = t2ab.shape
            self.t1 = (np.zeros((nocca, nvira)), np.zeros((noccb, nvirb)))
            return self.e_corr, self.t1, self.t2

        if eris is None: eris = self.ao2mo(self.mo_coeff)
        return ccsd.CCSD.ccsd(self, t1, t2, eris)
示例#4
0
文件: ump2.py 项目: zwang123/pyscf
if __name__ == '__main__':
    from pyscf import gto
    from pyscf import scf
    from pyscf.mp import mp2

    mol = gto.M(
        atom = [
            ["O" , (0. , 0.     , 0.)],
            [1   , (0. ,-0.757  , 0.587)],
            [1   , (0. , 0.757  , 0.587)]],
        basis = '631g',
        spin = 2,
    )
    mf = scf.UHF(mol).run()
    mp = ump2.UMP2(mf).run()
    g1 = Gradients(mp).kernel()
# O     0.0000000000    -0.0000000000     0.1436990190
# H    -0.0000000000     0.1097329294    -0.0718495095
# H    -0.0000000000    -0.1097329294    -0.0718495095
    print(lib.finger(g1) - -0.22418090721297307)

    print('-----------------------------------')
    mol = gto.M(
        atom = [
            ["O" , (0. , 0.     , 0.)],
            [1   , (0. ,-0.757  , 0.587)],
            [1   , (0. , 0.757  , 0.587)]],
        basis = '631g',
        spin = 2,
    )