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
66 const ModulePW::PW_Basis* rho_basis,
67 std::complex<double>* PS_TOTN,
68 int nspin);
69
71 const ModulePW::PW_Basis* rho_basis,
72 std::complex<double>* TOTN,
73 std::complex<double>* PS_TOTN,
74 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_x, // dim=ngmc
100 std::complex<double>* gradphi_y,
101 std::complex<double>* gradphi_z,
102 std::complex<double>* phi_work,
103 std::complex<double>* lp);
104
106 const Parallel_Grid& pgrid,
107 const ModulePW::PW_Basis* rho_basis,
108 const int& nspin,
109 const double* const* const rho,
110 const double* vlocal,
111 Structure_Factor* sf);
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
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:16
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
ModuleBase::matrix cal_vel(const UnitCell &cell, const ModulePW::PW_Basis *rho_basis, std::complex< double > *TOTN, std::complex< double > *PS_TOTN, int nspin)
Definition cal_vel.cpp:57
void clear()
Definition surchem.cpp:45
static double Ael
Definition surchem.h:28
ModuleBase::matrix Vel
Definition surchem.h:24
ModuleBase::matrix 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)
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 allocate(const int &nrxx, const int &nspin)
Definition surchem.cpp:16
atom_in GetAtom
Definition surchem.h:31
~surchem()
Definition potential_new_test.cpp:44
ModuleBase::matrix cal_vcav(const UnitCell &ucell, const ModulePW::PW_Basis *rho_basis, std::complex< double > *PS_TOTN, int nspin)
Definition cal_vcav.cpp:165
void get_totn_reci(const UnitCell &cell, const ModulePW::PW_Basis *rho_basis, std::complex< double > *totn_reci)
surchem()
Definition potential_new_test.cpp:41
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_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 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 Leps2(const UnitCell &ucell, const ModulePW::PW_Basis *rho_basis, std::complex< double > *phi, double *epsilon, std::complex< double > *gradphi_x, std::complex< double > *gradphi_y, std::complex< double > *gradphi_z, std::complex< double > *phi_work, std::complex< double > *lp)
Definition minimize_cg.cpp:164
void createcavity(const UnitCell &ucell, const ModulePW::PW_Basis *rho_basis, const std::complex< double > *PS_TOTN, double *vwork)
Definition cal_vcav.cpp:62
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