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
25 static void symmetrize_rho(const int nspin,
26 const Charge& chr,
29
30 void begin(const int& spin_now,
31 const Charge& CHR,
33 ModuleSymmetry::Symmetry& symm) const;
34
35 void begin(const int& spin_now,
36 double** rho,
37 std::complex<double>** rhog,
38 int ngmc,
39 double** kin_r,
41 ModuleSymmetry::Symmetry& symm) const;
42
43 private:
44 // in real space:
45 void psymm(double* rho_part,
47 Parallel_Grid& Pgrid,
48 ModuleSymmetry::Symmetry& symm) const;
49 // in reciprocal space:
50 void psymmg(std::complex<double>* rhog_part,
51 const ModulePW::PW_Basis* rho_basis,
52 ModuleSymmetry::Symmetry& symm) const;
53#ifdef __MPI
54 void reduce_to_fullrhog(const ModulePW::PW_Basis* rho_basis,
55 std::complex<double>* rhogtot,
56 std::complex<double>* rhogin,
57 int* ig2isztot,
58 const int* ig2iszin,
59 int max_npw) const;
60 void rhog_piece_to_all(const ModulePW::PW_Basis* rho_basis,
61 std::complex<double>* rhogtot,
62 std::complex<double>* rhog_part) const;
63#endif
64 void get_ixyz2ipw(const ModulePW::PW_Basis* rho_basis,
65 const int* ig2isztot,
66 const int* fftixy2is,
67 int* ixyz2ipw) const; //(ix, iy, iz) -> (ip, ig)
68};
69
70#endif
Definition charge.h:17
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:15
Definition parallel_grid.h:7
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:113
static void symmetrize_rho(const int nspin, const Charge &chr, const ModulePW::PW_Basis *pw, ModuleSymmetry::Symmetry &symm)
Symmetrize charge density for all spin channels.
Definition symmetry_rho.cpp:13
void begin(const int &spin_now, const Charge &CHR, const ModulePW::PW_Basis *pw, ModuleSymmetry::Symmetry &symm) const
Definition symmetry_rho.cpp:25
Definition deltaspin_pw.cpp:7