示例#1
0
    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  ))
示例#2
0
 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))
示例#3
0
    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)
示例#4
0
    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)
示例#5
0
    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)
示例#6
0
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()
示例#7
0
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)
示例#8
0
    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)
示例#9
0
 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)
示例#10
0
文件: test_rohf.py 项目: hshi/pyscf
 def test_rohf_kernel(self):
     mf = pscf.ROHF(cell).run()
     self.assertAlmostEqual(mf.e_tot, -3.3633746534777718, 8)