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
6
7struct Input_para;
8
9namespace ModuleESolver
10{
12{
13 public:
15 {
16 classname = "ESolver";
17 }
18
19 virtual ~ESolver()
20 {
21 //****************************************************
22 // do not add any codes in this deconstructor funcion
23 //****************************************************
24 }
25
27 virtual void before_all_runners(UnitCell& ucell, const Input_para& inp) = 0;
28
30 virtual void runner(UnitCell& cell, const int istep) = 0;
31
33 virtual void after_all_runners(UnitCell& ucell) = 0;
34
37 virtual void others(UnitCell& ucell, const int istep) {};
38
40 virtual double cal_energy() = 0;
41
43 virtual void cal_force(UnitCell& ucell, ModuleBase::matrix& force) = 0;
44
46 virtual void cal_stress(UnitCell& ucell, ModuleBase::matrix& stress) = 0;
47
48 bool conv_esolver = true; // whether esolver is converged
49
50 std::string classname;
51};
52
60std::string determine_type();
61
71ESolver* init_esolver(const Input_para& inp, UnitCell& ucell);
72
73
74
75} // namespace ModuleESolver
76
77#endif
Definition matrix.h:18
Definition esolver.h:12
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:19
ESolver()
Definition esolver.h:14
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:48
std::string classname
Definition esolver.h:50
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:37
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:15
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:127
std::string determine_type()
A subrutine called in init_esolver() This function returns type of ESolver Based on PARAM....
Definition esolver.cpp:29
Definition input_parameter.h:12