Skip to content

Commit 5dc1f12

Browse files
author
abacus_fixer
committed
remove GlobalC in souce_hamilt module_xc
1 parent 010fa2e commit 5dc1f12

14 files changed

Lines changed: 83 additions & 59 deletions

File tree

source/source_estate/module_pot/pot_xc.cpp

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,11 @@ void PotXC::cal_v_eff(const Charge*const chg, const UnitCell*const ucell, Module
2424
if (XC_Functional::get_ked_flag())
2525
{
2626
#ifdef USE_LIBXC
27+
const double hybrid_alpha = XC_Functional::get_hybrid_alpha();
28+
const double hse_omega = 0.0;
2729
const std::tuple<double, double, ModuleBase::matrix, ModuleBase::matrix> etxc_vtxc_v
2830
= XC_Functional_Libxc::v_xc_meta(XC_Functional::get_func_id(), nrxx_current, ucell->omega, ucell->tpiba, chg,
29-
PARAM.inp.nspin);
31+
PARAM.inp.nspin, hybrid_alpha, hse_omega);
3032
*(this->etxc_) = std::get<0>(etxc_vtxc_v);
3133
*(this->vtxc_) = std::get<1>(etxc_vtxc_v);
3234
v_eff += std::get<2>(etxc_vtxc_v);
@@ -37,11 +39,15 @@ void PotXC::cal_v_eff(const Charge*const chg, const UnitCell*const ucell, Module
3739
}
3840
else
3941
{
42+
const double hybrid_alpha = XC_Functional::get_hybrid_alpha();
43+
const double hse_omega = 0.0;
4044
const std::tuple<double, double, ModuleBase::matrix> etxc_vtxc_v
4145
= XC_Functional::v_xc(nrxx_current, chg, ucell,
4246
PARAM.inp.nspin,
4347
PARAM.globalv.domag,
44-
PARAM.globalv.domag_z);
48+
PARAM.globalv.domag_z,
49+
hybrid_alpha,
50+
hse_omega);
4551
*(this->etxc_) = std::get<0>(etxc_vtxc_v);
4652
*(this->vtxc_) = std::get<1>(etxc_vtxc_v);
4753
v_eff += std::get<2>(etxc_vtxc_v);

source/source_estate/module_pot/pot_xc_fdm.cpp

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,15 @@ PotXC_FDM::PotXC_FDM(
2020
this->dynamic_mode = true;
2121
this->fixed_mode = false;
2222

23+
const double hybrid_alpha = XC_Functional::get_hybrid_alpha();
24+
const double hse_omega = 0.0;
2325
const std::tuple<double, double, ModuleBase::matrix> etxc_vtxc_v_0
2426
= XC_Functional::v_xc(this->chg_0->nrxx, this->chg_0, ucell,
2527
PARAM.inp.nspin,
2628
PARAM.globalv.domag,
27-
PARAM.globalv.domag_z);
29+
PARAM.globalv.domag_z,
30+
hybrid_alpha,
31+
hse_omega);
2832
this->v_xc_0 = std::get<2>(etxc_vtxc_v_0);
2933
}
3034

@@ -50,11 +54,15 @@ void PotXC_FDM::cal_v_eff(
5054
chg_01.rho_core[ir] = chg_0->rho_core[ir] + chg_1->rho_core[ir];
5155
}
5256

57+
const double hybrid_alpha = XC_Functional::get_hybrid_alpha();
58+
const double hse_omega = 0.0;
5359
const std::tuple<double, double, ModuleBase::matrix> etxc_vtxc_v_01
5460
= XC_Functional::v_xc(chg_01.nrxx, &chg_01, ucell,
5561
PARAM.inp.nspin,
5662
PARAM.globalv.domag,
57-
PARAM.globalv.domag_z);
63+
PARAM.globalv.domag_z,
64+
hybrid_alpha,
65+
hse_omega);
5866
const ModuleBase::matrix &v_xc_01 = std::get<2>(etxc_vtxc_v_01);
5967

6068
v_eff += v_xc_01 - this->v_xc_0;

source/source_hamilt/module_xc/libxc_abacus.h

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,9 @@ namespace XC_Functional_Libxc
6565
const int nspin,
6666
const bool domag,
6767
const bool domag_z,
68-
const std::map<int, double>* scaling_factor);
68+
const std::map<int, double>* scaling_factor,
69+
const double hybrid_alpha,
70+
const double hse_omega);
6971

7072
// for mGGA functional
7173
extern std::tuple<double, double, ModuleBase::matrix, ModuleBase::matrix> v_xc_meta(
@@ -74,7 +76,9 @@ namespace XC_Functional_Libxc
7476
const double &omega, // volume of cell
7577
const double tpiba,
7678
const Charge* const chr,
77-
const int nspin);
79+
const int nspin,
80+
const double hybrid_alpha,
81+
const double hse_omega);
7882

7983

8084
//-------------------
@@ -164,7 +168,9 @@ namespace XC_Functional_Libxc
164168
const double &rhodw,
165169
double &exc,
166170
double &vxcup,
167-
double &vxcdw);
171+
double &vxcdw,
172+
const double hybrid_alpha,
173+
const double hse_omega);
168174

169175

170176
//-------------------
@@ -178,7 +184,9 @@ namespace XC_Functional_Libxc
178184
const double &grho,
179185
double &sxc,
180186
double &v1xc,
181-
double &v2xc);
187+
double &v2xc,
188+
const double hybrid_alpha,
189+
const double hse_omega);
182190

183191
// the entire GGA functional, for nspin=2 case
184192
extern void gcxc_spin_libxc(

source/source_hamilt/module_xc/libxc_gga_wrap.cpp

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,9 @@ void XC_Functional_Libxc::gcxc_libxc(
1414
const double& grho,
1515
double& sxc,
1616
double& v1xc,
17-
double& v2xc)
17+
double& v2xc,
18+
const double hybrid_alpha,
19+
const double hse_omega)
1820
{
1921
sxc = 0.0;
2022
v1xc = 0.0;
@@ -27,12 +29,6 @@ void XC_Functional_Libxc::gcxc_libxc(
2729
return;
2830
}
2931

30-
double hybrid_alpha = 0.0;
31-
double hse_omega = 0.0;
32-
#ifdef __EXX
33-
hybrid_alpha = GlobalC::exx_info.info_global.hybrid_alpha;
34-
hse_omega = GlobalC::exx_info.info_global.hse_omega;
35-
#endif
3632
std::vector<xc_func_type> funcs = XC_Functional_Libxc::init_func(
3733
/* func_id = */ func_id,
3834
/* xc_polarized = */ XC_UNPOLARIZED,

source/source_hamilt/module_xc/libxc_lda_wrap.cpp

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,17 +8,13 @@
88
void XC_Functional_Libxc::xc_spin_libxc(
99
const std::vector<int> &func_id,
1010
const double &rhoup, const double &rhodw,
11-
double &exc, double &vxcup, double &vxcdw)
11+
double &exc, double &vxcup, double &vxcdw,
12+
const double hybrid_alpha,
13+
const double hse_omega)
1214
{
1315
const std::vector<double> rho_ud = {rhoup, rhodw};
1416
exc = vxcup = vxcdw = 0.0;
1517

16-
double hybrid_alpha = 0.0;
17-
double hse_omega = 0.0;
18-
#ifdef __EXX
19-
hybrid_alpha = GlobalC::exx_info.info_global.hybrid_alpha;
20-
hse_omega = GlobalC::exx_info.info_global.hse_omega;
21-
#endif
2218
std::vector<xc_func_type> funcs = XC_Functional_Libxc::init_func(
2319
/* func_id = */ func_id,
2420
/* xc_polarized = */ XC_POLARIZED,

source/source_hamilt/module_xc/libxc_pot.cpp

Lines changed: 6 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,9 @@ std::tuple<double,double,ModuleBase::matrix> XC_Functional_Libxc::v_xc_libxc( /
2525
const int nspin_in,
2626
const bool domag,
2727
const bool domag_z,
28-
const std::map<int, double>* scaling_factor)
28+
const std::map<int, double>* scaling_factor,
29+
const double hybrid_alpha,
30+
const double hse_omega)
2931
{
3032
ModuleBase::TITLE("XC_Functional_Libxc","v_xc_libxc");
3133
ModuleBase::timer::start("XC_Functional_Libxc","v_xc_libxc");
@@ -41,12 +43,6 @@ std::tuple<double,double,ModuleBase::matrix> XC_Functional_Libxc::v_xc_libxc( /
4143
// https://www.tddft.org/programs/libxc/manual/libxc-5.1.x/
4244
//----------------------------------------------------------
4345

44-
double hybrid_alpha = 0.0;
45-
double hse_omega = 0.0;
46-
#ifdef __EXX
47-
hybrid_alpha = GlobalC::exx_info.info_global.hybrid_alpha;
48-
hse_omega = GlobalC::exx_info.info_global.hse_omega;
49-
#endif
5046
std::vector<xc_func_type> funcs = XC_Functional_Libxc::init_func(
5147
/* func_id = */ func_id,
5248
/* xc_polarized = */ (1==nspin) ? XC_UNPOLARIZED : XC_POLARIZED,
@@ -222,7 +218,9 @@ std::tuple<double,double,ModuleBase::matrix,ModuleBase::matrix> XC_Functional_Li
222218
const double &omega, // volume of cell
223219
const double tpiba,
224220
const Charge* const chr,
225-
const int nspin)
221+
const int nspin,
222+
const double hybrid_alpha,
223+
const double hse_omega)
226224
{
227225
ModuleBase::TITLE("XC_Functional_Libxc","v_xc_meta");
228226
ModuleBase::timer::start("XC_Functional_Libxc","v_xc_meta");
@@ -241,12 +239,6 @@ std::tuple<double,double,ModuleBase::matrix,ModuleBase::matrix> XC_Functional_Li
241239
// use can check on website, for example:
242240
// https://www.tddft.org/programs/libxc/manual/libxc-5.1.x/
243241
//----------------------------------------------------------
244-
double hybrid_alpha = 0.0;
245-
double hse_omega = 0.0;
246-
#ifdef __EXX
247-
hybrid_alpha = GlobalC::exx_info.info_global.hybrid_alpha;
248-
hse_omega = GlobalC::exx_info.info_global.hse_omega;
249-
#endif
250242
std::vector<xc_func_type> funcs = XC_Functional_Libxc::init_func(
251243
/* func_id = */ func_id,
252244
/* xc_polarized = */ (1==nspin) ? XC_UNPOLARIZED:XC_POLARIZED,

source/source_hamilt/module_xc/test/test_xc.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -881,13 +881,15 @@ class XCTest_PBE_LibXC : public XCTest
881881
std::vector<double> rho = {0.17E+01, 0.17E+01, 0.15E+01, 0.88E-01, 0.18E+04};
882882
std::vector<double> grho = {0.81E-11, 0.17E+01, 0.36E+02, 0.87E-01, 0.55E+00};
883883

884+
const double hybrid_alpha = XC_Functional::get_hybrid_alpha();
885+
const double hse_omega = 0.0;
884886
for(int i=0;i<5;i++)
885887
{
886888
double e,v,v1,v2;
887889
XC_Functional::xc(rho[i],e,v);
888890
e_lda.push_back(e);
889891
v_lda.push_back(v);
890-
XC_Functional_Libxc::gcxc_libxc(XC_Functional::get_func_id(), rho[i],grho[i],e,v1,v2);
892+
XC_Functional_Libxc::gcxc_libxc(XC_Functional::get_func_id(), rho[i],grho[i],e,v1,v2, hybrid_alpha, hse_omega);
891893
e_gga.push_back(e);
892894
v1_gga.push_back(v1);
893895
v2_gga.push_back(v2);

source/source_hamilt/module_xc/test/test_xc2.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -494,12 +494,14 @@ class XCTest_PZ_SPN_LibXC : public XCTest
494494
std::vector<double> rho = {-1, 0.17E+01, 0.17E+01, 0.15E+01, 0.88E-01, 0.18E+04};
495495
std::vector<double> zeta = {0.0, 0.0, 0.2, 0.5, 0.8, 1.0};
496496

497+
const double hybrid_alpha = XC_Functional::get_hybrid_alpha();
498+
const double hse_omega = 0.0;
497499
for(int i=0;i<5;i++)
498500
{
499501
double e,v1,v2;
500502
double r1 = rho[i] * (1+zeta[i]) / 2.0;
501503
double r2 = rho[i] * (1-zeta[i]) / 2.0;
502-
XC_Functional_Libxc::xc_spin_libxc(XC_Functional::get_func_id(), r1,r2,e,v1,v2);
504+
XC_Functional_Libxc::xc_spin_libxc(XC_Functional::get_func_id(), r1,r2,e,v1,v2, hybrid_alpha, hse_omega);
503505
e_lda.push_back(e);
504506
v1_lda.push_back(v1);
505507
v2_lda.push_back(v2);

source/source_hamilt/module_xc/test/test_xc5.cpp

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -78,14 +78,16 @@ class XCTest_VXC : public XCTest
7878

7979
XC_Functional::set_xc_type("PBE");
8080

81+
const double hybrid_alpha = XC_Functional::get_hybrid_alpha();
82+
const double hse_omega = 0.0;
8183
std::tuple<double, double, ModuleBase::matrix> etxc_vtxc_v
82-
= XC_Functional::v_xc(rhopw.nrxx,&chr,&ucell,nspin1,domag,domag_z);
84+
= XC_Functional::v_xc(rhopw.nrxx,&chr,&ucell,nspin1,domag,domag_z, hybrid_alpha, hse_omega);
8385
et1 = std::get<0>(etxc_vtxc_v);
8486
vt1 = std::get<1>(etxc_vtxc_v);
8587
v1 = std::get<2>(etxc_vtxc_v);
8688

8789
etxc_vtxc_v
88-
= XC_Functional::v_xc(rhopw.nrxx,&chr,&ucell,nspin2,domag,domag_z);
90+
= XC_Functional::v_xc(rhopw.nrxx,&chr,&ucell,nspin2,domag,domag_z, hybrid_alpha, hse_omega);
8991
et2 = std::get<0>(etxc_vtxc_v);
9092
vt2 = std::get<1>(etxc_vtxc_v);
9193
v2 = std::get<2>(etxc_vtxc_v);
@@ -180,14 +182,16 @@ class XCTest_VXC_Libxc : public XCTest
180182

181183
XC_Functional::set_xc_type("GGA_X_PBE+GGA_C_PBE");
182184

185+
const double hybrid_alpha = XC_Functional::get_hybrid_alpha();
186+
const double hse_omega = 0.0;
183187
std::tuple<double, double, ModuleBase::matrix> etxc_vtxc_v
184-
= XC_Functional::v_xc(rhopw.nrxx,&chr,&ucell,nspin1,domag,domag_z);
188+
= XC_Functional::v_xc(rhopw.nrxx,&chr,&ucell,nspin1,domag,domag_z, hybrid_alpha, hse_omega);
185189
et1 = std::get<0>(etxc_vtxc_v);
186190
vt1 = std::get<1>(etxc_vtxc_v);
187191
v1 = std::get<2>(etxc_vtxc_v);
188192

189193
etxc_vtxc_v
190-
= XC_Functional::v_xc(rhopw.nrxx,&chr,&ucell,nspin2,domag,domag_z);
194+
= XC_Functional::v_xc(rhopw.nrxx,&chr,&ucell,nspin2,domag,domag_z, hybrid_alpha, hse_omega);
191195
et2 = std::get<0>(etxc_vtxc_v);
192196
vt2 = std::get<1>(etxc_vtxc_v);
193197
v2 = std::get<2>(etxc_vtxc_v);
@@ -290,15 +294,17 @@ class XCTest_VXC_meta : public XCTest
290294

291295
XC_Functional::set_xc_type("SCAN");
292296

297+
const double hybrid_alpha = XC_Functional::get_hybrid_alpha();
298+
const double hse_omega = 0.0;
293299
std::tuple<double, double, ModuleBase::matrix, ModuleBase::matrix> etxc_vtxc_v
294-
= XC_Functional_Libxc::v_xc_meta(XC_Functional::get_func_id(), rhopw.nrxx,ucell.omega,ucell.tpiba,&chr,nspin1);
300+
= XC_Functional_Libxc::v_xc_meta(XC_Functional::get_func_id(), rhopw.nrxx,ucell.omega,ucell.tpiba,&chr,nspin1, hybrid_alpha, hse_omega);
295301
et1 = std::get<0>(etxc_vtxc_v);
296302
vt1 = std::get<1>(etxc_vtxc_v);
297303
v1 = std::get<2>(etxc_vtxc_v);
298304
vtau1 = std::get<3>(etxc_vtxc_v);
299305

300306
etxc_vtxc_v
301-
= XC_Functional_Libxc::v_xc_meta(XC_Functional::get_func_id(), rhopw.nrxx,ucell.omega,ucell.tpiba,&chr,nspin2);
307+
= XC_Functional_Libxc::v_xc_meta(XC_Functional::get_func_id(), rhopw.nrxx,ucell.omega,ucell.tpiba,&chr,nspin2, hybrid_alpha, hse_omega);
302308
et2 = std::get<0>(etxc_vtxc_v);
303309
vt2 = std::get<1>(etxc_vtxc_v);
304310
v2 = std::get<2>(etxc_vtxc_v);

source/source_hamilt/module_xc/xc_functional.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,9 @@ class XC_Functional
5050
const UnitCell *ucell, // charge density
5151
const int nspin,
5252
const bool domag,
53-
const bool domag_z);
53+
const bool domag_z,
54+
const double hybrid_alpha,
55+
const double hse_omega);
5456

5557
//-------------------
5658
// xc_functional.cpp

0 commit comments

Comments
 (0)