def test_nr_gks_b3lypg_direct(self): method = dft.GKS(h2o_cation) method.grids.prune = dft.gen_grid.treutler_prune method.xc = 'b3lypg' method.max_memory = 0 method.direct_scf = True method.grids.atom_grid = {"H": (50, 194), "O": (50, 194),} self.assertAlmostEqual(method.scf(), -75.902391377392391, 9)
def test_nr_gks_lsda(self): method = dft.GKS(h2osym_cation) method.grids.prune = dft.gen_grid.treutler_prune method.grids.atom_grid = { "H": (50, 194), "O": (50, 194), } self.assertAlmostEqual(method.scf(), -75.350995324984709, 8)
def test_nr_gks_b3lypg(self): method = dft.GKS(h2osym_cation) method.xc = 'b3lypg' method.grids.prune = dft.gen_grid.treutler_prune method.grids.atom_grid = { "H": (50, 194), "O": (50, 194), } self.assertAlmostEqual(method.scf(), -75.902391377392391, 8)
def test_nr_gks_rsh(self): method = dft.GKS(h2o) dm = method.get_init_guess() dm = dm + numpy.sin(dm)*.02j dm = dm + dm.conj().T method.xc = 'wB97M_V' vxc = method.get_veff(h2o, dm) self.assertAlmostEqual(lib.finger(vxc), 3.1818982731583274+0j, 8) method._eri = None method.max_memory = 0 method.xc = 'wB97M_V' vxc = method.get_veff(h2o, dm, dm, vxc) self.assertAlmostEqual(lib.finger(vxc), 3.1818982731583274+0j, 8) method.xc = 'B97M_V' vxc = method.get_veff(h2o, dm) self.assertAlmostEqual(lib.finger(vxc), 2.0131447223203565+0j, 8) method._eri = None method.max_memory = 0 method.xc = 'B97M_V' vxc = method.get_veff(h2o, dm, dm, vxc) self.assertAlmostEqual(lib.finger(vxc), 2.0131447223203565+0j, 8)
def test_init(self): mol_r = h2o mol_u = gto.M(atom='Li', spin=1, verbose=0) mol_r1 = gto.M(atom='H', spin=1, verbose=0) sym_mol_r = h2osym sym_mol_u = gto.M(atom='Li', spin=1, symmetry=1, verbose=0) sym_mol_r1 = gto.M(atom='H', spin=1, symmetry=1, verbose=0) self.assertTrue(isinstance(dft.RKS(mol_r), dft.rks.RKS)) self.assertTrue(isinstance(dft.RKS(mol_u), dft.roks.ROKS)) self.assertTrue(isinstance(dft.UKS(mol_r), dft.uks.UKS)) self.assertTrue(isinstance(dft.ROKS(mol_r), dft.roks.ROKS)) self.assertTrue(isinstance(dft.GKS(mol_r), dft.gks.GKS)) self.assertTrue(isinstance(dft.KS(mol_r), dft.rks.RKS)) self.assertTrue(isinstance(dft.KS(mol_u), dft.uks.UKS)) self.assertTrue(isinstance(dft.DKS(mol_u), dft.dks.UDKS)) self.assertTrue(isinstance(mol_r.RKS(), dft.rks.RKS)) self.assertTrue(isinstance(mol_u.RKS(), dft.roks.ROKS)) self.assertTrue(isinstance(mol_r.UKS(), dft.uks.UKS)) self.assertTrue(isinstance(mol_r.ROKS(), dft.roks.ROKS)) self.assertTrue(isinstance(mol_r.GKS(), dft.gks.GKS)) self.assertTrue(isinstance(mol_r.KS(), dft.rks.RKS)) self.assertTrue(isinstance(mol_u.KS(), dft.uks.UKS)) self.assertTrue(isinstance(mol_u.DKS(), dft.dks.UDKS))
def GKS(mol, *args): from pyscf import dft return dft.GKS(mol, *args)
''' from pyscf import gto, dft # # 1. real GKS # mol = gto.M( atom=''' O 0.000000 0.000000 0.117790 H 0.000000 0.755453 -0.471161 H 0.000000 -0.755453 -0.471161''', basis='ccpvdz', charge=1, spin=1, # = 2S = spin_up - spin_down verbose=4) mf = dft.GKS(mol) mf.xc = 'camb3lyp' mf.kernel() # # 2. complex GKS # mf = dft.GKS(mol) mf.xc = 'camb3lyp' dm = mf.get_init_guess() + 0j dm[0, :] += .1j dm[:, 0] -= .1j mf.kernel(dm0=dm)
def test_convert_to_scf(self): from pyscf.x2c import x2c from pyscf.df import df_jk from pyscf.soscf import newton_ah addons.convert_to_rhf(dft.RKS(mol)) addons.convert_to_uhf(dft.RKS(mol)) addons.convert_to_ghf(dft.RKS(mol)) addons.convert_to_rhf(dft.UKS(mol)) addons.convert_to_uhf(dft.UKS(mol)) addons.convert_to_ghf(dft.UKS(mol)) #addons.convert_to_rhf(dft.GKS(mol)) #addons.convert_to_uhf(dft.GKS(mol)) addons.convert_to_ghf(dft.GKS(mol)) self.assertTrue(isinstance(addons.convert_to_rhf(mf), scf.rhf.RHF)) self.assertTrue(isinstance(addons.convert_to_uhf(mf), scf.uhf.UHF)) self.assertTrue(isinstance(addons.convert_to_ghf(mf), scf.ghf.GHF)) self.assertTrue( isinstance(addons.convert_to_rhf(scf.UHF(mol)), scf.rhf.RHF)) self.assertTrue(isinstance(addons.convert_to_rhf(mf_u), scf.rohf.ROHF)) self.assertTrue(isinstance(addons.convert_to_uhf(mf_u), scf.uhf.UHF)) self.assertTrue(isinstance(addons.convert_to_ghf(mf_u), scf.ghf.GHF)) self.assertTrue( isinstance(addons.convert_to_rhf(sym_mf), scf.hf_symm.RHF)) self.assertTrue( isinstance(addons.convert_to_uhf(sym_mf), scf.uhf_symm.UHF)) self.assertTrue( isinstance(addons.convert_to_ghf(sym_mf), scf.ghf_symm.GHF)) self.assertTrue( isinstance(addons.convert_to_rhf(sym_mf_u), scf.hf_symm.ROHF)) self.assertTrue( isinstance(addons.convert_to_uhf(sym_mf_u), scf.uhf_symm.UHF)) self.assertTrue( isinstance(addons.convert_to_ghf(sym_mf_u), scf.ghf_symm.GHF)) mf1 = copy.copy(mf) self.assertTrue(isinstance(mf1.convert_from_(mf), scf.rhf.RHF)) self.assertTrue(isinstance(mf1.convert_from_(mf_u), scf.rhf.RHF)) self.assertFalse(isinstance(mf1.convert_from_(mf_u), scf.rohf.ROHF)) self.assertTrue(isinstance(mf1.convert_from_(sym_mf), scf.rhf.RHF)) self.assertTrue(isinstance(mf1.convert_from_(sym_mf_u), scf.rhf.RHF)) self.assertFalse(isinstance(mf1.convert_from_(sym_mf_u), scf.rohf.ROHF)) self.assertFalse(isinstance(mf1.convert_from_(sym_mf), scf.hf_symm.RHF)) self.assertFalse( isinstance(mf1.convert_from_(sym_mf_u), scf.hf_symm.RHF)) mf1 = copy.copy(mf_u) self.assertTrue(isinstance(mf1.convert_from_(mf), scf.uhf.UHF)) self.assertTrue(isinstance(mf1.convert_from_(mf_u), scf.uhf.UHF)) self.assertTrue(isinstance(mf1.convert_from_(sym_mf), scf.uhf.UHF)) self.assertTrue(isinstance(mf1.convert_from_(sym_mf_u), scf.uhf.UHF)) self.assertFalse( isinstance(mf1.convert_from_(sym_mf), scf.uhf_symm.UHF)) self.assertFalse( isinstance(mf1.convert_from_(sym_mf_u), scf.uhf_symm.UHF)) mf1 = scf.GHF(mol) self.assertTrue(isinstance(mf1.convert_from_(mf), scf.ghf.GHF)) self.assertTrue(isinstance(mf1.convert_from_(mf_u), scf.ghf.GHF)) self.assertTrue(isinstance(mf1.convert_from_(sym_mf), scf.ghf.GHF)) self.assertTrue(isinstance(mf1.convert_from_(sym_mf_u), scf.ghf.GHF)) self.assertFalse( isinstance(mf1.convert_from_(sym_mf), scf.ghf_symm.GHF)) self.assertFalse( isinstance(mf1.convert_from_(sym_mf_u), scf.ghf_symm.GHF)) self.assertTrue( isinstance( addons.convert_to_rhf(scf.RHF(mol).density_fit(), remove_df=False), df_jk._DFHF)) self.assertTrue( isinstance( addons.convert_to_uhf(scf.RHF(mol).density_fit(), remove_df=False), df_jk._DFHF)) self.assertTrue( isinstance( addons.convert_to_ghf(scf.RHF(mol).density_fit(), remove_df=False), df_jk._DFHF)) self.assertTrue( isinstance( addons.convert_to_rhf(scf.UHF(mol).density_fit(), remove_df=False), df_jk._DFHF)) self.assertTrue( isinstance( addons.convert_to_uhf(scf.UHF(mol).density_fit(), remove_df=False), df_jk._DFHF)) self.assertTrue( isinstance( addons.convert_to_ghf(scf.UHF(mol).density_fit(), remove_df=False), df_jk._DFHF)) #self.assertTrue(isinstance(addons.convert_to_rhf(scf.GHF(mol).density_fit(), remove_df=False),df_jk. _DFHF)) #self.assertTrue(isinstance(addons.convert_to_uhf(scf.GHF(mol).density_fit(), remove_df=False),df_jk. _DFHF)) self.assertTrue( isinstance( addons.convert_to_ghf(scf.GHF(mol).density_fit(), remove_df=False), df_jk._DFHF)) self.assertFalse( isinstance( addons.convert_to_rhf(scf.RHF(mol).density_fit(), out=scf.RHF(mol), remove_df=False), df_jk._DFHF)) self.assertFalse( isinstance( addons.convert_to_uhf(scf.RHF(mol).density_fit(), out=scf.UHF(mol), remove_df=False), df_jk._DFHF)) self.assertFalse( isinstance( addons.convert_to_ghf(scf.RHF(mol).density_fit(), out=scf.GHF(mol), remove_df=False), df_jk._DFHF)) self.assertFalse( isinstance( addons.convert_to_rhf(scf.UHF(mol).density_fit(), out=scf.RHF(mol), remove_df=False), df_jk._DFHF)) self.assertFalse( isinstance( addons.convert_to_uhf(scf.UHF(mol).density_fit(), out=scf.UHF(mol), remove_df=False), df_jk._DFHF)) self.assertFalse( isinstance( addons.convert_to_ghf(scf.UHF(mol).density_fit(), out=scf.GHF(mol), remove_df=False), df_jk._DFHF)) #self.assertFalse(isinstance(addons.convert_to_rhf(scf.GHF(mol).density_fit(), out=scf.RHF(mol), remove_df=False),df_jk. _DFHF)) #self.assertFalse(isinstance(addons.convert_to_uhf(scf.GHF(mol).density_fit(), out=scf.UHF(mol), remove_df=False),df_jk. _DFHF)) self.assertFalse( isinstance( addons.convert_to_ghf(scf.GHF(mol).density_fit(), out=scf.GHF(mol), remove_df=False), df_jk._DFHF)) self.assertFalse( isinstance( addons.convert_to_rhf(scf.RHF(mol).density_fit(), out=scf.RHF(mol), remove_df=True), df_jk._DFHF)) self.assertFalse( isinstance( addons.convert_to_uhf(scf.RHF(mol).density_fit(), out=scf.UHF(mol), remove_df=True), df_jk._DFHF)) self.assertFalse( isinstance( addons.convert_to_ghf(scf.RHF(mol).density_fit(), out=scf.GHF(mol), remove_df=True), df_jk._DFHF)) self.assertFalse( isinstance( addons.convert_to_rhf(scf.UHF(mol).density_fit(), out=scf.RHF(mol), remove_df=True), df_jk._DFHF)) self.assertFalse( isinstance( addons.convert_to_uhf(scf.UHF(mol).density_fit(), out=scf.UHF(mol), remove_df=True), df_jk._DFHF)) self.assertFalse( isinstance( addons.convert_to_ghf(scf.UHF(mol).density_fit(), out=scf.GHF(mol), remove_df=True), df_jk._DFHF)) #self.assertFalse(isinstance(addons.convert_to_rhf(scf.GHF(mol).density_fit(), out=scf.RHF(mol), remove_df=True),df_jk. _DFHF)) #self.assertFalse(isinstance(addons.convert_to_uhf(scf.GHF(mol).density_fit(), out=scf.UHF(mol), remove_df=True),df_jk. _DFHF)) self.assertFalse( isinstance( addons.convert_to_ghf(scf.GHF(mol).density_fit(), out=scf.GHF(mol), remove_df=True), df_jk._DFHF)) addons.convert_to_rhf(scf.RHF(mol).x2c().density_fit()) addons.convert_to_uhf(scf.RHF(mol).x2c().density_fit()) addons.convert_to_ghf(scf.RHF(mol).x2c().density_fit()) addons.convert_to_rhf(scf.UHF(mol).x2c().density_fit()) addons.convert_to_uhf(scf.UHF(mol).x2c().density_fit()) addons.convert_to_ghf(scf.UHF(mol).x2c().density_fit()) #addons.convert_to_rhf(scf.GHF(mol).x2c().density_fit()) #addons.convert_to_uhf(scf.GHF(mol).x2c().density_fit()) addons.convert_to_ghf(scf.GHF(mol).x2c().density_fit()) self.assertFalse( isinstance( addons.convert_to_rhf( scf.RHF(mol).x2c().newton().density_fit()), newton_ah._CIAH_SOSCF)) self.assertFalse( isinstance( addons.convert_to_uhf( scf.RHF(mol).x2c().newton().density_fit()), newton_ah._CIAH_SOSCF)) self.assertFalse( isinstance( addons.convert_to_ghf( scf.RHF(mol).x2c().newton().density_fit()), newton_ah._CIAH_SOSCF)) self.assertFalse( isinstance( addons.convert_to_rhf( scf.UHF(mol).x2c().newton().density_fit()), newton_ah._CIAH_SOSCF)) self.assertFalse( isinstance( addons.convert_to_uhf( scf.UHF(mol).x2c().newton().density_fit()), newton_ah._CIAH_SOSCF)) self.assertFalse( isinstance( addons.convert_to_ghf( scf.UHF(mol).x2c().newton().density_fit()), newton_ah._CIAH_SOSCF)) #self.assertFalse(isinstance(addons.convert_to_rhf(scf.GHF(mol).x2c().newton().density_fit()), newton_ah._CIAH_SOSCF)) #self.assertFalse(isinstance(addons.convert_to_uhf(scf.GHF(mol).x2c().newton().density_fit()), newton_ah._CIAH_SOSCF)) self.assertFalse( isinstance( addons.convert_to_ghf( scf.GHF(mol).x2c().newton().density_fit()), newton_ah._CIAH_SOSCF)) self.assertFalse( isinstance( addons.convert_to_rhf(scf.RHF(mol).newton().density_fit()), df_jk._DFHF)) self.assertFalse( isinstance( addons.convert_to_uhf(scf.RHF(mol).newton().density_fit()), df_jk._DFHF)) self.assertFalse( isinstance( addons.convert_to_ghf(scf.RHF(mol).newton().density_fit()), df_jk._DFHF)) self.assertFalse( isinstance( addons.convert_to_rhf(scf.UHF(mol).newton().density_fit()), df_jk._DFHF)) self.assertFalse( isinstance( addons.convert_to_uhf(scf.UHF(mol).newton().density_fit()), df_jk._DFHF)) self.assertFalse( isinstance( addons.convert_to_ghf(scf.UHF(mol).newton().density_fit()), df_jk._DFHF)) #self.assertFalse(isinstance(addons.convert_to_rhf(scf.GHF(mol).newton().density_fit()), df_jk._DFHF)) #self.assertFalse(isinstance(addons.convert_to_uhf(scf.GHF(mol).newton().density_fit()), df_jk._DFHF)) self.assertFalse( isinstance( addons.convert_to_ghf(scf.GHF(mol).newton().density_fit()), df_jk._DFHF)) self.assertTrue( isinstance( addons.convert_to_rhf(scf.RHF(mol).density_fit().newton()), df_jk._DFHF)) self.assertTrue( isinstance( addons.convert_to_uhf(scf.RHF(mol).density_fit().newton()), df_jk._DFHF)) self.assertTrue( isinstance( addons.convert_to_ghf(scf.RHF(mol).density_fit().newton()), df_jk._DFHF)) self.assertTrue( isinstance( addons.convert_to_rhf(scf.UHF(mol).density_fit().newton()), df_jk._DFHF)) self.assertTrue( isinstance( addons.convert_to_uhf(scf.UHF(mol).density_fit().newton()), df_jk._DFHF)) self.assertTrue( isinstance( addons.convert_to_ghf(scf.UHF(mol).density_fit().newton()), df_jk._DFHF)) #self.assertTrue(isinstance(addons.convert_to_rhf(scf.GHF(mol).density_fit().newton()), df_jk._DFHF)) #self.assertTrue(isinstance(addons.convert_to_uhf(scf.GHF(mol).density_fit().newton()), df_jk._DFHF)) self.assertTrue( isinstance( addons.convert_to_ghf(scf.GHF(mol).density_fit().newton()), df_jk._DFHF))
def test_mcol_mgga_ab_ks(self): mcol_m06l = dft.GKS(mol).set(xc='m06,', collinear='mcol') mcol_m06l._numint.spin_samples = 6 mcol_m06l.__dict__.update(scf.chkfile.load(mf_lda.chkfile, 'scf')) self._check_against_ab_ks_complex(mcol_m06l.TDDFT(), -0.5215225316715016, 1.9444403387002533)
def test_mcol_gga_ab_ks(self): mcol_b3lyp = dft.GKS(mol).set(xc='b3lyp', collinear='mcol') mcol_b3lyp._numint.spin_samples = 6 mcol_b3lyp.__dict__.update(scf.chkfile.load(mf_lda.chkfile, 'scf')) self._check_against_ab_ks_complex(mcol_b3lyp.TDDFT(), -0.49573245956851275, 0.4808293930369838)
def test_col_mgga_ab_ks(self): mf_m06l = dft.GKS(mol).set(xc='m06l') mf_m06l.__dict__.update(scf.chkfile.load(mf_lda.chkfile, 'scf')) self._check_against_ab_ks_real(tdscf.gks.TDDFT(mf_m06l), -0.49217076039995644, 0.14593146495412246)
def test_col_gga_ab_ks(self): mf_b3lyp = dft.GKS(mol).set(xc='b3lyp') mf_b3lyp.__dict__.update(scf.chkfile.load(mf_lda.chkfile, 'scf')) self._check_against_ab_ks_real(mf_b3lyp.TDDFT(), -0.47606715615564554, 0.1771403691719411)
def test_convert(self): rhf = scf.RHF(mol) uhf = scf.UHF(mol) ghf = scf.GHF(mol) rks = dft.RKS(mol) uks = dft.UKS(mol) gks = dft.GKS(mol) dhf = scf.DHF(mol) dks = dft.DKS(mol) udhf = scf.dhf.UDHF(mol) udks = dft.dks.UDKS(mol) self.assertTrue(isinstance(rhf.to_rhf(), scf.rhf.RHF)) self.assertTrue(isinstance(rhf.to_uhf(), scf.uhf.UHF)) self.assertTrue(isinstance(rhf.to_ghf(), scf.ghf.GHF)) self.assertTrue(isinstance(rhf.to_rks(), dft.rks.RKS)) self.assertTrue(isinstance(rhf.to_uks(), dft.uks.UKS)) self.assertTrue(isinstance(rhf.to_gks(), dft.gks.GKS)) self.assertTrue(isinstance(rks.to_rhf(), scf.rhf.RHF)) self.assertTrue(isinstance(rks.to_uhf(), scf.uhf.UHF)) self.assertTrue(isinstance(rks.to_ghf(), scf.ghf.GHF)) self.assertTrue(isinstance(rks.to_rks('pbe'), dft.rks.RKS)) self.assertTrue(isinstance(rks.to_uks('pbe'), dft.uks.UKS)) self.assertTrue(isinstance(rks.to_gks('pbe'), dft.gks.GKS)) self.assertTrue(isinstance(uhf.to_rhf(), scf.rhf.RHF)) self.assertTrue(isinstance(uhf.to_uhf(), scf.uhf.UHF)) self.assertTrue(isinstance(uhf.to_ghf(), scf.ghf.GHF)) self.assertTrue(isinstance(uhf.to_rks(), dft.rks.RKS)) self.assertTrue(isinstance(uhf.to_uks(), dft.uks.UKS)) self.assertTrue(isinstance(uhf.to_gks(), dft.gks.GKS)) self.assertTrue(isinstance(rks.to_rhf(), scf.rhf.RHF)) self.assertTrue(isinstance(rks.to_uhf(), scf.uhf.UHF)) self.assertTrue(isinstance(rks.to_ghf(), scf.ghf.GHF)) self.assertTrue(isinstance(uks.to_rks('pbe'), dft.rks.RKS)) self.assertTrue(isinstance(uks.to_uks('pbe'), dft.uks.UKS)) self.assertTrue(isinstance(uks.to_gks('pbe'), dft.gks.GKS)) #self.assertTrue(isinstance(ghf.to_rhf(), scf.rhf.RHF)) #self.assertTrue(isinstance(ghf.to_uhf(), scf.uhf.UHF)) self.assertTrue(isinstance(ghf.to_ghf(), scf.ghf.GHF)) #self.assertTrue(isinstance(ghf.to_rks(), dft.rks.RKS)) #self.assertTrue(isinstance(ghf.to_uks(), dft.uks.UKS)) self.assertTrue(isinstance(ghf.to_gks(), dft.gks.GKS)) #self.assertTrue(isinstance(gks.to_rhf(), scf.rhf.RHF)) #self.assertTrue(isinstance(gks.to_uhf(), scf.uhf.UHF)) self.assertTrue(isinstance(gks.to_ghf(), scf.ghf.GHF)) #self.assertTrue(isinstance(gks.to_rks('pbe'), dft.rks.RKS)) #self.assertTrue(isinstance(gks.to_uks('pbe'), dft.uks.UKS)) self.assertTrue(isinstance(gks.to_gks('pbe'), dft.gks.GKS)) self.assertRaises(RuntimeError, dhf.to_rhf) self.assertRaises(RuntimeError, dhf.to_uhf) self.assertRaises(RuntimeError, dhf.to_ghf) self.assertRaises(RuntimeError, dks.to_rks) self.assertRaises(RuntimeError, dks.to_uks) self.assertRaises(RuntimeError, dks.to_gks) if scf.dhf.zquatev is not None: self.assertTrue(isinstance(dhf.to_dhf(), scf.dhf.RDHF)) self.assertTrue(isinstance(dhf.to_dks(), dft.dks.RDKS)) self.assertTrue(isinstance(dks.to_dhf(), scf.dhf.RDHF)) self.assertTrue(isinstance(dks.to_dks('pbe'), dft.dks.RDKS)) self.assertTrue(isinstance(dhf.to_dhf(), scf.dhf.DHF)) self.assertTrue(isinstance(dhf.to_dks(), dft.dks.DKS)) self.assertTrue(isinstance(dks.to_dhf(), scf.dhf.DHF)) self.assertTrue(isinstance(dks.to_dks('pbe'), dft.dks.DKS)) self.assertTrue(isinstance(udhf.to_dhf(), scf.dhf.DHF)) self.assertTrue(isinstance(udhf.to_dks(), dft.dks.DKS)) self.assertTrue(isinstance(udks.to_dhf(), scf.dhf.DHF)) self.assertTrue(isinstance(udks.to_dks('pbe'), dft.dks.DKS))