ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
Loading...
Searching...
No Matches
pw_basis_sup.h
Go to the documentation of this file.
1#ifndef PWBASIS_SUP_H
2#define PWBASIS_SUP_H
3
4
5namespace ModulePW
6{
7
21class PW_Basis_Sup : public PW_Basis
22{
23
24 public:
26 {
27 }
28 PW_Basis_Sup(std::string device_, std::string precision_) : PW_Basis(device_, precision_)
29 {
30 classname = "PW_Basis_Sup";
31 }
33
34 // distribute plane waves and grids and set up fft according to the smooth grids
35 void setuptransform(const ModulePW::PW_Basis* pw_rho);
36
37 protected:
38 // distribute plane waves to different processors according to the smooth grids
39 void distribute_g(const ModulePW::PW_Basis* pw_rho);
40
41 // method 3: ONLY for dense grids in uspp
42 // consider the consistence of sticks between dense and smooth grids
43 void distribution_method3(const ModulePW::PW_Basis* pw_rho);
44
45 // Distribute sticks to cores in method 3.
46 void divide_sticks_3(const int* st_length2D, // st_length2D[ixy], number of planewaves in stick on (x, y).
47 const int* st_i, // x or x + fftnx (if x < 0) of stick.
48 const int* st_j, // y or y + fftny (if y < 0) of stick.
49 const int* st_length, // the stick on (x, y) consists of st_length[x*fftny+y] planewaves.
50 const int* fftixy2ip_s, // fftixy2ip of smooth grids
51 const int& nx_s, // nx of smooth grids
52 const int& ny_s // ny of smooth grids
53 );
54
55 void get_ig2isz_is2fftixy(int* st_bottom2D, // minimum z of stick, stored in 1d array with this->nstot elements.
56 int* st_length2D, // the stick on (x, y) consists of st_length[x*fftny+y] planewaves.
57 const ModulePW::PW_Basis* pw_rho);
58}; // class PW_Basis_Sup
59
60} // namespace ModulePW
61#endif // PWBASIS_SUP_H
Special pw_basis class for sup girds, which is constrcuted in order to be consistent with the smooth ...
Definition pw_basis_sup.h:22
~PW_Basis_Sup()
Definition pw_basis_sup.cpp:6
void distribution_method3(const ModulePW::PW_Basis *pw_rho)
Definition pw_basis_sup.cpp:90
void divide_sticks_3(const int *st_length2D, const int *st_i, const int *st_j, const int *st_length, const int *fftixy2ip_s, const int &nx_s, const int &ny_s)
Definition pw_basis_sup.cpp:198
PW_Basis_Sup(std::string device_, std::string precision_)
Definition pw_basis_sup.h:28
void get_ig2isz_is2fftixy(int *st_bottom2D, int *st_length2D, const ModulePW::PW_Basis *pw_rho)
Definition pw_basis_sup.cpp:305
PW_Basis_Sup()
Definition pw_basis_sup.h:25
A class which can convert a function of "r" to the corresponding linear superposition of plane waves ...
Definition pw_basis.h:56
void distribute_g()
distribute plane waves to different cores
Definition pw_distributeg.cpp:12
std::string classname
Definition pw_basis.h:59
void setuptransform()
Definition pw_basis.cpp:56
Definition pw_op.cpp:3