Bridge++  Ver. 2.0.2
index_eo.h
Go to the documentation of this file.
1 
14 #ifndef INDEX_EO_INCLUDED
15 #define INDEX_EO_INCLUDED
16 
17 #include <vector>
18 
19 #include "Field/index_lex.h"
20 #include "Field/field.h"
21 
23 
24 #include "IO/bridgeIO.h"
25 using Bridge::vout;
26 
28 
44 class Index_eo {
45  public:
46  static const std::string class_name;
47 
48  private:
50 
52  int m_Nx2, m_Nvol2;
53  int m_node_eo;
54 
55  std::vector<int> m_yzt_eo;
56  std::vector<int> m_site_up;
57  std::vector<int> m_site_dn;
58 
60 
61  public:
62 
63  Index_eo() { init(); }
64 
65  int leo(const int y, const int z, const int t) const
66  { return m_yzt_eo[y + m_Ny * (z + m_Nz * t)]; }
67 
68  int site(const int x2, const int y, const int z, const int t,
69  const int ieo) const
70  { return x2 + m_Nx2 * (y + m_Ny * (z + m_Nz * t)) + m_Nvol2 * ieo; }
71 
72  int site(const int is, const int ieo) const
73  { return is + m_Nvol2 * ieo; }
74 
75  int site_up(const int x2, const int y, const int z, const int t,
76  const int ieo) const
77  {
78  int s = x2 + m_Nx2 * (y + m_Ny * (z + m_Nz * t)) + m_Nvol2 * ieo;
79  return m_site_up[s] + m_Nvol2 * (1 - ieo);
80  }
81 
82  int site_xup(const int x2, const int y, const int z, const int t,
83  const int ieo) const
84  {
85  int s = x2 + m_Nx2 * (y + m_Ny * (z + m_Nz * t)) + m_Nvol2 * ieo;
86  return m_site_up[s] + m_Nvol2 * (1 - ieo);
87  }
88 
89  int site_dn(const int x2, const int y, const int z, const int t,
90  const int ieo) const
91  {
92  int s = x2 + m_Nx2 * (y + m_Ny * (z + m_Nz * t)) + m_Nvol2 * ieo;
93  return m_site_dn[s] + m_Nvol2 * (1 - ieo);
94  }
95 
96  int site_xdn(const int x2, const int y, const int z, const int t,
97  const int ieo) const
98  {
99  int s = x2 + m_Nx2 * (y + m_Ny * (z + m_Nz * t)) + m_Nvol2 * ieo;
100  return m_site_dn[s] + m_Nvol2 * (1 - ieo);
101  }
102 
103  int siteh(const int x2, const int y, const int z, const int t)
104  const
105  { return x2 + m_Nx2 * (y + m_Ny * (z + m_Nz * t)); }
106 
107  int siteh_up(const int x2, const int y, const int z, const int t,
108  const int ieo) const
109  {
110  int s = x2 + m_Nx2 * (y + m_Ny * (z + m_Nz * t)) + m_Nvol2 * ieo;
111  return m_site_up[s];
112  }
113 
114  int siteh_xup(const int x2, const int y, const int z, const int t,
115  const int ieo) const
116  {
117  int s = x2 + m_Nx2 * (y + m_Ny * (z + m_Nz * t)) + m_Nvol2 * ieo;
118  return m_site_up[s];
119  }
120 
121  int siteh_dn(const int x2, const int y, const int z, const int t,
122  const int ieo) const
123  {
124  int s = x2 + m_Nx2 * (y + m_Ny * (z + m_Nz * t)) + m_Nvol2 * ieo;
125  return m_site_dn[s];
126  }
127 
128  int siteh_xdn(const int x2, const int y, const int z, const int t,
129  const int ieo) const
130  {
131  int s = x2 + m_Nx2 * (y + m_Ny * (z + m_Nz * t)) + m_Nvol2 * ieo;
132  return m_site_dn[s];
133  }
134 
136  void init();
137 
138  void convertField(Field& eo, const Field& lex);
139  void convertField(Field& eo, const Field& lex, const int ieo);
140 
141  void reverseField(Field& lex, const Field& eo);
142  void reverseField(Field& lex, const Field& eo, const int ieo);
143 
144  void splitField(Field& e, Field& o, const Field& eo);
145 
146  void mergeField(Field& eo, const Field& e, const Field& o);
147 };
148 #endif
Index_eo::m_site_dn
std::vector< int > m_site_dn
Definition: index_eo.h:57
Index_eo::siteh_up
int siteh_up(const int x2, const int y, const int z, const int t, const int ieo) const
Definition: index_eo.h:107
bridgeIO.h
Index_lex
Lexical site index.
Definition: index_lex.h:34
Index_eo::Index_eo
Index_eo()
Definition: index_eo.h:63
Index_eo::m_Nx2
int m_Nx2
Definition: index_eo.h:52
Index_eo::site
int site(const int is, const int ieo) const
Definition: index_eo.h:72
Index_eo::m_Nz
int m_Nz
Definition: index_eo.h:51
Index_eo::init
void init()
initial setup.
Definition: index_eo.cpp:23
Index_eo::m_vl
Bridge::VerboseLevel m_vl
Definition: index_eo.h:49
Index_eo
Even-odd site index.
Definition: index_eo.h:44
Index_eo::m_node_eo
int m_node_eo
{0, 1}: local origin is on even/odd side
Definition: index_eo.h:53
Index_eo::m_Nx
int m_Nx
Definition: index_eo.h:51
Index_eo::m_yzt_eo
std::vector< int > m_yzt_eo
Definition: index_eo.h:55
Index_eo::m_site_up
std::vector< int > m_site_up
Definition: index_eo.h:56
Index_eo::site_up
int site_up(const int x2, const int y, const int z, const int t, const int ieo) const
Definition: index_eo.h:75
Index_eo::reverseField
void reverseField(Field &lex, const Field &eo)
Definition: index_eo.cpp:197
Index_eo::siteh_xup
int siteh_xup(const int x2, const int y, const int z, const int t, const int ieo) const
Definition: index_eo.h:114
Index_eo::site
int site(const int x2, const int y, const int z, const int t, const int ieo) const
Definition: index_eo.h:68
Index_eo::m_Nvol
int m_Nvol
Definition: index_eo.h:51
Index_eo::site_xup
int site_xup(const int x2, const int y, const int z, const int t, const int ieo) const
Definition: index_eo.h:82
Index_eo::convertField
void convertField(Field &eo, const Field &lex)
Definition: index_eo.cpp:90
field.h
Index_eo::site_xdn
int site_xdn(const int x2, const int y, const int z, const int t, const int ieo) const
Definition: index_eo.h:96
index_lex.h
Index_eo::class_name
static const std::string class_name
Definition: index_eo.h:46
Index_eo::m_Nt
int m_Nt
Definition: index_eo.h:51
Index_eo::splitField
void splitField(Field &e, Field &o, const Field &eo)
Definition: index_eo.cpp:232
Index_eo::mergeField
void mergeField(Field &eo, const Field &e, const Field &o)
Definition: index_eo.cpp:262
Index_eo::siteh_xdn
int siteh_xdn(const int x2, const int y, const int z, const int t, const int ieo) const
Definition: index_eo.h:128
Index_eo::m_index_lex
Index_lex m_index_lex
Definition: index_eo.h:59
Index_eo::m_Ny
int m_Ny
Definition: index_eo.h:51
Index_eo::site_dn
int site_dn(const int x2, const int y, const int z, const int t, const int ieo) const
Definition: index_eo.h:89
Index_eo::siteh
int siteh(const int x2, const int y, const int z, const int t) const
Definition: index_eo.h:103
Index_eo::m_Nvol2
int m_Nvol2
Definition: index_eo.h:52
Field
Container of Field-type object.
Definition: field.h:46
Index_eo::leo
int leo(const int y, const int z, const int t) const
Definition: index_eo.h:65
communicator.h
Bridge::VerboseLevel
VerboseLevel
Definition: bridgeIO.h:42
Index_eo::siteh_dn
int siteh_dn(const int x2, const int y, const int z, const int t, const int ieo) const
Definition: index_eo.h:121
Bridge::vout
BridgeIO vout
Definition: bridgeIO.cpp:512