Bridge++  Ver.2.1.3
aindex_lex.h
Go to the documentation of this file.
1 
11 #ifndef ACCEL_AINDEX_LEX_INCLUDED
12 #define ACCEL_AINDEX_LEX_INCLUDED
13 
15 
17 
20 
22 
30 template<typename REALTYPE>
31 class AIndex_lex<REALTYPE, ACCEL> {
32  protected:
33  int m_Nc, m_Nd, m_Ndf, m_Nvcd;
34  int m_Nx, m_Ny, m_Nz, m_Nt;
35  int m_Nvol;
36  int m_Nvol_pad;
37 
38  public:
40  m_Nc = CommonParameters::Nc();
41  m_Nd = CommonParameters::Nd();
42  m_Ndf = 2 * m_Nc * m_Nc;
43  m_Nvcd = 2 * m_Nc * m_Nd;
44  m_Nx = CommonParameters::Nx();
45  m_Ny = CommonParameters::Ny();
46  m_Nz = CommonParameters::Nz();
47  m_Nt = CommonParameters::Nt();
48  m_Nvol = CommonParameters::Nvol();
49  m_Nvol_pad = ceil_nwp(m_Nvol);
50  }
51 
52  AIndex_lex(int Nx, int Ny, int Nz, int Nt)
53  {
54  m_Nc = CommonParameters::Nc();
55  m_Nd = CommonParameters::Nd();
56  m_Ndf = 2 * m_Nc * m_Nc;
57  m_Nvcd = 2 * m_Nc * m_Nd;
58  m_Nx = Nx;
59  m_Ny = Ny;
60  m_Nz = Nz;
61  m_Nt = Nt;
62  m_Nvol = Nx * Ny * Nz * Nt;
63  m_Nvol_pad = ceil_nwp(m_Nvol);
64  }
65 
66  int site(const int x, const int y, const int z, const int t) const
67  { return m_Nx * (m_Ny * (m_Nz * t + z) + y) + x; }
68 
69  int idx(const int in, const int Nin, const int ist, const int ex) const
70  {
71  int istx = ist + m_Nvol_pad * ex;
72  return IDX2(Nin, in, istx);
73  }
74 
75  int idx_G(const int idf, const int ist, const int ex) const
76  { return idx(idf, NDF, ist, ex); }
77 
78  int idx_Gr(const int ic1, const int ic2, const int ist, const int ex) const
79  { int idf = 2*(ic1 + NC *ic2);
80  return idx(idf, NDF, ist, ex); }
81 
82  int idx_Gi(const int ic1, const int ic2, const int ist, const int ex) const
83  { int idf = 1 + 2*(ic1 + NC *ic2);
84  return idx(idf, NDF, ist, ex); }
85 
86  int idx_SP(const int in, const int ist, const int ex) const
87  { return idx(in, NVCD, ist, ex); }
88 
89  int idx_SPr(const int ic, const int id, const int ist, const int ex) const
90  { int in = 2*(ic + NC *id);
91  return idx(in, NVCD, ist, ex); }
92 
93  int idx_SPi(const int ic, const int id, const int ist, const int ex) const
94  { int in = 1 + 2*(ic + NC *id);
95  return idx(in, NVCD, ist, ex); }
96 
97  int nvol_pad() const
98  { return m_Nvol_pad; }
99 
100 };
101 
102 #endif
CommonParameters::Ny
static int Ny()
Definition: commonParameters.h:106
CommonParameters::Nz
static int Nz()
Definition: commonParameters.h:107
AIndex_lex< REALTYPE, ACCEL >::idx_SPr
int idx_SPr(const int ic, const int id, const int ist, const int ex) const
Definition: aindex_lex.h:89
AIndex_lex< REALTYPE, ACCEL >::idx_Gr
int idx_Gr(const int ic1, const int ic2, const int ist, const int ex) const
Definition: aindex_lex.h:78
AIndex_lex< REALTYPE, ACCEL >::idx
int idx(const int in, const int Nin, const int ist, const int ex) const
Definition: aindex_lex.h:69
AIndex_lex
Definition: aindex_lex_base.h:17
AIndex_lex< REALTYPE, ACCEL >::m_Nvol_pad
int m_Nvol_pad
Nvol after padding.
Definition: aindex_lex.h:36
NVCD
#define NVCD
Definition: define_params_SU3.h:20
NDF
#define NDF
Definition: field_F_imp_SU2-inc.h:17
AIndex_lex< REALTYPE, ACCEL >::m_Nz
int m_Nz
Definition: aindex_lex.h:34
CommonParameters::Nvol
static int Nvol()
Definition: commonParameters.h:109
AIndex_lex< REALTYPE, ACCEL >::site
int site(const int x, const int y, const int z, const int t) const
Definition: aindex_lex.h:66
AIndex_lex< REALTYPE, ACCEL >::AIndex_lex
AIndex_lex()
Definition: aindex_lex.h:39
AIndex_lex< REALTYPE, ACCEL >::idx_SP
int idx_SP(const int in, const int ist, const int ex) const
Definition: aindex_lex.h:86
AIndex_lex< REALTYPE, ACCEL >::m_Nvcd
int m_Nvcd
Definition: aindex_lex.h:33
CommonParameters::Nx
static int Nx()
Definition: commonParameters.h:105
CommonParameters::Nc
static int Nc()
Definition: commonParameters.h:115
NC
#define NC
Definition: field_F_imp_SU2-inc.h:15
CommonParameters::Nt
static int Nt()
Definition: commonParameters.h:108
AIndex_lex< REALTYPE, ACCEL >::nvol_pad
int nvol_pad() const
Definition: aindex_lex.h:97
AIndex_lex< REALTYPE, ACCEL >::idx_G
int idx_G(const int idf, const int ist, const int ex) const
Definition: aindex_lex.h:75
AIndex_lex< REALTYPE, ACCEL >::idx_Gi
int idx_Gi(const int ic1, const int ic2, const int ist, const int ex) const
Definition: aindex_lex.h:82
ACCEL
@ ACCEL
Definition: alt_impl.h:15
IDX2
#define IDX2(nin, in, ist)
Definition: define_index.h:28
define_index.h
CommonParameters::Nd
static int Nd()
Definition: commonParameters.h:116
AIndex_lex< REALTYPE, ACCEL >::idx_SPi
int idx_SPi(const int ic, const int id, const int ist, const int ex) const
Definition: aindex_lex.h:93
AIndex_lex_qxs::idx
int idx(const int in, const int Nin, const int ist, const int Nx, const int Ny, const int Nxv, const int Nyv, const int Nstv, const int ex)
Definition: aindex_lex.h:24
commonParameters.h
aindex_lex_base.h
define_params.h
AIndex_lex< REALTYPE, ACCEL >::m_Nvol
int m_Nvol
lattice volume (number of sites).
Definition: aindex_lex.h:35
AIndex_lex< REALTYPE, ACCEL >::AIndex_lex
AIndex_lex(int Nx, int Ny, int Nz, int Nt)
Definition: aindex_lex.h:52