ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
Loading...
Searching...
No Matches
symmetry_rho.h
Go to the documentation of this file.
1#ifndef SYMMETRY_RHO_H
2#define SYMMETRY_RHO_H
7
9{
10 public:
13
14 void begin(const int& spin_now,
15 const Charge& CHR,
16 const ModulePW::PW_Basis* pw,
17 ModuleSymmetry::Symmetry& symm) const;
18
19 void begin(const int& spin_now,
20 double** rho,
21 std::complex<double>** rhog,
22 int ngmc,
23 double** kin_r,
24 const ModulePW::PW_Basis* pw,
25 ModuleSymmetry::Symmetry& symm) const;
26
27 private:
28 // in real space:
29 void psymm(double* rho_part,
30 const ModulePW::PW_Basis* pw,
31 Parallel_Grid& Pgrid,
32 ModuleSymmetry::Symmetry& symm) const;
33 // in reciprocal space:
34 void psymmg(std::complex<double>* rhog_part,
35 const ModulePW::PW_Basis* rho_basis,
36 ModuleSymmetry::Symmetry& symm) const;
37#ifdef __MPI
38 void reduce_to_fullrhog(const ModulePW::PW_Basis* rho_basis,
39 std::complex<double>* rhogtot,
40 std::complex<double>* rhogin,
41 int* ig2isztot,
42 const int* ig2iszin,
43 int max_npw) const;
44 void rhog_piece_to_all(const ModulePW::PW_Basis* rho_basis,
45 std::complex<double>* rhogtot,
46 std::complex<double>* rhog_part) const;
47#endif
48 void get_ixyz2ipw(const ModulePW::PW_Basis* rho_basis,
49 const int* ig2isztot,
50 const int* fftixy2is,
51 int* ixyz2ipw) const; //(ix, iy, iz) -> (ip, ig)
52};
53
54#endif
Definition charge.h:20
A class which can convert a function of "r" to the corresponding linear superposition of plane waves ...
Definition pw_basis.h:56
Definition symmetry.h:16
Definition parallel_grid.h:8
Definition symmetry_rho.h:9
void reduce_to_fullrhog(const ModulePW::PW_Basis *rho_basis, std::complex< double > *rhogtot, std::complex< double > *rhogin, int *ig2isztot, const int *ig2iszin, int max_npw) const
Definition symmetry_rhog.cpp:74
Symmetry_rho()
Definition symmetry_rho.cpp:5
~Symmetry_rho()
Definition symmetry_rho.cpp:9
void rhog_piece_to_all(const ModulePW::PW_Basis *rho_basis, std::complex< double > *rhogtot, std::complex< double > *rhog_part) const
Definition symmetry_rhog.cpp:141
void psymmg(std::complex< double > *rhog_part, const ModulePW::PW_Basis *rho_basis, ModuleSymmetry::Symmetry &symm) const
Definition symmetry_rhog.cpp:7
void get_ixyz2ipw(const ModulePW::PW_Basis *rho_basis, const int *ig2isztot, const int *fftixy2is, int *ixyz2ipw) const
Definition symmetry_rhog.cpp:174
void psymm(double *rho_part, const ModulePW::PW_Basis *pw, Parallel_Grid &Pgrid, ModuleSymmetry::Symmetry &symm) const
Definition symmetry_rho.cpp:87
void begin(const int &spin_now, const Charge &CHR, const ModulePW::PW_Basis *pw, ModuleSymmetry::Symmetry &symm) const
Definition symmetry_rho.cpp:13