ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
Loading...
Searching...
No Matches
esolver_sdft_pw.h
Go to the documentation of this file.
1#ifndef ESOLVER_SDFT_PW_H
2#define ESOLVER_SDFT_PW_H
3
4#include "esolver_ks_pw.h"
9
10namespace ModuleESolver
11{
12
13template <typename T, typename Device = base_device::DEVICE_CPU>
14class ESolver_SDFT_PW : public ESolver_KS_PW<T, Device>
15{
16 private:
17 using Real = typename GetTypeReal<T>::type;
18 public:
21
22 void before_all_runners(UnitCell& ucell, const Input_para& inp) override;
23
24 double cal_energy() override;
25
26 void cal_force(UnitCell& ucell, ModuleBase::matrix& force) override;
27
28 void cal_stress(UnitCell& ucell, ModuleBase::matrix& stress) override;
29
30 public:
34
35 protected:
36 virtual void before_scf(UnitCell& ucell, const int istep) override;
37
38 virtual void hamilt2rho_single(UnitCell& ucell, const int istep, const int iter, const double ethr) override;
39
40 virtual void iter_finish(UnitCell& ucell, const int istep, int& iter, bool& conv_esolver) override;
41
42 virtual void after_scf(UnitCell& ucell, const int istep, const bool conv_esolver) override;
43
44 virtual void after_all_runners(UnitCell& ucell) override;
45
46 private:
49};
50
51} // namespace ModuleESolver
52#endif
Definition matrix.h:19
Definition esolver_ks_pw.h:17
Definition esolver_sdft_pw.h:15
Stochastic_WF< T, Device > stowf
Definition esolver_sdft_pw.h:31
typename GetTypeReal< T >::type Real
Definition esolver_sdft_pw.h:17
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_sdft_pw.cpp:122
void cal_force(UnitCell &ucell, ModuleBase::matrix &force) override
calcualte forces for the atoms in the given cell
Definition esolver_sdft_pw.cpp:219
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_sdft_pw.cpp:115
int method_sto
method of SDFT
Definition esolver_sdft_pw.h:48
virtual void hamilt2rho_single(UnitCell &ucell, const int istep, const int iter, const double ethr) override
Definition esolver_sdft_pw.cpp:134
StoChe< Real, Device > stoche
Definition esolver_sdft_pw.h:32
void cal_stress(UnitCell &ucell, ModuleBase::matrix &stress) override
calcualte stress of given cell
Definition esolver_sdft_pw.cpp:238
int nche_sto
norder of Chebyshev
Definition esolver_sdft_pw.h:47
virtual void before_scf(UnitCell &ucell, const int istep) override
Something to do before SCF iterations.
Definition esolver_sdft_pw.cpp:89
hamilt::HamiltSdftPW< T, Device > * p_hamilt_sto
Definition esolver_sdft_pw.h:33
~ESolver_SDFT_PW()
Definition esolver_sdft_pw.cpp:28
ESolver_SDFT_PW()
Definition esolver_sdft_pw.cpp:20
void before_all_runners(UnitCell &ucell, const Input_para &inp) override
Initialize of the first-principels energy solver.
Definition esolver_sdft_pw.cpp:33
virtual void after_all_runners(UnitCell &ucell) override
perform post processing calculations
Definition esolver_sdft_pw.cpp:257
double cal_energy() override
calculate total energy of a given system
Definition esolver_sdft_pw.cpp:213
bool conv_esolver
Definition esolver.h:44
Definition sto_che.h:9
Definition sto_wf.h:13
Definition unitcell.h:16
Definition hamilt_sdft_pw.h:11
plane wave basis
Definition opt_test_tools.cpp:93
T type
Definition macros.h:8
Definition input_parameter.h:12