#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).