ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
Loading...
Searching...
No Matches
parallel_grid.h
Go to the documentation of this file.
1#ifndef PARALLEL_GRID_H
2#define PARALLEL_GRID_H
3
6
8{
9 public:
10
11 friend class Efield;
12 friend class Symmetry_rho;
13
15 Parallel_Grid(const int ncx_in, const int ncy_in, const int ncz_in, const int nczp_in, const int nrxx_in, const int nbz_in, const int bz_in)
16 :ncx(ncx_in), ncy(ncy_in), ncz(ncz_in), nczp(nczp_in), nrxx(nrxx_in), nbz(nbz_in), bz(bz_in),
17 ncxy(ncx_in* ncy_in), ncxyz(ncx_in* ncy_in* ncz_in)
18 {
19 assert(ncx > 0 && ncy > 0 && ncz > 0 && nczp >= 0 && nrxx > 0 && nbz > 0 && bz > 0);
20 }
22
23 void init(const int &ncx, const int &ncy, const int &ncz,
24 const int &nczp, const int &nrxx, const int &nbz, const int &bz);
25
26 void init_final_scf(const int &ncx, const int &ncy, const int &ncz,
27 const int &nczp, const int &nrxx, const int &nbz, const int &bz); //LiuXh add 20180606
28
29#ifdef __MPI
30 void zpiece_to_all(double* zpiece, const int& iz, double* rho) const;
31 void zpiece_to_stogroup(double* zpiece, const int& iz, double* rho) const; //qainrui add for sto-dft 2021-7-21
32
34 void bcast(const double* const data_global, double* data_local, const int& rank) const;
36 void reduce(double* rhotot, const double* constrhoin, const bool reduce_all_pool) const;
37#endif
38
39 const int& nx = this->ncx;
40 const int& ny = this->ncy;
41 const int& nz = this->ncz;
42
43 private:
44
45 void z_distribution(void);
46
47 int *nproc_in_pool = nullptr;
48 int **numz = nullptr;
49 int **startz = nullptr;
50 int **whichpro = nullptr;
51 int **whichpro_loc = nullptr;
52
53 int ncx=0;
54 int ncy=0;
55 int ncz=0;
56 int ncxy=0;
57 int ncxyz=0;
58 int nczp=0; // number of z-layers (xy-planes) in each processor
59 int nrxx=0;
60 int nbz=0;
61 int bz=0;
62
63 bool allocate = false;
64 bool allocate_final_scf = false; //LiuXh add 20180619
65};
66
67#endif
Definition parallel_grid.h:8
int ncy
Definition parallel_grid.h:54
void init(const int &ncx, const int &ncy, const int &ncz, const int &nczp, const int &nrxx, const int &nbz, const int &bz)
Definition parallel_grid.cpp:30
int ncxy
Definition parallel_grid.h:56
friend class Efield
Definition parallel_grid.h:11
int * nproc_in_pool
Definition parallel_grid.h:47
int ** whichpro_loc
Definition parallel_grid.h:51
int ** numz
Definition parallel_grid.h:48
void bcast(const double *const data_global, double *data_local, const int &rank) const
Broadcast data from root to all processors. The index order is [x][y][z].
Definition parallel_grid.cpp:204
const int & nx
Definition parallel_grid.h:39
int nrxx
Definition parallel_grid.h:59
int ncx
Definition parallel_grid.h:53
void init_final_scf(const int &ncx, const int &ncy, const int &ncz, const int &nczp, const int &nrxx, const int &nbz, const int &bz)
Definition parallel_grid.cpp:423
int nbz
Definition parallel_grid.h:60
int nczp
Definition parallel_grid.h:58
const int & ny
Definition parallel_grid.h:40
int ncxyz
Definition parallel_grid.h:57
int bz
Definition parallel_grid.h:61
void z_distribution(void)
Definition parallel_grid.cpp:133
int ** whichpro
Definition parallel_grid.h:50
const int & nz
Definition parallel_grid.h:41
void reduce(double *rhotot, const double *constrhoin, const bool reduce_all_pool) const
Reduce data from all processors to root. The index order is [x][y][z].
Definition parallel_grid.cpp:365
bool allocate
Definition parallel_grid.h:63
~Parallel_Grid()
Definition charge_extra_test.cpp:27
void zpiece_to_all(double *zpiece, const int &iz, double *rho) const
Definition parallel_grid.cpp:225
void zpiece_to_stogroup(double *zpiece, const int &iz, double *rho) const
Definition parallel_grid.cpp:299
Parallel_Grid(const int ncx_in, const int ncy_in, const int ncz_in, const int nczp_in, const int nrxx_in, const int nbz_in, const int bz_in)
Definition parallel_grid.h:15
int ** startz
Definition parallel_grid.h:49
int ncz
Definition parallel_grid.h:55
bool allocate_final_scf
Definition parallel_grid.h:64
Parallel_Grid()
Definition elecstate_base_test.cpp:41
Definition symmetry_rho.h:9