JDFTx  1.3.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
ExCorr_internal_mGGA.h File Reference

Classes

class  FunctionalMGGA
 Common interface to the compute kernels for mGGA-like functionals. More...
 
struct  mGGA_calc< variant, spinScaling, nCount >
 
struct  mGGA_calc< variant, true, nCount >
 Specialization of mGGA_calc for spin-scaling functionals (exchange) More...
 
struct  mGGA_calc< variant, false, nCount >
 

Macros

#define SwitchTemplate_mGGA(variant, nCount, fTemplate, argList)
 

Enumerations

enum  mGGA_Variant { mGGA_X_TPSS, mGGA_C_TPSS, mGGA_X_revTPSS, mGGA_C_revTPSS }
 Available mGGA functionals. More...
 

Functions

template<mGGA_Variant variant>
__hostanddev__ double mGGA_eval (double rs, double s2, double q, double z, double &e_rs, double &e_s2, double &e_q, double &e_z)
 
template<mGGA_Variant variant>
__hostanddev__ double mGGA_eval (double rs, double zeta, double g, double t2, double t2up, double t2dn, double zi2, double z, double &e_rs, double &e_zeta, double &e_g, double &e_t2, double &e_t2up, double &e_t2dn, double &e_zi2, double &e_z)
 
template<bool revised>
__hostanddev__ double mGGA_TPSS_Exchange (double rs, double s2, double q, double z, double &e_rs, double &e_s2, double &e_q, double &e_z)
 
template<>
__hostanddev__ double mGGA_eval< mGGA_X_TPSS > (double rs, double s2, double q, double z, double &e_rs, double &e_s2, double &e_q, double &e_z)
 TPSS Exchange: J.P. Perdew et al, Phys. Rev. Lett. 91, 146401 (2003)
 
template<>
__hostanddev__ double mGGA_eval< mGGA_X_revTPSS > (double rs, double s2, double q, double z, double &e_rs, double &e_s2, double &e_q, double &e_z)
 revTPSS Exchange: J.P. Perdew et al, Phys. Rev. Lett. 103, 026403 (2009)
 
template<bool revised>
__hostanddev__ double betaTPSS (double rs, double &beta_rs)
 Compute beta(rs) for the TPSS/revTPSS correlation functionals.
 
template<bool revised>
__hostanddev__ double mGGA_TPSS_Correlation (double rs, double zeta, double g, double t2, double t2up, double t2dn, double zi2, double z, double &e_rs, double &e_zeta, double &e_g, double &e_t2, double &e_t2up, double &e_t2dn, double &e_zi2, double &e_z)
 
template<>
__hostanddev__ double mGGA_eval< mGGA_C_TPSS > (double rs, double zeta, double g, double t2, double t2up, double t2dn, double zi2, double z, double &e_rs, double &e_zeta, double &e_g, double &e_t2, double &e_t2up, double &e_t2dn, double &e_zi2, double &e_z)
 TPSS Correlation: J.P. Perdew et al, Phys. Rev. Lett. 91, 146401 (2003)
 
template<>
__hostanddev__ double mGGA_eval< mGGA_C_revTPSS > (double rs, double zeta, double g, double t2, double t2up, double t2dn, double zi2, double z, double &e_rs, double &e_zeta, double &e_g, double &e_t2, double &e_t2up, double &e_t2dn, double &e_zi2, double &e_z)
 revTPSS Correlation: J.P. Perdew et al, Phys. Rev. Lett. 103, 026403 (2009)
 

Detailed Description

Shared CPU-GPU implementation of meta GGA functionals

Macro Definition Documentation

#define SwitchTemplate_mGGA (   variant,
  nCount,
  fTemplate,
  argList 
)
Value:
switch(variant) \
{ case mGGA_X_TPSS: fTemplate< mGGA_X_TPSS, true, nCount> argList; break; \
case mGGA_C_TPSS: fTemplate< mGGA_C_TPSS, false, nCount> argList; break; \
case mGGA_X_revTPSS: fTemplate< mGGA_X_revTPSS, true, nCount> argList; break; \
case mGGA_C_revTPSS: fTemplate< mGGA_C_revTPSS, false, nCount> argList; break; \
default: break; \
}
revTPSS mGGA correlation
Definition: ExCorr_internal_mGGA.h:35
TPSS mGGA exchange.
Definition: ExCorr_internal_mGGA.h:32
revTPSS mGGA exchange
Definition: ExCorr_internal_mGGA.h:34
TPSS mGGA correlation.
Definition: ExCorr_internal_mGGA.h:33

Switch a function fTemplate templated over mGGA variant, spin scaling behavior and spin count, over all supported functionals with nCount being a compile-time constant NOTE: The second argument to fTemplate must correspond to the spin-scaling behavior of each functional (Used by the thread and gpu launchers of FunctionalMGGA::evaluate) (This is needed to switch from a run-time variant to a compile-time template argument)

Enumeration Type Documentation

Available mGGA functionals.

Enumerator
mGGA_X_TPSS 

TPSS mGGA exchange.

mGGA_C_TPSS 

TPSS mGGA correlation.

mGGA_X_revTPSS 

revTPSS mGGA exchange

mGGA_C_revTPSS 

revTPSS mGGA correlation

Function Documentation

template<mGGA_Variant variant>
__hostanddev__ double mGGA_eval ( double  rs,
double  s2,
double  q,
double  z,
double &  e_rs,
double &  e_s2,
double &  e_q,
double &  e_z 
)

GGA interface inner layer for spin-scaling functionals (specialized for each such functional): Return energy density given dimensionless quantities rs, s2, q and z, and set gradients w.r.t them See the PBE / TPSS refs for definitions of these quantities

template<mGGA_Variant variant>
__hostanddev__ double mGGA_eval ( double  rs,
double  zeta,
double  g,
double  t2,
double  t2up,
double  t2dn,
double  zi2,
double  z,
double &  e_rs,
double &  e_zeta,
double &  e_g,
double &  e_t2,
double &  e_t2up,
double &  e_t2dn,
double &  e_zi2,
double &  e_z 
)

GGA interface inner layer for functionals that do not spin-scale (specialized for each such functional): Return energy density given rs, zeta, g, t2 (see PW91 ref for definitions of these), t2up, t2dn (the individual spin versions of t2) zi2 (the dimensionless grad zeta squared term) and z = tauW/tau (totals, not spin resolved) and set gradients w.r.t them

template<bool revised>
__hostanddev__ double mGGA_TPSS_Correlation ( double  rs,
double  zeta,
double  g,
double  t2,
double  t2up,
double  t2dn,
double  zi2,
double  z,
double &  e_rs,
double &  e_zeta,
double &  e_g,
double &  e_t2,
double &  e_t2up,
double &  e_t2dn,
double &  e_zi2,
double &  e_z 
)

TPSS or revTPSS Correlation depending on revised = false/true J.P. Perdew et al, Phys. Rev. Lett. 91, 146401 (2003) [TPSS] J.P. Perdew et al, Phys. Rev. Lett. 103, 026403 (2009) [revTPSS]

template<bool revised>
__hostanddev__ double mGGA_TPSS_Exchange ( double  rs,
double  s2,
double  q,
double  z,
double &  e_rs,
double &  e_s2,
double &  e_q,
double &  e_z 
)

TPSS or revTPSS Exchange depending on revised = false/true J.P. Perdew et al, Phys. Rev. Lett. 91, 146401 (2003) [TPSS] J.P. Perdew et al, Phys. Rev. Lett. 103, 026403 (2009) [revTPSS]