Bridge++  Ver. 1.3.x
commonParameters.cpp
Go to the documentation of this file.
1 
14 #include "commonParameters.h"
15 
16 #include "communicator.h"
17 
18 #include "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 //====================================================================
55 void CommonParameters::init(const std::vector<int>& lattice_size,
56  const std::vector<int>& grid_size)
57 {
58  init(lattice_size, grid_size, 3);
59 }
60 
61 
62 //====================================================================
63 void CommonParameters::init(const std::vector<int>& lattice_size,
64  const std::vector<int>& grid_size,
65  const int Nc)
66 {
67  if (m_initialized == true) {
68  vout.crucial("CommonParameters already initialized.");
69  exit(EXIT_FAILURE);
70  }
71 
72  m_Nc = Nc;
73 
74  m_Lx = lattice_size[0];
75  m_Ly = lattice_size[1];
76  m_Lz = lattice_size[2];
77  m_Lt = lattice_size[3];
78 
79  m_NPEx = grid_size[0];
80  m_NPEy = grid_size[1];
81  m_NPEz = grid_size[2];
82  m_NPEt = grid_size[3];
83 
84  if (check_parameters() == false) {
85  vout.crucial("CommonParameters::check_parameters failed.\n");
86  exit(EXIT_FAILURE);
87  }
88 
90 
91  m_initialized = true;
92 }
93 
94 
95 //====================================================================
97 {
98  m_vlevel = vlevel;
99 }
100 
101 
102 //====================================================================
104 {
105  if (m_Ndim == 0) return false;
106 
107  if (m_Nc == 0) return false;
108 
109  if (m_Nd == 0) return false;
110 
111  if (m_Lx == 0) return false;
112 
113  if (m_Ly == 0) return false;
114 
115  if (m_Lz == 0) return false;
116 
117  if (m_Lt == 0) return false;
118 
119  m_Lvol = m_Lx * m_Ly * m_Lz * m_Lt;
120 
121  if (m_NPE == 1) {
122 // if (m_NPEx != 1 || m_NPEy != 1 || m_NPEz != 1 || m_NPEt != 1) {
123 // vout.general(m_vl,stderr, "assume NPE_mu = 1\n");
124 // }
125  m_NPEx = m_NPEy = m_NPEz = m_NPEt = 1;
126  }
127 
128  if ((m_Nx != 0) && (m_NPEx != 0) && (m_Lx != m_Nx * m_NPEx)) return false;
129 
130  if ((m_Ny != 0) && (m_NPEy != 0) && (m_Ly != m_Ny * m_NPEy)) return false;
131 
132  if ((m_Nz != 0) && (m_NPEz != 0) && (m_Lz != m_Nz * m_NPEz)) return false;
133 
134  if ((m_Nt != 0) && (m_NPEt != 0) && (m_Lt != m_Nt * m_NPEt)) return false;
135 
136  if ((m_Nx == 0) && (m_NPEx != 0)) {
137  if (m_Lx % m_NPEx != 0) return false; else m_Nx = m_Lx / m_NPEx;
138  }
139  if ((m_Ny == 0) && (m_NPEy != 0)) {
140  if (m_Ly % m_NPEy != 0) return false; else m_Ny = m_Ly / m_NPEy;
141  }
142  if ((m_Nz == 0) && (m_NPEz != 0)) {
143  if (m_Lz % m_NPEz != 0) return false; else m_Nz = m_Lz / m_NPEz;
144  }
145  if ((m_Nt == 0) && (m_NPEt != 0)) {
146  if (m_Lt % m_NPEt != 0) return false; else m_Nt = m_Lt / m_NPEt;
147  }
148 
149  if ((m_Nx != 0) && (m_NPEx == 0)) {
150  if (m_Lx % m_Nx != 0) return false; else m_NPEx = m_Lx / m_Nx;
151  }
152  if ((m_Ny != 0) && (m_NPEy == 0)) {
153  if (m_Ly % m_Ny != 0) return false; else m_NPEy = m_Ly / m_Ny;
154  }
155  if ((m_Nz != 0) && (m_NPEz == 0)) {
156  if (m_Lz % m_Nz != 0) return false; else m_NPEz = m_Lz / m_Nz;
157  }
158  if ((m_Nt != 0) && (m_NPEt == 0)) {
159  if (m_Lt % m_Nt != 0) return false; else m_NPEt = m_Lt / m_Nt;
160  }
161 
162  if ((m_NPEx != 0) && (m_NPEy != 0) && (m_NPEz != 0) && (m_NPEt != 0)) {
163  if ((m_NPE != 0) && (m_NPE != m_NPEx * m_NPEy * m_NPEz * m_NPEt)) return false;
164 
165  if (m_NPE == 0) m_NPE = m_NPEx * m_NPEy * m_NPEz * m_NPEt;
166  }
167 
168  if ((m_Nx != 0) && (m_Ny != 0) && (m_Nz != 0) && (m_Nt != 0)) {
169  if ((m_Nvol != 0) && (m_Nvol != m_Nx * m_Ny * m_Nz * m_Nt)) return false;
170 
171  if (m_Nvol == 0) m_Nvol = m_Nx * m_Ny * m_Nz * m_Nt;
172  }
173 
174  return true;
175 }
176 
177 
178 //====================================================================
180 {
181  vout.general("\n");
182  vout.general("Lattice parameters:\n");
183  vout.general(" Lx = %4d, Ly = %4d, Lz = %4d, Lt = %4d,\n",
184  m_Lx, m_Ly, m_Lz, m_Lt);
185  vout.general(" Nx = %4d, Ny = %4d, Nz = %4d, Nt = %4d,\n",
186  m_Nx, m_Ny, m_Nz, m_Nt);
187  vout.general(" NPEx =%4d, NPEy =%4d, NPEz =%4d, NPEt =%4d,\n",
189  vout.general(" Lvol = %8d, Nvol = %6d, NPE = %6d,\n",
190  m_Lvol, m_Nvol, m_NPE);
191  vout.general(" Ndim = %4d\n", m_Ndim);
192  vout.general(" Nc = %4d\n", m_Nc);
193  vout.general(" Nd = %4d\n", m_Nd);
194  vout.general("\n");
195 }
196 
197 
198 //====================================================================
199 //============================================================END=====
BridgeIO vout
Definition: bridgeIO.cpp:278
static const int m_Nd
void general(const char *format,...)
Definition: bridgeIO.cpp:65
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:48
static bool check_parameters()
VerboseLevel
Definition: bridgeIO.h:39
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).