ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
Loading...
Searching...
No Matches
esolver_ks_pw.h
Go to the documentation of this file.
1#ifndef ESOLVER_KS_PW_H
2#define ESOLVER_KS_PW_H
3#include "./esolver_ks.h"
4#include "source_psi/setup_psi_pw.h" // mohan add 20251012
7
8#include <memory>
10
11namespace ModuleESolver
12{
13
14template <typename T, typename Device = base_device::DEVICE_CPU>
16{
17 private:
18 using Real = typename GetTypeReal<T>::type;
19
20 public:
22
24
25 void before_all_runners(UnitCell& ucell, const Input_para& inp) override;
26
27 double cal_energy() override;
28
29 void cal_force(UnitCell& ucell, ModuleBase::matrix& force) override;
30
31 void cal_stress(UnitCell& ucell, ModuleBase::matrix& stress) override;
32
33 void after_all_runners(UnitCell& ucell) override;
34
36
37 protected:
38 virtual void before_scf(UnitCell& ucell, const int istep) override;
39
40 virtual void iter_init(UnitCell& ucell, const int istep, const int iter) override;
41
42 virtual void iter_finish(UnitCell& ucell, const int istep, int& iter, bool& conv_esolver) override;
43
44 virtual void after_scf(UnitCell& ucell, const int istep, const bool conv_esolver) override;
45
46 virtual void others(UnitCell& ucell, const int istep) override;
47
48 virtual void hamilt2rho_single(UnitCell& ucell, const int istep, const int iter, const double ethr) override;
49
50 virtual void allocate_hamilt(const UnitCell& ucell);
51
52 // Electronic wave function psi
54
55 // DFT-1/2 method
56 VSep* vsep_cell = nullptr;
57
58};
59} // namespace ModuleESolver
60#endif
Definition exx_helper_base.h:11
Definition matrix.h:18
Definition esolver_ks_pw.h:16
virtual void hamilt2rho_single(UnitCell &ucell, const int istep, const int iter, const double ethr) override
Definition esolver_ks_pw.cpp:197
virtual void others(UnitCell &ucell, const int istep) override
Definition pw_others.cpp:14
void cal_stress(UnitCell &ucell, ModuleBase::matrix &stress) override
calcualte stress of given cell
Definition esolver_ks_pw.cpp:316
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_pw.cpp:239
Exx_HelperBase * exx_helper
Definition esolver_ks_pw.h:35
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_ks_pw.cpp:274
void before_all_runners(UnitCell &ucell, const Input_para &inp) override
Initialize of the first-principels energy solver.
Definition esolver_ks_pw.cpp:87
double cal_energy() override
calculate total energy of a given system
Definition esolver_ks_pw.cpp:296
virtual void allocate_hamilt(const UnitCell &ucell)
Definition esolver_ks_pw.cpp:73
void cal_force(UnitCell &ucell, ModuleBase::matrix &force) override
calcualte forces for the atoms in the given cell
Definition esolver_ks_pw.cpp:302
typename GetTypeReal< T >::type Real
Definition esolver_ks_pw.h:18
VSep * vsep_cell
Definition esolver_ks_pw.h:56
Setup_Psi_pw stp
Definition esolver_ks_pw.h:53
~ESolver_KS_PW()
Definition esolver_ks_pw.cpp:49
void after_all_runners(UnitCell &ucell) override
perform post processing calculations
Definition esolver_ks_pw.cpp:337
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_pw.cpp:180
ESolver_KS_PW()
Definition esolver_ks_pw.cpp:42
virtual void before_scf(UnitCell &ucell, const int istep) override
Something to do before SCF iterations.
Definition esolver_ks_pw.cpp:134
Definition esolver_ks.h:17
bool conv_esolver
Definition esolver.h:48
Definition setup_psi_pw.h:15
Definition unitcell.h:15
Definition vsep_pw.h:12
The First-Principles (FP) Energy Solver Class.
Definition opt_test_tools.cpp:93
T type
Definition macros.h:8
Definition input_parameter.h:12