JDFTx  1.7.0
ExCorr_internal_GGA.h File Reference

Classes

class  FunctionalGGA
 Common interface to the compute kernels for GGA-like functionals. More...
 
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 \( \int_0^\infty dy y^n e^{-Ay^2} \textrm{erfc}{By} \) 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 sIn2, double &e_rs, double &e_sIn2)
 
__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)].
 

Detailed Description

Shared CPU-GPU implementation of GGA functionals