ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
Loading...
Searching...
No Matches
esolver.h
Go to the documentation of this file.
1#ifndef ESOLVER_H
2#define ESOLVER_H
3
7
8namespace ModuleESolver
9{
11{
12 public:
14 {
15 classname = "ESolver";
16 }
17
18 virtual ~ESolver()
19 {
20 //****************************************************
21 // do not add any codes in this deconstructor funcion
22 //****************************************************
23 }
24
26 virtual void before_all_runners(UnitCell& ucell, const Input_para& inp) = 0;
27
29 virtual void runner(UnitCell& cell, const int istep) = 0;
30
32 virtual void after_all_runners(UnitCell& ucell) = 0;
33
36 virtual void others(UnitCell& ucell, const int istep) {};
37
39 virtual double cal_energy() = 0;
40
42 virtual void cal_force(UnitCell& ucell, ModuleBase::matrix& force) = 0;
43
45 virtual void cal_stress(UnitCell& ucell, ModuleBase::matrix& stress) = 0;
46
47 bool conv_esolver = true; // whether esolver is converged
48
49 std::string classname;
50};
51
59std::string determine_type();
60
70ESolver* init_esolver(const Input_para& inp, UnitCell& ucell);
71
72void clean_esolver(ESolver*& pesolver, const bool lcao_cblacs_exit = false);
73
74} // namespace ModuleESolver
75
76#endif
Definition matrix.h:19
Definition esolver.h:11
virtual void runner(UnitCell &cell, const int istep)=0
run energy solver
virtual void cal_stress(UnitCell &ucell, ModuleBase::matrix &stress)=0
calcualte stress of given cell
virtual ~ESolver()
Definition esolver.h:18
ESolver()
Definition esolver.h:13
virtual double cal_energy()=0
calculate total energy of a given system
virtual void after_all_runners(UnitCell &ucell)=0
perform post processing calculations
bool conv_esolver
Definition esolver.h:47
std::string classname
Definition esolver.h:49
virtual void cal_force(UnitCell &ucell, ModuleBase::matrix &force)=0
calcualte forces for the atoms in the given cell
virtual void others(UnitCell &ucell, const int istep)
Definition esolver.h:36
virtual void before_all_runners(UnitCell &ucell, const Input_para &inp)=0
initialize the energy solver by using input parameters and cell modules
Definition unitcell.h:17
The First-Principles (FP) Energy Solver Class.
Definition opt_test_tools.cpp:93
ESolver * init_esolver(const Input_para &inp, UnitCell &ucell)
Determine and initialize an ESolver based on input information.
Definition esolver.cpp:130
void clean_esolver(ESolver *&pesolver, const bool lcao_cblacs_exit)
Definition esolver.cpp:354
std::string determine_type()
A subrutine called in init_esolver() This function returns type of ESolver Based on PARAM....
Definition esolver.cpp:32
Definition input_parameter.h:13