Bridge++  Ver. 1.1.x
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
test_GradientFlow.cpp
Go to the documentation of this file.
1 
13 #include "parameterManager_YAML.h"
14 #include "parameters_factory.h"
15 
16 #include "bridgeIO.h"
17 using Bridge::vout;
18 
19 #include "gaugeConfig.h"
20 
21 #include "action_G_Plaq.h"
22 #include "action_G_Rectangle.h"
23 
24 #include "gradientFlow.h"
25 
26 #ifdef USE_TEST
27 #include "test.h"
28 #endif
29 
30 #ifdef USE_TESTMANAGER_AUTOREGISTER
31 #include "testManager.h"
32 #endif
33 
34 //====================================================================
36 
43 namespace Test_GradientFlow {
44  //- test-private parameters
45  namespace {
46  const std::string filename_input = "test_GradientFlow.yaml";
47  const std::string filename_output = "stdout";
48 
49  class Parameters_Test_GradientFlow : public Parameters {
50  public:
51  Parameters_Test_GradientFlow()
52  {
53  Register_string("gauge_config_type_input", "NULL");
54  Register_string("config_filename_input", "NULL");
55 
56  Register_string("gauge_config_type_output", "NULL");
57  Register_string("config_filename_output", "NULL");
58 
59  Register_string("verbose_level", "NULL");
60 
61  Register_double("expected_result", 0.0);
62  }
63  };
64  }
65 
66  //- prototype declaration
67  int update(void);
68 
69 #ifdef USE_TESTMANAGER_AUTOREGISTER
70  namespace {
71  static const bool is_registered = TestManager::RegisterTest(
72  "GradientFlow",
73  update
74  );
75  }
76 #endif
77 
78  //====================================================================
79  int update(void)
80  {
81  // #### parameter setup ####
82  int Nvol = CommonParameters::Nvol();
83  int Ndim = CommonParameters::Ndim();
84 
85  Parameters *params_test = new Parameters_Test_GradientFlow;
86  Parameters *params_action_G = ParametersFactory::New("Action.G_Plaq");
87  Parameters *params_g_flow = ParametersFactory::New("GradientFlow");
88 
89  Parameters *params_all = new Parameters;
90 
91  params_all->Register_Parameters("Test_GradientFlow", params_test);
92  params_all->Register_Parameters("Action_G_Plaq", params_action_G);
93  params_all->Register_Parameters("GradientFlow", params_g_flow);
94 
95  ParameterManager_YAML params_manager;
96  params_manager.read_params(filename_input, params_all);
97 
98  const string str_gconf_read = params_test->get_string("gauge_config_type_input");
99  const string readfile = params_test->get_string("config_filename_input");
100  const string str_gconf_write = params_test->get_string("gauge_config_type_output");
101  const string writefile = params_test->get_string("config_filename_output");
102  const string str_vlevel = params_test->get_string("verbose_level");
103 #ifdef USE_TEST
104  const double expected_result = params_test->get_double("expected_result");
105 #endif
106 
108 
109  //- print input parameters
110  vout.general(vl, " gconf_read = %s\n", str_gconf_read.c_str());
111  vout.general(vl, " readfile = %s\n", readfile.c_str());
112  vout.general(vl, " gconf_write = %s\n", str_gconf_write.c_str());
113  vout.general(vl, " writefile = %s\n", writefile.c_str());
114  vout.general(vl, " vlevel = %s\n", str_vlevel.c_str());
115  vout.general(vl, "\n");
116 
117  //- input parameter check
118  int err = 0;
119  err += ParameterCheck::non_NULL(str_gconf_read);
120  err += ParameterCheck::non_NULL(readfile);
121  err += ParameterCheck::non_NULL(str_gconf_write);
122  err += ParameterCheck::non_NULL(writefile);
123 
124  if (err) {
125  vout.crucial(vl, "Test_GradientFlow: Input parameters have not been set.\n");
126  abort();
127  }
128 
129 
130  // #### object setup #####
131  Field_G *U = new Field_G(Nvol, Ndim);
132  GaugeConfig *gconf_read = new GaugeConfig(str_gconf_read);
133  gconf_read->read_file((Field *)U, readfile);
134  // gconf->set_cold((Field*)U);
135 
136  Action_G_Plaq *action_G = new Action_G_Plaq;
137  action_G->set_parameters(*params_action_G);
138 
139  GradientFlow *g_flow = new GradientFlow((Action * )action_G);
140  g_flow->set_parameters(*params_g_flow);
141 
142 
143  // #### Execution main part ####
144  double result = g_flow->evolve(*U); // mod. by (SM)
145 
146 
147  // #### tydy up ####
148  delete params_test;
149  delete params_action_G;
150  delete params_g_flow;
151  delete params_all;
152 
153  delete U;
154  delete gconf_read;
155  delete g_flow;
156  delete action_G;
157 
158 
159 #ifdef USE_TEST
160  return Test::verify(expected_result, result);
161 
162 #else
163  return EXIT_SUCCESS;
164 #endif
165  }
166 } // namespace Test_GradientFlow