39 #ifdef USE_TESTMANAGER_AUTOREGISTER
54 namespace Test_Eigensolver {
57 const std::string filename_input =
"test_Eigensolver_SF.yaml";
58 const std::string filename_output =
"stdout";
60 class Parameters_Test_Eigensolver :
public Parameters {
62 Parameters_Test_Eigensolver()
64 Register_string(
"gauge_config_type_input",
"NULL");
65 Register_string(
"config_filename_input",
"NULL");
67 Register_string(
"verbose_level",
"NULL");
69 Register_double(
"expected_result", 0.0);
77 #ifdef USE_TESTMANAGER_AUTOREGISTER
80 "Eigensolver.Solve_SF",
94 Parameters *params_test =
new Parameters_Test_Eigensolver;
111 params_manager.
read_params(filename_input, params_all);
113 const string str_gconf_read = params_test->
get_string(
"gauge_config_type_input");
114 const string readfile = params_test->
get_string(
"config_filename_input");
115 const string str_vlevel = params_test->
get_string(
"verbose_level");
117 const double expected_result = params_test->
get_double(
"expected_result");
120 const string str_gmset_type = params_clover->
get_string(
"gamma_matrix_type");
121 const string str_proj_type = params_proj->
get_string(
"projection_type");
122 const string str_smear_type = params_smear->
get_string(
"smear_type");
123 const string str_sortfield_type = params_irlanczos->
get_string(
"eigensolver_mode");
124 const int Nk = params_irlanczos->
get_int(
"number_of_wanted_eigenvectors");
125 const int Np = params_irlanczos->
get_int(
"number_of_working_eigenvectors");
130 vout.
general(vl,
" gconf_read = %s\n", str_gconf_read.c_str());
131 vout.
general(vl,
" readfile = %s\n", readfile.c_str());
132 vout.
general(vl,
" vlevel = %s\n", str_vlevel.c_str());
133 vout.
general(vl,
" gmset_type = %s\n", str_gmset_type.c_str());
134 vout.
general(vl,
" proj_type = %s\n", str_proj_type.c_str());
135 vout.
general(vl,
" smear_type = %s\n", str_smear_type.c_str());
136 vout.
general(vl,
" sortfield_type = %s\n", str_sortfield_type.c_str());
145 vout.
crucial(vl,
"Test_Eigensolver: Input parameters have not been set.\n");
156 Projection *proj = Projection::New(str_proj_type);
158 Smear *smear = Smear::New(str_smear_type, proj);
172 Fopr *fopr = fopr_smear;
176 SortField *sort = SortField::New(str_sortfield_type);
185 valarray<double> TDa(Nm);
186 valarray<Field> vk(Nm);
190 int NFvol = b2.
nvol();
192 for (
int k = 0; k < Nm; ++k) {
193 vk[k].reset(NFin, NFvol, NFex);
198 eigen->
solve(TDa, vk, Nsbt, Nconv, (
Field)b2);
201 v.
reset(NFin, NFvol, NFex);
204 for (
int i = 0; i < Nsbt + 1; ++i) {
205 v = fopr->
mult(vk[i]);
209 vout.
general(vl,
"Eigenvalues: %4d %20.14f %20.15e \n", i, TDa[i], vv);
230 delete params_clover;
233 delete params_dr_smear;
234 delete params_irlanczos;