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
4#include <cassert>
5
7{
8 public:
9
10 friend class Efield;
11 friend class Symmetry_rho;
12
14 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)
15 :ncx(ncx_in), ncy(ncy_in), ncz(ncz_in), nczp(nczp_in), nrxx(nrxx_in), nbz(nbz_in), bz(bz_in),
16 ncxy(ncx_in* ncy_in), ncxyz(ncx_in* ncy_in* ncz_in)
17 {
18 assert(ncx > 0 && ncy > 0 && ncz > 0 && nczp >= 0 && nrxx > 0 && nbz > 0 && bz > 0);
19 }
21
22 void init(const int &ncx, const int &ncy, const int &ncz,
23 const int &nczp, const int &nrxx, const int &nbz, const int &bz);
24
25 void init_final_scf(const int &ncx, const int &ncy, const int &ncz,
26 const int &nczp, const int &nrxx, const int &nbz, const int &bz); //LiuXh add 20180606
27
28#ifdef __MPI
29 void zpiece_to_all(double* zpiece, const int& iz, double* rho) const;
30 void zpiece_to_stogroup(double* zpiece, const int& iz, double* rho) const; //qainrui add for sto-dft 2021-7-21
31
33 void bcast(const double* const data_global, double* data_local, const int& rank) const;
35 void reduce(double* rhotot, const double* constrhoin, const bool reduce_all_pool) const;
36#endif
37
38 const int& nx = this->ncx;
39 const int& ny = this->ncy;
40 const int& nz = this->ncz;
41
42 private:
43
44 void z_distribution(void);
45
46 int *nproc_in_pool = nullptr;
47 int **numz = nullptr;
48 int **startz = nullptr;
49 int **whichpro = nullptr;
50 int **whichpro_loc = nullptr;
51
52 int ncx=0;
53 int ncy=0;
54 int ncz=0;
55 int ncxy=0;
56 int ncxyz=0;
57 int nczp=0; // number of z-layers (xy-planes) in each processor
58 int nrxx=0;
59 int nbz=0;
60 int bz=0;
61
62 bool allocate = false;
63 bool allocate_final_scf = false; //LiuXh add 20180619
64};
65
66#endif
Definition parallel_grid.h:7
int ncy
Definition parallel_grid.h:53
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:36
int ncxy
Definition parallel_grid.h:55
friend class Efield
Definition parallel_grid.h:10
int * nproc_in_pool
Definition parallel_grid.h:46
int ** whichpro_loc
Definition parallel_grid.h:50
int ** numz
Definition parallel_grid.h:47
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:210
const int & nx
Definition parallel_grid.h:38
int nrxx
Definition parallel_grid.h:58
int ncx
Definition parallel_grid.h:52
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:429
int nbz
Definition parallel_grid.h:59
int nczp
Definition parallel_grid.h:57
const int & ny
Definition parallel_grid.h:39
int ncxyz
Definition parallel_grid.h:56
int bz
Definition parallel_grid.h:60
void z_distribution(void)
Definition parallel_grid.cpp:139
int ** whichpro
Definition parallel_grid.h:49
const int & nz
Definition parallel_grid.h:40
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:371
bool allocate
Definition parallel_grid.h:62
~Parallel_Grid()
Definition charge_extra_test.cpp:28
void zpiece_to_all(double *zpiece, const int &iz, double *rho) const
Definition parallel_grid.cpp:231
void zpiece_to_stogroup(double *zpiece, const int &iz, double *rho) const
Definition parallel_grid.cpp:305
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:14
int ** startz
Definition parallel_grid.h:48
int ncz
Definition parallel_grid.h:54
bool allocate_final_scf
Definition parallel_grid.h:63
Parallel_Grid()
Definition elecstate_base_test.cpp:42
Definition symmetry_rho.h:9