Bridge++  Ver. 1.2.x
 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 
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 valarray<int>& lattice_size,
56  const valarray<int>& grid_size)
57 {
58  init(lattice_size, grid_size, 3);
59 }
60 
61 
62 //====================================================================
63 void CommonParameters::init(const valarray<int>& lattice_size,
64  const valarray<int>& grid_size,
65  const int Nc)
66 {
67  if (m_initialized == true) {
68  vout.crucial("CommonParameters already initialized.");
69  abort();
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  abort();
87  }
88 
90 
91  m_initialized = true;
92 }
93 
94 
95 //====================================================================
97 {
98  if (m_Ndim == 0) return false;
99 
100  if (m_Nc == 0) return false;
101 
102  if (m_Nd == 0) return false;
103 
104  if (m_Lx == 0) return false;
105 
106  if (m_Ly == 0) return false;
107 
108  if (m_Lz == 0) return false;
109 
110  if (m_Lt == 0) return false;
111 
112  m_Lvol = m_Lx * m_Ly * m_Lz * m_Lt;
113 
114  if (m_NPE == 1) {
115 // if (m_NPEx != 1 || m_NPEy != 1 || m_NPEz != 1 || m_NPEt != 1) {
116 // vout.general(m_vl,stderr, "assume NPE_mu = 1\n");
117 // }
118  m_NPEx = m_NPEy = m_NPEz = m_NPEt = 1;
119  }
120 
121  if ((m_Nx != 0) && (m_NPEx != 0) && (m_Lx != m_Nx * m_NPEx)) return false;
122 
123  if ((m_Ny != 0) && (m_NPEy != 0) && (m_Ly != m_Ny * m_NPEy)) return false;
124 
125  if ((m_Nz != 0) && (m_NPEz != 0) && (m_Lz != m_Nz * m_NPEz)) return false;
126 
127  if ((m_Nt != 0) && (m_NPEt != 0) && (m_Lt != m_Nt * m_NPEt)) return false;
128 
129  if ((m_Nx == 0) && (m_NPEx != 0)) {
130  if (m_Lx % m_NPEx != 0) return false; else m_Nx = m_Lx / m_NPEx;
131  }
132  if ((m_Ny == 0) && (m_NPEy != 0)) {
133  if (m_Ly % m_NPEy != 0) return false; else m_Ny = m_Ly / m_NPEy;
134  }
135  if ((m_Nz == 0) && (m_NPEz != 0)) {
136  if (m_Lz % m_NPEz != 0) return false; else m_Nz = m_Lz / m_NPEz;
137  }
138  if ((m_Nt == 0) && (m_NPEt != 0)) {
139  if (m_Lt % m_NPEt != 0) return false; else m_Nt = m_Lt / m_NPEt;
140  }
141 
142  if ((m_Nx != 0) && (m_NPEx == 0)) {
143  if (m_Lx % m_Nx != 0) return false; else m_NPEx = m_Lx / m_Nx;
144  }
145  if ((m_Ny != 0) && (m_NPEy == 0)) {
146  if (m_Ly % m_Ny != 0) return false; else m_NPEy = m_Ly / m_Ny;
147  }
148  if ((m_Nz != 0) && (m_NPEz == 0)) {
149  if (m_Lz % m_Nz != 0) return false; else m_NPEz = m_Lz / m_Nz;
150  }
151  if ((m_Nt != 0) && (m_NPEt == 0)) {
152  if (m_Lt % m_Nt != 0) return false; else m_NPEt = m_Lt / m_Nt;
153  }
154 
155  if ((m_NPEx != 0) && (m_NPEy != 0) && (m_NPEz != 0) && (m_NPEt != 0)) {
156  if ((m_NPE != 0) && (m_NPE != m_NPEx * m_NPEy * m_NPEz * m_NPEt)) return false;
157 
158  if (m_NPE == 0) m_NPE = m_NPEx * m_NPEy * m_NPEz * m_NPEt;
159  }
160 
161  if ((m_Nx != 0) && (m_Ny != 0) && (m_Nz != 0) && (m_Nt != 0)) {
162  if ((m_Nvol != 0) && (m_Nvol != m_Nx * m_Ny * m_Nz * m_Nt)) return false;
163 
164  if (m_Nvol == 0) m_Nvol = m_Nx * m_Ny * m_Nz * m_Nt;
165  }
166 
167  return true;
168 }
169 
170 
171 //====================================================================
173 {
174  vout.general("\n");
175  vout.general("Lattice parameters:\n");
176  vout.general(" Lx = %4d, Ly = %4d, Lz = %4d, Lt = %4d,\n",
177  m_Lx, m_Ly, m_Lz, m_Lt);
178  vout.general(" Nx = %4d, Ny = %4d, Nz = %4d, Nt = %4d,\n",
179  m_Nx, m_Ny, m_Nz, m_Nt);
180  vout.general(" NPEx =%4d, NPEy =%4d, NPEz =%4d, NPEt =%4d,\n",
182  vout.general(" Lvol = %8d, Nvol = %6d, NPE = %6d,\n",
183  m_Lvol, m_Nvol, m_NPE);
184  vout.general(" Ndim = %4d\n", m_Ndim);
185  vout.general(" Nc = %4d\n", m_Nc);
186  vout.general(" Nd = %4d\n", m_Nd);
187  vout.general("\n");
188 }
189 
190 
191 //====================================================================
192 //============================================================END=====
BridgeIO vout
Definition: bridgeIO.cpp:207
static const int m_Nd
void general(const char *format,...)
Definition: bridgeIO.cpp:38
static char m_map_grid[16]
static void print_parameters()
static Bridge::VerboseLevel m_vlevel
static const int m_Ndim
static void init(const valarray< int > &lattice_size, const valarray< int > &grid_size)
initialization (Nc=3 is assumed).
void crucial(const char *format,...)
Definition: bridgeIO.cpp:26
static bool check_parameters()
VerboseLevel
Definition: bridgeIO.h:25
static bool m_initialized
static const double m_epsilon_criterion