def DFCASCI(mf, ncas, nelecas, auxbasis=None, **kwargs): mf = _convert_to_rhf(mf, False) if mf.mol.symmetry: mc = casci_symm.CASCI(mf, ncas, nelecas, **kwargs) else: mc = casci.CASCI(mf, ncas, nelecas, **kwargs) return df.density_fit(mc, auxbasis)
def DFCASCI(mf, ncas, nelecas, auxbasis=None, **kwargs): from pyscf import scf mf = scf.addons.convert_to_rhf(mf, convert_df=False) if mf.mol.symmetry: mc = casci_symm.CASCI(mf, ncas, nelecas, **kwargs) else: mc = casci.CASCI(mf, ncas, nelecas, **kwargs) return df.density_fit(mc, auxbasis)
def DFCASSCF(mf, ncas, nelecas, auxbasis=None, ncore=None, frozen=None): from pyscf import scf mf = scf.addons.convert_to_rhf(mf, remove_df=False) if mf.mol.symmetry: mc = mc1step_symm.CASSCF(mf, ncas, nelecas, ncore, frozen) else: mc = mc1step.CASSCF(mf, ncas, nelecas, ncore, frozen) return df.density_fit(mc, auxbasis)
def DFCASCI(mf, ncas, nelecas, auxbasis='weigend', **kwargs): if not hasattr(mf, '_tag_df') or not mf._tag_df: from pyscf.lib import logger logger.warn(mf, 'DFCASCI: the first argument%s is not density-fitting SCF object. ' 'Only orbital hessian are computed with density-fitting integrals. ' 'JK matrix and 2e MO integrals are computed with exact 2e integrals.', mf.__class__) mc = CASCI(mf, ncas, nelecas, **kwargs) return density_fit(mc, auxbasis)
def density_fit(mc, auxbasis=None): if hasattr(mc._scf, '_tag_df') and mc._scf._tag_df: return df.density_fit(mc, auxbasis) else: from pyscf.lib import logger logger.warn(mc, 'NOTE: approx_hessian function is available for DF orbital hessian!\n' 'The CASSCF object is built on normal SCF object %s ' '(without density fitting). Currently, this density_fit ' 'function will call approx_hessian to approximate orbital ' 'hessian for backward compatibility.\n' 'In the future release, it will be removed and the ' 'density_fit function will only generate DF-CASSCF method.', mc._scf.__class__) return approx_hessian(mc, auxbasis)
def DFCASCI(mf_or_mol, ncas, nelecas, auxbasis=None, ncore=None): from pyscf import gto from pyscf import scf if isinstance(mf_or_mol, gto.Mole): mf = scf.RHF(mf_or_mol).density_fit() else: mf = mf_or_mol if isinstance(mf, scf.uhf.UHF): mf = scf.addons.convert_to_rhf(mf, remove_df=False) if mf.mol.symmetry: mc = casci_symm.CASCI(mf, ncas, nelecas, ncore) else: mc = casci.CASCI(mf, ncas, nelecas, ncore) return df.density_fit(mc, auxbasis)
def density_fit(mc, auxbasis=None, with_df=None): if hasattr(mc._scf, 'with_df') and mc._scf.with_df: return df.density_fit(mc, auxbasis, with_df) else: from pyscf.lib import logger logger.warn( mc, 'NOTE: approx_hessian function is available for DF orbital hessian!\n' 'The CASSCF object is built on normal SCF object %s ' '(without density fitting). Currently, this density_fit ' 'function will call approx_hessian to approximate orbital ' 'hessian for backward compatibility.\n' 'In the future release, it will be removed and the ' 'density_fit function will only generate DF-CASSCF method.', mc._scf.__class__) return approx_hessian(mc, auxbasis, with_df)
def density_fit(self, auxbasis=None, with_df=None): from pyscf.mcscf import df return df.density_fit(self, auxbasis, with_df)
def update_mc(self, mc): from pyscf.mcscf import df return df.density_fit(mc, self.auxbasis, self)
def DFCASCI(mf, ncas, nelecas, auxbasis='weigend', **kwargs): mc = CASCI(mf, ncas, nelecas, **kwargs) return density_fit(mc, auxbasis)