21 const int nst_ = this->
nst;
22 const int nz_ = this->
nz;
25#pragma omp parallel for
27 for(
int is = 0 ; is < nst_ ; ++is)
29 int ixy = istot2ixy_[is];
30 std::complex<T> *outp = &out[is*nz_];
31 std::complex<T> *inp = &in[ixy*nz_];
32 for(
int iz = 0 ; iz < nz_ ; ++iz)
44 const int nstot_gps = this->
nstot;
45 const int nplane_gps = this->
nplane;
46 const int* istot2ixy_gps = this->
istot2ixy;
48 #pragma omp parallel for
50 for (
int istot = 0; istot < nstot_gps; ++istot)
52 int ixy = istot2ixy_gps[istot];
53 std::complex<T> *outp = &out[istot * nplane_gps];
54 std::complex<T> *inp = &in[ixy * nplane_gps];
55 for (
int iz = 0; iz < nplane_gps; ++iz)
63 if(
typeid(
T) ==
typeid(
double))
67 else if(
typeid(
T) ==
typeid(
float))
77 const int poolnproc_gps = this->
poolnproc;
78 const int nst_gps = this->
nst;
79 const int nz_gps = this->
nz;
80 const int* numz_gps = this->
numz;
81 const int* startg_gps = this->
startg;
82 const int* startz_gps = this->
startz;
84 #pragma omp parallel for collapse(2)
86 for (
int ip = 0; ip < poolnproc_gps ;++ip)
88 for (
int is = 0; is < nst_gps; ++is)
90 int nzip = numz_gps[ip];
91 std::complex<T> *outp0 = &out[startz_gps[ip]];
92 std::complex<T> *inp0 = &in[startg_gps[ip]];
93 std::complex<T> *outp = &outp0[is * nz_gps];
94 std::complex<T> *inp = &inp0[is * nzip ];
95 for (
int izip = 0; izip < nzip; ++izip)
97 outp[izip] = inp[izip];
117 const int nrxx_ = this->
nrxx;
118 const int nst_ = this->
nst;
119 const int nz_ = this->
nz;
122#pragma omp parallel for schedule(static)
124 for(
int i = 0;
i < nrxx_; ++
i)
126 out[
i] = std::complex<T>(0, 0);
130#pragma omp parallel for
132 for(
int is = 0 ; is < nst_ ; ++is)
134 int ixy = istot2ixy_[is];
135 std::complex<T> *outp = &out[ixy*nz_];
136 std::complex<T> *inp = &in[is*nz_];
137 for(
int iz = 0 ; iz < nz_ ; ++iz)
150 const int nst_ = this->
nst;
151 const int nz_ = this->
nz;
152 const int* numz_ = this->
numz;
153 const int* startg_ = this->
startg;
154 const int* startz_ = this->
startz;
156 #pragma omp parallel for collapse(2)
158 for (
int ip = 0; ip < poolnproc_ ;++ip)
160 for (
int is = 0; is < nst_; ++is)
162 int nzip = numz_[ip];
163 std::complex<T> *outp0 = &out[startg_[ip]];
164 std::complex<T> *inp0 = &in[startz_[ip]];
165 std::complex<T> *outp = &outp0[is * nzip];
166 std::complex<T> *inp = &inp0[is * nz_ ];
167 for (
int izip = 0; izip < nzip; ++izip)
169 outp[izip] = inp[izip];
176 if(
typeid(
T) ==
typeid(
double))
180 else if(
typeid(
T) ==
typeid(
float))
189 const int nrxx_gsp = this->
nrxx;
191 #pragma omp parallel for schedule(static)
193 for(
int i = 0;
i < nrxx_gsp; ++
i)
195 out[
i] = std::complex<T>(0, 0);
202#pragma omp parallel for
204 for (
int istot = 0;istot <
nstot; ++istot)
208 std::complex<T> *outp = &out[ixy *
nplane];
209 std::complex<T> *inp = &in[istot *
nplane];
210 for (
int iz = 0; iz <
nplane; ++iz)
const std::complex< double > i
Definition cal_pLpR.cpp:46
int nrxx
Definition pw_basis.h:120
int nst
Definition pw_basis.h:111
int nstot
Definition pw_basis.h:114
int * numz
Definition pw_basis.h:122
int poolnproc
Definition pw_basis.h:182
void gatherp_scatters(std::complex< T > *in, std::complex< T > *out) const
gather planes and scatter sticks
Definition pw_gatherscatter.h:16
int * startr
Definition pw_basis.h:126
int * startg
Definition pw_basis.h:125
int * numr
Definition pw_basis.h:124
int * istot2ixy
Definition pw_basis.h:108
int nplane
Definition pw_basis.h:128
MPI_Comm pool_world
Definition pw_basis.h:103
void gathers_scatterp(std::complex< T > *in, std::complex< T > *out) const
gather sticks and scatter planes
Definition pw_gatherscatter.h:113
int * numg
Definition pw_basis.h:123
int * startz
Definition pw_basis.h:121
int nz
Definition pw_basis.h:239
#define T
Definition exp.cpp:237
void WARNING_QUIT(const std::string &, const std::string &)
Combine the functions of WARNING and QUIT.
Definition test_delley.cpp:14