def energy_elec(ks, dm=None, h1e=None, vhf=None): tot_e, ecoul_exc = rks.energy_elec(ks, dm, h1e, vhf) if (hasattr(ks, 'smear_sigma')): tot_e += entropy_corr(ks.mo_occ, ks.smear_sigma) return tot_e, ecoul_exc
def energy_elec(ks, dm=None, h1e=None, vhf=None): if dm is None: dm = ks.make_rdm1() if h1e is None: h1e = ks.get_hcore() if vhf is None or getattr(vhf, 'ecoul', None) is None: vhf = ks.get_veff(ks.mol, dm) if not (isinstance(dm, numpy.ndarray) and dm.ndim == 2): dm = dm[0] + dm[1] return rks.energy_elec(ks, dm, h1e, vhf)
def energy_elec(ks, dm=None, h1e=None, vhf=None): tot_e,e_hxc = rks.energy_elec(ks, dm=dm, h1e=h1e, vhf=vhf) if(ks.smear_sigma > 1e-8 ): #add entropy contribution tot_e += entropy_corr(ks.mo_occ, ks.smear_sigma) #add frozen density hcore energy if(isinstance(ks.coredm, numpy.ndarray) and ks.coredm.ndim == 2): h = hf.get_hcore(ks.mol) if(ks.add_coredm_ext_energy == True): h = h + ks.vext_1e e1 = numpy.einsum('ij,ji', h, ks.coredm).real tot_e += e1 return tot_e, e_hxc
def energy_elec(ks, dm=None, h1e=None, vhf=None): r'''Electronic part of DKS energy. Note this function has side effects which cause mf.scf_summary updated. Args: ks : an instance of DFT class dm : 2D ndarray one-partical density matrix h1e : 2D ndarray Core hamiltonian Returns: DKS electronic energy and the 2-electron contribution ''' e1, e2 = rks.energy_elec(ks, dm, h1e, vhf) if not ks.with_ssss and ks.ssss_approx == 'Visscher': e2 += dhf._vischer_ssss_correction(ks, dm) ks.scf_summary['e2'] = e2 return e1, e2
def energy_elec(ks, dm, h1e=None, vhf=None): return rks.energy_elec(ks, dm, h1e, vhf)
def energy_elec(self, dm, h1e=None, vhf=None): if h1e is None: h1e = self.get_hcore() return rks.energy_elec(self, dm, h1e)