32 #ifdef USE_TESTMANAGER_AUTOREGISTER
53 namespace Test_Spectrum_CRSMatrix {
56 const std::string filename_input =
"test_Spectrum_CRSMatrix_Clover_Lexical.yaml";
57 const std::string filename_output =
"stdout";
59 class Parameters_Test_Spectrum_CRSMatrix :
public Parameters {
61 Parameters_Test_Spectrum_CRSMatrix()
63 Register_string(
"gauge_config_type_input",
"NULL");
64 Register_string(
"config_filename_input",
"NULL");
66 Register_string(
"matrix_output",
"NULL");
67 Register_string(
"source_output",
"NULL");
68 Register_string(
"solution_output",
"NULL");
70 Register_string(
"verbose_level",
"NULL");
72 Register_double(
"expected_result", 0.0);
81 const string& solution,
88 #ifdef USE_TESTMANAGER_AUTOREGISTER
111 Parameters_Test_Spectrum_CRSMatrix params_test;
118 params_manager.
read_params(filename_input, ¶ms_all);
120 const string str_gconf_read = params_test.get_string(
"gauge_config_type_input");
121 const string readfile = params_test.get_string(
"config_filename_input");
122 const string matrix_file = params_test.get_string(
"matrix_output");
123 const string source_file = params_test.get_string(
"source_output");
124 const string solution_file = params_test.get_string(
"solution_output");
125 const string str_vlevel = params_test.get_string(
"verbose_level");
127 const double expected_result = params_test.get_double(
"expected_result");
133 vout.
general(vl,
" gconf_read = %s\n", str_gconf_read.c_str());
134 vout.
general(vl,
" readfile = %s\n", readfile.c_str());
135 vout.
general(vl,
" matrix_output = %s\n", matrix_file.c_str());
136 vout.
general(vl,
" source_output = %s\n", source_file.c_str());
137 vout.
general(vl,
" solution_output = %s\n", solution_file.c_str());
138 vout.
general(vl,
" vlevel = %s\n", str_vlevel.c_str());
150 vout.
crucial(vl,
"Test_Spectrum_CRSMatrix: Input parameters have not been set.\n");
166 valarray<int> boundary(Ndim);
179 double Stop_cond = 1.0e-28;
183 valarray<int> source_position(Ndim);
184 source_position[0] = 0;
185 source_position[1] = 0;
186 source_position[2] = 0;
187 source_position[3] = 0;
194 valarray<Field_F> sq(Nc * Nd);
204 source->
set(b, icolor, ispin);
214 solver->
solve(xq, b2, Nconv, diff_CG);
215 vout.
general(vl,
" ispin = %2d icolor = %2d Nconv = %4d diff = %12.6e\n",
216 ispin, icolor, Nconv, diff_CG);
222 y -= fopr_c->
mult(xq);
223 double yy = y.
norm2();
226 sq[icolor + Nc * ispin] = xq;
244 source->
set(b, icolor, ispin);
246 fopr_crs2->set_mode(
"Ddag");
251 fopr_crs2->set_mode(
"DdagD");
252 solver_crs->
solve(xq, b2, Nconv, diff_CG);
253 vout.
general(vl,
" ispin = %2d icolor = %2d Nconv = %4d diff = %12.6e\n",
254 ispin, icolor, Nconv, diff_CG);
257 fopr_crs2->set_mode(
"D");
262 sq[icolor + Nc * ispin] = xq;
269 CRSsolver(solution_file, matrix_file, source_file, result);