40template <
typename TK,
typename TR>
89 std::string XC_func_rdmft_in,
90 double alpha_power_in);
118 void get_DM_XC(std::vector< std::vector<TK> >& DM_XC);
181 bool exx_spacegroup_symmetry =
false;
Definition sltk_grid_driver.h:40
Definition complexmatrix.h:13
A class which can convert a function of "r" to the corresponding linear superposition of plane waves ...
Definition pw_basis.h:56
Definition symmetry_rotation.h:16
This class packs the basic information of 2D-block-cyclic parallel distribution of an arbitrary matri...
Definition parallel_2d.h:12
Definition parallel_orbitals.h:9
Definition two_center_bundle.h:11
Definition elecstate.h:15
Definition hcontainer.h:144
Definition hs_matrix_k.hpp:11
Definition operator_lcao.h:12
const Parallel_Orbitals * ParaV
Definition rdmft.h:48
hamilt::OperatorLCAO< TK, TR > * V_nonlocal
Definition rdmft.h:171
hamilt::OperatorLCAO< TK, TR > * V_ekinetic_potential
Definition rdmft.h:170
hamilt::OperatorLCAO< TK, TR > * V_hartree
Definition rdmft.h:173
psi::Psi< TK > H_wfc_XC
Definition rdmft.h:161
void update_wg(const ModuleBase::matrix &wg_in)
update occ_number for optimization algorithms that depend on Hamilton
Definition update_state_rdmft.cpp:168
void update_occNumber(const ModuleBase::matrix &occ_number_in)
update occ_number for optimization algorithms that depend on Hamilton
Definition update_state_rdmft.cpp:152
ModuleBase::matrix wfcHwfc_hartree
Definition rdmft.h:154
void cal_V_hartree()
Definition rdmft_pot.cpp:112
~RDMFT()
Definition rdmft.cpp:32
hamilt::HS_Matrix_K< TK > * hsk_hartree
Definition rdmft.h:143
ModuleBase::matrix occ_number
natrual occupation numbers and wavefunction
Definition rdmft.h:67
psi::Psi< TK > H_wfc_exx_XC
Definition rdmft.h:162
int nk_total
Definition rdmft.h:58
ModuleBase::matrix wg
Definition rdmft.h:69
ModuleBase::matrix occNum_wfcHamiltWfc
gradients of total energy with respect to the natural occupation numbers and wfc
Definition rdmft.h:73
void cal_Hk_Hpsi()
get the total Hamilton in k-space
Definition rdmft.cpp:184
hamilt::HContainer< TR > * HR_hartree
Definition rdmft.h:136
const ModuleBase::matrix * vloc
Definition rdmft.h:196
void cal_V_TV()
Definition rdmft_pot.cpp:50
Parallel_2D para_Eij
Definition rdmft.h:50
int nbands_total
Definition rdmft.h:59
psi::Psi< TK > occNum_HamiltWfc
Definition rdmft.h:74
const UnitCell * ucell
Definition rdmft.h:193
RDMFT()
Definition rdmft.cpp:26
const ModulePW::PW_Basis * rho_basis
Definition rdmft.h:195
double run(ModuleBase::matrix &E_gradient_occNum, psi::Psi< TK > &E_gradient_wfc)
do all calculation after update occNum&wfc, get Etotal and the gradient of energy with respect to the...
Definition rdmft.cpp:408
ModuleBase::matrix wfcHwfc_exx_XC
Definition rdmft.h:156
const int cal_E_type
Definition rdmft.h:187
ModuleBase::matrix wfcHwfc_XC
Definition rdmft.h:155
void init(Parallel_Orbitals &ParaV_in, UnitCell &ucell_in, const Grid_Driver &gd_in, K_Vectors &kv_in, elecstate::ElecState &pelec_in, LCAO_Orbitals &orb_in, TwoCenterBundle &two_center_bundle_in, std::string XC_func_rdmft_in, double alpha_power_in)
initialization of rdmft calculation
Definition rdmft.cpp:56
const Grid_Driver * gd
Definition rdmft.h:194
ModuleBase::matrix wk_fun_occNum
Definition rdmft.h:70
psi::Psi< TK > H_wfc_dft_XC
Definition rdmft.h:163
std::vector< std::vector< TK > > DM_XC_pass
Definition rdmft.h:148
psi::Psi< TK > wfc
Definition rdmft.h:68
double cal_E_grad_wfc_occ_num()
obtain the gradient of total energy with respect to occupation number and wfc
Definition rdmft.cpp:263
const ModuleBase::ComplexMatrix * sf
Definition rdmft.h:197
double vtxc
Definition rdmft.h:185
double Etotal
Definition rdmft.h:78
std::string XC_func_rdmft
Definition rdmft.h:61
hamilt::OperatorLCAO< TK, TR > * V_dft_XC
Definition rdmft.h:175
ModuleBase::matrix Etotal_n_k
Definition rdmft.h:152
hamilt::OperatorLCAO< TK, TR > * V_local
Definition rdmft.h:172
hamilt::HContainer< TR > * HR_TV
Hamiltonian matrices in real space.
Definition rdmft.h:135
const TwoCenterBundle * two_center_bundle
Definition rdmft.h:199
void cal_Energy(const int cal_type=1)
Definition rdmft.cpp:289
int nspin
Definition rdmft.h:60
double alpha_power
0.656 for soilds, 0.525 for dissociation of H2, 0.55~0.58 for HEG
Definition rdmft.h:64
bool only_exx_type
Definition rdmft.h:186
ModuleBase::matrix wfcHwfc_dft_XC
Definition rdmft.h:157
void update_elec(UnitCell &ucell, const ModuleBase::matrix &occ_number_in, const psi::Psi< TK > &wfc_in, const Charge *charge_in=nullptr)
update in elec-step
Definition update_state_rdmft.cpp:51
void update_charge(UnitCell &ucell)
Definition update_state_rdmft.cpp:95
std::vector< TK > Eij_TV
Definition rdmft.h:165
hamilt::OperatorLCAO< TK, TR > * V_exx_XC
Definition rdmft.h:174
std::vector< TK > HK_XC
Definition rdmft.h:147
elecstate::ElecState * pelec
obain Ewald and this->pelec->pot
Definition rdmft.h:53
const LCAO_Orbitals * orb
Definition rdmft.h:198
hamilt::HS_Matrix_K< TK > * hsk_exx_XC
Definition rdmft.h:145
psi::Psi< TK > H_wfc_TV
Definition rdmft.h:159
std::vector< TK > Eij_exx_XC
Definition rdmft.h:168
hamilt::HContainer< TR > * HR_dft_XC
Definition rdmft.h:137
std::vector< TK > Eij_XC
Definition rdmft.h:167
void cal_V_XC(const UnitCell &ucell)
construct V_XC based on different XC_functional( i.e. RDMFT class member XC_func_rdmft)
Definition rdmft_pot.cpp:162
void get_DM_XC(std::vector< std::vector< TK > > &DM_XC)
get the special density matrix DM_XC(nk*nbasis_local*nbasis_local)
Definition rdmft_pot.cpp:26
hamilt::HS_Matrix_K< TK > * hsk_dft_XC
Definition rdmft.h:144
void update_ion(UnitCell &ucell_in, ModulePW::PW_Basis &rho_basis_in, ModuleBase::matrix &vloc_in, ModuleBase::ComplexMatrix &sf_in)
update in ion-step and get V_TV
Definition update_state_rdmft.cpp:20
const K_Vectors * kv
update after ion step
Definition rdmft.h:56
psi::Psi< TK > H_wfc_hartree
Definition rdmft.h:160
std::vector< TK > Eij_hartree
Definition rdmft.h:166
hamilt::HS_Matrix_K< TK > * hsk_TV
Hamiltonian matrices in reciprocal space.
Definition rdmft.h:142
double etxc
Definition rdmft.h:184
double E_RDMFT[4]
E_RDMFT[4] stores ETV, Ehartree, Exc, Etotal.
Definition rdmft.h:77
hamilt::HContainer< TR > * HR_exx_XC
Definition rdmft.h:138
Charge * charge
Definition rdmft.h:190
ModuleBase::matrix wfcHwfc_TV
Definition rdmft.h:153
Reduced Density Matrix Functional Theory (RDMFT)
Definition rdmft.cpp:22