59 static std::vector<double>
U;
60 static std::vector<double>
U0;
79 std::vector<double> orb_cutoff_;
83 std::vector<std::vector<std::vector<std::vector<std::vector<int>>>>>
92 void cal_eff_pot_mat_complex(
const int ik,
93 std::complex<double>* eff_pot,
94 const std::vector<int>& isk,
95 const std::complex<double>* sk);
97 void cal_eff_pot_mat_real(
const int ik,
99 const std::vector<int>& isk,
102 void cal_eff_pot_mat_R_double(
const int ispin,
double* SR,
double* HR);
104 void cal_eff_pot_mat_R_complex_double(
const int ispin,
105 std::complex<double>* SR,
106 std::complex<double>* HR);
121 const double& mixing_beta);
139 void cal_occup_m_k(
const int iter,
141 const std::vector<std::vector<std::complex<double>>>& dm_k,
143 const double& mixing_beta,
146 void cal_occup_m_gamma(
const int iter,
148 const std::vector<std::vector<double>>& dm_gamma,
149 const double& mixing_beta,
169 std::vector<std::vector<std::vector<std::vector<ModuleBase::matrix>>>>
locale;
170 std::vector<std::vector<std::vector<std::vector<ModuleBase::matrix>>>>
locale_save;
180 void cal_VU_pot_mat_complex(
const int spin,
const bool newlocale, std::complex<double>* VU);
181 void cal_VU_pot_mat_real(
const int spin,
const bool newlocale,
double* VU);
183 double get_onebody_eff_pot(
const int T,
190 const bool newlocale);
197 void fold_dSR_gamma(
const UnitCell& ucell,
212 void folding_matrix_k(
const UnitCell& ucell,
219 std::complex<double>* mat_k,
227 void folding_matrix_k_new(
const int ik,
235 void force_stress(
const UnitCell& ucell,
237 std::vector<std::vector<double>>* dmk_d,
238 std::vector<std::vector<std::complex<double>>>* dmk_c,
246 void cal_force_k(
const UnitCell& ucell,
251 const std::complex<double>* rho_VU,
255 void cal_stress_k(
const UnitCell& ucell,
260 const std::complex<double>* rho_VU,
264 void cal_force_gamma(
const UnitCell& ucell,
265 const double* rho_VU,
272 void cal_stress_gamma(
const UnitCell& ucell,
279 const double* rho_VU,
295 const std::string& fn);
309 std::vector<std::vector<std::vector<std::vector<double>>>>
Fk;
310 std::vector<std::vector<std::vector<double>>>
U_Yukawa;
311 std::vector<std::vector<std::vector<double>>>
J_Yukawa;
344void dftu_cal_occup_m(
const int iter,
346 const std::vector<std::vector<T>>& dm,
348 const double& mixing_beta,
Definition force_stress_arrays.h:5
Definition sltk_grid_driver.h:43
3 elements vector
Definition vector3.h:22
Definition parallel_orbitals.h:9
void cal_slater_UJ(const UnitCell &ucell, double **rho, const int &nrxx)
const Parallel_Orbitals * paraV
Definition dftu.h:71
void cal_VU_pot_pw(const int spin)
calculate the local DFT+U effective potential matrix for PW base.
Definition dftu_pw.cpp:215
static std::vector< double > U
Definition dftu.h:26
void init(UnitCell &cell, const Parallel_Orbitals *pv, const int nks)
Definition dftu.cpp:46
const std::complex< double > * get_eff_pot_pw(const int iat) const
get effective potential matrix for PW base
Definition dftu.h:127
double spherical_Hankel(const int k, const double r, const double lambda)
static double energy_u
Definition dftu.h:69
void cal_occ_pw(const int iter, const void *psi_in, const ModuleBase::matrix &wg_in, const UnitCell &cell, const double &mixing_beta)
calculate occupation matrix for DFT+U
Definition dftu_pw.cpp:9
void write_occup_m(const UnitCell &ucell, std::ofstream &ofs, bool diag=false)
Definition dftu_io.cpp:76
void copy_locale(const UnitCell &ucell)
Definition dftu_occup.cpp:10
void cal_energy_correction(const UnitCell &ucell, const int istep)
void cal_yukawa_lambda(double **rho, const int &nrxx)
static void set_energy(const double &e)
Definition dftu.h:45
std::vector< std::vector< std::vector< std::vector< ModuleBase::matrix > > > > locale_save
Definition dftu.h:170
std::vector< std::vector< std::vector< std::vector< std::vector< int > > > > > iatlnmipol2iwt
Definition dftu.h:84
bool initialed_locale
Definition dftu.h:154
void local_occup_bcast(const UnitCell &ucell)
Definition dftu_io.cpp:407
std::vector< std::vector< std::vector< double > > > J_Yukawa
Definition dftu.h:311
~Plus_U()
Definition dftu.cpp:43
void cal_slater_Fk(const UnitCell &ucell, const int L, const int T)
void read_occup_m(const UnitCell &ucell, const std::string &fn)
Definition dftu_io.cpp:234
static bool Yukawa
Definition dftu.h:304
std::vector< std::vector< std::vector< std::vector< ModuleBase::matrix > > > > locale
Definition dftu.h:169
static int mixing_dftu
Definition dftu.h:64
bool u_converged()
Definition dftu.cpp:415
static void set_double_energy()
Definition dftu.h:50
std::vector< std::complex< double > > eff_pot_pw
Definition dftu.h:162
static double uramping
Definition dftu.h:62
static std::vector< int > orbital_corr
Definition dftu.h:30
static std::vector< double > U0
Definition dftu.h:28
static int omc
Definition dftu.h:63
static double get_energy()
Definition dftu.h:40
int get_size_eff_pot_pw() const
Definition dftu.h:132
double lambda
Definition dftu.h:308
std::vector< int > eff_pot_pw_index
Definition dftu.h:163
double spherical_Bessel(const int k, const double r, const double lambda)
int cal_type
Definition dftu.h:72
std::vector< std::vector< std::vector< double > > > U_Yukawa
Definition dftu.h:310
Plus_U()
Definition dftu.cpp:40
std::vector< std::vector< std::vector< std::vector< double > > > > Fk
Definition dftu.h:309
void uramping_update()
Definition dftu.cpp:395
void mix_locale(const UnitCell &ucell, const double &mixing_beta)
Definition dftu_occup.cpp:86
void zero_locale(const UnitCell &ucell)
Definition dftu_occup.cpp:48
Definition density_matrix.h:36
Definition hcontainer.h:144
#define N
Definition exp.cpp:24
#define T
Definition exp.cpp:237
base device SOURCES math_hegvd_test cpp endif() if(ENABLE_GOOGLEBENCH) AddTest(TARGET PERF_MODULE_HSOLVER_KERNELS LIBS parameter $
Definition CMakeLists.txt:10
Plus_U dftu
Definition test_dftu.cpp:14