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