ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
|
#include <esolver_ks_lcao.h>
Public Member Functions | |
ESolver_KS_LCAO () | |
~ESolver_KS_LCAO () | |
void | before_all_runners (UnitCell &ucell, const Input_para &inp) override |
Initialize of the first-principels energy solver. | |
double | cal_energy () override |
calculate total energy of a given system | |
void | cal_force (UnitCell &ucell, ModuleBase::matrix &force) override |
calcualte forces for the atoms in the given cell | |
void | cal_stress (UnitCell &ucell, ModuleBase::matrix &stress) override |
void | after_all_runners (UnitCell &ucell) override |
perform post processing calculations | |
![]() | |
ESolver_KS () | |
Constructor. | |
virtual | ~ESolver_KS () |
Deconstructor. | |
virtual void | runner (UnitCell &ucell, const int istep) override |
run energy solver | |
![]() | |
ESolver_FP () | |
Constructor. | |
virtual | ~ESolver_FP () |
Deconstructor. | |
![]() | |
ESolver () | |
virtual | ~ESolver () |
Protected Member Functions | |
virtual void | before_scf (UnitCell &ucell, const int istep) override |
Something to do before SCF iterations. | |
virtual void | iter_init (UnitCell &ucell, const int istep, const int iter) override |
Something to do before hamilt2rho function in each iter loop. | |
virtual void | hamilt2rho_single (UnitCell &ucell, const int istep, const int iter, const double ethr) override |
virtual void | update_pot (UnitCell &ucell, const int istep, const int iter, const bool conv_esolver) override |
<Temporary> It should be replaced by a function in Hamilt Class | |
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. | |
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. | |
virtual void | others (UnitCell &ucell, const int istep) override |
![]() | |
void | hamilt2rho (UnitCell &ucell, const int istep, const int iter, const double ethr) |
Protected Attributes | |
Record_adj | RA |
Store information about Adjacent Atoms. | |
Grid_Driver | gd |
Store information about Adjacent Atoms. | |
Parallel_Orbitals | pv |
NAO orbitals: 2d block-cyclic distribution info. | |
Gint_k | GK |
Grid integration: used for k-point-dependent algorithm. | |
Gint_Gamma | GG |
Grid integration: used for gamma only algorithms. | |
Grid_Technique | GridT |
Grid integration: used to store some basic information. | |
std::unique_ptr< ModuleGint::GintInfo > | gint_info_ |
GintInfo: used to store some basic infomation about module_gint. | |
TwoCenterBundle | two_center_bundle_ |
NAO orbitals: two-center integrations. | |
rdmft::RDMFT< TK, TR > | rdmft_solver |
For RDMFT calculations, added by jghan, 2024-03-16. | |
LCAO_Orbitals | orb_ |
NAO: store related information. | |
ModuleBase::matrix | scs |
bool | have_force = false |
LCAO_Deepks< TK > | ld |
![]() | |
hamilt::Hamilt< TK, base_device::DEVICE_CPU > * | p_hamilt |
Hamiltonian. | |
ModulePW::PW_Basis_K * | pw_wfc |
PW for wave functions, only used in KSDFT, not in OFDFT. | |
Charge_Mixing * | p_chgmix |
Charge mixing method. | |
pseudopot_cell_vnl | ppcell |
nonlocal pseudopotentials | |
psi::Psi< TK > * | psi |
Electronic wavefunctions. | |
std::string | basisname |
double | esolver_KS_ne |
esolver_ks_lcao.cpp | |
double | diag_ethr |
number of electrons | |
double | scf_thr |
the threshold for diagonalization | |
double | scf_ene_thr |
scf density threshold | |
double | drho |
scf energy threshold | |
double | hsolver_error |
the difference between rho_in (before HSolver) and rho_out (After HSolver) | |
int | maxniter |
the error of HSolver | |
int | niter |
maximum iter steps for scf | |
bool | oscillate_esolver |
iter steps actually used in scf | |
![]() | |
elecstate::ElecState * | pelec = nullptr |
Electronic states. | |
K_Vectors | kv |
K points in Brillouin zone. | |
Charge | chr |
Electorn charge density. | |
ModulePW::PW_Basis * | pw_rho |
ModulePW::PW_Basis * | pw_rhod |
ModulePW::PW_Basis_Big * | pw_big |
dense grid for USPP | |
Parallel_Grid | Pgrid |
parallel for rho grid | |
Structure_Factor | sf |
Structure factors that used with plane-wave basis set. | |
pseudopot_cell_vl | locpp |
local pseudopotentials | |
Charge_Extra | CE |
charge extrapolation method | |
surchem | solvent |
solvent model | |
int | pw_rho_flag = false |
flag for pw_rho, 0: not initialized, 1: initialized | |
double | iter_time |
the start time of scf iteration | |
Friends | |
class | LR::ESolver_LR< double, double > |
class | LR::ESolver_LR< std::complex< double >, double > |
Additional Inherited Members | |
![]() | |
bool | conv_esolver = true |
std::string | classname |
ModuleESolver::ESolver_KS_LCAO< TK, TR >::ESolver_KS_LCAO | ( | ) |
ModuleESolver::ESolver_KS_LCAO< TK, TR >::~ESolver_KS_LCAO | ( | ) |
|
overridevirtual |
perform post processing calculations
Reimplemented from ModuleESolver::ESolver_KS< TK >.
|
overrideprotectedvirtual |
Something to do after SCF iterations when SCF is converged or comes to the max iter step.
1) call after_scf() of ESolver_KS
2) output of lcao every few ionic steps
3) Clean up RA, which is used to serach for adjacent atoms
Reimplemented from ModuleESolver::ESolver_KS< TK >.
Reimplemented in ModuleESolver::ESolver_KS_LCAO_TDDFT< TR, Device >.
|
overridevirtual |
Initialize of the first-principels energy solver.
1) initialize "before_all_runniers" in ESolver_FP
3) it has been established that
4) setup the charge mixing parameters
5) ESolver depends on the Symmetry module
6) Setup the k points according to symmetry.
7) print information
8) setup plane wave for electronic wave functions
9) initialize the real-space uniform grid for FFT and parallel distribution of plane waves
10) calculate the structure factor
Reimplemented from ModuleESolver::ESolver_KS< TK >.
Reimplemented in ModuleESolver::ESolver_KS_LCAO_TDDFT< TR, Device >.
|
overrideprotectedvirtual |
Something to do before SCF iterations.
1) call before_scf() of ESolver_KS.
2) find search radius
3) use search_radius to search adj atoms
4) initialize NAO basis set
Reimplemented from ModuleESolver::ESolver_KS< TK >.
|
overridevirtual |
calculate total energy of a given system
Implements ModuleESolver::ESolver.
|
overridevirtual |
calcualte forces for the atoms in the given cell
Implements ModuleESolver::ESolver.
|
overridevirtual |
the 7th function of ESolver_KS_LCAO: cal_stress mohan add 2024-05-11
Implements ModuleESolver::ESolver.
|
overrideprotectedvirtual |
the 5th function of ESolver_KS: hamilt2rho_single mohan add 2024-05-11
Reimplemented from ModuleESolver::ESolver_KS< TK >.
Reimplemented in ModuleESolver::ESolver_KS_LCAO_TDDFT< TR, Device >.
|
overrideprotectedvirtual |
Something to do after hamilt2rho function in each iter loop.
Reimplemented from ModuleESolver::ESolver_KS< TK >.
Reimplemented in ModuleESolver::ESolver_KS_LCAO_TDDFT< TR, Device >.
|
overrideprotectedvirtual |
Something to do before hamilt2rho function in each iter loop.
update the potentials by using new electron charge density
compute the correction energy for metals
Reimplemented from ModuleESolver::ESolver_KS< TK >.
|
overrideprotectedvirtual |
deal with exx and other calculation than scf/md/relax/cell-relax: such as nscf, get_wf and get_pchg
Reimplemented from ModuleESolver::ESolver.
|
overrideprotectedvirtual |
<Temporary> It should be replaced by a function in Hamilt Class
Reimplemented from ModuleESolver::ESolver_KS< TK >.
Reimplemented in ModuleESolver::ESolver_KS_LCAO_TDDFT< TR, Device >.
|
friend |
|
friend |
|
protected |
Store information about Adjacent Atoms.
|
protected |
Grid integration: used for gamma only algorithms.
|
protected |
GintInfo: used to store some basic infomation about module_gint.
|
protected |
Grid integration: used for k-point-dependent algorithm.
|
protected |
Grid integration: used to store some basic information.
|
protected |
|
protected |
|
protected |
NAO: store related information.
|
protected |
NAO orbitals: 2d block-cyclic distribution info.
|
protected |
Store information about Adjacent Atoms.
|
protected |
For RDMFT calculations, added by jghan, 2024-03-16.
|
protected |
|
protected |
NAO orbitals: two-center integrations.