14template <
typename T,
typename Device = base_device::DEVICE_CPU>
Definition charge_mixing.h:9
Definition esolver_fp.h:32
Definition esolver_ks.h:16
virtual void after_scf(UnitCell &ucell, const int istep, const bool conv_esolver) override
Something to do after SCF iterations when SCF is converged or comes to the max iter step.
Definition esolver_ks.cpp:339
virtual void hamilt2rho_single(UnitCell &ucell, const int istep, const int iter, const double ethr)
Definition esolver_ks.cpp:106
ModulePW::PW_Basis_K * pw_wfc
PW for wave functions, only used in KSDFT, not in OFDFT.
Definition esolver_ks.h:53
virtual void iter_init(UnitCell &ucell, const int istep, const int iter)
Something to do before hamilt2rho function in each iter loop.
Definition esolver_ks.cpp:226
bool scf_nmax_flag
Definition esolver_ks.h:74
pseudopot_cell_vnl ppcell
nonlocal pseudopotentials
Definition esolver_ks.h:59
virtual void before_all_runners(UnitCell &ucell, const Input_para &inp) override
Initialize of the first-principels energy solver.
Definition esolver_ks.cpp:44
double drho
scf energy threshold
Definition esolver_ks.h:69
double esolver_KS_ne
esolver_ks_lcao.cpp
Definition esolver_ks.h:65
hamilt::Hamilt< T, Device > * p_hamilt
Hamiltonian.
Definition esolver_ks.h:50
virtual void runner(UnitCell &ucell, const int istep) override
run energy solver
Definition esolver_ks.cpp:164
Charge_Mixing * p_chgmix
Charge mixing method.
Definition esolver_ks.h:56
bool oscillate_esolver
iter steps actually used in scf
Definition esolver_ks.h:73
virtual void before_scf(UnitCell &ucell, const int istep) override
Something to do before SCF iterations.
Definition esolver_ks.cpp:219
ESolver_KS()
Constructor.
Definition esolver_ks.cpp:23
int niter
maximum iter steps for scf
Definition esolver_ks.h:72
virtual void iter_finish(UnitCell &ucell, const int istep, int &iter, bool &conv_esolver) override
Something to do after hamilt2rho function in each iter loop.
Definition esolver_ks.cpp:257
double diag_ethr
number of electrons
Definition esolver_ks.h:66
double scf_ene_thr
scf density threshold
Definition esolver_ks.h:68
void hamilt2rho(UnitCell &ucell, const int istep, const int iter, const double ethr)
Definition esolver_ks.cpp:110
int maxniter
the error of HSolver
Definition esolver_ks.h:71
double scf_thr
the threshold for diagonalization
Definition esolver_ks.h:67
virtual ~ESolver_KS()
Deconstructor.
Definition esolver_ks.cpp:27
double hsolver_error
the difference between rho_in (before HSolver) and rho_out (After HSolver)
Definition esolver_ks.h:70
virtual void after_all_runners(UnitCell &ucell) override
perform post processing calculations
Definition esolver_ks.cpp:364
std::string basisname
Definition esolver_ks.h:64
bool conv_esolver
Definition esolver.h:47
Special pw_basis class. It includes different k-points.
Definition pw_basis_k.h:57
Definition VNL_in_pw.h:21
The First-Principles (FP) Energy Solver Class.
Definition opt_test_tools.cpp:93