Bridge++  Ver. 1.1.x
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
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  Communicator::init(&argc, &argv);
25 
26 
27  // #### parameter setup ####
28  Parameters_Main params_main;
29 
30  Parameters params_all;
31 
32  params_all.Register_Parameters("Main", &params_main);
33 
34  string filename_input = filename_main_input;
35  if (filename_input == "stdin") {
36  vout.general(vl, "input filename : ");
37  std::cin >> filename_input;
38  vout.general(vl, "%s\n", filename_input.c_str());
39  } else {
40  vout.general(vl, "input filename : %s\n", filename_input.c_str());
41  }
42  vout.general(vl, "\n");
43 
44  ParameterManager_YAML params_manager;
45  params_manager.read_params(filename_input, &params_all);
46 
47  const valarray<int> lattice_size = params_main.get_int_vector("lattice_size");
48  const valarray<int> grid_size = params_main.get_int_vector("grid_size");
49  const string str_logfile = params_main.get_string("log_filename");
50  const string str_ildg_logfile = params_main.get_string("ildg_log_filename");
51  const string str_vlevel = params_main.get_string("verbose_level");
52 
53 
54  //- initializations
55  vl = vout.set_verbose_level(str_vlevel);
56 
57  std::ofstream logfile(str_logfile.c_str());
58  std::ofstream ildg_logfile(str_ildg_logfile.c_str());
59 
60  if (str_logfile != "stdout") {
61  Bridge::vout.init(logfile);
62  }
63  if (str_ildg_logfile != "stdout") {
64  Bridge::vout.ildg_init(ildg_logfile);
65  }
66 
67  CommonParameters::init(lattice_size, grid_size);
69 
70  int Ndim = CommonParameters::Ndim();
71  int Nvol = CommonParameters::Nvol();
72 
73 
74  //- print input parameters
75  vout.general(vl, "Parameters of Main:\n");
76  for (int mu = 0; mu < Ndim; ++mu) {
77  vout.general(vl, " lattice_size[%d] = %d\n", mu, lattice_size[mu]);
78  vout.general(vl, " grid_size[%d] = %d\n", mu, grid_size[mu]);
79  }
80  vout.general(vl, " logfile = %s\n", str_logfile.c_str());
81  vout.general(vl, " ildg_logfile = %s\n", str_ildg_logfile.c_str());
82  vout.general(vl, " vlevel = %s\n", str_vlevel.c_str());
83  vout.general(vl, "\n");
84 
85  //- input parameter check
86  int err = 0;
87  err += ParameterCheck::non_NULL(str_logfile);
88  err += ParameterCheck::non_NULL(str_ildg_logfile);
89 
90  if (err) {
91  vout.crucial(vl, "Main: input parameters have not been set.\n");
92  abort();
93  }
94 
95 
96  //- timestamp (starting time)
97  Timer *timer = new Timer;
98  timer->timestamp();
99 
100 
101 #ifdef USE_TESTMANAGER
102  run_testmanager(argc, argv);
103 #else
104  run_test();
105 #endif
106 
107 
108  //- timestamp (end time)
109  timer->timestamp();
110 
111 
112  // #### tydy up ####
113  delete timer;
114 
115 
117 
118  return EXIT_SUCCESS;
119 }
120 
121 
122 //====================================================================
123 //============================================================END=====