ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
Loading...
Searching...
No Matches
surchem.h
Go to the documentation of this file.
1#ifndef SURCHEM_H
2#define SURCHEM_H
3
11
13{
14 public:
15 surchem();
16 ~surchem();
17
18 double* TOTN_real = nullptr;
19 double* delta_phi = nullptr;
20 double* epspot = nullptr;
23 double qs;
24
25 static double Acav;
26 static double Ael;
27
28 // get atom info
30
31 // allocate memory and deallocate them
32 void allocate(const int& nrxx, const int& nspin);
33
34 void clear();
35
36 void cal_epsilon(const ModulePW::PW_Basis* rho_basis, const double* PS_TOTN_real, double* epsilon, double* epsilon0);
37
38 void cal_pseudo(const UnitCell& cell,
39 const Parallel_Grid& pgrid,
40 const ModulePW::PW_Basis* rho_basis,
41 const std::complex<double>* Porter_g,
42 std::complex<double>* PS_TOTN,
44
45 void gauss_charge(const UnitCell& cell,
46 const Parallel_Grid& pgrid,
47 const ModulePW::PW_Basis* rho_basis,
48 std::complex<double>* N,
50
51 void cal_totn(const UnitCell& cell,
52 const ModulePW::PW_Basis* rho_basis,
53 const std::complex<double>* Porter_g,
54 std::complex<double>* N,
55 std::complex<double>* TOTN,
56 const double* vlocal);
57
58 void createcavity(const UnitCell& ucell,
59 const ModulePW::PW_Basis* rho_basis,
60 const std::complex<double>* PS_TOTN,
61 double* vwork);
62
63 void cal_vcav(const UnitCell& ucell,
64 const ModulePW::PW_Basis* rho_basis,
65 std::complex<double>* PS_TOTN,
66 int nspin,
68
69 void cal_vel(const UnitCell& cell,
70 const ModulePW::PW_Basis* rho_basis,
71 std::complex<double>* TOTN,
72 std::complex<double>* PS_TOTN,
73 int nspin,
75
76 double cal_Ael(const UnitCell& cell,
77 const int& nrxx, // num. of real space grids on current core
78 const int& nxyz); // total num. of real space grids
79
80 double cal_Acav(const UnitCell& cell,
81 const int& nxyz); // total num. of real space grids
82
83 void cal_Acomp(const UnitCell& cell,
84 const ModulePW::PW_Basis* rho_basis,
85 const double* const* const rho,
86 std::vector<double>& res);
87
88 void minimize_cg(const UnitCell& ucell,
89 const ModulePW::PW_Basis* rho_basis,
90 double* d_eps,
91 const std::complex<double>* tot_N,
92 std::complex<double>* phi,
93 int& ncgsol);
94
95 void Leps2(const UnitCell& ucell,
96 const ModulePW::PW_Basis* rho_basis,
97 std::complex<double>* phi,
98 double* epsilon, // epsilon from shapefunc, dim=nrxx
99 std::complex<double>* gradphi_G_work,
100 std::complex<double>* lp,
101 ModuleBase::Vector3<double>* grad_phi_R, // size: nrxx
102 double* aux_R);
103
104 void v_correction(const UnitCell& cell,
105 const Parallel_Grid& pgrid,
106 const ModulePW::PW_Basis* rho_basis,
107 const int& nspin,
108 const double* const* const rho,
109 const double* vlocal,
112
114 const UnitCell& cell,
115 const ModulePW::PW_Basis* rho_basis,
116 const double* const* const rho);
117
118 void cal_force_sol(const UnitCell& cell,
119 const ModulePW::PW_Basis* rho_basis,
120 const ModuleBase::matrix& vloc,
121 ModuleBase::matrix& forcesol);
122
123 void force_cor_one(const UnitCell& cell,
124 const ModulePW::PW_Basis* rho_basis,
125 const ModuleBase::matrix& vloc,
126 ModuleBase::matrix& forcesol);
127
128 void force_cor_two(const UnitCell& cell, const ModulePW::PW_Basis* rho_basis, ModuleBase::matrix& forcesol);
129
130 void get_totn_reci(const UnitCell& cell, const ModulePW::PW_Basis* rho_basis, std::complex<double>* totn_reci);
131
132 void induced_charge(const UnitCell& cell, const ModulePW::PW_Basis* rho_basis, double* induced_rho) const;
133
134 private:
135};
136
137#endif
3 elements vector
Definition vector3.h:24
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 parallel_grid.h:7
Definition structure_factor.h:10
Definition unitcell.h:15
Definition atom_in.h:11
Definition surchem.h:13
void force_cor_two(const UnitCell &cell, const ModulePW::PW_Basis *rho_basis, ModuleBase::matrix &forcesol)
Definition sol_force.cpp:70
double qs
Definition surchem.h:23
void clear()
Definition surchem.cpp:45
static double Ael
Definition surchem.h:26
ModuleBase::matrix Vel
Definition surchem.h:22
void v_correction(const UnitCell &cell, const Parallel_Grid &pgrid, const ModulePW::PW_Basis *rho_basis, const int &nspin, const double *const *const rho, const double *vlocal, Structure_Factor *sf, ModuleBase::matrix &v)
Definition H_correction_pw.cpp:9
void induced_charge(const UnitCell &cell, const ModulePW::PW_Basis *rho_basis, double *induced_rho) const
Definition cal_totn.cpp:37
void cal_pseudo(const UnitCell &cell, const Parallel_Grid &pgrid, const ModulePW::PW_Basis *rho_basis, const std::complex< double > *Porter_g, std::complex< double > *PS_TOTN, Structure_Factor *sf)
Definition cal_pseudo.cpp:40
double cal_Ael(const UnitCell &cell, const int &nrxx, const int &nxyz)
void minimize_cg(const UnitCell &ucell, const ModulePW::PW_Basis *rho_basis, double *d_eps, const std::complex< double > *tot_N, std::complex< double > *phi, int &ncgsol)
Definition minimize_cg.cpp:4
void Leps2(const UnitCell &ucell, const ModulePW::PW_Basis *rho_basis, std::complex< double > *phi, double *epsilon, std::complex< double > *gradphi_G_work, std::complex< double > *lp, ModuleBase::Vector3< double > *grad_phi_R, double *aux_R)
Definition minimize_cg.cpp:167
void allocate(const int &nrxx, const int &nspin)
Definition surchem.cpp:16
atom_in GetAtom
Definition surchem.h:29
~surchem()
Definition potential_new_test.cpp:48
void get_totn_reci(const UnitCell &cell, const ModulePW::PW_Basis *rho_basis, std::complex< double > *totn_reci)
surchem()
Definition potential_new_test.cpp:45
void gauss_charge(const UnitCell &cell, const Parallel_Grid &pgrid, const ModulePW::PW_Basis *rho_basis, std::complex< double > *N, Structure_Factor *sf)
Definition cal_pseudo.cpp:5
void cal_vel(const UnitCell &cell, const ModulePW::PW_Basis *rho_basis, std::complex< double > *TOTN, std::complex< double > *PS_TOTN, int nspin, ModuleBase::matrix &v)
Definition cal_vel.cpp:60
void cal_force_sol(const UnitCell &cell, const ModulePW::PW_Basis *rho_basis, const ModuleBase::matrix &vloc, ModuleBase::matrix &forcesol)
Definition sol_force.cpp:151
double * TOTN_real
Definition surchem.h:18
void cal_vcav(const UnitCell &ucell, const ModulePW::PW_Basis *rho_basis, std::complex< double > *PS_TOTN, int nspin, ModuleBase::matrix &v)
Definition cal_vcav.cpp:170
void force_cor_one(const UnitCell &cell, const ModulePW::PW_Basis *rho_basis, const ModuleBase::matrix &vloc, ModuleBase::matrix &forcesol)
Definition sol_force.cpp:6
ModuleBase::matrix Vcav
Definition surchem.h:21
double * delta_phi
Definition surchem.h:19
static double Acav
Definition surchem.h:25
double * epspot
Definition surchem.h:20
void test_V_to_N(ModuleBase::matrix &v, const UnitCell &cell, const ModulePW::PW_Basis *rho_basis, const double *const *const rho)
void cal_epsilon(const ModulePW::PW_Basis *rho_basis, const double *PS_TOTN_real, double *epsilon, double *epsilon0)
Definition cal_epsilon.cpp:4
void cal_totn(const UnitCell &cell, const ModulePW::PW_Basis *rho_basis, const std::complex< double > *Porter_g, std::complex< double > *N, std::complex< double > *TOTN, const double *vlocal)
Definition cal_totn.cpp:3
void createcavity(const UnitCell &ucell, const ModulePW::PW_Basis *rho_basis, const std::complex< double > *PS_TOTN, double *vwork)
Definition cal_vcav.cpp:64
void cal_Acomp(const UnitCell &cell, const ModulePW::PW_Basis *rho_basis, const double *const *const rho, std::vector< double > &res)
double cal_Acav(const UnitCell &cell, const int &nxyz)
#define N
Definition exp.cpp:24