#include <electronic/ExCorr_internal_GGA.h>
Go to the source code of this file.
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) | |
Shared CPU-GPU implementation of meta GGA functionals
#define SwitchTemplate_mGGA | ( | variant, | |
nCount, | |||
fTemplate, | |||
argList | |||
) |
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)
enum mGGA_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
__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
__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]
__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]