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
5
6namespace ModulePW
7{
8
22class PW_Basis_Sup : public PW_Basis
23{
24
25 public:
27 {
28 }
29 PW_Basis_Sup(std::string device_, std::string precision_) : PW_Basis(device_, precision_)
30 {
31 classname = "PW_Basis_Sup";
32 }
34
35 // distribute plane waves and grids and set up fft according to the smooth grids
36 void setuptransform(const ModulePW::PW_Basis* pw_rho);
37
38 protected:
39 // distribute plane waves to different processors according to the smooth grids
40 void distribute_g(const ModulePW::PW_Basis* pw_rho);
41
42 // method 3: ONLY for dense grids in uspp
43 // consider the consistence of sticks between dense and smooth grids
44 void distribution_method3(const ModulePW::PW_Basis* pw_rho);
45
46 // Distribute sticks to cores in method 3.
47 void divide_sticks_3(const int* st_length2D, // st_length2D[ixy], number of planewaves in stick on (x, y).
48 const int* st_i, // x or x + fftnx (if x < 0) of stick.
49 const int* st_j, // y or y + fftny (if y < 0) of stick.
50 const int* st_length, // the stick on (x, y) consists of st_length[x*fftny+y] planewaves.
51 const int* fftixy2ip_s, // fftixy2ip of smooth grids
52 const int& nx_s, // nx of smooth grids
53 const int& ny_s // ny of smooth grids
54 );
55
56 void get_ig2isz_is2fftixy(int* st_bottom2D, // minimum z of stick, stored in 1d array with this->nstot elements.
57 int* st_length2D, // the stick on (x, y) consists of st_length[x*fftny+y] planewaves.
58 const ModulePW::PW_Basis* pw_rho);
59}; // class PW_Basis_Sup
60
61} // namespace ModulePW
62#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:23
~PW_Basis_Sup()
Definition pw_basis_sup.cpp:7
void distribution_method3(const ModulePW::PW_Basis *pw_rho)
Definition pw_basis_sup.cpp:92
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:200
PW_Basis_Sup(std::string device_, std::string precision_)
Definition pw_basis_sup.h:29
void get_ig2isz_is2fftixy(int *st_bottom2D, int *st_length2D, const ModulePW::PW_Basis *pw_rho)
Definition pw_basis_sup.cpp:307
PW_Basis_Sup()
Definition pw_basis_sup.h:26
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:13
std::string classname
Definition pw_basis.h:59
void setuptransform()
Definition pw_basis.cpp:56
Definition pw_op.cpp:3