Bridge++  Ver. 1.2.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 *params_main = new Parameters_Main;
29  Parameters *params_all = new Parameters;
30 
31  params_all->Register_Parameters("Main", params_main);
32 
33  // #### banner ####
34  vout.general(vl, "Bridge++ %s\n\n", BRIDGE_VERSION);
35 
36 
37  string filename_input = filename_main_input;
38  if (filename_input == "stdin") {
39  vout.general(vl, "input filename : ");
40  std::cin >> filename_input;
41  vout.general(vl, "%s\n", filename_input.c_str());
42  } else {
43  vout.general(vl, "input filename : %s\n", filename_input.c_str());
44  }
45  vout.general(vl, "\n");
46 
47  ParameterManager_YAML params_manager;
48  params_manager.read_params(filename_input, params_all);
49 
50  const valarray<int> lattice_size = params_main->get_int_vector("lattice_size");
51  const valarray<int> grid_size = params_main->get_int_vector("grid_size");
52  const int number_of_thread = params_main->get_int("number_of_thread");
53  const int number_of_color = params_main->get_int("number_of_color");
54  const string str_logfile = params_main->get_string("log_filename");
55  const string str_ildg_logfile = params_main->get_string("ildg_log_filename");
56  const string str_vlevel = params_main->get_string("verbose_level");
57 
58 
59  //- initializations
60  vl = vout.set_verbose_level(str_vlevel);
61 
62 // std::ofstream logfile(str_logfile.c_str());
63 // std::ofstream ildg_logfile(str_ildg_logfile.c_str());
64 
65  std::ofstream logfile;
66 
67  if (str_logfile != "stdout") {
68  logfile.open(str_logfile.c_str());
69  if (!logfile) {
70  vout.crucial(vl, "cannot open logfile: %s.\n", str_logfile.c_str());
71  abort();
72  }
73  Bridge::vout.init(logfile);
74  }
75 
76  std::ofstream ildg_logfile;
77 
78  if (str_ildg_logfile != "stdout") {
79  ildg_logfile.open(str_ildg_logfile.c_str());
80  if (!ildg_logfile) {
81  vout.crucial(vl, "cannot open logfile for ildg format: %s.\n", str_ildg_logfile.c_str());
82  abort();
83  }
84  Bridge::vout.ildg_init(ildg_logfile);
85  }
86 
87  // CommonParameters::init(lattice_size, grid_size);
88  CommonParameters::init(lattice_size, grid_size, number_of_color);
90 
91  ThreadManager_OpenMP::init(number_of_thread);
92 
93  int Ndim = CommonParameters::Ndim();
94  int Nvol = CommonParameters::Nvol();
95 
96 
97  //- print input parameters
98  vout.general(vl, "Main: input parameters\n");
99  for (int mu = 0; mu < Ndim; ++mu) {
100  vout.general(vl, " lattice_size[%d] = %d\n", mu, lattice_size[mu]);
101  }
102  for (int mu = 0; mu < Ndim; ++mu) {
103  vout.general(vl, " grid_size[%d] = %d\n", mu, grid_size[mu]);
104  }
105  vout.general(vl, " number of thread = %d\n", number_of_thread);
106  vout.general(vl, " number of color = %d\n", number_of_color);
107  vout.general(vl, " logfile = %s\n", str_logfile.c_str());
108  vout.general(vl, " ildg_logfile = %s\n", str_ildg_logfile.c_str());
109  vout.general(vl, " vlevel = %s\n", str_vlevel.c_str());
110  vout.general(vl, "\n");
111 
112  //- input parameter check
113  int err = 0;
114  err += ParameterCheck::non_NULL(str_logfile);
115  err += ParameterCheck::non_NULL(str_ildg_logfile);
116 
117  if (err) {
118  vout.crucial(vl, "Main: input parameters have not been set.\n");
119  abort();
120  }
121 
122 
123  //- timestamp (starting time)
124  Timer *timer = new Timer("Main");
125  timer->timestamp();
126  timer->start();
127 
128 
129 #ifdef USE_TESTMANAGER
130  run_testmanager(argc, argv);
131 #else
132  run_test();
133 #endif
134 
135 
136  //- timestamp (end time)
137  timer->report();
138  timer->timestamp();
139 
140 
141  // #### tydy up ####
142  delete timer;
143 
144  delete params_main;
145  delete params_all;
146 
149 
150  return EXIT_SUCCESS;
151 }
152 
153 
154 //====================================================================
155 //============================================================END=====
BridgeIO vout
Definition: bridgeIO.cpp:207
void read_params(const std::string &params_file, Parameters *params)
read parameters from file.
void ildg_init(std::ostream &os)
Definition: bridgeIO.h:49
#define BRIDGE_VERSION
Definition: configure.h:5
static int init(int *pargc, char ***pargv)
initialize communicator
std::valarray< int > get_int_vector(const string &key) const
Definition: parameters.cpp:70
void general(const char *format,...)
Definition: bridgeIO.cpp:38
int get_int(const string &key) const
Definition: parameters.cpp:40
Class for parameters.
Definition: parameters.h:40
static int finalize()
finalize communicator
int run_testmanager(int argc, char **argv)
static void finalize()
finalization.
void init(std::ostream &os)
Definition: bridgeIO.h:43
int non_NULL(const std::string v)
Definition: checker.cpp:61
static void init(const valarray< int > &lattice_size, const valarray< int > &grid_size)
initialization (Nc=3 is assumed).
void start()
Definition: timer.cpp:44
static int setup(int ninstance=1)
setup communicator
static void init(int nthread)
setup: called in main only once.
void crucial(const char *format,...)
Definition: bridgeIO.cpp:26
const string filename_main_input
Definition: main.h:36
void Register_Parameters(const string &, Parameters *const)
Definition: parameters.cpp:359
Bridge::VerboseLevel vl
Definition: checker.cpp:18
VerboseLevel
Definition: bridgeIO.h:25
static void timestamp()
Definition: timer.cpp:19
Parameter manager with YAML parser.
Definition: timer.h:31
int run_test()
Definition: run_test.cpp:18
string get_string(const string &key) const
Definition: parameters.cpp:85
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:191