Bridge++  Version 1.4.4
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
commonParameters.cpp
Go to the documentation of this file.
1 
14 #include "commonParameters.h"
15 
17 
18 #include "IO/bridgeIO.h"
19 using Bridge::vout;
20 
21 // initialize static parameters
22 // color, spinor and space-time dimension
23 int CommonParameters::m_Nc = 3; // `const' removed. [07 May 2014]
24 const int CommonParameters::m_Nd = 4;
25 const int CommonParameters::m_Ndim = 4;
26 
27 const double CommonParameters::m_epsilon_criterion = 1.0e-16;
28 
34 
40 
41 char CommonParameters::m_map_grid[] = "xyzt";
42 
48 
49 //CommonParameters* CommonParameters::m_instance = 0;
51 
53 
54 const std::string CommonParameters::class_name = "CommonParameters";
55 
56 //====================================================================
57 void CommonParameters::init(const std::vector<int>& lattice_size,
58  const std::vector<int>& grid_size)
59 {
60  init(lattice_size, grid_size, 3);
61 }
62 
63 
64 //====================================================================
65 void CommonParameters::init(const std::vector<int>& lattice_size,
66  const std::vector<int>& grid_size,
67  const int Nc)
68 {
69  if (m_initialized == true) {
70  vout.crucial("Error at %s: CommonParameters already initialized.\n", class_name.c_str());
71  exit(EXIT_FAILURE);
72  }
73 
74  m_Nc = Nc;
75 
76  m_Lx = lattice_size[0];
77  m_Ly = lattice_size[1];
78  m_Lz = lattice_size[2];
79  m_Lt = lattice_size[3];
80 
81  m_NPEx = grid_size[0];
82  m_NPEy = grid_size[1];
83  m_NPEz = grid_size[2];
84  m_NPEt = grid_size[3];
85 
86  if (check_parameters() == false) {
87  vout.crucial("Error at %s: check_parameters failed.\n", class_name.c_str());
88  exit(EXIT_FAILURE);
89  }
90 
92 
93  m_initialized = true;
94 }
95 
96 
97 //====================================================================
99 {
100  m_vlevel = vlevel;
101 }
102 
103 
104 //====================================================================
105 int CommonParameters::Lsize(const int dir)
106 {
107  switch (dir)
108  {
109  case 0:
110  return m_Lx;
111 
112  case 1:
113  return m_Ly;
114 
115  case 2:
116  return m_Lz;
117 
118  case 3:
119  return m_Lt;
120 
121  default:
122  vout.crucial("Error at %s: invalid argument value.\n",
123  class_name.c_str());
124  exit(EXIT_FAILURE);
125  return -1;
126  }
127 }
128 
129 
130 //====================================================================
131 int CommonParameters::Nsize(const int dir)
132 {
133  switch (dir)
134  {
135  case 0:
136  return m_Nx;
137 
138  case 1:
139  return m_Ny;
140 
141  case 2:
142  return m_Nz;
143 
144  case 3:
145  return m_Nt;
146 
147  default:
148  vout.crucial("Error at %s: invalid argument value.\n",
149  class_name.c_str());
150  exit(EXIT_FAILURE);
151  return -1;
152  }
153 }
154 
155 
156 //====================================================================
157 int CommonParameters::NPEsize(const int dir)
158 {
159  switch (dir)
160  {
161  case 0:
162  return m_NPEx;
163 
164  case 1:
165  return m_NPEy;
166 
167  case 2:
168  return m_NPEz;
169 
170  case 3:
171  return m_NPEt;
172 
173  default:
174  vout.crucial("Error at %s: invalid argument value.\n",
175  class_name.c_str());
176  exit(EXIT_FAILURE);
177  return -1;
178  }
179 }
180 
181 
182 //====================================================================
184 {
185  if (m_Ndim == 0) return false;
186 
187  if (m_Nc == 0) return false;
188 
189  if (m_Nd == 0) return false;
190 
191  if (m_Lx == 0) return false;
192 
193  if (m_Ly == 0) return false;
194 
195  if (m_Lz == 0) return false;
196 
197  if (m_Lt == 0) return false;
198 
199  m_Lvol = m_Lx * m_Ly * m_Lz * m_Lt;
200 
201  if (m_NPE == 1) {
202  // if (m_NPEx != 1 || m_NPEy != 1 || m_NPEz != 1 || m_NPEt != 1) {
203  // vout.general(m_vl,stderr, "assume NPE_mu = 1\n");
204  // }
205  m_NPEx = m_NPEy = m_NPEz = m_NPEt = 1;
206  }
207 
208  if ((m_Nx != 0) && (m_NPEx != 0) && (m_Lx != m_Nx * m_NPEx)) return false;
209 
210  if ((m_Ny != 0) && (m_NPEy != 0) && (m_Ly != m_Ny * m_NPEy)) return false;
211 
212  if ((m_Nz != 0) && (m_NPEz != 0) && (m_Lz != m_Nz * m_NPEz)) return false;
213 
214  if ((m_Nt != 0) && (m_NPEt != 0) && (m_Lt != m_Nt * m_NPEt)) return false;
215 
216  if ((m_Nx == 0) && (m_NPEx != 0)) {
217  if (m_Lx % m_NPEx != 0) return false; else m_Nx = m_Lx / m_NPEx;
218  }
219  if ((m_Ny == 0) && (m_NPEy != 0)) {
220  if (m_Ly % m_NPEy != 0) return false; else m_Ny = m_Ly / m_NPEy;
221  }
222  if ((m_Nz == 0) && (m_NPEz != 0)) {
223  if (m_Lz % m_NPEz != 0) return false; else m_Nz = m_Lz / m_NPEz;
224  }
225  if ((m_Nt == 0) && (m_NPEt != 0)) {
226  if (m_Lt % m_NPEt != 0) return false; else m_Nt = m_Lt / m_NPEt;
227  }
228 
229  if ((m_Nx != 0) && (m_NPEx == 0)) {
230  if (m_Lx % m_Nx != 0) return false; else m_NPEx = m_Lx / m_Nx;
231  }
232  if ((m_Ny != 0) && (m_NPEy == 0)) {
233  if (m_Ly % m_Ny != 0) return false; else m_NPEy = m_Ly / m_Ny;
234  }
235  if ((m_Nz != 0) && (m_NPEz == 0)) {
236  if (m_Lz % m_Nz != 0) return false; else m_NPEz = m_Lz / m_Nz;
237  }
238  if ((m_Nt != 0) && (m_NPEt == 0)) {
239  if (m_Lt % m_Nt != 0) return false; else m_NPEt = m_Lt / m_Nt;
240  }
241 
242  if ((m_NPEx != 0) && (m_NPEy != 0) && (m_NPEz != 0) && (m_NPEt != 0)) {
243  if ((m_NPE != 0) && (m_NPE != m_NPEx * m_NPEy * m_NPEz * m_NPEt)) return false;
244 
245  if (m_NPE == 0) m_NPE = m_NPEx * m_NPEy * m_NPEz * m_NPEt;
246  }
247 
248  if ((m_Nx != 0) && (m_Ny != 0) && (m_Nz != 0) && (m_Nt != 0)) {
249  if ((m_Nvol != 0) && (m_Nvol != m_Nx * m_Ny * m_Nz * m_Nt)) return false;
250 
251  if (m_Nvol == 0) m_Nvol = m_Nx * m_Ny * m_Nz * m_Nt;
252  }
253 
254  return true;
255 }
256 
257 
258 //====================================================================
260 {
261  vout.general("\n");
262  vout.general("Lattice parameters:\n");
263  vout.general(" Lx = %4d, Ly = %4d, Lz = %4d, Lt = %4d,\n",
264  m_Lx, m_Ly, m_Lz, m_Lt);
265  vout.general(" Nx = %4d, Ny = %4d, Nz = %4d, Nt = %4d,\n",
266  m_Nx, m_Ny, m_Nz, m_Nt);
267  vout.general(" NPEx =%4d, NPEy =%4d, NPEz =%4d, NPEt =%4d,\n",
269  vout.general(" Lvol = %8d, Nvol = %6d, NPE = %6d,\n",
270  m_Lvol, m_Nvol, m_NPE);
271  vout.general(" Ndim = %4d\n", m_Ndim);
272  vout.general(" Nc = %4d\n", m_Nc);
273  vout.general(" Nd = %4d\n", m_Nd);
274  vout.general("\n");
275 }
276 
277 
278 //====================================================================
279 //============================================================END=====
BridgeIO vout
Definition: bridgeIO.cpp:495
static const int m_Nd
void general(const char *format,...)
Definition: bridgeIO.cpp:195
static const std::string class_name
static char m_map_grid[16]
static void print_parameters()
static void init_Vlevel(Bridge::VerboseLevel vlevel)
initialization for default verbose level.
static Bridge::VerboseLevel m_vlevel
static const int m_Ndim
void crucial(const char *format,...)
Definition: bridgeIO.cpp:178
static bool check_parameters()
static int NPEsize(const int dir)
static int Nsize(const int dir)
VerboseLevel
Definition: bridgeIO.h:42
static bool m_initialized
static const double m_epsilon_criterion
static void init(const std::vector< int > &lattice_size, const std::vector< int > &grid_size)
initialization (Nc=3 is assumed).
static int Lsize(const int dir)