Example #1
0
class ROKS(rks.KohnShamDFT, rohf.ROHF):
    '''UKS class adapted for PBCs.

    This is a literal duplication of the molecular UKS class with some `mol`
    variables replaced by `cell`.
    '''
    def __init__(self,
                 cell,
                 kpt=numpy.zeros(3),
                 xc='LDA,VWN',
                 exxdiv=getattr(__config__, 'pbc_scf_SCF_exxdiv', 'ewald')):
        rohf.ROHF.__init__(self, cell, kpt, exxdiv=exxdiv)
        rks.KohnShamDFT.__init__(self, xc)

    def dump_flags(self, verbose=None):
        rohf.ROHF.dump_flags(self, verbose)
        rks.KohnShamDFT.dump_flags(self, verbose)
        return self

    get_veff = get_veff
    energy_elec = pyscf.dft.uks.energy_elec
    get_rho = uks.get_rho

    density_fit = rks._patch_df_beckegrids(rohf.ROHF.density_fit)
    rs_density_fit = rks._patch_df_beckegrids(rohf.ROHF.rs_density_fit)
    mix_density_fit = rks._patch_df_beckegrids(rohf.ROHF.mix_density_fit)
Example #2
0
class KRKS(khf.KRHF, rks.KohnShamDFT):
    '''RKS class adapted for PBCs with k-point sampling.
    '''
    def __init__(self, cell, kpts=np.zeros((1,3)), xc='LDA,VWN'):
        khf.KRHF.__init__(self, cell, kpts)
        rks.KohnShamDFT.__init__(self, xc)

    def dump_flags(self, verbose=None):
        khf.KRHF.dump_flags(self, verbose)
        rks.KohnShamDFT.dump_flags(self, verbose)
        return self

    get_veff = get_veff

    def energy_elec(self, dm_kpts=None, h1e_kpts=None, vhf=None):
        if h1e_kpts is None: h1e_kpts = self.get_hcore(self.cell, self.kpts)
        if dm_kpts is None: dm_kpts = self.make_rdm1()
        if vhf is None or getattr(vhf, 'ecoul', None) is None:
            vhf = self.get_veff(self.cell, dm_kpts)

        weight = 1./len(h1e_kpts)
        e1 = weight * np.einsum('kij,kji', h1e_kpts, dm_kpts)
        tot_e = e1 + vhf.ecoul + vhf.exc
        self.scf_summary['e1'] = e1.real
        self.scf_summary['coul'] = vhf.ecoul.real
        self.scf_summary['exc'] = vhf.exc.real
        logger.debug(self, 'E1 = %s  Ecoul = %s  Exc = %s', e1, vhf.ecoul, vhf.exc)
        return tot_e.real, vhf.ecoul + vhf.exc

    get_rho = get_rho

    density_fit = rks._patch_df_beckegrids(khf.KRHF.density_fit)
    mix_density_fit = rks._patch_df_beckegrids(khf.KRHF.mix_density_fit)
Example #3
0
class UKS(pbcuhf.UHF):
    '''UKS class adapted for PBCs.

    This is a literal duplication of the molecular UKS class with some `mol`
    variables replaced by `cell`.
    '''
    def __init__(self, cell, kpt=numpy.zeros(3)):
        pbcuhf.UHF.__init__(self, cell, kpt)
        self.xc = 'LDA,VWN'
        self.grids = gen_grid.UniformGrids(cell)
        self.small_rho_cutoff = 1e-7  # Use rho to filter grids
        ##################################################
        # don't modify the following attributes, they are not input options
        self._numint = numint._NumInt()
        self._keys = self._keys.union(['xc', 'grids', 'small_rho_cutoff'])

    def dump_flags(self):
        pbcuhf.UHF.dump_flags(self)
        logger.info(self, 'XC functionals = %s', self.xc)
        self.grids.dump_flags()

    get_veff = get_veff
    energy_elec = pyscf.dft.uks.energy_elec
    define_xc_ = rks.define_xc_

    density_fit = rks._patch_df_beckegrids(pbcuhf.UHF.density_fit)
    mix_density_fit = rks._patch_df_beckegrids(pbcuhf.UHF.mix_density_fit)
Example #4
0
class KUKS(rks.KohnShamDFT, kuhf.KUHF):
    '''RKS class adapted for PBCs with k-point sampling.
    '''
    def __init__(self,
                 cell,
                 kpts=np.zeros((1, 3)),
                 xc='LDA,VWN',
                 exxdiv=getattr(__config__, 'pbc_scf_SCF_exxdiv', 'ewald')):
        kuhf.KUHF.__init__(self, cell, kpts, exxdiv=exxdiv)
        rks.KohnShamDFT.__init__(self, xc)

    def dump_flags(self, verbose=None):
        kuhf.KUHF.dump_flags(self, verbose)
        rks.KohnShamDFT.dump_flags(self, verbose)
        return self

    get_veff = get_veff
    energy_elec = energy_elec
    get_rho = get_rho

    density_fit = rks._patch_df_beckegrids(kuhf.KUHF.density_fit)
    rs_density_fit = rks._patch_df_beckegrids(kuhf.KUHF.rs_density_fit)
    mix_density_fit = rks._patch_df_beckegrids(kuhf.KUHF.mix_density_fit)

    def nuc_grad_method(self):
        from pyscf.pbc.grad import kuks
        return kuks.Gradients(self)
Example #5
0
class KRKS(khf.KRHF):
    '''RKS class adapted for PBCs with k-point sampling.
    '''
    def __init__(self, cell, kpts=np.zeros((1, 3))):
        khf.KRHF.__init__(self, cell, kpts)
        rks._dft_common_init_(self)

    def dump_flags(self):
        khf.KRHF.dump_flags(self)
        logger.info(self, 'XC functionals = %s', self.xc)
        self.grids.dump_flags()

    get_veff = get_veff

    def energy_elec(self, dm_kpts=None, h1e_kpts=None, vhf=None):
        if h1e_kpts is None: h1e_kpts = self.get_hcore(self.cell, self.kpts)
        if dm_kpts is None: dm_kpts = self.make_rdm1()
        if vhf is None or getattr(vhf, 'ecoul', None) is None:
            vhf = self.get_veff(self.cell, dm_kpts)

        weight = 1. / len(h1e_kpts)
        e1 = weight * np.einsum('kij,kji', h1e_kpts, dm_kpts).real
        tot_e = e1 + vhf.ecoul + vhf.exc
        logger.debug(self, 'E1 = %s  Ecoul = %s  Exc = %s', e1, vhf.ecoul,
                     vhf.exc)
        return tot_e, vhf.ecoul + vhf.exc

    define_xc_ = rks.define_xc_

    density_fit = rks._patch_df_beckegrids(khf.KRHF.density_fit)
    mix_density_fit = rks._patch_df_beckegrids(khf.KRHF.mix_density_fit)
Example #6
0
class KRKS(khf.KRHF):
    '''RKS class adapted for PBCs with k-point sampling.
    '''
    def __init__(self, cell, kpts=np.zeros((1, 3))):
        khf.KRHF.__init__(self, cell, kpts)
        self.xc = 'LDA,VWN'
        self.grids = gen_grid.UniformGrids(cell)
        self.small_rho_cutoff = 1e-7  # Use rho to filter grids
        ##################################################
        # don't modify the following attributes, they are not input options
        self._ecoul = 0
        self._exc = 0
        # Note Do not refer to .with_df._numint because gs/coords may be different
        self._numint = numint._KNumInt(kpts)
        self._keys = self._keys.union(['xc', 'grids', 'small_rho_cutoff'])
        self._ao = None

    def _update_ao(self, deriv):
        """
        Updates atomic orbitals.
        """
        self._ao = self._numint.eval_ao(
            self.cell,
            self.grids.coords,
            self.kpts,
            deriv=deriv,
        )

    def dump_flags(self):
        khf.KRHF.dump_flags(self)
        logger.info(self, 'XC functionals = %s', self.xc)
        self.grids.dump_flags()

    get_veff = get_veff

    def energy_elec(self, dm_kpts=None, h1e_kpts=None, vhf=None):
        if h1e_kpts is None: h1e_kpts = self.get_hcore(self.cell, self.kpts)
        if dm_kpts is None: dm_kpts = self.make_rdm1()

        nkpts = len(h1e_kpts)
        e1 = 1. / nkpts * np.einsum('kij,kji', h1e_kpts, dm_kpts).real

        tot_e = e1 + self._ecoul + self._exc
        logger.debug(self, 'E1 = %s  Ecoul = %s  Exc = %s', e1, self._ecoul,
                     self._exc)
        return tot_e, self._ecoul + self._exc

    density_fit = rks._patch_df_beckegrids(khf.KRHF.density_fit)
    mix_density_fit = rks._patch_df_beckegrids(khf.KRHF.mix_density_fit)
Example #7
0
File: kuks.py Project: tmash/pyscf
class KUKS(kuhf.KUHF, rks.KohnShamDFT):
    '''RKS class adapted for PBCs with k-point sampling.
    '''
    def __init__(self, cell, kpts=np.zeros((1, 3))):
        kuhf.KUHF.__init__(self, cell, kpts)
        rks.KohnShamDFT.__init__(self)

    def dump_flags(self, verbose=None):
        kuhf.KUHF.dump_flags(self, verbose)
        rks.KohnShamDFT.dump_flags(self, verbose)
        return self

    get_veff = get_veff
    energy_elec = energy_elec
    get_rho = get_rho

    density_fit = rks._patch_df_beckegrids(kuhf.KUHF.density_fit)
    mix_density_fit = rks._patch_df_beckegrids(kuhf.KUHF.mix_density_fit)
Example #8
0
class KROKS(krohf.KROHF):
    '''RKS class adapted for PBCs with k-point sampling.
    '''
    def __init__(self, cell, kpts=np.zeros((1, 3))):
        krohf.KROHF.__init__(self, cell, kpts)
        rks._dft_common_init_(self)

    def dump_flags(self):
        krohf.KROHF.dump_flags(self)
        lib.logger.info(self, 'XC functionals = %s', self.xc)
        self.grids.dump_flags()

    get_veff = get_veff
    energy_elec = energy_elec
    define_xc_ = rks.define_xc_

    density_fit = rks._patch_df_beckegrids(krohf.KROHF.density_fit)
    mix_density_fit = rks._patch_df_beckegrids(krohf.KROHF.mix_density_fit)
Example #9
0
class KROKS(rks.KohnShamDFT, krohf.KROHF):
    '''RKS class adapted for PBCs with k-point sampling.
    '''
    def __init__(self, cell, kpts=np.zeros((1, 3)), xc='LDA,VWN'):
        krohf.KROHF.__init__(self, cell, kpts)
        rks.KohnShamDFT.__init__(self, xc)

    def dump_flags(self, verbose=None):
        krohf.KROHF.dump_flags(self, verbose)
        rks.KohnShamDFT.dump_flags(self, verbose)
        return self

    get_veff = get_veff
    energy_elec = energy_elec
    get_rho = kuks.get_rho

    density_fit = rks._patch_df_beckegrids(krohf.KROHF.density_fit)
    mix_density_fit = rks._patch_df_beckegrids(krohf.KROHF.mix_density_fit)
Example #10
0
class KROKS(rks.KohnShamDFT, krohf.KROHF):
    '''RKS class adapted for PBCs with k-point sampling.
    '''
    def __init__(self, cell, kpts=np.zeros((1,3)), xc='LDA,VWN',
                 exxdiv=getattr(__config__, 'pbc_scf_SCF_exxdiv', 'ewald')):
        krohf.KROHF.__init__(self, cell, kpts, exxdiv=exxdiv)
        rks.KohnShamDFT.__init__(self, xc)

    def dump_flags(self, verbose=None):
        krohf.KROHF.dump_flags(self, verbose)
        rks.KohnShamDFT.dump_flags(self, verbose)
        return self

    get_veff = get_veff
    energy_elec = energy_elec
    get_rho = kuks.get_rho

    density_fit = rks._patch_df_beckegrids(krohf.KROHF.density_fit)
    rs_density_fit = rks._patch_df_beckegrids(krohf.KROHF.rs_density_fit)
    mix_density_fit = rks._patch_df_beckegrids(krohf.KROHF.mix_density_fit)
Example #11
0
class ROKS(pbcrohf.ROHF):
    '''UKS class adapted for PBCs.

    This is a literal duplication of the molecular UKS class with some `mol`
    variables replaced by `cell`.
    '''
    def __init__(self, cell, kpt=numpy.zeros(3)):
        pbcrohf.ROHF.__init__(self, cell, kpt)
        rks._dft_common_init_(self)

    def dump_flags(self):
        pbcrohf.ROHF.dump_flags(self)
        logger.info(self, 'XC functionals = %s', self.xc)
        self.grids.dump_flags()

    get_veff = get_veff
    energy_elec = pyscf.dft.uks.energy_elec
    define_xc_ = rks.define_xc_

    density_fit = rks._patch_df_beckegrids(pbcrohf.ROHF.density_fit)
    mix_density_fit = rks._patch_df_beckegrids(pbcrohf.ROHF.mix_density_fit)
Example #12
0
class UKS(pbcuhf.UHF, rks.KohnShamDFT):
    '''UKS class adapted for PBCs.

    This is a literal duplication of the molecular UKS class with some `mol`
    variables replaced by `cell`.
    '''
    def __init__(self, cell, kpt=numpy.zeros(3), xc='LDA,VWN'):
        pbcuhf.UHF.__init__(self, cell, kpt)
        rks.KohnShamDFT.__init__(self, xc)

    def dump_flags(self, verbose=None):
        pbcuhf.UHF.dump_flags(self, verbose)
        rks.KohnShamDFT.dump_flags(self, verbose)
        return self

    get_veff = get_veff
    energy_elec = pyscf.dft.uks.energy_elec
    get_rho = get_rho

    density_fit = rks._patch_df_beckegrids(pbcuhf.UHF.density_fit)
    mix_density_fit = rks._patch_df_beckegrids(pbcuhf.UHF.mix_density_fit)
Example #13
0
File: kuks.py Project: xlzan/pyscf
class KUKS(kuhf.KUHF):
    '''RKS class adapted for PBCs with k-point sampling.
    '''
    def __init__(self, cell, kpts=np.zeros((1, 3))):
        kuhf.KUHF.__init__(self, cell, kpts)
        self.xc = 'LDA,VWN'
        self.grids = gen_grid.UniformGrids(cell)
        self.small_rho_cutoff = 1e-7  # Use rho to filter grids
        ##################################################
        # don't modify the following attributes, they are not input options
        # Note Do not refer to .with_df._numint because gs/coords may be different
        self._numint = numint._KNumInt(kpts)
        self._keys = self._keys.union(['xc', 'grids', 'small_rho_cutoff'])

    def dump_flags(self):
        kuhf.KUHF.dump_flags(self)
        logger.info(self, 'XC functionals = %s', self.xc)
        self.grids.dump_flags()

    get_veff = get_veff

    def energy_elec(self, dm_kpts=None, h1e_kpts=None, vhf=None):
        if h1e_kpts is None: h1e_kpts = self.get_hcore(self.cell, self.kpts)
        if dm_kpts is None: dm_kpts = self.make_rdm1()
        if vhf is None or getattr(vhf, 'ecoul', None) is None:
            vhf = self.get_veff(self.cell, dm_kpts)

        weight = 1. / len(h1e_kpts)
        e1 = weight * (np.einsum('kij,kji', h1e_kpts, dm_kpts[0]) +
                       np.einsum('kij,kji', h1e_kpts, dm_kpts[1])).real
        tot_e = e1 + vhf.ecoul + vhf.exc
        logger.debug(self, 'E1 = %s  Ecoul = %s  Exc = %s', e1, vhf.ecoul,
                     vhf.exc)
        return tot_e, vhf.ecoul + vhf.exc

    define_xc_ = rks.define_xc_

    density_fit = rks._patch_df_beckegrids(kuhf.KUHF.density_fit)
    mix_density_fit = rks._patch_df_beckegrids(kuhf.KUHF.mix_density_fit)