Bridge++  Ver. 1.3.x
main.cpp
Go to the documentation of this file.
1 
14 #include "main.h"
15 
16 //====================================================================
17 int main(int argc, char *argv[])
18 {
19  // ### initial setup ###
20  Bridge::vout.init(std::cout);
21  Bridge::vout.ildg_init(std::cout);
23 
24 #ifdef USE_TESTMANAGER
25  // process list option prior to other initializations.
26  if (argc > 1) {
27  std::string arg1 = argv[1];
28 
29  if ((arg1 == "-l") || (arg1 == "--list")) {
31  return EXIT_SUCCESS;
32  } else if ((arg1 == "-h") || (arg1 == "--help")) {
33  //- show usage and exit
34  vout.general("\n");
35  vout.general("usage: %s\n", argv[0]);
36  vout.general(" (without args) -- run tests interactively.\n");
37  vout.general(" test_names -- run specified tests.\n");
38  vout.general(" -a | --all -- run all tests.\n");
39  vout.general(" -l | --list -- list registered tests.\n");
40  vout.general(" -h | --help -- show this message.\n");
41  vout.general("\n");
42 
43  return EXIT_SUCCESS;
44  }
45  }
46 #endif
47 
48  Communicator::init(&argc, &argv);
49 
50 
51  // #### parameter setup ####
52  unique_ptr<Parameters> params_main(new Parameters_Main);
53  unique_ptr<Parameters> params_all(new Parameters);
54 
55  params_all->Register_Parameters("Main", params_main);
56 
57  // #### banner ####
58  vout.general(vl, "Bridge++ %s\n\n", BRIDGE_VERSION);
59 
60 
61  string filename_input = filename_main_input;
62  if (filename_input == "stdin") {
63  vout.general(vl, "input filename : ");
64  std::cin >> filename_input;
65  vout.general(vl, "%s\n", filename_input.c_str());
66  } else {
67  vout.general(vl, "input filename : %s\n", filename_input.c_str());
68  }
69  vout.general(vl, "\n");
70 
71  ParameterManager::read(filename_input, params_all);
72 
73  const std::vector<int> lattice_size = params_main->get_int_vector("lattice_size");
74  const std::vector<int> grid_size = params_main->get_int_vector("grid_size");
75  const int number_of_thread = params_main->get_int("number_of_thread");
76  const int number_of_color = params_main->get_int("number_of_color");
77  const string str_logfile = params_main->get_string("log_filename");
78  const string str_ildg_logfile = params_main->get_string("ildg_log_filename");
79  const string str_vlevel = params_main->get_string("verbose_level");
80 
81 
82  //- initializations
83  vl = vout.set_verbose_level(str_vlevel);
85 
86 // std::ofstream logfile(str_logfile.c_str());
87 // std::ofstream ildg_logfile(str_ildg_logfile.c_str());
88 
89  std::ofstream logfile;
90 
91  if (str_logfile != "stdout") {
92  logfile.open(str_logfile.c_str());
93  if (!logfile) {
94  vout.crucial(vl, "cannot open logfile: %s.\n", str_logfile.c_str());
95  exit(EXIT_FAILURE);
96  }
97  Bridge::vout.init(logfile);
98  }
99 
100  std::ofstream ildg_logfile;
101 
102  if (str_ildg_logfile != "stdout") {
103  ildg_logfile.open(str_ildg_logfile.c_str());
104  if (!ildg_logfile) {
105  vout.crucial(vl, "cannot open logfile for ildg format: %s.\n", str_ildg_logfile.c_str());
106  exit(EXIT_FAILURE);
107  }
108  Bridge::vout.ildg_init(ildg_logfile);
109  }
110 
111  // CommonParameters::init(lattice_size, grid_size);
112  CommonParameters::init(lattice_size, grid_size, number_of_color);
114 
115  ThreadManager_OpenMP::init(number_of_thread);
116 
117  int Ndim = CommonParameters::Ndim();
118  int Nvol = CommonParameters::Nvol();
119 
120 
121  //- print input parameters
122  vout.general(vl, "Main: input parameters\n");
123  for (int mu = 0; mu < Ndim; ++mu) {
124  vout.general(vl, " lattice_size[%d] = %d\n", mu, lattice_size[mu]);
125  }
126  for (int mu = 0; mu < Ndim; ++mu) {
127  vout.general(vl, " grid_size[%d] = %d\n", mu, grid_size[mu]);
128  }
129  vout.general(vl, " number of thread = %d\n", number_of_thread);
130  vout.general(vl, " number of color = %d\n", number_of_color);
131  vout.general(vl, " logfile = %s\n", str_logfile.c_str());
132  vout.general(vl, " ildg_logfile = %s\n", str_ildg_logfile.c_str());
133  vout.general(vl, " vlevel = %s\n", str_vlevel.c_str());
134  vout.general(vl, "\n");
135 
136  //- input parameter check
137  int err = 0;
138  err += ParameterCheck::non_NULL(str_logfile);
139  err += ParameterCheck::non_NULL(str_ildg_logfile);
140 
141  if (err) {
142  vout.crucial(vl, "Main: input parameters have not been set.\n");
143  exit(EXIT_FAILURE);
144  }
145 
146 
147  //- timestamp (starting time)
148  unique_ptr<Timer> timer(new Timer("Main"));
149  timer->timestamp();
150  timer->start();
151 
152 
153 #ifdef USE_TESTMANAGER
154  run_testmanager(argc, argv);
155 #else
156  run_test();
157 #endif
158 
159 
160  //- timestamp (end time)
161  timer->report();
162  timer->timestamp();
163 
164 
167 
168  return EXIT_SUCCESS;
169 }
170 
171 
172 //====================================================================
173 //============================================================END=====
BridgeIO vout
Definition: bridgeIO.cpp:278
void ildg_init(std::ostream &os)
Definition: bridgeIO.h:63
#define BRIDGE_VERSION
Definition: configure.h:18
static int init(int *pargc, char ***pargv)
initialize communicator
void general(const char *format,...)
Definition: bridgeIO.cpp:65
int get_int(const string &key) const
Definition: parameters.cpp:42
Class for parameters.
Definition: parameters.h:38
static void init_Vlevel(Bridge::VerboseLevel vlevel)
initialization for default verbose level.
static int finalize()
finalize communicator
static void init(int Nthread)
setup: called in main only once.
std::vector< int > get_int_vector(const string &key) const
Definition: parameters.cpp:72
int run_testmanager(int argc, char **argv)
static void finalize()
finalization.
void init(std::ostream &os)
Definition: bridgeIO.h:57
int non_NULL(const std::string v)
Definition: checker.cpp:61
static TestManager & Instance()
Definition: testManager.cpp:41
void start()
Definition: timer.cpp:44
static int setup(int ninstance=1)
setup communicator
void crucial(const char *format,...)
Definition: bridgeIO.cpp:48
const string filename_main_input
Definition: main.h:36
void Register_Parameters(const string &, Parameters *const)
Definition: parameters.cpp:358
Bridge::VerboseLevel vl
Definition: checker.cpp:18
VerboseLevel
Definition: bridgeIO.h:39
static void timestamp()
Definition: timer.cpp:19
static void read(const std::string &params_file, Parameters *params)
Definition: timer.h:31
int run_test()
Definition: run_test.cpp:18
string get_string(const string &key) const
Definition: parameters.cpp:87
int main(int argc, char *argv[])
Definition: main.cpp:17
void report(const Bridge::VerboseLevel vl=Bridge::GENERAL)
Definition: timer.cpp:128
static VerboseLevel set_verbose_level(const std::string &str)
Definition: bridgeIO.cpp:28
static void init(const std::vector< int > &lattice_size, const std::vector< int > &grid_size)
initialization (Nc=3 is assumed).