49 static std::tuple<double,double,ModuleBase::matrix>
v_xc(
71 static void set_xc_type(
const std::string xc_func_in);
130 static void xc(
const double &rho,
double &exc,
double &vxc);
133 static void xc_spin(
const double &rho,
const double &zeta,
134 double &exc,
double &vxcup,
double &vxcdw);
151 static void gcxc(
const double &rho,
const double &grho,
152 double &sxc,
double &v1xc,
double &v2xc);
155 static void gcx_spin(
double rhoup,
double rhodw,
double grhoup2,
double grhodw2,
156 double &sx,
double &v1xup,
double &v1xdw,
double &v2xup,
158 static void gcc_spin(
double rho,
double &zeta,
double grho,
double &sc,
159 double &v1cup,
double &v1cdw,
double &v2c);
181 std::vector<double>& stress_gga,
182 const bool is_stress =
false);
183 template <
typename T,
typename Device,
191 static void grad_rho(
const std::complex<double>* rhog,
202 const double*
const*
const rho,
222 static void slater(
const double &rs,
double &ex,
double &vx);
223 static void slater1(
const double &rs,
double &ex,
double &vx);
224 static void slater_rxc(
const double &rs,
double &ex,
double &vx);
227 static void slater_spin(
const double &rho,
const double &zeta,
228 double &ex,
double &vxup,
double &vxdw);
229 static void slater1_spin(
const double &rho,
const double &zeta,
230 double &ex,
double &vxup,
double &vxdw);
232 double &ex,
double &vxup,
double &vxdw);
252 static void pw(
const double &rs,
const int &iflag,
double &ec,
double &vc);
253 static void pz(
const double &rs,
const int &iflag,
double &ec,
double &vc);
254 static void lyp(
const double &rs,
double &ec,
double &vc);
255 static void vwn(
const double &rs,
double &ec,
double &vc);
256 static void wigner(
const double &rs,
double &ec,
double &vc);
257 static void hl(
const double &rs,
double &ec,
double &vc);
258 static void gl(
const double &rs,
double &ec,
double &vc);
261 static void pw_spin(
const double &rs,
const double &zeta,
262 double &ec,
double &vcup,
double &vcdw);
263 static void pz_spin(
const double &rs,
const double &zeta,
264 double &ec,
double &vcup,
double &vcdw);
265 static void pz_polarized(
const double &rs,
double &ec,
double &vc);
281 static void becke88(
const double &rho,
const double &grho,
double &sx,
double &v1x,
double &v2x);
282 static void ggax(
const double &rho,
const double &grho,
double &sx,
double &v1x,
double &v2x);
283 static void pbex(
const double &rho,
const double &grho,
const int &iflag,
284 double &sx,
double &v1x,
double &v2x);
285 static void optx(
const double rho,
const double grho,
double &sx,
double &v1x,
double &v2x);
286 static void wcx(
const double &rho,
const double &grho,
double &sx,
double &v1x,
double &v2x);
288 static void becke88_spin(
double rho,
double grho,
double &sx,
double &v1x,
306 static void perdew86(
const double rho,
const double grho,
double &sc,
double &v1c,
double &v2c);
307 static void ggac(
const double &rho,
const double &grho,
double &sc,
double &v1c,
double &v2c);
308 static void pbec(
const double &rho,
const double &grho,
const int &flag,
309 double &sc,
double &v1c,
double &v2c);
310 static void glyp(
const double &rho,
const double &grho,
double &sc,
double &v1c,
double &v2c);
312 static void perdew86_spin(
double rho,
double zeta,
double grho,
double &sc,
313 double &v1cup,
double &v1cdw,
double &v2c);
316 static void pbec_spin(
double rho,
double zeta,
double grho,
const int &flag,
double &sc,
317 double &v1cup,
double &v1cdw,
double &v2c);
325 static void hcth(
const double rho,
const double grho,
double &sx,
double &v1x,
double &v2x);
326 static void pwcorr(
const double r,
const double c[],
double &g,
double &dg);
3 elements vector
Definition vector3.h:22
Special pw_basis class. It includes different k-points.
Definition pw_basis_k.h:57
A class which can convert a function of "r" to the corresponding linear superposition of plane waves ...
Definition pw_basis.h:56
Definition xc_functional.h:26
static void set_xc_first_loop(const UnitCell &ucell)
Usually in exx caculation, the first SCF loop should be converged with PBE.
Definition xc_functional.cpp:26
static void gradcorr(double &etxc, double &vtxc, ModuleBase::matrix &v, const Charge *const chr, ModulePW::PW_Basis *rhopw, const UnitCell *ucell, std::vector< double > &stress_gga, const bool is_stress=false)
Definition xc_functional_gradcorr.cpp:25
static void gcx_spin(double rhoup, double rhodw, double grhoup2, double grhodw2, double &sx, double &v1xup, double &v1xdw, double &v2xup, double &v2xdw)
Definition xc_functional_wrapper_gcxc.cpp:108
static std::tuple< double, double, ModuleBase::matrix > v_xc(const int &nrxx, const Charge *const chr, const UnitCell *ucell)
Definition xc_functional_vxc.cpp:17
static void set_hybrid_alpha(const double alpha_in)
Definition xc_functional.cpp:21
static bool ked_flag
Definition xc_functional.h:90
static void wcx(const double &rho, const double &grho, double &sx, double &v1x, double &v2x)
Definition xc_funct_exch_gga.cpp:185
static void pw(const double &rs, const int &iflag, double &ec, double &vc)
Definition xc_funct_corr_lda.cpp:16
static void grad_dot(const ModuleBase::Vector3< double > *h, double *dh, const ModulePW::PW_Basis *rho_basis, const double tpiba)
Definition xc_functional_gradcorr.cpp:692
static void gcc_spin(double rho, double &zeta, double grho, double &sc, double &v1cup, double &v1cdw, double &v2c)
Definition xc_functional_wrapper_gcxc.cpp:226
static void pbex(const double &rho, const double &grho, const int &iflag, double &sx, double &v1x, double &v2x)
Definition xc_funct_exch_gga.cpp:78
static void lyp(const double &rs, double &ec, double &vc)
Definition xc_funct_corr_lda.cpp:106
static void grad_rho(const std::complex< double > *rhog, ModuleBase::Vector3< double > *gdr, const ModulePW::PW_Basis *rho_basis, const double tpiba)
Definition xc_functional_gradcorr.cpp:657
static void becke88_spin(double rho, double grho, double &sx, double &v1x, double &v2x)
Definition xc_funct_exch_gga.cpp:247
static void becke88(const double &rho, const double &grho, double &sx, double &v1x, double &v2x)
Definition xc_funct_exch_gga.cpp:13
static void ggac(const double &rho, const double &grho, double &sc, double &v1c, double &v2c)
Definition xc_funct_corr_gga.cpp:61
static int get_func_type()
Definition xc_functional.h:67
static void pz(const double &rs, const int &iflag, double &ec, double &vc)
Definition xc_funct_corr_lda.cpp:71
static double hybrid_alpha
Definition xc_functional.h:94
static void pbec(const double &rho, const double &grho, const int &flag, double &sc, double &v1c, double &v2c)
Definition xc_funct_corr_gga.cpp:135
static void optx(const double rho, const double grho, double &sx, double &v1x, double &v2x)
Definition xc_funct_exch_gga.cpp:133
static void slater_spin(const double &rho, const double &zeta, double &ex, double &vxup, double &vxdw)
Definition xc_funct_exch_lda.cpp:59
static void noncolin_rho(double *rhoout1, double *rhoout2, double *seg, const double *const *const rho, const int nrxx, const double *ux_, const bool lsign_)
Definition xc_functional_gradcorr.cpp:743
static void pw_spin(const double &rs, const double &zeta, double &ec, double &vcup, double &vcdw)
Definition xc_funct_corr_lda.cpp:192
static std::map< int, double > scaling_factor_xc
Definition xc_functional.h:19
static void wigner(const double &rs, double &ec, double &vc)
Definition xc_funct_corr_lda.cpp:154
~XC_Functional()
Definition xc_functional.cpp:12
static void hl(const double &rs, double &ec, double &vc)
Definition xc_funct_corr_lda.cpp:167
static void xc_spin(const double &rho, const double &zeta, double &exc, double &vxcup, double &vxcdw)
Definition xc_functional_wrapper_xc.cpp:73
static void pbec_spin(double rho, double zeta, double grho, const int &flag, double &sc, double &v1cup, double &v1cdw, double &v2c)
Definition xc_funct_corr_gga.cpp:372
static void hcth(const double rho, const double grho, double &sx, double &v1x, double &v2x)
Definition xc_funct_hcth.cpp:5
static void set_xc_type(const std::string xc_func_in)
Definition xc_functional.cpp:48
static bool use_libxc
Definition xc_functional.h:91
static void grad_wfc(const int ik, const Real tpiba, const ModulePW::PW_Basis_K *wfc_basis, const T *rhog, T *grad)
Definition xc_functional_gradcorr.cpp:618
static void perdew86(const double rho, const double grho, double &sc, double &v1c, double &v2c)
Definition xc_funct_corr_gga.cpp:14
static bool get_ked_flag()
Definition xc_functional.h:79
static void slater1(const double &rs, double &ex, double &vx)
Definition xc_funct_exch_lda.cpp:26
static void slater_rxc(const double &rs, double &ex, double &vx)
Definition xc_funct_exch_lda.cpp:36
static void pz_polarized(const double &rs, double &ec, double &vc)
Definition xc_funct_corr_lda.cpp:331
static void ggax(const double &rho, const double &grho, double &sx, double &v1x, double &v2x)
Definition xc_funct_exch_gga.cpp:41
static std::vector< int > func_id
Definition xc_functional.h:88
static void slater_rxc_spin(const double &rho, const double &z, double &ex, double &vxup, double &vxdw)
Definition xc_funct_exch_lda.cpp:100
static void xc(const double &rho, double &exc, double &vxc)
Definition xc_functional_wrapper_xc.cpp:15
static int func_type
Definition xc_functional.h:89
static double get_hybrid_alpha()
Definition xc_functional.h:75
static void gl(const double &rs, double &ec, double &vc)
Definition xc_funct_corr_lda.cpp:179
static void vwn(const double &rs, double &ec, double &vc)
Definition xc_funct_corr_lda.cpp:125
static void pz_spin(const double &rs, const double &zeta, double &ec, double &vcup, double &vcdw)
Definition xc_funct_corr_lda.cpp:300
static void slater(const double &rs, double &ex, double &vx)
Definition xc_funct_exch_lda.cpp:14
static void slater1_spin(const double &rho, const double &zeta, double &ex, double &vxup, double &vxdw)
Definition xc_funct_exch_lda.cpp:80
static void gcxc(const double &rho, const double &grho, double &sxc, double &v1xc, double &v2xc)
Definition xc_functional_wrapper_gcxc.cpp:18
XC_Functional()
Definition xc_functional.cpp:10
static void glyp(const double &rho, const double &grho, double &sc, double &v1c, double &v2c)
Definition xc_funct_corr_gga.cpp:178
static void perdew86_spin(double rho, double zeta, double grho, double &sc, double &v1cup, double &v1cdw, double &v2c)
Definition xc_funct_corr_gga.cpp:212
static std::vector< int > get_func_id()
Definition xc_functional.h:101
static void pwcorr(const double r, const double c[], double &g, double &dg)
Definition xc_funct_hcth.cpp:129
#define T
Definition exp.cpp:237
T type
Definition macros.h:8