ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
Loading...
Searching...
No Matches
esolver_ks_lcaopw.h
Go to the documentation of this file.
1#ifndef ESOLVER_KS_LIP_H
2#define ESOLVER_KS_LIP_H
5
6#ifdef __EXX
8#endif
9namespace ModuleESolver
10{
11
12 template <typename T>
13 class ESolver_KS_LIP : public ESolver_KS_PW<T, base_device::DEVICE_CPU>
14 {
15 private:
16 using Real = typename GetTypeReal<T>::type;
17
18 public:
20
22
23 void before_all_runners(UnitCell& ucell, const Input_para& inp) override;
24 void after_all_runners(UnitCell& ucell) override;
25
26 virtual void before_scf(UnitCell& ucell, const int istep) override;
27
28 protected:
29 virtual void iter_init(UnitCell& ucell, const int istep, const int iter) override;
30 virtual void iter_finish(UnitCell& ucell, const int istep, int& iter, bool& conv_esolver) override;
31
33 virtual void hamilt2rho_single(UnitCell& ucell,
34 const int istep,
35 const int iter,
36 const double ethr) override;
37
38 virtual void allocate_hamilt(const UnitCell& ucell) override;
39 virtual void deallocate_hamilt() override;
40
42
43#ifdef __EXX
44 std::unique_ptr<Exx_Lip<T>> exx_lip;
45 int two_level_step = 0;
46#endif
47
48 };
49} // namespace ModuleESolver
50#endif
Definition esolver_ks_lcaopw.h:14
~ESolver_KS_LIP()
Definition esolver_ks_lcaopw.cpp:53
virtual void deallocate_hamilt() override
Definition esolver_ks_lcaopw.cpp:70
virtual void iter_init(UnitCell &ucell, const int istep, const int iter) override
Something to do before hamilt2rho function in each iter loop.
Definition esolver_ks_lcaopw.cpp:119
typename GetTypeReal< T >::type Real
Definition esolver_ks_lcaopw.h:16
virtual void before_scf(UnitCell &ucell, const int istep) override
Something to do before SCF iterations.
Definition esolver_ks_lcaopw.cpp:79
ESolver_KS_LIP()
Definition esolver_ks_lcaopw.cpp:47
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_lcaopw.cpp:173
virtual void allocate_hamilt(const UnitCell &ucell) override
Definition esolver_ks_lcaopw.cpp:61
void after_all_runners(UnitCell &ucell) override
perform post processing calculations
Definition esolver_ks_lcaopw.cpp:235
virtual void hamilt2rho_single(UnitCell &ucell, const int istep, const int iter, const double ethr) override
All the other interfaces except this one are the same as ESolver_KS_PW.
Definition esolver_ks_lcaopw.cpp:130
void before_all_runners(UnitCell &ucell, const Input_para &inp) override
Initialize of the first-principels energy solver.
Definition esolver_ks_lcaopw.cpp:86
psi::Psi< T, base_device::DEVICE_CPU > * psi_local
psi for all local NAOs
Definition esolver_ks_lcaopw.h:41
Definition esolver_ks_pw.h:17
bool conv_esolver
Definition esolver.h:44
Definition unitcell.h:16
Definition psi.h:37
plane wave basis
Definition opt_test_tools.cpp:93
T type
Definition macros.h:8
Definition input_parameter.h:12