def convert_from_(self, mf): '''Create GHF object based on the RHF/UHF object''' from pyscf.scf import addons return addons.convert_to_ghf(mf, out=self)
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_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 convert_to_ghf(mf, out=None): '''Convert the given mean-field object to the generalized HF/KS object Args: mf : SCF object Returns: An generalized SCF object ''' from pyscf.pbc import scf if out is not None: assert (isinstance(out, (scf.ghf.GHF, scf.kghf.KGHF))) if isinstance(mf, scf.khf.KSCF): assert (isinstance(out, scf.khf.KSCF)) else: assert (not isinstance(out, scf.khf.KSCF)) if isinstance(mf, scf.ghf.GHF): if out is None: return copy.copy(mf) else: out.__dict__.update(mf.__dict__) return out elif isinstance(mf, scf.khf.KSCF): def update_mo_(mf, mf1): _keys = mf._keys.union(mf1._keys) mf1.__dict__.update(mf.__dict__) mf1._keys = _keys if mf.mo_energy is not None: mf1.mo_energy = [] mf1.mo_occ = [] mf1.mo_coeff = [] nkpts = len(mf.kpts) is_rhf = isinstance(mf, scf.hf.RHF) for k in range(nkpts): if is_rhf: mo_a = mo_b = mf.mo_coeff[k] ea = getattr(mf.mo_energy[k], 'mo_ea', mf.mo_energy[k]) eb = getattr(mf.mo_energy[k], 'mo_eb', mf.mo_energy[k]) occa = mf.mo_occ[k] > 0 occb = mf.mo_occ[k] == 2 orbspin = mol_addons.get_ghf_orbspin( ea, mf.mo_occ[k], True) else: mo_a = mf.mo_coeff[0][k] mo_b = mf.mo_coeff[1][k] ea = mf.mo_energy[0][k] eb = mf.mo_energy[1][k] occa = mf.mo_occ[0][k] occb = mf.mo_occ[1][k] orbspin = mol_addons.get_ghf_orbspin( (ea, eb), (occa, occb), False) nao, nmo = mo_a.shape mo_energy = numpy.empty(nmo * 2) mo_energy[orbspin == 0] = ea mo_energy[orbspin == 1] = eb mo_occ = numpy.empty(nmo * 2) mo_occ[orbspin == 0] = occa mo_occ[orbspin == 1] = occb mo_coeff = numpy.zeros((nao * 2, nmo * 2), dtype=mo_a.dtype) mo_coeff[:nao, orbspin == 0] = mo_a mo_coeff[nao:, orbspin == 1] = mo_b mo_coeff = lib.tag_array(mo_coeff, orbspin=orbspin) mf1.mo_energy.append(mo_energy) mf1.mo_occ.append(mo_occ) mf1.mo_coeff.append(mo_coeff) return mf1 if out is None: out = scf.kghf.KGHF(mf.cell) return update_mo_(mf, out) else: if out is None: out = scf.ghf.GHF(mf.cell) out = mol_addons.convert_to_ghf(mf, out, remove_df=False) # Manually update .with_df because this attribute may not be passed to the # output object correctly in molecular convert function out.with_df = mf.with_df return out
def convert_to_ghf(mf, out=None): '''Convert the given mean-field object to the generalized HF/KS object Args: mf : SCF object Returns: An generalized SCF object ''' from pyscf.scf import addons as mol_addons from pyscf.pbc import scf if out is not None: assert(isinstance(out, (scf.ghf.GHF, scf.kghf.KGHF))) if isinstance(mf, scf.khf.KSCF): assert(isinstance(out, scf.khf.KSCF)) else: assert(not isinstance(out, scf.khf.KSCF)) if isinstance(mf, scf.ghf.GHF): if out is None: return copy.copy(mf) else: out.__dict__.update(mf.__dict__) return out elif isinstance(mf, scf.khf.KSCF): def update_mo_(mf, mf1): _keys = mf._keys.union(mf1._keys) mf1.__dict__.update(mf.__dict__) mf1._keys = _keys if mf.mo_energy is not None: mf1.mo_energy = [] mf1.mo_occ = [] mf1.mo_coeff = [] nkpts = len(mf.kpts) is_rhf = isinstance(mf, scf.hf.RHF) for k in range(nkpts): if is_rhf: mo_a = mo_b = mf.mo_coeff[k] ea = eb = mf.mo_energy[k] occa = mf.mo_occ[k] > 0 occb = mf.mo_occ[k] == 2 orbspin = mol_addons.get_ghf_orbspin(ea, mf.mo_occ[k], True) else: mo_a = mf.mo_coeff[0][k] mo_b = mf.mo_coeff[1][k] ea = mf.mo_energy[0][k] eb = mf.mo_energy[1][k] occa = mf.mo_occ[0][k] occb = mf.mo_occ[1][k] orbspin = mol_addons.get_ghf_orbspin((ea, eb), (occa, occb), False) nao, nmo = mo_a.shape mo_energy = numpy.empty(nmo*2) mo_energy[orbspin==0] = ea mo_energy[orbspin==1] = eb mo_occ = numpy.empty(nmo*2) mo_occ[orbspin==0] = occa mo_occ[orbspin==1] = occb mo_coeff = numpy.zeros((nao*2,nmo*2), dtype=mo_a.dtype) mo_coeff[:nao,orbspin==0] = mo_a mo_coeff[nao:,orbspin==1] = mo_b mo_coeff = lib.tag_array(mo_coeff, orbspin=orbspin) mf1.mo_energy.append(mo_energy) mf1.mo_occ.append(mo_occ) mf1.mo_coeff.append(mo_coeff) return mf1 if out is None: out = scf.kghf.KGHF(mf.cell) return update_mo_(mf, out) else: if out is None: out = scf.ghf.GHF(mf.cell) return mol_addons.convert_to_ghf(mf, out, False)