Go to the documentation of this file.
10 #ifndef ACCEL_AINDEX_EO_INCLUDED
11 #define ACCEL_AINDEX_EO_INCLUDED
27 template<
typename REALTYPE>
28 inline int idx(
const int in,
const int Nin,
const int ist,
29 const int leo,
const int Nvol2,
const int ex) {
31 int ieo = (ist + leo) % 2;
32 int offset = (ieo + 2*ex)* Nvol2;
33 return (ist2 %
NWP) +
NWP*( in + Nin*( (ist2 + offset)/
NWP) );
36 template<
typename REALTYPE>
37 inline int idxh(
const int in,
const int Nin,
38 const int ist2,
const int Nvol2,
const int ex) {
39 return (ist2 %
NWP) +
NWP*( in + Nin*( (ist2 + Nvol2*ex)/
NWP) );
43 inline int idx<float>(
const int in,
const int Nin,
const int ist,
44 const int leo,
const int Nvol2,
const int ex) {
46 int ieo = (ist + leo) % 2;
47 int offset = (ieo + 2*ex)* Nvol2;
48 return (ist2 %
NWP) +
NWP*( in + Nin*( (ist2 + offset)/
NWP) );
53 const int ist2,
const int Nvol2,
const int ex) {
54 return (ist2 %
NWP) +
NWP*( in + Nin*( (ist2 + Nvol2*ex)/
NWP) );
65 template<
typename REALTYPE>
72 int Nx, Ny,
Nz, Nt, Nvol;
88 int site(
const int x,
const int y,
const int z,
const int t)
const
89 {
int ieo = (x + leo(y,z,t)) % 2;
90 return (x/2) + Nx2 * (y + Ny * (z + Nz * t)) + ieo * Nvol2; }
92 int idx(
const int in,
const int Nin,
const int ist,
const int ex)
const
94 int leo = Leo[ist2/Nx2];
95 return AIndex_eo_accel::idx<REALTYPE>(in, Nin, ist, leo, Nvol2, ex);
98 int idx_G(
const int idf,
const int ist,
const int ex)
const
99 {
return idx(idf, Ndf, ist, ex); }
101 int idx_Gr(
const int ic1,
const int ic2,
const int ist,
const int ex)
const
102 {
int idf = 2*(ic1 + Nc * ic2);
103 return idx(idf, Ndf, ist, ex); }
105 int idx_Gi(
const int ic1,
const int ic2,
const int ist,
const int ex)
const
106 {
int idf = 1 + 2*(ic1 + Nc * ic2);
107 return idx(idf, Ndf, ist, ex); }
109 int idx_SP(
const int in,
const int ist,
const int ex)
const
110 {
return idx(in, Nvcd, ist, ex); }
112 int idxh(
const int in,
const int Nin,
const int ist2,
const int ex)
const
113 {
return AIndex_eo_accel::idxh<REALTYPE>(in, Nin, ist2, Nvol2, ex); }
115 int idx_SPr(
const int ic,
const int id,
const int ist,
const int ex)
const
116 {
int in = 2*(ic + Nc * id);
117 return idx_SP(in, ist, ex); }
119 int idx_SPi(
const int ic,
const int id,
const int ist,
const int ex)
const
120 {
int in = 1 + 2*(ic + Nc * id);
121 return idx_SP(in, ist, ex); }
123 int idxh_SP(
const int in,
const int ist2,
const int ex)
const
124 {
return idxh(in, Nvcd, ist2, ex); }
126 int idxh_SPr(
const int ic,
const int id,
const int ist,
const int ex)
const
127 {
int in = 2*(ic + Nc * id);
128 return idxh_SP(in, ist, ex); }
130 int idxh_SPi(
const int ic,
const int id,
const int ist,
const int ex)
const
131 {
int in = 1 + 2*(ic + Nc * id);
132 return idxh_SP(in, ist, ex); }
134 int idxh_Gr(
const int ic1,
const int ic2,
const int ist,
const int ex)
const
135 {
int in = 2*(ic1 + Nc * ic2);
136 return idxh(in, Ndf, ist, ex); }
138 int idxh_Gi(
const int ic1,
const int ic2,
const int ist,
const int ex)
const
139 {
int in = 1 + 2*(ic1 + Nc * ic2);
140 return idxh(in, Ndf, ist, ex); }
142 int site(
const int x2,
const int y,
const int z,
const int t,
144 {
return x2 + Nx2 * (y + Ny * (z + Nz * t)) + Nvol2 * ieo; }
146 int site(
const int is,
const int ieo)
const
147 {
return is + Nvol2 * ieo; }
149 int siteh(
const int x2,
const int y,
const int z,
const int t)
151 {
return x2 + Nx2 * (y + Ny * (z + Nz * t)); }
154 {
return 2 * Nvol2; }
156 int leo(
const int y,
const int z,
const int t)
const
157 {
return Leo[y + Ny * (z + Nz * t)]; }
160 {
return m_ieo_origin; }
162 template <
typename AFIELD>
165 template <
typename AFIELD>
167 AFIELD& v_o,
const int ex_o,
168 const AFIELD& v,
const int ex);
170 template <
typename AFIELD>
173 template <
typename AFIELD>
int idx_G(const int idf, const int ist, const int ex) const
void merge(real_t *RESTRICT v, real_t *RESTRICT we, real_t *RESTRICT wo, int ieo_origin, int nin, int *Nsize)
int idx< float >(const int in, const int Nin, const int ist, const int leo, const int Nvol2, const int ex)
int idxh(const int in, const int Nin, const int ist2, const int Nx2, const int Ny, const int Nvol2, const int ex)
int site(const int x, const int y, const int z, const int t) const
int idxh(const int in, const int Nin, const int ist2, const int ex) const
int idxh_Gi(const int ic1, const int ic2, const int ist, const int ex) const
int idxh_SPr(const int ic, const int id, const int ist, const int ex) const
int idxh_SPi(const int ic, const int id, const int ist, const int ex) const
int idx_SP(const int in, const int ist, const int ex) const
int siteh(const int x2, const int y, const int z, const int t) const
int idxh(const int in, const int Nin, const int ist2, const int Nvol2, const int ex)
int leo(const int y, const int z, const int t) const
int idx_Gr(const int ic1, const int ic2, const int ist, const int ex) const
void split(real_t *RESTRICT ve, real_t *RESTRICT vo, real_t *RESTRICT w, int ieo_origin, int nin, int *Nsize)
int idx(const int in, const int Nin, const int ist, const int leo, const int Nvol2, const int ex)
int idx(const int in, const int Nin, const int ist, const int Nx2, const int Ny, const int leo, const int Nvol2, const int ex)
int idx(const int in, const int Nin, const int ist, const int ex) const
int site(const int is, const int ieo) const
static const std::string class_name
int idxh< float >(const int in, const int Nin, const int ist2, const int Nvol2, const int ex)
int idxh_SP(const int in, const int ist2, const int ex) const
int m_ieo_origin
parity of local origin site
int idx_SPi(const int ic, const int id, const int ist, const int ex) const
int idxh_Gr(const int ic1, const int ic2, const int ist, const int ex) const
int site(const int x2, const int y, const int z, const int t, const int ieo) const
int idx_Gi(const int ic1, const int ic2, const int ist, const int ex) const
Container of Field-type object.
Bridge::VerboseLevel m_vl
int idx_SPr(const int ic, const int id, const int ist, const int ex) const