ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
Loading...
Searching...
No Matches
kedf_manager.h
Go to the documentation of this file.
1#ifndef KEDF_MANAGER_H
2#define KEDF_MANAGER_H
3
5#include "kedf_lkt.h"
6#include "kedf_tf.h"
7#include "kedf_vw.h"
8#include "kedf_wt.h"
9#include "kedf_extwt.h"
10#include "kedf_xwm.h"
11#include "kedf_ml.h"
12
13struct Input_para;
14
16{
17 public:
19
21 {
22 delete this->lkt_;
23 delete this->tf_;
24 delete this->vw_;
25 delete this->wt_;
26 delete this->extwt_;
27 delete this->xwm_;
28#ifdef __MLALGO
29 delete this->ml_;
30#endif
31 }
32
33 void init(
34 const Input_para& inp,
35 ModulePW::PW_Basis* pw_rho,
36 const double dV,
37 const double nelec
38 );
39
40 void get_potential(
41 const double* const* prho,
42 const double* const* pphi,
43 ModulePW::PW_Basis* pw_rho,
45 );
46
47 double get_energy() const;
48
50 const double* const* prho,
51 const double* const* pphi,
52 ModulePW::PW_Basis* pw_rho,
53 double** rtau
54 );
55
56 void get_stress(
57 const double omega,
58 const double* const* prho,
59 const double* const* pphi,
60 ModulePW::PW_Basis* pw_rho,
61 ModuleBase::matrix& kinetic_stress_
62 );
63
64 void record_energy(
65 std::vector<std::string> &titles,
66 std::vector<double> &energies_Ry
67 );
68
70 const double * const *prho,
71 ModulePW::PW_Basis *pw_rho,
72 const double *veff
73 );
74
75private:
76
77 KEDF_LKT* lkt_ = nullptr; // Luo-Karasiev-Trickey KEDF
78 KEDF_TF* tf_ = nullptr; // Thomas-Fermi KEDF
79 KEDF_vW* vw_ = nullptr; // von Weizsäcker KEDF
80 KEDF_WT* wt_ = nullptr; // Wang-Teter KEDF
81 KEDF_ExtWT* extwt_ = nullptr; // Extended Wang-Teter KEDF
82 KEDF_XWM* xwm_ = nullptr; // Xu-Wang-Ma KEDF
83#ifdef __MLALGO
84 KEDF_ML* ml_ = nullptr; // Machine Learning KEDF
85#endif
86
87 std::string of_kinetic_ = "wt"; // Kinetic energy functional, such as TF, VW, WT
88};
89
90#endif // KEDF_MANAGER_H
A class which calculates the kinetic energy, potential, and stress with extended Wang-Teter (ext-WT) ...
Definition kedf_extwt.h:17
A class which calculates the kinetic energy, potential, and stress with Luo-Karasiev-Trickey (LKT) KE...
Definition kedf_lkt.h:17
Definition kedf_ml.h:9
Definition kedf_manager.h:16
KEDF_LKT * lkt_
Definition kedf_manager.h:77
void get_energy_density(const double *const *prho, const double *const *pphi, ModulePW::PW_Basis *pw_rho, double **rtau)
[Interface to kedf] Calculated the kinetic energy density, ONLY SPIN=1 SUPPORTED
Definition kedf_manager.cpp:260
void get_stress(const double omega, const double *const *prho, const double *const *pphi, ModulePW::PW_Basis *pw_rho, ModuleBase::matrix &kinetic_stress_)
[Interface to kedf] Calculate the stress of kedf
Definition kedf_manager.cpp:311
void generate_ml_target(const double *const *prho, ModulePW::PW_Basis *pw_rho, const double *veff)
Definition kedf_manager.cpp:419
~KEDF_Manager()
Definition kedf_manager.h:20
KEDF_TF * tf_
Definition kedf_manager.h:78
void record_energy(std::vector< std::string > &titles, std::vector< double > &energies_Ry)
Definition kedf_manager.cpp:371
KEDF_XWM * xwm_
Definition kedf_manager.h:82
double get_energy() const
[Interface to kedf] Return the kinetic energy
Definition kedf_manager.cpp:200
KEDF_vW * vw_
Definition kedf_manager.h:79
KEDF_ExtWT * extwt_
Definition kedf_manager.h:81
void init(const Input_para &inp, ModulePW::PW_Basis *pw_rho, const double dV, const double nelec)
[Interface to kedf] Initialize the KEDFs.
Definition kedf_manager.cpp:14
KEDF_WT * wt_
Definition kedf_manager.h:80
KEDF_Manager()
Definition kedf_manager.h:18
void get_potential(const double *const *prho, const double *const *pphi, ModulePW::PW_Basis *pw_rho, ModuleBase::matrix &rpot)
[Interface to kedf] Calculated the kinetic potential and plus it to rpot,
Definition kedf_manager.cpp:131
std::string of_kinetic_
Definition kedf_manager.h:87
KEDF_ML * ml_
Definition kedf_manager.h:84
A class which calculates the kinetic energy, potential, and stress with Thomas-Fermi (TF) KEDF....
Definition kedf_tf.h:17
A class which calculates the kinetic energy, potential, and stress with Wang-Teter (WT) KEDF....
Definition kedf_wt.h:17
A class which calculates the kinetic energy, potential, and stress with Xie-Wang-Morales (XWM) KEDF....
Definition kedf_xwm.h:14
A class which calculates the kinetic energy, potential, and stress with von Weizsäcker (vW) KEDF....
Definition kedf_vw.h:17
Definition matrix.h:18
A class which can convert a function of "r" to the corresponding linear superposition of plane waves ...
Definition pw_basis.h:56
Definition input_parameter.h:12