Bridge++  Ver.2.1.3
aforce_F.h
Go to the documentation of this file.
1 
10 #ifndef AFORCE_F_INCLUDED
11 #define AFORCE_F_INCLUDED
12 
13 #include <cstdio>
14 #include <cstdlib>
15 #include <string>
16 
19 #include "lib/Fopr/afopr.h"
20 #include "lib/Field/field.h"
21 #include "lib/Field/field_G.h"
22 #include "lib/Tools/director.h"
23 #include "lib/IO/bridgeIO.h"
24 using Bridge::vout;
25 
26 #ifdef USE_FACTORY
27 #include "lib/Tools/factory.h"
28 #endif
29 
35 template<typename AFIELD>
36 class AForce_F
37 {
38  protected:
39  //Bridge::VerboseLevel m_vl;
40  static const std::string class_name;
41 
45 
46  // temporary field for corelib implementation
48  //Field_G *m_force1; //!< used for corelib implementation
49 
50  public:
52  : m_U(0) { init(); }
53 
54  virtual ~AForce_F() { tidyup(); }
55 
56  private:
58  AForce_F(const AForce_F<AFIELD>&);
59 
61  AForce_F& operator=(const AForce_F&);
62 
63  public:
64 
66  virtual void set_parameters(const Parameters& params){
67  vout.crucial("AFopr: set_parameters not implemented.\n");
68  }
69 
70  virtual void get_parameters(Parameters& params) const {
71  vout.crucial("AFopr: get_parameters not implemented.\n");
72  }
73 
75  //void set_parameter_verboselevel(const Bridge::VerboseLevel vl)
76  //{ m_vl = vl; }
77 
79  virtual void set_config(Field*) = 0;
80 
82  virtual void set_mode(const std::string& mode)
83  { /* do nothing if not defined in a subclass. */ }
84 
85 
86  // virtual void force_core(Field&, const Field&);
87  virtual void force_core(AFIELD&, const AFIELD&);
88 
89  // virtual void force_core1(Field&, const Field&, const Field&);
90  virtual void force_core1(AFIELD&, const AFIELD&, const AFIELD&);
91 
92  // virtual void force_udiv(Field&, const Field&) {}
93  virtual void force_udiv(AFIELD&, const AFIELD&) {}
94 
95  // virtual void force_udiv1(Field&, const Field&, const Field&) {}
96  virtual void force_udiv1(AFIELD&, const AFIELD&, const AFIELD&) {}
97 
98  private:
100  virtual void init();
101 
103  virtual void tidyup();
104 
105  // virtual void mult_generator(AFIELD&) {}
106  virtual void mult_generator(AFIELD&);
107 
108  // virtual void mult_generator(Field_G&) {}
109  virtual void mult_generator(Field_G&);
110 
111 
112 #ifdef USE_FACTORY
113  public:
114  typedef AForce_F *(*ProductCreator_noarg)();
115  typedef AForce_F *(*ProductCreator_string)(const std::string& arg);
116  typedef AForce_F *(*ProductCreator_params)(const Parameters& params);
117  typedef AForce_F *(*ProductCreator_fopr_params)
118  (AFopr<AFIELD> *fopr, const Parameters& params);
119  typedef AForce_F *(*ProductCreator_force_director)
120  (AForce_F<AFIELD> *force_F, Director *director);
121  //typedef AForce_F *(*ProductCreator_force_forcesmear_director)
122  // (AForce_F<AFIELD> *force_F,
123  // ForceSmear *forceSmear, Director *director);
124  typedef AForce_F *(*ProductCreator_fopr_force)
125  (AFopr<AFIELD> *fopr, AForce_F<AFIELD> *force_F);
126 
131  Factory_fopr_params;
133  Factory_force_director;
134  //typedef FactoryTemplate<AForce_F, ProductCreator_force_forcesmear_director>
135  // Factory_force_forcesmear_director;
137  Factory_fopr_force;
138 
139  static AForce_F *New(const IdentifierType& subtype)
140  {
141  ProductCreator_noarg p = Factory_noarg::Find(subtype);
142  return p ? (*p)() : 0;
143  }
144 
145  static AForce_F *New(const IdentifierType& subtype, const std::string& arg)
146  {
147  ProductCreator_string p = Factory_string::Find(subtype);
148  return p ? (*p)(arg) : 0;
149  }
150 
151  static AForce_F *New(const IdentifierType& subtype, const Parameters& params)
152  {
153  ProductCreator_params p = Factory_params::Find(subtype);
154  return p ? (*p)(params) : 0;
155  }
156 
157  static AForce_F *New(const IdentifierType& subtype,
158  AFopr<AFIELD> *fopr, const Parameters& params)
159  {
160  ProductCreator_fopr_params p = Factory_fopr_params::Find(subtype);
161  return p ? (*p)(fopr, params) : 0;
162  }
163 
164  static AForce_F *New(const IdentifierType& subtype,
165  AForce_F<AFIELD> *force_F, Director *director)
166  {
167  ProductCreator_force_director p = Factory_force_director::Find(subtype);
168  return p ? (*p)(force_F, director) : 0;
169  }
170 
171  //static AForce_F *New(const IdentifierType& subtype,
172  // AForce_F<AFIELD> *force_F, ForceSmear* forcesmear,
173  // Director *director)
174  // {
175  // ProductCreator_force_forcesmear_director p
176  // = Factory_force_forcesmear_director::Find(subtype);
177  // return p ? (*p)(force_F, forcesmear, director) : 0;
178  // }
179 
180  static AForce_F *New(const IdentifierType& subtype,
181  AFopr<AFIELD> *fopr, AForce_F<AFIELD> *force_F)
182  {
183  ProductCreator_fopr_force p = Factory_fopr_force::Find(subtype);
184  return p ? (*p)(fopr, force_F) : 0;
185  }
186 
187  /*
188  static AForce_F *New(const IdentifierType& subtype, AFopr *fopr)
189  {
190  ProductCreator_fopr p = Factory_fopr::Find(subtype);
191  return p ? (*p)(fopr) : 0;
192  }
193 
194  static AForce_F *New(const IdentifierType& subtype, unique_ptr<AFopr>& fopr)
195  {
196  ProductCreator_fopr p = Factory_fopr::Find(subtype);
197  return p ? (*p)(fopr.get()) : 0;
198  }
199 
200  static AForce_F *New(const IdentifierType& subtype, unique_ptr<AFopr>& fopr,
201  unique_ptr<Director>& director)
202  {
203  ProductCreator_fopr_director p = Factory_fopr_director::Find(subtype);
204  return p ? (*p)(fopr.get(), director.get()) : 0;
205  }
206  */
207 
208 
209 #ifdef USE_FACTORY_AUTOREGISTER
210 #else
211  static bool init_factory();
212 #endif // USE_FACTORY_AUTOREGISTER
213 
214 #endif // USE_FACTORY
215 
216 };
217 #endif // AFORCE_F_INCLUDED
218 
bridgeIO.h
field_G.h
AFopr
Definition: afopr.h:48
factory.h
AForce_F::force_udiv
virtual void force_udiv(AFIELD &, const AFIELD &)
Definition: aforce_F.h:93
Parameters
Class for parameters.
Definition: parameters.h:46
AForce_F::force_core1
virtual void force_core1(AFIELD &, const AFIELD &, const AFIELD &)
AForce_F::operator=
AForce_F & operator=(const AForce_F &)
non-copyable
AForce_F::set_mode
virtual void set_mode(const std::string &mode)
in Force, setting the mode is optional when H is nonhermitian.
Definition: aforce_F.h:82
director.h
AForce_F::AForce_F
AForce_F()
Definition: aforce_F.h:51
AForce_F::get_parameters
virtual void get_parameters(Parameters &params) const
Definition: aforce_F.h:70
AForce_F::tidyup
virtual void tidyup()
finalizer.
AForce_F::m_force_tmp
Field_G * m_force_tmp
used for corelib implementation
Definition: aforce_F.h:47
AForce_F::set_parameters
virtual void set_parameters(const Parameters &params)
sets parameters by a Parameter object: to be implemented in a subclass.
Definition: aforce_F.h:66
AForce_F
Definition: aforce_F.h:36
field.h
AForce_F::m_ut
AFIELD m_ut
working vector for gauge field
Definition: aforce_F.h:44
AForce_F::m_Ucp
AFIELD m_Ucp
Gauge configuration (converted if necessary)
Definition: aforce_F.h:43
parameters.h
AForce_F::mult_generator
virtual void mult_generator(AFIELD &)
FactoryTemplate
Definition: factory.h:42
AForce_F::set_config
virtual void set_config(Field *)=0
sets verbose level.
AForce_F::force_core
virtual void force_core(AFIELD &, const AFIELD &)
AForce_F::m_U
Field_G * m_U
Gauge configuration.
Definition: aforce_F.h:42
AForce_F::init
virtual void init()
initializer.
Director
Manager of commonly used data object in HMC.
Definition: director.h:37
commonParameters.h
Bridge::BridgeIO::crucial
void crucial(const char *format,...)
Definition: bridgeIO.cpp:242
Field
Container of Field-type object.
Definition: field.h:46
afopr.h
Field_G
SU(N) gauge field.
Definition: field_G.h:38
AForce_F::class_name
static const std::string class_name
Definition: aforce_F.h:40
AForce_F::~AForce_F
virtual ~AForce_F()
Definition: aforce_F.h:54
AForce_F::force_udiv1
virtual void force_udiv1(AFIELD &, const AFIELD &, const AFIELD &)
Definition: aforce_F.h:96
Bridge::vout
BridgeIO vout
Definition: bridgeIO.cpp:572
IdentifierType
std::string IdentifierType
Definition: factory.h:39