43 namespace Test_Eigensolver {
48 const std::string filename_input =
"test_Eigensolver.yaml";
49 const std::string filename_output =
"stdout";
51 class Parameters_Test_Eigensolver :
public Parameters {
53 Parameters_Test_Eigensolver()
55 Register_string(
"gauge_config_status",
"NULL");
56 Register_string(
"gauge_config_type_input",
"NULL");
57 Register_string(
"config_filename_input",
"NULL");
59 Register_string(
"verbose_level",
"NULL");
61 Register_double(
"expected_result", 0.0);
69 #ifdef USE_TESTMANAGER_AUTOREGISTER
71 #if defined(USE_GROUP_SU2)
90 Parameters *params_test =
new Parameters_Test_Eigensolver;
106 params_manager.
read_params(filename_input, params_all);
108 const string str_gconf_status = params_test->
get_string(
"gauge_config_status");
109 const string str_gconf_read = params_test->
get_string(
"gauge_config_type_input");
110 const string readfile = params_test->
get_string(
"config_filename_input");
111 const string str_vlevel = params_test->
get_string(
"verbose_level");
113 const bool do_check = params_test->
is_set(
"expected_result");
114 const double expected_result = do_check ? params_test->
get_double(
"expected_result") : 0.0;
116 const string str_gmset_type = params_clover->
get_string(
"gamma_matrix_type");
117 const string str_proj_type = params_proj->
get_string(
"projection_type");
118 const string str_smear_type = params_smear->
get_string(
"smear_type");
119 const string str_sortfield_type = params_irlanczos->
get_string(
"eigensolver_mode");
120 const int Nk = params_irlanczos->
get_int(
"number_of_wanted_eigenvectors");
121 const int Np = params_irlanczos->
get_int(
"number_of_working_eigenvectors");
126 vout.
general(vl,
" gconf_status = %s\n", str_gconf_status.c_str());
127 vout.
general(vl,
" gconf_read = %s\n", str_gconf_read.c_str());
128 vout.
general(vl,
" readfile = %s\n", readfile.c_str());
129 vout.
general(vl,
" vlevel = %s\n", str_vlevel.c_str());
130 vout.
general(vl,
" gmset_type = %s\n", str_gmset_type.c_str());
131 vout.
general(vl,
" proj_type = %s\n", str_proj_type.c_str());
132 vout.
general(vl,
" smear_type = %s\n", str_smear_type.c_str());
133 vout.
general(vl,
" sortfield_type = %s\n", str_sortfield_type.c_str());
150 if (str_gconf_status ==
"Continue") {
152 }
else if (str_gconf_status ==
"Cold_start") {
154 }
else if (str_gconf_status ==
"Hot_start") {
158 vout.
crucial(vl,
"%s: unsupported gconf status \"%s\".\n",
test_name.c_str(), str_gconf_status.c_str());
162 Projection *proj = Projection::New(str_proj_type);
163 Smear *smear = Smear::New(str_smear_type, proj);
175 Fopr *fopr = fopr_smear;
179 SortField *sort = SortField::New(str_sortfield_type);
191 valarray<double> TDa(Nm);
192 valarray<Field> vk(Nm);
196 int NFvol = b2.
nvol();
198 for (
int k = 0; k < Nm; ++k) {
199 vk[k].reset(NFin, NFvol, NFex);
204 eigen->
solve(TDa, vk, Nsbt, Nconv, (
Field)b2);
207 v.
reset(NFin, NFvol, NFex);
210 for (
int i = 0; i < Nsbt + 1; ++i) {
211 v = fopr->
mult(vk[i]);
215 vout.
general(vl,
"Eigenvalues: %4d %20.14f %20.15e \n", i, TDa[i], vv);
218 double result = TDa[0];
225 delete params_clover;
228 delete params_dr_smear;
229 delete params_irlanczos;
252 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)