Пример #1
0
    def test_tddft_with_wfnsym(self):
        pmol = mol.copy()
        pmol.symmetry = True
        pmol.build()

        mf = dft.RKS(pmol).run()
        td = rks.TDDFTNoHybrid(mf)
        td.wfnsym = 'A2'
        td.nroots = 3
        es = td.kernel()[0]
        self.assertAlmostEqual(lib.finger(es), 2.1856920990871753, 6)
        td.analyze()
Пример #2
0
    def test_tddft_with_wfnsym(self):
        pmol = mol.copy()
        pmol.symmetry = True
        pmol.build()

        mf = dft.RKS(pmol).run()
        td = rks.TDDFTNoHybrid(mf)
        td.wfnsym = 'A2'
        td.nroots = 3
        es = td.kernel()[0]
        self.assertTrue(len(es) == 2)  # At most 2 states due to symmetry subspace size
        self.assertAlmostEqual(lib.fp(es), 2.1856920990871753, 6)
        td.analyze()
Пример #3
0
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)
Пример #4
0
 def test_nohbrid_b88p86(self):
     td = rks.TDDFTNoHybrid(mf_bp86)
     es = td.kernel(nstates=5)[0] * 27.2114
     self.assertAlmostEqual(lib.fp(es), -40.462005239920558, 6)
Пример #5
0
 def test_nohbrid_lda(self):
     td = rks.TDDFTNoHybrid(mf_lda3)
     es = td.kernel(nstates=5)[0] * 27.2114
     self.assertAlmostEqual(lib.fp(es), -41.059050077236151, 6)
     ref = [9.74227238,  9.74227238, 14.85153818, 30.35019348, 30.35019348]
     self.assertAlmostEqual(abs(es - ref).max(), 0, 6)
Пример #6
0
 def test_nohbrid_lda(self):
     td = rks.TDDFTNoHybrid(mf_lda3)
     es = td.kernel(nstates=5)[0] * 27.2114
     self.assertAlmostEqual(lib.fp(es), -41.059050077236151, 6)