예제 #1
0
파일: test_khf.py 프로젝트: pyscf/pyscf
 def test_kuhf_1d(self):
     L = 4
     cell = pbcgto.Cell()
     cell.build(
         unit='B',
         a=np.eye(3) * 4,
         mesh=[8, 20, 20],
         atom='''He 2 0 0; He 3 0 0''',
         dimension=1,
         low_dim_ft_type='inf_vacuum',
         verbose=0,
         rcut=7.427535697575829,
         basis={
             'He': [
                 [0, (0.8, 1.0)],
                 #[0, (1.0, 1.0)],
                 [0, (1.2, 1.0)]
             ]
         })
     mf = kuhf.KUHF(cell)
     mf.with_df = df.AFTDF(cell)
     mf.with_df.eta = 0.2
     mf.init_guess = 'hcore'
     mf.kpts = cell.make_kpts([2, 1, 1])
     e1 = mf.kernel()
     self.assertAlmostEqual(e1, -3.5112358424228809, 5)
예제 #2
0
파일: test_khf.py 프로젝트: lichen5/pyscf
 def test_kuhf(self):
     ngs = 4
     cell = make_primitive_cell(ngs)
     nk = (3, 1, 1)
     kpts = cell.make_kpts(nk)
     kmf1 = kuhf.KUHF(cell, kpts, exxdiv='vcut_sph')
     ekpt = kmf1.scf()
     self.assertAlmostEqual(ekpt, -11.221426555985234, 8)
예제 #3
0
 def test_kuhf(self):
     ngs = 4
     cell = make_primitive_cell(ngs)
     nk = (3, 1, 1)
     kpts = cell.make_kpts(nk)
     kmf1 = kuhf.KUHF(cell, kpts, exxdiv='vcut_sph')
     ekpt = kmf1.scf()
     self.assertAlmostEqual(ekpt, -11.218735269838586, 8)
     np.random.seed(1)
     kpts_bands = np.random.random((2, 3))
     e = kmf1.get_bands(kpts_bands)[0]
     self.assertAlmostEqual(finger(e), -0.045541292730566063, 8)
예제 #4
0
 def test_kuhf_high_cost(self):
     n = 9
     cell = make_primitive_cell([n]*3)
     nk = (3, 1, 1)
     kpts = cell.make_kpts(nk)
     kmf1 = kuhf.KUHF(cell, kpts, exxdiv='vcut_sph')
     kmf1.conv_tol = 1e-9
     ekpt = kmf1.scf()
     self.assertAlmostEqual(ekpt, -11.218735269838586, 8)
     np.random.seed(1)
     kpts_bands = np.random.random((2,3))
     e = kmf1.get_bands(kpts_bands)[0]
     self.assertAlmostEqual(finger(np.array(e)), -0.045547555445877741, 6)
예제 #5
0
def KHF(cell, *args, **kwargs):
    if cell.spin == 0:
        return krhf.KRHF(cell, *args, **kwargs)
    else:
        return kuhf.KUHF(cell, *args, **kwargs)
예제 #6
0
파일: test_khf.py 프로젝트: pyscf/pyscf
def setUpModule():
    global cell, kmf, kumf, kpts
    cell = make_primitive_cell([9] * 3)
    kpts = cell.make_kpts([3, 1, 1])
    kmf = khf.KRHF(cell, kpts, exxdiv='vcut_sph').run(conv_tol=1e-9)
    kumf = kuhf.KUHF(cell, kpts, exxdiv='vcut_sph').run(conv_tol=1e-9)
예제 #7
0
                1.7834  1.7834  0.    '''

    cell.basis = 'gth-szv'
    cell.pseudo = 'gth-pade'
    cell.mesh = mesh

    cell.verbose = 7
    cell.output = '/dev/null'
    cell.build()
    return cell


cell = make_primitive_cell([9] * 3)
kpts = cell.make_kpts([3, 1, 1])
kmf = khf.KRHF(cell, kpts, exxdiv='vcut_sph').run(conv_tol=1e-9)
kumf = kuhf.KUHF(cell, kpts, exxdiv='vcut_sph').run(conv_tol=1e-9)


def tearDownModule():
    global cell, kmf, kumf
    cell.stdout.close()
    del cell, kmf, kumf


class KnownValues(unittest.TestCase):
    def test_analyze(self):
        rpop, rchg = kmf.analyze()  # pop at gamma point
        upop, uchg = kumf.analyze()
        self.assertTrue(isinstance(rpop, np.ndarray) and rpop.ndim == 1)
        self.assertAlmostEqual(abs(upop[0] + upop[1] - rpop).max(), 0, 7)
        self.assertAlmostEqual(lib.fp(rpop), 1.697446, 5)