44 namespace Test_Eigensolver {
45 const std::string
test_name =
"Eigensolver.Solve_SF";
49 const std::string filename_input =
"test_Eigensolver_SF.yaml";
50 const std::string filename_output =
"stdout";
52 class Parameters_Test_Eigensolver :
public Parameters {
54 Parameters_Test_Eigensolver()
56 Register_string(
"gauge_config_status",
"NULL");
57 Register_string(
"gauge_config_type_input",
"NULL");
58 Register_string(
"config_filename_input",
"NULL");
60 Register_string(
"verbose_level",
"NULL");
62 Register_double(
"expected_result", 0.0);
70 #ifdef USE_TESTMANAGER_AUTOREGISTER
72 #if defined(USE_GROUP_SU2)
91 Parameters *params_test =
new Parameters_Test_Eigensolver;
107 params_manager.
read_params(filename_input, params_all);
109 const string str_gconf_status = params_test->
get_string(
"gauge_config_status");
110 const string str_gconf_read = params_test->
get_string(
"gauge_config_type_input");
111 const string readfile = params_test->
get_string(
"config_filename_input");
112 const string str_vlevel = params_test->
get_string(
"verbose_level");
114 const bool do_check = params_test->
is_set(
"expected_result");
115 const double expected_result = do_check ? params_test->
get_double(
"expected_result") : 0.0;
117 const string str_gmset_type = params_clover->
get_string(
"gamma_matrix_type");
118 const string str_proj_type = params_proj->
get_string(
"projection_type");
119 const string str_smear_type = params_smear->
get_string(
"smear_type");
120 const string str_sortfield_type = params_irlanczos->
get_string(
"eigensolver_mode");
121 const int Nk = params_irlanczos->
get_int(
"number_of_wanted_eigenvectors");
122 const int Np = params_irlanczos->
get_int(
"number_of_working_eigenvectors");
127 vout.
general(vl,
" gconf_status = %s\n", str_gconf_status.c_str());
128 vout.
general(vl,
" gconf_read = %s\n", str_gconf_read.c_str());
129 vout.
general(vl,
" readfile = %s\n", readfile.c_str());
130 vout.
general(vl,
" vlevel = %s\n", str_vlevel.c_str());
131 vout.
general(vl,
" gmset_type = %s\n", str_gmset_type.c_str());
132 vout.
general(vl,
" proj_type = %s\n", str_proj_type.c_str());
133 vout.
general(vl,
" smear_type = %s\n", str_smear_type.c_str());
134 vout.
general(vl,
" sortfield_type = %s\n", str_sortfield_type.c_str());
151 if (str_gconf_status ==
"Continue") {
153 }
else if (str_gconf_status ==
"Cold_start") {
155 }
else if (str_gconf_status ==
"Hot_start") {
159 vout.
crucial(vl,
"%s: unsupported gconf status \"%s\".\n",
test_name.c_str(), str_gconf_status.c_str());
163 Projection *proj = Projection::New(str_proj_type);
164 Smear *smear = Smear::New(str_smear_type, proj);
178 Fopr *fopr = fopr_smear;
182 SortField *sort = SortField::New(str_sortfield_type);
194 valarray<double> TDa(Nm);
195 valarray<Field> vk(Nm);
199 int NFvol = b2.
nvol();
201 for (
int k = 0; k < Nm; ++k) {
202 vk[k].reset(NFin, NFvol, NFex);
207 eigen->
solve(TDa, vk, Nsbt, Nconv, (
Field)b2);
210 v.
reset(NFin, NFvol, NFex);
213 for (
int i = 0; i < Nsbt + 1; ++i) {
214 v = fopr->
mult(vk[i]);
218 vout.
general(vl,
"Eigenvalues: %4d %20.14f %20.15e \n", i, TDa[i], vv);
221 double result = TDa[0];
228 delete params_clover;
231 delete params_dr_smear;
232 delete params_irlanczos;
255 vout.
detailed(vl,
"check skipped: expected_result not set.\n\n");
Random number generator base on M-series.
Eigenvalue solver with Implicitly Restarted Lanczos algorithm.
void read_params(const std::string ¶ms_file, Parameters *params)
read parameters from file.
void detailed(const char *format,...)
virtual const Field mult(const Field &)=0
multiplies fermion operator to a given field and returns the resultant field.
void general(const char *format,...)
const std::string test_name
virtual void set_config(Field *)=0
setting pointer to the gauge configuration.
Container of Field-type object.
virtual void set_parameters(const Parameters &)=0
int get_int(const string &key) const
static Parameters * New(const std::string &realm)
void set_random(RandomNumbers *rand)
Wilson-type fermion field.
smeared fermion operator.
static bool RegisterTest(const std::string &key, const Test_function func)
void set_parameters(const Parameters ¶ms)
bool is_set(const string &) const
double get_double(const string &key) const
void reset(const int Nin, const int Nvol, const int Nex, const element_type cmpl=COMPLEX)
int non_NULL(const std::string v)
void crucial(const char *format,...)
void Register_Parameters(const string &, Parameters *const)
base class for projection operator into gauge group.
void solve(std::valarray< double > &TDa, std::valarray< Field > &vk, int &Nsbt, int &Nconv, const Field &b)
Manager of smeared configurations.
void set_parameters(const Parameters ¶ms)
set paramters, must be called before set_config
virtual void set_mode(std::string mode)
setting the mode of multiplication if necessary. Default implementation here is just to avoid irrelev...
Base class for sorting pair instances (value,field).
base class for smearing of link variables.
Parameter manager with YAML parser.
GaugeConfig class for file I/O of gauge configuration.
Base class of fermion operator family.
int verify(const double expected, const double result)
void read_file(Field *u, const string &filename)
string get_string(const string &key) const
void report(const Bridge::VerboseLevel vl=Bridge::GENERAL)
static VerboseLevel set_verbose_level(const std::string &str)
void set_parameters(const Parameters ¶ms)