Bridge++  Ver. 1.3.x
fopr_Wilson.cpp
Go to the documentation of this file.
1 
14 #include "fopr_Wilson.h"
15 #include "fopr_Wilson_impl.h"
16 
17 #ifdef USE_PARAMETERS_FACTORY
18 #include "parameters_factory.h"
19 #endif
20 
21 #ifdef USE_FACTORY
22 namespace {
23  Fopr *create_object()
24  {
25  return new Fopr_Wilson();
26  }
27 
28 
29  Fopr *create_object_with_repr(const std::string& repr)
30  {
31  return new Fopr_Wilson(repr);
32  }
33 
34 
35  bool init1 = Fopr::Factory_noarg::Register("Wilson", create_object);
36  bool init2 = Fopr::Factory_string::Register("Wilson", create_object_with_repr);
37 }
38 #endif
39 
40 //- parameter entries
41 namespace {
42  void append_entry(Parameters& param)
43  {
44  param.Register_string("gamma_matrix_type", "NULL");
45  param.Register_double("hopping_parameter", 0.0);
46  param.Register_int_vector("boundary_condition", std::vector<int>());
47 
48  param.Register_string("verbose_level", "NULL");
49  }
50 
51 
52 #ifdef USE_PARAMETERS_FACTORY
53  bool init_param = ParametersFactory::Register("Fopr.Wilson", append_entry);
54 #endif
55 }
56 //- end
57 
58 //- parameters class
60 //- end
61 
62 const std::string Fopr_Wilson::class_name = "Fopr_Wilson";
63 
64 //====================================================================
66 {
67  const string str_vlevel = params.get_string("verbose_level");
68 
69  m_vl = vout.set_verbose_level(str_vlevel);
70 
71  //- fetch and check input parameters
72  double kappa;
73  std::vector<int> bc;
74 
75  int err = 0;
76  err += params.fetch_double("hopping_parameter", kappa);
77  err += params.fetch_int_vector("boundary_condition", bc);
78 
79  if (err) {
80  vout.crucial(m_vl, "%s: fetch error, input parameter not found.\n", class_name.c_str());
81  exit(EXIT_FAILURE);
82  }
83 
84  set_parameters(kappa, bc);
85 }
86 
87 
88 //====================================================================
89 void Fopr_Wilson::set_parameters(const double kappa, const std::vector<int> bc)
90 { m_impl->set_parameters(kappa, bc); }
91 
92 //====================================================================
94 { m_impl->init("Dirac"); }
95 
96 //====================================================================
97 Fopr_Wilson::Fopr_Wilson(std::string repr) : Fopr(), m_impl(new Fopr_Wilson_impl)
98 { m_impl->init(repr); }
99 
100 //====================================================================
102 
103 
104 //====================================================================
106 { m_impl->set_config(U); }
107 
108 //====================================================================
109 void Fopr_Wilson::set_mode(std::string mode)
110 { m_impl->set_mode(mode); }
111 
112 //====================================================================
113 std::string Fopr_Wilson::get_mode() const
114 { return m_impl->get_mode(); }
115 
116 
117 //====================================================================
118 void Fopr_Wilson::mult(Field& v, const Field& f)
119 { m_impl->mult(v, f); }
120 
121 //====================================================================
123 { m_impl->mult_dag(v, f); }
124 
125 //====================================================================
126 void Fopr_Wilson::proj_chiral(Field& w, const int ex1,
127  const Field& v, const int ex2, const int ipm)
128 { m_impl->proj_chiral(w, ex1, v, ex2, ipm); }
129 
130 //====================================================================
132 { m_impl->mult_gm5(w, v); }
133 
134 
135 //====================================================================
136 void Fopr_Wilson::D(Field& w, const Field& v)
137 { m_impl->D(w, v); }
138 
139 //====================================================================
140 void Fopr_Wilson::Ddag(Field& w, const Field& v)
141 { m_impl->Ddag(w, v); }
142 
143 //====================================================================
144 void Fopr_Wilson::DdagD(Field& w, const Field& v)
145 { m_impl->DdagD(w, v); }
146 
147 //====================================================================
148 void Fopr_Wilson::DDdag(Field& w, const Field& v)
149 { m_impl->DDdag(w, v); }
150 
151 //====================================================================
152 void Fopr_Wilson::H(Field& w, const Field& v)
153 { m_impl->H(w, v); }
154 
155 //====================================================================
156 void Fopr_Wilson::mult_gm5p(int mu, Field_F& v, const Field_F& w)
157 { m_impl->mult_gm5p(mu, v, w); }
158 
159 //====================================================================
160 void Fopr_Wilson::D_ex(Field& w, const int ex1,
161  const Field& v, const int ex2)
162 { m_impl->D_ex(w, ex1, v, ex2); }
163 
164 //====================================================================
166 void Fopr_Wilson::mult_up(int mu, Field& w, const Field& v)
167 { m_impl->mult_up(mu, w, v); }
168 
169 //====================================================================
170 void Fopr_Wilson::mult_dn(int mu, Field& w, const Field& v)
171 { m_impl->mult_dn(mu, w, v); }
172 
173 //====================================================================
175 { return m_impl->flop_count(); }
176 
177 //====================================================================
178 //============================================================END=====
void Register_int_vector(const string &, const std::vector< int > &)
Definition: parameters.cpp:344
BridgeIO vout
Definition: bridgeIO.cpp:278
void Register_string(const string &, const string &)
Definition: parameters.cpp:351
void set_parameters(const double kappa, const std::vector< int > bc)
void proj_chiral(Field &w, const int ex1, const Field &v, const int ex2, const int ipm)
void proj_chiral(Field &w, const int ex1, const Field &v, const int ex2, const int ipm)
void mult_dag(Field &v, const Field &f)
void D(Field &w, const Field &v)
Container of Field-type object.
Definition: field.h:39
void D_ex(Field &v, const int ex1, const Field &f, const int ex2)
void D(Field &v, const Field &f)
void mult_up(int mu, Field &w, const Field &v)
adding the hopping to nearest neighbor site in mu-th direction.
Class for parameters.
Definition: parameters.h:38
void H(Field &w, const Field &f)
void mult_gm5p(int mu, Field_F &v, const Field_F &w)
this function is used for derivatives in force calculation.
Wilson-type fermion field.
Definition: field_F.h:37
void DdagD(Field &w, const Field &f)
void D_ex(Field &w, const int ex1, const Field &v, const int ex2)
this function is assumed to be exclusively used from domain-wall fermions.
void set_config(Field *U)
setting pointer to the gauge configuration.
void mult(Field &v, const Field &f)
multiplies fermion operator to a given field (2nd argument)
void DDdag(Field &w, const Field &f)
Bridge::VerboseLevel m_vl
Definition: fopr.h:113
void DdagD(Field &w, const Field &v)
void mult_dn(int mu, Field &w, const Field &v)
void set_parameters(const Parameters &params)
Definition: fopr_Wilson.cpp:65
static const std::string class_name
Definition: fopr_Wilson.h:57
const Field_F mult_gm5p(int mu, const Field_F &w)
void Ddag(Field &w, const Field &v)
void crucial(const char *format,...)
Definition: bridgeIO.cpp:48
void set_mode(std::string mode)
void set_mode(std::string mode)
setting the mode of multiplication if necessary. Default implementation here is just to avoid irrelev...
void DDdag(Field &w, const Field &v)
void mult_gm5(Field &w, const Field &v)
static bool Register(const std::string &realm, const creator_callback &cb)
Wilson fermion operator.
void mult_up(int mu, Field &, const Field &)
void mult(Field &v, const Field &f)
void mult_gm5(Field &v, const Field &f)
void Register_double(const string &, const double)
Definition: parameters.cpp:323
std::string get_mode() const
only for Fopr_Overlap
void H(Field &w, const Field &v)
Base class of fermion operator family.
Definition: fopr.h:49
int fetch_double(const string &key, double &val) const
Definition: parameters.cpp:124
double flop_count()
this returns the number of floating point number operations.
string get_string(const string &key) const
Definition: parameters.cpp:87
void mult_dn(int mu, Field &, const Field &)
void Ddag(Field &w, const Field &f)
void mult_dag(Field &v, const Field &f)
hermitian conjugate of mult(Field&, const Field&).
void init(std::string repr)
static VerboseLevel set_verbose_level(const std::string &str)
Definition: bridgeIO.cpp:28
int fetch_int_vector(const string &key, std::vector< int > &val) const
Definition: parameters.cpp:176
Fopr_Wilson_impl * m_impl
Definition: fopr_Wilson.h:116