22#pragma omp parallel for
24 for(
int is = 0 ; is < this->
nst ; ++is)
28 std::complex<T> *outp = &out[is*
nz];
29 std::complex<T> *inp = &in[ixy*
nz];
30 for(
int iz = 0 ; iz < this->
nz ; ++iz)
42#pragma omp parallel for
44 for (
int istot = 0;istot <
nstot; ++istot)
48 std::complex<T> *outp = &out[istot*
nplane];
49 std::complex<T> *inp = &in[ixy*
nplane];
50 for (
int iz = 0; iz <
nplane; ++iz)
58 if(
typeid(
T) ==
typeid(
double))
62 else if(
typeid(
T) ==
typeid(
float))
69#pragma omp parallel for collapse(2)
71 for (
int ip = 0; ip < this->
poolnproc ;++ip)
73 for (
int is = 0; is < this->
nst; ++is)
75 int nzip = this->
numz[ip];
76 std::complex<T> *outp0 = &out[
startz[ip]];
77 std::complex<T> *inp0 = &in[
startg[ip]];
78 std::complex<T> *outp = &outp0[is *
nz];
79 std::complex<T> *inp = &inp0[is * nzip ];
80 for (
int izip = 0; izip < nzip; ++izip)
82 outp[izip] = inp[izip];
105#pragma omp parallel for schedule(static, 4096/sizeof(T))
107 for(
int i = 0; i < this->
nrxx; ++i)
109 out[i] = std::complex<T>(0, 0);
113#pragma omp parallel for
115 for(
int is = 0 ; is < this->
nst ; ++is)
119 std::complex<T> *outp = &out[ixy*
nz];
120 std::complex<T> *inp = &in[is*
nz];
121 for(
int iz = 0 ; iz < this->
nz ; ++iz)
133#pragma omp parallel for collapse(2)
135 for (
int ip = 0; ip < this->
poolnproc ;++ip)
137 for (
int is = 0; is < this->
nst; ++is)
139 int nzip = this->
numz[ip];
140 std::complex<T> *outp0 = &out[
startg[ip]];
141 std::complex<T> *inp0 = &in[
startz[ip]];
142 std::complex<T> *outp = &outp0[is * nzip];
143 std::complex<T> *inp = &inp0[is *
nz ];
144 for (
int izip = 0; izip < nzip; ++izip)
146 outp[izip] = inp[izip];
153 if(
typeid(
T) ==
typeid(
double))
157 else if(
typeid(
T) ==
typeid(
float))
163#pragma omp parallel for schedule(static, 4096/sizeof(T))
165 for(
int i = 0; i < this->
nrxx; ++i)
167 out[i] = std::complex<T>(0, 0);
171#pragma omp parallel for
173 for (
int istot = 0;istot <
nstot; ++istot)
177 std::complex<T> *outp = &out[ixy *
nplane];
178 std::complex<T> *inp = &in[istot *
nplane];
179 for (
int iz = 0; iz <
nplane; ++iz)
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:15
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:99
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