#include <electronic/ExCorr_internal_LDA.h>
Go to the source code of this file.
Classes | |
class | FunctionalGGA |
Common interface to the compute kernels for GGA-like functionals. More... | |
struct | GGA_calc< variant, spinScaling, nCount > |
struct | GGA_calc< variant, true, nCount > |
Specialization of GGA_calc for spin-scaling functionals (exchange and KE) More... | |
struct | GGA_calc< variant, false, nCount > |
Specialization of GGA_calc for functionals that do not spin-scale (correlation) More... | |
struct | GGA_calc< GGA_X_GLLBsc, true, nCount > |
struct | GGA_calc< GGA_X_LB94, true, nCount > |
Macros | |
#define | SwitchTemplate_GGA(variant, nCount, fTemplate, argList) |
Enumerations | |
enum | GGA_Variant { GGA_X_PBE, GGA_C_PBE, GGA_X_PBEsol, GGA_C_PBEsol, GGA_X_PW91, GGA_C_PW91, GGA_X_wPBE_SR, GGA_X_GLLBsc, GGA_X_LB94, GGA_KE_VW, GGA_KE_PW91 } |
Available GGA functionals. More... | |
Functions | |
template<GGA_Variant variant> | |
__hostanddev__ double | GGA_eval (double rs, double s2, double &e_rs, double &e_s2) |
template<GGA_Variant variant> | |
__hostanddev__ double | GGA_eval (double rs, double zeta, double g, double t2, double &e_rs, double &e_zeta, double &e_g, double &e_t2) |
__hostanddev__ double | slaterExchange (double rs, double &e_rs) |
Slater exchange as a function of rs (PER PARTICLE): | |
__hostanddev__ double | GGA_PBE_exchange (const double kappa, const double mu, double rs, double s2, double &e_rs, double &e_s2) |
PBE GGA exchange [JP Perdew, K Burke, and M Ernzerhof, Phys. Rev. Lett. 77, 3865 (1996)]. | |
template<> | |
__hostanddev__ double | GGA_eval< GGA_X_PBE > (double rs, double s2, double &e_rs, double &e_s2) |
PBE GGA exchange [JP Perdew, K Burke, and M Ernzerhof, Phys. Rev. Lett. 77, 3865 (1996)]. | |
template<> | |
__hostanddev__ double | GGA_eval< GGA_X_PBEsol > (double rs, double s2, double &e_rs, double &e_s2) |
PBEsol GGA exchange [JP Perdew et al, Phys. Rev. Lett. 100, 136406 (2008)]. | |
__hostanddev__ double | GGA_PW91_Enhancement (double s2, double &F_s2, const double P, const double Q, const double R, const double S, const double T, const double U) |
template<> | |
__hostanddev__ double | GGA_eval< GGA_X_PW91 > (double rs, double s2, double &e_rs, double &e_s2) |
PW91 GGA exchange [JP Perdew et al, Phys. Rev. B 46, 6671 (1992)]. | |
template<int n> | |
__hostanddev__ double | integralErfcGaussian (double A, double B, double &result_A, double &result_B) |
Evaluate and its derivatives. | |
template<> | |
__hostanddev__ double | integralErfcGaussian< 1 > (double A, double B, double &result_A, double &result_B) |
template<> | |
__hostanddev__ double | integralErfcGaussian< 2 > (double A, double B, double &result_A, double &result_B) |
template<> | |
__hostanddev__ double | integralErfcGaussian< 3 > (double A, double B, double &result_A, double &result_B) |
template<> | |
__hostanddev__ double | integralErfcGaussian< 5 > (double A, double B, double &result_A, double &result_B) |
template<> | |
__hostanddev__ double | GGA_eval< GGA_X_wPBE_SR > (double rs, double s2, double &e_rs, double &e_s2) |
__hostanddev__ double | PW91_H0 (const double gamma, double beta, double g3, double t2, double ecUnif, double &H0_beta, double &H0_g3, double &H0_t2, double &H0_ecUnif) |
__hostanddev__ double | GGA_PBE_correlation (const double beta, const double beta_rs, double rs, double zeta, double g, double t2, double &e_rs, double &e_zeta, double &e_g, double &e_t2) |
template<> | |
__hostanddev__ double | GGA_eval< GGA_C_PBE > (double rs, double zeta, double g, double t2, double &e_rs, double &e_zeta, double &e_g, double &e_t2) |
PBE GGA correlation [JP Perdew, K Burke, and M Ernzerhof, Phys. Rev. Lett. 77, 3865 (1996)]. | |
template<> | |
__hostanddev__ double | GGA_eval< GGA_C_PBEsol > (double rs, double zeta, double g, double t2, double &e_rs, double &e_zeta, double &e_g, double &e_t2) |
PBEsol GGA correlation [JP Perdew et al, Phys. Rev. Lett. 100, 136406 (2008)]. | |
template<> | |
__hostanddev__ double | GGA_eval< GGA_C_PW91 > (double rs, double zeta, double g, double t2, double &e_rs, double &e_zeta, double &e_g, double &e_t2) |
PW91 GGA correlation [JP Perdew et al, Phys. Rev. B 46, 6671 (1992)]. | |
__hostanddev__ double | TFKinetic (double rs, double &e_rs) |
Thomas Fermi kinetic energy as a function of rs (PER PARTICLE): | |
template<> | |
__hostanddev__ double | GGA_eval< GGA_KE_VW > (double rs, double s2, double &e_rs, double &e_s2) |
von Weisacker gradient correction to Thomas Fermi LDA kinetic energy (with correct gradient expansion parameter lambda) | |
template<> | |
__hostanddev__ double | GGA_eval< GGA_KE_PW91 > (double rs, double s2, double &e_rs, double &e_s2) |
PW91k GGA kinetic energy [PRB 46, 6671-6687 (1992)] parameterized by Lembarki and Chermette [PRA 50, 5328-5331 (1994)]. | |
Shared CPU-GPU implementation of GGA functionals
#define SwitchTemplate_GGA | ( | variant, | |
nCount, | |||
fTemplate, | |||
argList | |||
) |
Switch a function fTemplate templated over GGA 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 FunctionalGGA::evaluate) (This is needed to switch from a run-time variant to a compile-time template argument)
enum GGA_Variant |
Available GGA functionals.
__hostanddev__ double GGA_eval | ( | double | rs, |
double | s2, | ||
double & | e_rs, | ||
double & | e_s2 | ||
) |
GGA interface inner layer for spin-scaling functionals (specialized for each such functional): Return energy density given rs and dimensionless gradient squared s2, and set gradients w.r.t rs and s2
__hostanddev__ double GGA_eval | ( | double | rs, |
double | zeta, | ||
double | g, | ||
double | t2, | ||
double & | e_rs, | ||
double & | e_zeta, | ||
double & | e_g, | ||
double & | e_t2 | ||
) |
GGA interface inner layer for functionals that do not spin-scale (specialized for each such functional): Return energy density given rs, zeta, g(zeta) and dimensionless gradient squared t2, and set gradients w.r.t rs, zeta, g(zeta) and t2 (see PW91 ref for definitions)
__hostanddev__ double GGA_eval< GGA_X_wPBE_SR > | ( | double | rs, |
double | s2, | ||
double & | e_rs, | ||
double & | e_s2 | ||
) |
Short-ranged omega-PBE GGA exchange - used in the HSE06 hybrid functional [J Heyd, G E Scuseria, and M Ernzerhof, J. Chem. Phys. 118, 3865 (2003)]
__hostanddev__ double GGA_PBE_correlation | ( | const double | beta, |
const double | beta_rs, | ||
double | rs, | ||
double | zeta, | ||
double | g, | ||
double | t2, | ||
double & | e_rs, | ||
double & | e_zeta, | ||
double & | e_g, | ||
double & | e_t2 | ||
) |
PBE GGA correlation [JP Perdew, K Burke, and M Ernzerhof, Phys. Rev. Lett. 77, 3865 (1996)] If beta depends on rs (as in revTPSS), beta_rs (=dbeta/drs) is propagated to e_rs
__hostanddev__ double GGA_PW91_Enhancement | ( | double | s2, |
double & | F_s2, | ||
const double | P, | ||
const double | Q, | ||
const double | R, | ||
const double | S, | ||
const double | T, | ||
const double | U | ||
) |
Functional form of the PW91 Exchange Enhancement factor (also used in some KE functionals) Implements equation (8) in [JP Perdew et al, Phys. Rev. B 46, 6671 (1992)] and its gradients P,Q,R,S,T,U are the parameters in order of appearance in that equation
__hostanddev__ double PW91_H0 | ( | const double | gamma, |
double | beta, | ||
double | g3, | ||
double | t2, | ||
double | ecUnif, | ||
double & | H0_beta, | ||
double & | H0_g3, | ||
double & | H0_t2, | ||
double & | H0_ecUnif | ||
) |
The H0 function (equations 13,14) of PW91 and its derivatives. Also the H fuunction (equations 7,8) of PBE. The notation is a mixture, picking the shortest of both references: using g from PW91 (phi in PBE) and gamma from PBE (beta^2/(2*alpha) in PW91).