def test_ghf_exx_ewald(self): mf = pscf.GHF(cell, exxdiv='ewald') mf.init_guess = 'hcore' e1 = mf.kernel() self.assertAlmostEqual(e1, -4.3511582287379111, 8) self.assertTrue(mf.mo_coeff.dtype == numpy.double) kmf = pscf.KGHF(cell, [[0,0,0]], exxdiv='ewald') kmf.init_guess = 'hcore' e0 = kmf.kernel() self.assertTrue(numpy.allclose(e0,e1)) # # test bands # numpy.random.seed(1) # kpts_band = numpy.random.random((2,3)) # e1, c1 = mf.get_bands(kpts_band) # e0, c0 = kmf.get_bands(kpts_band) # self.assertAlmostEqual(abs(e0[0]-e1[0]).max(), 0, 7) # self.assertAlmostEqual(abs(e0[1]-e1[1]).max(), 0, 7) # self.assertAlmostEqual(lib.finger(e1[0]), -6.2986775452228283, 7) # self.assertAlmostEqual(lib.finger(e1[1]), -7.6616273746782362, 7) numpy.random.seed(1) k = numpy.random.random(3) mf = pscf.GHF(cell, k, exxdiv='ewald') e1 = mf.kernel() self.assertAlmostEqual(e1, -4.2048655827967139, 8) self.assertTrue(mf.mo_coeff.dtype == numpy.complex128) kmf = pscf.KGHF(cell, k, exxdiv='ewald') e0 = kmf.kernel() self.assertTrue(numpy.allclose(e0,e1))
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_ghf_1d(self): L = 4 cell = pbcgto.Cell() cell.build( unit='B', a=numpy.eye(3) * 4, mesh=[10, 20, 20], atom='''He 2 0 0; He 3 0 0''', dimension=1, low_dim_ft_type='inf_vacuum', verbose=0, basis={ 'He': [ [0, (0.8, 1.0)], #[0, (1.0, 1.0)], [0, (1.2, 1.0)] ] }) mf = pscf.GHF(cell) mf.with_df = pdf.AFTDF(cell) mf.with_df.eta = 0.3 mf.with_df.mesh = cell.mesh mf.init_guess = 'hcore' e1 = mf.kernel() self.assertAlmostEqual(e1, -3.24497234871167, 5)
def test_dmd_high_cost(self): cell = gto.Cell() cell.atom = ''' C 0.000000000000 0.000000000000 0.000000000000 C 1.685068664391 1.685068664391 1.685068664391 ''' cell.basis = {'C': [[0, (0.8, 1.0)], [1, (1.0, 1.0)]]} cell.pseudo = 'gth-pade' cell.a = ''' 0.000000000, 3.370137329, 3.370137329 3.370137329, 0.000000000, 3.370137329 3.370137329, 3.370137329, 0.000000000''' cell.unit = 'B' cell.verbose = 5 cell.build() nmp = [1, 1, 2] # treating 1*1*2 supercell at gamma point supcell = super_cell(cell, nmp) gmf = scf.GHF(supcell, exxdiv=None) ehf = gmf.kernel() gcc = cc.GCCSD(gmf) gcc.conv_tol = 1e-12 gcc.conv_tol_normt = 1e-10 gcc.max_cycle = 250 ecc, t1, t2 = gcc.kernel() print('GHF energy (supercell) %.7f \n' % (float(ehf) / 2.)) print('GCCSD correlation energy (supercell) %.7f \n' % (float(ecc) / 2.)) eom = eom_gccsd.EOMIP(gcc) e1, v = eom.ipccsd(nroots=2) eom = eom_gccsd.EOMEA(gcc) e2, v = eom.eaccsd(nroots=2, koopmans=True) # Running HF and CCSD with 1x1x2 Monkhorst-Pack k-point mesh kmf = scf.KGHF(cell, kpts=cell.make_kpts(nmp), exxdiv=None) ehf2 = kmf.kernel() mycc = cc.KGCCSD(kmf) mycc.conv_tol = 1e-12 mycc.conv_tol_normt = 1e-10 mycc.max_cycle = 250 ecc2, t1, t2 = mycc.kernel() print('GHF energy %.7f \n' % (float(ehf2))) print('GCCSD correlation energy %.7f \n' % (float(ecc2))) kptlist = cell.make_kpts(nmp) eom = EOMIP(mycc) e1_obt, v = eom.ipccsd(nroots=2, kptlist=[0]) eom = EOMEA(mycc) e2_obt, v = eom.eaccsd(nroots=2, koopmans=True, kptlist=[0]) assert (ehf / 2 - ehf2 < 1e-10) assert (ecc / 2 - ecc2 < 1e-10) assert (e1[0] - (e1_obt[0][0]) < 1e-7) assert (e2[0] - (e2_obt[0][0]) < 1e-7)
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_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)