Bridge++  Ver. 1.1.x
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
test_Gauge_Shift.cpp
Go to the documentation of this file.
1 
14 #include "parameterManager_YAML.h"
15 
16 #include "bridgeIO.h"
17 using Bridge::vout;
18 
19 #include "index_lex.h"
20 // #include "index_eo.h"
21 
22 #include "gaugeConfig.h"
23 #include "staples.h"
24 
25 #include "shiftField_lex.h"
26 
27 #ifdef USE_TEST
28 #include "test.h"
29 #endif
30 
31 #ifdef USE_TESTMANAGER_AUTOREGISTER
32 #include "testManager.h"
33 #endif
34 
35 //====================================================================
37 
44 namespace Test_Gauge {
45  //- test-private parameters
46  namespace {
47  const std::string filename_input = "test_Gauge.yaml";
48  const std::string filename_output = "stdout";
49 
50  class Parameters_Test_Gauge : public Parameters {
51  public:
52  Parameters_Test_Gauge()
53  {
54  Register_string("gauge_config_type_input", "NULL");
55  Register_string("config_filename_input", "NULL");
56 
57  Register_string("verbose_level", "NULL");
58 
59  Register_double("expected_result", 0.0);
60  }
61  };
62  }
63 
64  //- prototype declaration
65  int shift(void);
66 
67 #ifdef USE_TESTMANAGER_AUTOREGISTER
68  namespace {
69  static const bool is_registered = TestManager::RegisterTest(
70  "Gauge.Shift",
71  shift
72  );
73  }
74 #endif
75 
76  //====================================================================
77  int shift(void)
78  {
79  // ##### parameter setup #####
80  int Nvol = CommonParameters::Nvol();
81  int Ndim = CommonParameters::Ndim();
82 
83  Parameters_Test_Gauge params_test;
84 
85  Parameters params_all;
86 
87  params_all.Register_Parameters("Test_Gauge", &params_test);
88 
89  ParameterManager_YAML params_manager;
90  params_manager.read_params(filename_input, &params_all);
91 
92  const string str_gconf_read = params_test.get_string("gauge_config_type_input");
93  const string readfile = params_test.get_string("config_filename_input");
94  const string str_vlevel = params_test.get_string("verbose_level");
95 #ifdef USE_TEST
96  const double expected_result = params_test.get_double("expected_result");
97 #endif
98 
100 
101  //- print input parameters
102  vout.general(vl, " gconf_read = %s\n", str_gconf_read.c_str());
103  vout.general(vl, " readfile = %s\n", readfile.c_str());
104  vout.general(vl, " vlevel = %s\n", str_vlevel.c_str());
105  vout.general(vl, "\n");
106 
107  //- input parameter check
108  int err = 0;
109  err += ParameterCheck::non_NULL(str_gconf_read);
110  err += ParameterCheck::non_NULL(readfile);
111 
112  if (err) {
113  vout.crucial(vl, "Test_Gauge: Input parameters have not been set.\n");
114  abort();
115  }
116 
117 
118  // #### object setup #####
119  Field_G *U = new Field_G(Nvol, Ndim);
120  GaugeConfig *gconf_read = new GaugeConfig(str_gconf_read);
121  gconf_read->read_file((Field *)U, readfile);
122  // gconf_read->set_cold((Field*)U);
123 
124  Index_lex *index = new Index_lex;
126 
127  Field_G *U2 = new Field_G(Nvol, Ndim);
128  Staples *staple = new Staples;
129 
130 
131  // #### Execution main part ####
132  shift.backward(*U2, *U, 3);
133  vout.general(vl, "U = %.8f\n", U->cmp(17, index->site(0, 0, 0, 0), 2));
134  vout.general(vl, "U2 = %.8f\n", U2->cmp(17, index->site(0, 0, 0, 7), 2));
135  vout.general(vl, "\n");
136 
137  shift.forward(*U2, *U, 0);
138  vout.general(vl, "U = %.8f\n", U->cmp(17, index->site(0, 0, 0, 0), 3));
139  vout.general(vl, "U2 = %.8f\n", U2->cmp(17, index->site(1, 0, 0, 0), 3));
140  vout.general(vl, "\n");
141 
142  double result;
143  int nodeid = Communicator::nodeid();
144 
145  result = staple->plaquette(*U);
146  vout.general(vl, "plaq (original field) = %d %.8f\n", nodeid, result);
147 
148  result = staple->plaquette(*U2);
149  vout.general(vl, "plaq (shifted field) = %d %.8f\n", nodeid, result);
150 
151 
152  // #### tydy up ####
153  delete U;
154  delete U2;
155  delete gconf_read;
156 
157  delete staple; // added by s.motoki[12/06/05].
158  delete index; // added by s.motoki[12/06/05].
159 
160 
161 #ifdef USE_TEST
162  return Test::verify(expected_result, result);
163 
164 #else
165  return EXIT_SUCCESS;
166 #endif
167  }
168 } // namespace Test_Gauge