Пример #1
0
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
Пример #2
0
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)
Пример #3
0
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
Пример #4
0
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
Пример #5
0
def energy_elec(ks, dm, h1e=None, vhf=None):
    return rks.energy_elec(ks, dm, h1e, vhf)
Пример #6
0
 def energy_elec(self, dm, h1e=None, vhf=None):
     if h1e is None: h1e = self.get_hcore()
     return rks.energy_elec(self, dm, h1e)