def test_init(self): from pyscf.pbc import dft cell_u = cell.copy() cell_u.spin = 2 self.assertTrue(isinstance(pscf.RKS (cell ), dft.rks.RKS )) self.assertTrue(isinstance(pscf.RKS (cell_u), dft.roks.ROKS )) self.assertTrue(isinstance(pscf.UKS (cell ), dft.uks.UKS )) self.assertTrue(isinstance(pscf.ROKS (cell ), dft.roks.ROKS )) self.assertTrue(isinstance(pscf.KS (cell ), dft.rks.RKS )) self.assertTrue(isinstance(pscf.KS (cell_u), dft.uks.UKS )) self.assertTrue(isinstance(pscf.KRKS (cell ), dft.krks.KRKS )) self.assertTrue(isinstance(pscf.KRKS (cell_u), dft.krks.KRKS )) self.assertTrue(isinstance(pscf.KUKS (cell ), dft.kuks.KUKS )) self.assertTrue(isinstance(pscf.KROKS(cell ), dft.kroks.KROKS)) self.assertTrue(isinstance(pscf.KKS (cell ), dft.krks.KRKS )) self.assertTrue(isinstance(pscf.KKS (cell_u), dft.kuks.KUKS )) self.assertTrue(isinstance(pscf.RHF (cell ), pscf.hf.RHF )) self.assertTrue(isinstance(pscf.RHF (cell_u), pscf.rohf.ROHF )) self.assertTrue(isinstance(pscf.KRHF (cell ), pscf.khf.KRHF )) self.assertTrue(isinstance(pscf.KRHF (cell_u), pscf.khf.KRHF )) self.assertTrue(isinstance(pscf.UHF (cell ), pscf.uhf.UHF )) self.assertTrue(isinstance(pscf.KUHF (cell_u), pscf.kuhf.KUHF )) self.assertTrue(isinstance(pscf.GHF (cell ), pscf.ghf.GHF )) self.assertTrue(isinstance(pscf.KGHF (cell_u), pscf.kghf.KGHF )) self.assertTrue(isinstance(pscf.ROHF (cell ), pscf.rohf.ROHF )) self.assertTrue(isinstance(pscf.ROHF (cell_u), pscf.rohf.ROHF )) self.assertTrue(isinstance(pscf.KROHF(cell ), pscf.krohf.KROHF)) self.assertTrue(isinstance(pscf.KROHF(cell_u), pscf.krohf.KROHF)) self.assertTrue(isinstance(pscf.HF (cell ), pscf.hf.RHF )) self.assertTrue(isinstance(pscf.HF (cell_u), pscf.uhf.UHF )) self.assertTrue(isinstance(pscf.KHF (cell ), pscf.khf.KRHF )) self.assertTrue(isinstance(pscf.KHF (cell_u), pscf.kuhf.KUHF ))
def test_convert_to_khf(self): mf1 = pscf.GHF(cell) self.assertTrue(isinstance(pscf.addons.convert_to_khf(mf1), pscf.kghf.KGHF)) mf1 = pscf.RHF(cell) self.assertTrue(isinstance(pscf.addons.convert_to_khf(mf1), pscf.krhf.KRHF)) mf1 = pscf.UHF(cell) self.assertTrue(isinstance(pscf.addons.convert_to_khf(mf1), pscf.kuhf.KUHF)) mf1 = pscf.ROHF(cell) self.assertTrue(isinstance(pscf.addons.convert_to_khf(mf1), pscf.krohf.KROHF))
def test_get_init_guess(self): cell1 = cell.copy() cell1.dimension = 1 cell1.build(0, 0) mf = pscf.ROHF(cell1) dm = mf.get_init_guess(key='minao') self.assertAlmostEqual(lib.finger(dm), -0.06586028869608128, 8) mf = pscf.KROHF(cell1) dm = mf.get_init_guess(key='minao') self.assertAlmostEqual(lib.finger(dm), -0.06586028869608128, 8)
def test_krhf_vs_rhf(self): np.random.seed(1) k = np.random.random(3) mf = pscf.ROHF(cell, k, exxdiv='vcut_sph') mf.max_cycle = 1 mf.diis = None e1 = mf.kernel() kmf = pscf.KROHF(cell, [k], exxdiv='vcut_sph') kmf.max_cycle = 1 kmf.diis = None e2 = kmf.kernel() self.assertAlmostEqual(e1, e2, 9) self.assertAlmostEqual(e1, -3.3046228601655607, 9)
def test_init_guess_by_chkfile(self): np.random.seed(1) k = np.random.random(3) mf = pscf.KROHF(cell, [k], exxdiv='vcut_sph') mf.init_guess = 'hcore' mf.max_cycle = 1 mf.diis = None e1 = mf.kernel() self.assertAlmostEqual(e1, -3.4376090968645068, 9) mf1 = pscf.ROHF(cell, exxdiv='vcut_sph') mf1.chkfile = mf.chkfile mf1.init_guess = 'chkfile' mf1.diis = None mf1.max_cycle = 1 e1 = mf1.kernel() self.assertAlmostEqual(e1, -3.4190632006601662, 9) self.assertTrue(mf1.mo_coeff[0].dtype == np.double)
def setUpModule(): global cell, mf, kmf, kpts cell = pgto.Cell() cell.atom = ''' He 0 0 1 He 1 0 1 ''' cell.basis = '321g' cell.a = np.eye(3) * 3 cell.mesh = [8] * 3 cell.verbose = 7 cell.output = '/dev/null' cell.spin = 2 cell.build() nk = [2, 2, 1] kpts = cell.make_kpts(nk, wrap_around=True) kmf = pscf.KROHF(cell, kpts).run() mf = pscf.ROHF(cell).run()
cell.atom = ''' He 0 0 1 He 1 0 1 ''' cell.basis = '321g' cell.a = np.eye(3) * 3 cell.mesh = [8] * 3 cell.verbose = 7 cell.output = '/dev/null' cell.spin = 2 cell.build() nk = [2, 2, 1] kpts = cell.make_kpts(nk, wrap_around=True) kmf = pscf.KROHF(cell, kpts).run() mf = pscf.ROHF(cell).run() def tearDownModule(): global cell, kmf, mf cell.stdout.close() del cell, kmf, mf class KnownValues(unittest.TestCase): def test_krohf_kernel(self): self.assertAlmostEqual(kmf.e_tot, -4.569633030494753, 8) def test_rohf_kernel(self): self.assertAlmostEqual(mf.e_tot, -3.3633746534777718, 8) def test_krhf_vs_rhf(self): np.random.seed(1)
def test_convert_to_scf(self): from pyscf.pbc import dft from pyscf.pbc import df from pyscf.soscf import newton_ah cell1 = cell.copy() cell1.verbose = 0 pscf.addons.convert_to_rhf(dft.RKS(cell1)) pscf.addons.convert_to_uhf(dft.RKS(cell1)) #pscf.addons.convert_to_ghf(dft.RKS(cell1)) pscf.addons.convert_to_rhf(dft.UKS(cell1)) pscf.addons.convert_to_uhf(dft.UKS(cell1)) #pscf.addons.convert_to_ghf(dft.UKS(cell1)) #pscf.addons.convert_to_rhf(dft.GKS(cell1)) #pscf.addons.convert_to_uhf(dft.GKS(cell1)) #pscf.addons.convert_to_ghf(dft.GKS(cell1)) pscf.addons.convert_to_rhf(pscf.RHF(cell1).density_fit()) pscf.addons.convert_to_uhf(pscf.RHF(cell1).density_fit()) pscf.addons.convert_to_ghf(pscf.RHF(cell1).density_fit()) pscf.addons.convert_to_rhf(pscf.ROHF(cell1).density_fit()) pscf.addons.convert_to_uhf(pscf.ROHF(cell1).density_fit()) pscf.addons.convert_to_ghf(pscf.ROHF(cell1).density_fit()) pscf.addons.convert_to_rhf(pscf.UHF(cell1).density_fit()) pscf.addons.convert_to_uhf(pscf.UHF(cell1).density_fit()) pscf.addons.convert_to_ghf(pscf.UHF(cell1).density_fit()) #pscf.addons.convert_to_rhf(pscf.GHF(cell1).density_fit()) #pscf.addons.convert_to_uhf(pscf.GHF(cell1).density_fit()) pscf.addons.convert_to_ghf(pscf.GHF(cell1).density_fit()) pscf.addons.convert_to_rhf(pscf.RHF(cell1).x2c().density_fit()) pscf.addons.convert_to_uhf(pscf.RHF(cell1).x2c().density_fit()) pscf.addons.convert_to_ghf(pscf.RHF(cell1).x2c().density_fit()) pscf.addons.convert_to_rhf(pscf.ROHF(cell1).x2c().density_fit()) pscf.addons.convert_to_uhf(pscf.ROHF(cell1).x2c().density_fit()) pscf.addons.convert_to_ghf(pscf.ROHF(cell1).x2c().density_fit()) pscf.addons.convert_to_rhf(pscf.UHF(cell1).x2c().density_fit()) pscf.addons.convert_to_uhf(pscf.UHF(cell1).x2c().density_fit()) pscf.addons.convert_to_ghf(pscf.UHF(cell1).x2c().density_fit()) #pscf.addons.convert_to_rhf(pscf.GHF(cell1).x2c().density_fit()) #pscf.addons.convert_to_uhf(pscf.GHF(cell1).x2c().density_fit()) pscf.addons.convert_to_ghf(pscf.GHF(cell1).x2c().density_fit()) self.assertTrue( isinstance( pscf.addons.convert_to_rhf( pscf.RHF(cell1).newton().density_fit().x2c()), newton_ah._CIAH_SOSCF)) self.assertFalse( isinstance( pscf.addons.convert_to_uhf( pscf.RHF(cell1).newton().density_fit().x2c()), newton_ah._CIAH_SOSCF)) self.assertFalse( isinstance( pscf.addons.convert_to_ghf( pscf.RHF(cell1).newton().density_fit().x2c()), newton_ah._CIAH_SOSCF)) self.assertFalse( isinstance( pscf.addons.convert_to_rhf( pscf.UHF(cell1).newton().density_fit().x2c()), newton_ah._CIAH_SOSCF)) self.assertTrue( isinstance( pscf.addons.convert_to_uhf( pscf.UHF(cell1).newton().density_fit().x2c()), newton_ah._CIAH_SOSCF)) self.assertFalse( isinstance( pscf.addons.convert_to_ghf( pscf.UHF(cell1).newton().density_fit().x2c()), newton_ah._CIAH_SOSCF)) #self.assertFalse(isinstance(pscf.addons.convert_to_rhf(pscf.GHF(cell1).newton().density_fit().x2c()), newton_ah._CIAH_SOSCF)) #self.assertFalse(isinstance(pscf.addons.convert_to_uhf(pscf.GHF(cell1).newton().density_fit().x2c()), newton_ah._CIAH_SOSCF)) self.assertTrue( isinstance( pscf.addons.convert_to_ghf( pscf.GHF(cell1).newton().density_fit().x2c()), newton_ah._CIAH_SOSCF)) mf1 = pscf.rhf.RHF(cell1) cell2 = cell1.copy() cell2.spin = 2 self.assertTrue( isinstance(mf1.convert_from_(pscf.UHF(cell1)), pscf.hf.RHF)) self.assertTrue( isinstance(mf1.convert_from_(pscf.UHF(cell2)), pscf.hf.RHF)) self.assertFalse( isinstance(mf1.convert_from_(pscf.UHF(cell2)), pscf.rohf.ROHF)) self.assertFalse( isinstance(mf1.convert_from_(pscf.UHF(cell1).newton()), newton_ah._CIAH_SOSCF)) self.assertTrue( isinstance( mf1.convert_from_(pscf.UHF(cell2).density_fit()).with_df, df.df.GDF)) self.assertTrue( isinstance( mf1.convert_from_(pscf.UHF(cell2).mix_density_fit()).with_df, df.mdf.MDF)) self.assertFalse( isinstance(mf1.convert_from_(pscf.ROHF(cell2)), pscf.rohf.ROHF)) self.assertRaises(AssertionError, mf1.convert_from_, kmf_u) mf1 = pscf.rohf.ROHF(cell1) self.assertTrue( isinstance(mf1.convert_from_(pscf.UHF(cell1)), pscf.rohf.ROHF)) self.assertTrue( isinstance(mf1.convert_from_(pscf.UHF(cell2)), pscf.rohf.ROHF)) self.assertFalse( isinstance(mf1.convert_from_(pscf.UHF(cell1).newton()), newton_ah._CIAH_SOSCF)) self.assertTrue( isinstance( mf1.convert_from_(pscf.UHF(cell2).density_fit()).with_df, df.df.GDF)) self.assertTrue( isinstance( mf1.convert_from_(pscf.UHF(cell2).mix_density_fit()).with_df, df.mdf.MDF)) self.assertTrue( isinstance(mf1.convert_from_(pscf.RHF(cell1)), pscf.rohf.ROHF)) self.assertRaises(AssertionError, mf1.convert_from_, kmf_u) mf1 = pscf.uhf.UHF(cell1) self.assertTrue( isinstance(mf1.convert_from_(pscf.RHF(cell1)), pscf.uhf.UHF)) self.assertFalse( isinstance(mf1.convert_from_(pscf.RHF(cell1).newton()), newton_ah._CIAH_SOSCF)) self.assertTrue( isinstance( mf1.convert_from_(pscf.RHF(cell1).density_fit()).with_df, df.df.GDF)) self.assertTrue( isinstance( mf1.convert_from_(pscf.RHF(cell1).mix_density_fit()).with_df, df.mdf.MDF)) self.assertRaises(AssertionError, mf1.convert_from_, kmf_u) mf1 = pscf.ghf.GHF(cell1) self.assertTrue( isinstance(mf1.convert_from_(pscf.RHF(cell1)), pscf.ghf.GHF)) self.assertTrue( isinstance(mf1.convert_from_(pscf.UHF(cell1)), pscf.ghf.GHF)) self.assertTrue( isinstance(mf1.convert_from_(pscf.ROHF(cell1)), pscf.ghf.GHF)) self.assertRaises(AssertionError, mf1.convert_from_, kmf_u)
def test_nr_rohf(self): mf = scf.ROHF(cell).newton() mf.conv_tol_grad = 1e-4 mf.kernel() self.assertAlmostEqual(mf.e_tot, -10.137043711032916, 8)
def test_rohf_kernel(self): mf = pscf.ROHF(cell).run() self.assertAlmostEqual(mf.e_tot, -3.3633746534777718, 8)