ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
Loading...
Searching...
No Matches
kedf_vw.h
Go to the documentation of this file.
1#ifndef KEDF_vW_H
2#define KEDF_vW_H
3#include <cmath>
4#include <cstdio>
5
9#include "source_base/timer.h"
11
18{
19 public:
21 {
22 this->stress.create(3, 3);
23 }
25 {
26 }
27
28 void set_para(double dV, double vw_weight);
29
30 double get_energy(double** pphi, ModulePW::PW_Basis* pw_rho);
31 double get_energy_density(double** pphi, int is, int ir, ModulePW::PW_Basis* pw_rho);
32 void tau_vw(const double* const* pphi, ModulePW::PW_Basis* pw_rho, double* rtau_vw);
33 void vw_potential(const double* const* pphi, ModulePW::PW_Basis* pw_rho, ModuleBase::matrix& rpotential);
34 void get_stress(const double* const* pphi, ModulePW::PW_Basis* pw_rho);
35
36 double vw_energy = 0.;
38
39 private:
40 void laplacian_phi(const double* const* pphi, double** rLapPhi, ModulePW::PW_Basis* pw_rho);
41
42 double dV_ = 0.;
43 double vw_weight_ = 1.;
44};
45#endif
A class which calculates the kinetic energy, potential, and stress with von Weizsäcker (vW) KEDF....
Definition kedf_vw.h:18
KEDF_vW()
Definition kedf_vw.h:20
double vw_energy
Definition kedf_vw.h:36
double dV_
Definition kedf_vw.h:42
void set_para(double dV, double vw_weight)
Definition kedf_vw.cpp:8
double get_energy(double **pphi, ModulePW::PW_Basis *pw_rho)
Get the energy of vW KEDF.
Definition kedf_vw.cpp:22
~KEDF_vW()
Definition kedf_vw.h:24
void get_stress(const double *const *pphi, ModulePW::PW_Basis *pw_rho)
Get the stress of vW KEDF, and store it into this->stress.
Definition kedf_vw.cpp:251
double vw_weight_
Definition kedf_vw.h:43
void tau_vw(const double *const *pphi, ModulePW::PW_Basis *pw_rho, double *rtau_vw)
Get the positive definite energy density of vW KEDF.
Definition kedf_vw.cpp:126
void vw_potential(const double *const *pphi, ModulePW::PW_Basis *pw_rho, ModuleBase::matrix &rpotential)
Get the potential of vW KEDF, and add it into rpotential, and the vW energy will be calculated and st...
Definition kedf_vw.cpp:172
double get_energy_density(double **pphi, int is, int ir, ModulePW::PW_Basis *pw_rho)
Get the energy density of vW KEDF.
Definition kedf_vw.cpp:85
void laplacian_phi(const double *const *pphi, double **rLapPhi, ModulePW::PW_Basis *pw_rho)
Get minus Laplacian phi.
Definition kedf_vw.cpp:325
ModuleBase::matrix stress
Definition kedf_vw.h:37
Definition matrix.h:19
void create(const int nrow, const int ncol, const bool flag_zero=true)
Definition matrix.cpp:122
A class which can convert a function of "r" to the corresponding linear superposition of plane waves ...
Definition pw_basis.h:56