58 static std::vector<double>
U;
59 static std::vector<double>
U0;
78 std::vector<double> orb_cutoff_;
82 std::vector<std::vector<std::vector<std::vector<std::vector<int>>>>>
91 void cal_eff_pot_mat_complex(
const int ik,
92 std::complex<double>* eff_pot,
93 const std::vector<int>& isk,
94 const std::complex<double>* sk);
96 void cal_eff_pot_mat_real(
const int ik,
98 const std::vector<int>& isk,
101 void cal_eff_pot_mat_R_double(
const int ispin,
double* SR,
double* HR);
103 void cal_eff_pot_mat_R_complex_double(
const int ispin,
104 std::complex<double>* SR,
105 std::complex<double>* HR);
120 const double& mixing_beta);
138 void cal_occup_m_k(
const int iter,
140 const std::vector<std::vector<std::complex<double>>>& dm_k,
142 const double& mixing_beta,
145 void cal_occup_m_gamma(
const int iter,
147 const std::vector<std::vector<double>>& dm_gamma,
148 const double& mixing_beta,
168 std::vector<std::vector<std::vector<std::vector<ModuleBase::matrix>>>>
locale;
169 std::vector<std::vector<std::vector<std::vector<ModuleBase::matrix>>>>
locale_save;
179 void cal_VU_pot_mat_complex(
const int spin,
const bool newlocale, std::complex<double>* VU);
180 void cal_VU_pot_mat_real(
const int spin,
const bool newlocale,
double* VU);
182 double get_onebody_eff_pot(
const int T,
189 const bool newlocale);
196 void fold_dSR_gamma(
const UnitCell& ucell,
211 void folding_matrix_k(
const UnitCell& ucell,
218 std::complex<double>* mat_k,
226 void folding_matrix_k_new(
const int ik,
234 void force_stress(
const UnitCell& ucell,
236 std::vector<std::vector<double>>* dmk_d,
237 std::vector<std::vector<std::complex<double>>>* dmk_c,
245 void cal_force_k(
const UnitCell& ucell,
250 const std::complex<double>* rho_VU,
254 void cal_stress_k(
const UnitCell& ucell,
259 const std::complex<double>* rho_VU,
263 void cal_force_gamma(
const UnitCell& ucell,
264 const double* rho_VU,
271 void cal_stress_gamma(
const UnitCell& ucell,
278 const double* rho_VU,
294 const std::string& fn);
308 std::vector<std::vector<std::vector<std::vector<double>>>>
Fk;
309 std::vector<std::vector<std::vector<double>>>
U_Yukawa;
310 std::vector<std::vector<std::vector<double>>>
J_Yukawa;
343void dftu_cal_occup_m(
const int iter,
345 const std::vector<std::vector<T>>& dm,
347 const double& mixing_beta,
Definition force_stress_arrays.h:5
Definition sltk_grid_driver.h:40
3 elements vector
Definition vector3.h:24
Definition parallel_orbitals.h:9
void cal_slater_UJ(const UnitCell &ucell, double **rho, const int &nrxx)
const Parallel_Orbitals * paraV
Definition dftu.h:70
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:25
void init(UnitCell &cell, const Parallel_Orbitals *pv, const int nks)
Definition dftu.cpp:45
const std::complex< double > * get_eff_pot_pw(const int iat) const
get effective potential matrix for PW base
Definition dftu.h:126
double spherical_Hankel(const int k, const double r, const double lambda)
static double energy_u
Definition dftu.h:68
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:9
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:44
std::vector< std::vector< std::vector< std::vector< ModuleBase::matrix > > > > locale_save
Definition dftu.h:169
std::vector< std::vector< std::vector< std::vector< std::vector< int > > > > > iatlnmipol2iwt
Definition dftu.h:83
bool initialed_locale
Definition dftu.h:153
void local_occup_bcast(const UnitCell &ucell)
Definition dftu_io.cpp:407
std::vector< std::vector< std::vector< double > > > J_Yukawa
Definition dftu.h:310
~Plus_U()
Definition dftu.cpp:42
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:303
std::vector< std::vector< std::vector< std::vector< ModuleBase::matrix > > > > locale
Definition dftu.h:168
static int mixing_dftu
Definition dftu.h:63
bool u_converged()
Definition dftu.cpp:418
static void set_double_energy()
Definition dftu.h:49
std::vector< std::complex< double > > eff_pot_pw
Definition dftu.h:161
static double uramping
Definition dftu.h:61
static std::vector< int > orbital_corr
Definition dftu.h:29
static std::vector< double > U0
Definition dftu.h:27
static int omc
Definition dftu.h:62
static double get_energy()
Definition dftu.h:39
int get_size_eff_pot_pw() const
Definition dftu.h:131
double lambda
Definition dftu.h:307
std::vector< int > eff_pot_pw_index
Definition dftu.h:162
double spherical_Bessel(const int k, const double r, const double lambda)
int cal_type
Definition dftu.h:71
std::vector< std::vector< std::vector< double > > > U_Yukawa
Definition dftu.h:309
Plus_U()
Definition dftu.cpp:39
std::vector< std::vector< std::vector< std::vector< double > > > > Fk
Definition dftu.h:308
void uramping_update()
Definition dftu.cpp:394
void mix_locale(const UnitCell &ucell, const double &mixing_beta)
Definition dftu_occup.cpp:85
void zero_locale(const UnitCell &ucell)
Definition dftu_occup.cpp:47
Definition density_matrix.h:70
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