def TDHF(mf): if getattr(mf, 'xc', None): raise RuntimeError('TDHF does not support DFT object %s' % mf) if isinstance(mf, scf.uhf.UHF): mf = scf.addons.convert_to_uhf(mf) # To remove newton decoration return uhf.TDHF(mf) else: mf = scf.addons.convert_to_rhf(mf) return rhf.TDHF(mf)
def test_tdhf_with_wfnsym(self): pmol = mol.copy() pmol.symmetry = True pmol.build() mf = scf.RHF(pmol).run() td = rhf.TDHF(mf) td.wfnsym = 'A2' td.nroots = 3 es = td.kernel()[0] self.assertAlmostEqual(lib.fp(es), 2.2541287466157165, 6) td.analyze()
def TDDFT(mf): if isinstance(mf, scf.uhf.UHF): mf = scf.addons.convert_to_uhf(mf) if isinstance(mf, dft.rks.KohnShamDFT): return uks.tddft(mf) else: return uhf.TDHF(mf) else: mf = scf.addons.convert_to_rhf(mf) if isinstance(mf, dft.rks.KohnShamDFT): return rks.tddft(mf) else: return rhf.TDHF(mf)
def TDDFT(mf): if isinstance(mf, scf.uhf.UHF): mf = scf.addons.convert_to_uhf(mf) if getattr(mf, 'xc', None): if mf._numint.libxc.is_hybrid_xc(mf.xc): return uks.TDDFT(mf) else: return uks.TDDFTNoHybrid(mf) else: return uhf.TDHF(mf) else: mf = scf.addons.convert_to_rhf(mf) if getattr(mf, 'xc', None): if mf._numint.libxc.is_hybrid_xc(mf.xc): return rks.TDDFT(mf) else: return rks.TDDFTNoHybrid(mf) else: return rhf.TDHF(mf)