def get_jk(self, dm, hermi=1, kpts=None, kpts_band=None, with_j=True, with_k=True, exxdiv=None): if kpts is None: if numpy.all(self.kpts == 0): # Gamma-point calculation by default kpts = numpy.zeros(3) else: kpts = self.kpts if kpts.shape == (3, ): return aft_jk.get_jk(self, dm, hermi, kpts, kpts_band, with_j, with_k, exxdiv) vj = vk = None if with_k: vk = aft_jk.get_k_kpts(self, dm, hermi, kpts, kpts_band, exxdiv) if with_j: vj = aft_jk.get_j_kpts(self, dm, hermi, kpts, kpts_band) return vj, vk
def get_jk(self, dm, hermi=1, kpts=None, kpts_band=None, with_j=True, with_k=True, omega=None, exxdiv=None): if omega is not None: # J/K for RSH functionals return _sub_df_jk_(self, dm, hermi, kpts, kpts_band, with_j, with_k, omega, exxdiv) if kpts is None: if numpy.all(self.kpts == 0): # Gamma-point calculation by default kpts = numpy.zeros(3) else: kpts = self.kpts kpts = numpy.asarray(kpts) if kpts.shape == (3, ): return aft_jk.get_jk(self, dm, hermi, kpts, kpts_band, with_j, with_k, exxdiv) vj = vk = None if with_k: vk = aft_jk.get_k_kpts(self, dm, hermi, kpts, kpts_band, exxdiv) if with_j: vj = aft_jk.get_j_kpts(self, dm, hermi, kpts, kpts_band) return vj, vk
def get_j_kpts(mydf, dm_kpts, hermi=1, kpts=numpy.zeros((1, 3)), kpts_band=None): vj_kpts = aft_jk.get_j_kpts(mydf, dm_kpts, hermi, kpts, kpts_band) vj_kpts += df_jk.get_j_kpts(mydf, dm_kpts, hermi, kpts, kpts_band) return vj_kpts
def test_aft_j(self): numpy.random.seed(1) nao = cell.nao_nr() dm = numpy.random.random((4,nao,nao)) dm = dm + dm.transpose(0,2,1) mydf = aft.AFTDF(cell) mydf.kpts = numpy.random.random((4,3)) mydf.mesh = numpy.asarray((11,)*3) vj = aft_jk.get_j_kpts(mydf, dm, 1, mydf.kpts) self.assertAlmostEqual(finger(vj[0]), (0.93946193432413905+0.00010862804196223034j)/4, 9) self.assertAlmostEqual(finger(vj[1]), (0.94866073525335626+0.005571199307452865j) /4, 9) self.assertAlmostEqual(finger(vj[2]), (1.1492194255929766+0.0093705761598793739j) /4, 9) self.assertAlmostEqual(finger(vj[3]), (1.1397493412770023+0.010731970529096637j) /4, 9)
def test_aft_j(self): numpy.random.seed(1) nao = cell.nao_nr() dm = numpy.random.random((4, nao, nao)) dm = dm + dm.transpose(0, 2, 1) mydf = aft.AFTDF(cell) mydf.kpts = numpy.random.random((4, 3)) mydf.mesh = numpy.asarray((11, ) * 3) vj = aft_jk.get_j_kpts(mydf, dm, 1, mydf.kpts) self.assertAlmostEqual(finger( vj[0]), (0.93946193432413905 + 0.00010862804196223034j) / 4, 9) self.assertAlmostEqual(finger( vj[1]), (0.94866073525335626 + 0.005571199307452865j) / 4, 9) self.assertAlmostEqual(finger( vj[2]), (1.1492194255929766 + 0.0093705761598793739j) / 4, 9) self.assertAlmostEqual(finger( vj[3]), (1.1397493412770023 + 0.010731970529096637j) / 4, 9)
def get_jk(self, dm, hermi=1, kpts=None, kpts_band=None, with_j=True, with_k=True, exxdiv=None): if kpts is None: if numpy.all(self.kpts == 0): # Gamma-point calculation by default kpts = numpy.zeros(3) else: kpts = self.kpts if kpts.shape == (3,): return aft_jk.get_jk(self, dm, hermi, kpts, kpts_band, with_j, with_k, exxdiv) vj = vk = None if with_k: vk = aft_jk.get_k_kpts(self, dm, hermi, kpts, kpts_band, exxdiv) if with_j: vj = aft_jk.get_j_kpts(self, dm, hermi, kpts, kpts_band) return vj, vk
def get_j_kpts(mydf, dm_kpts, hermi=1, kpts=numpy.zeros((1,3)), kpts_band=None): if mydf._cderi is None or mydf.auxcell is None or not mydf.has_kpts(kpts_band): mydf.build(kpts_band=kpts_band) vj_kpts = aft_jk.get_j_kpts(mydf, dm_kpts, hermi, kpts, kpts_band) vj_kpts += df_jk.get_j_kpts(mydf, dm_kpts, hermi, kpts, kpts_band) return vj_kpts
def get_j_kpts(mydf, dm_kpts, hermi=1, kpts=numpy.zeros((1,3)), kpts_band=None): vj_kpts = aft_jk.get_j_kpts(mydf, dm_kpts, hermi, kpts, kpts_band) vj_kpts += df_jk.get_j_kpts(mydf, dm_kpts, hermi, kpts, kpts_band) return vj_kpts