29#ifndef ACTION_MODULES_H
30#define ACTION_MODULES_H
43template <
class Product,
class R>
52template <
class ActionType,
class APar>
55 public ActionModuleBase< Action<typename ActionType::GaugeField> , GridModule > {
65 template <
class ReaderClass>
115template <
class Impl >
118 using ActionBase::ActionBase;
127template <
class Impl >
130 using ActionBase::ActionBase;
139template <
class Impl >
142 using ActionBase::ActionBase;
154template <
class Impl >
157 using ActionBase::ActionBase;
166template <
class Impl >
169 using ActionBase::ActionBase;
179template <
class Impl >
182 using ActionBase::ActionBase;
196template <
class Impl,
template <
typename>
class FermionA,
class Params =
NoParameters >
200 using ActionBase::ActionBase;
202 typedef std::unique_ptr<FermionOperatorModuleBase<FermionOperator<Impl>> >
operator_type;
203 typedef std::unique_ptr<HMCModuleBase<OperatorFunction<typename Impl::FermionField> > >
solver_type;
205 template <
class ReaderClass>
210 read(Reader,
"name", op_name);
211 fo = FOFactory.create(op_name, Reader);
215 template <
class ReaderClass>
219 std::string solv_name;
220 read(Reader,
"name", solv_name);
221 so = SolverFactory.create(solv_name, Reader);
227template <
class Impl >
241 template <
class ReaderClass>
256template <
class Impl >
270 template <
class ReaderClass>
285template <
class Impl >
301 template <
class ReaderClass>
312 *(this->fop_denominator_mod->getPtr()), *(this->solver_mod->getPtr()), *(this->solver_mod->getPtr())));
317template <
class Impl >
333 template <
class ReaderClass>
344 *(this->fop_denominator_mod->getPtr()), *(this->solver_mod->getPtr()), *(this->solver_mod->getPtr())));
350template <
class Impl >
363 template <
class ReaderClass>
375template <
class Impl >
390 template <
class ReaderClass>
403template <
class Impl >
421 template <
class ReaderClass>
430 *(this->fop_denominator_mod->getPtr()),
437template <
class Impl >
439 public PseudoFermionModuleBase<Impl, OneFlavourEvenOddRatioRationalPseudoFermionAction, OneFlavourRationalParams>
455 template <
class ReaderClass>
464 *(this->fop_denominator_mod->getPtr()),
480template <
char const *str,
class Field,
class ReaderClass >
482 :
public Factory < ActionModuleBase< Action< Field >, GridModule > , Reader<ReaderClass> > {
496 return std::string(str);
#define NAMESPACE_BEGIN(A)
virtual void acquireResource(R &)
ActionModule(Reader< ReaderClass > &Reader)
ActionModuleBase< Action< typename ActionType::GaugeField >, GridModule > Base
virtual void initialize()=0
std::unique_ptr< WilsonGaugeAction< Impl > > ActionPtr
virtual void print_parameters()
GRID_SERIALIZABLE_CLASS_MEMBERS(BetaGaugeActionParameters, RealD, beta)
ActionModule< DBW2GaugeAction< Impl >, BetaGaugeActionParameters > ActionBase
virtual void initialize()
The "doubly blocked from Wilson action in two coupling space" (DBW2 for short), introduced by Takaish...
Action< typename ActionType::GaugeField > Product
static HMC_ActionModuleFactory & getInstance(void)
std::string obj_type() const
Reader< ReaderClass > TheReader
void operator=(const HMC_ActionModuleFactory &e)=delete
HMC_ActionModuleFactory(void)=default
HMC_ActionModuleFactory(const HMC_ActionModuleFactory &e)=delete
static HMC_FermionOperatorModuleFactory & getInstance(void)
static HMC_SolverModuleFactory & getInstance(void)
ActionModule< IwasakiGaugeAction< Impl >, BetaGaugeActionParameters > ActionBase
virtual void initialize()
The Iwasaki gauge action, model IM11 in arXiv:1111.7054.
OneFlavourEOFModule(Reader< ReaderClass > &R)
virtual void initialize()
virtual void acquireResource(typename Base::Resource &GridMod)
Base::operator_type fop_mod
PseudoFermionModuleBase< Impl, OneFlavourEvenOddRationalPseudoFermionAction, OneFlavourRationalParams > Base
OneFlavourFModule(Reader< ReaderClass > &R)
virtual void initialize()
Base::operator_type fop_mod
PseudoFermionModuleBase< Impl, OneFlavourRationalPseudoFermionAction, OneFlavourRationalParams > Base
virtual void acquireResource(typename Base::Resource &GridMod)
Base::operator_type fop_denominator_mod
PseudoFermionModuleBase< Impl, OneFlavourEvenOddRatioRationalPseudoFermionAction, OneFlavourRationalParams > Base
virtual void acquireResource(typename Base::Resource &GridMod)
virtual void initialize()
OneFlavourRatioEOFModule(Reader< ReaderClass > &R)
Base::operator_type fop_numerator_mod
PseudoFermionModuleBase< Impl, OneFlavourRatioRationalPseudoFermionAction, OneFlavourRationalParams > Base
virtual void initialize()
virtual void acquireResource(typename Base::Resource &GridMod)
OneFlavourRatioFModule(Reader< ReaderClass > &R)
Base::operator_type fop_denominator_mod
Base::operator_type fop_numerator_mod
Parametrized(Parameters Par)
Plaquette plus rectangle actions.
virtual void initialize()
ActionModule< PlaqPlusRectangleAction< Impl >, PlaqPlusRectangleGaugeActionParameters > ActionBase
GRID_SERIALIZABLE_CLASS_MEMBERS(PlaqPlusRectangleGaugeActionParameters, RealD, c_plaq, RealD, c_rect)
void getFermionOperator(Reader< ReaderClass > &Reader, operator_type &fo, std::string section_name)
ActionModule< FermionA< Impl >, Params > ActionBase
std::unique_ptr< FermionOperatorModuleBase< FermionOperator< Impl > > > operator_type
void getSolverOperator(Reader< ReaderClass > &Reader, solver_type &so, std::string section_name)
std::unique_ptr< HMCModuleBase< OperatorFunction< typename Impl::FermionField > > > solver_type
virtual void initialize()
ActionModule< RBCGaugeAction< Impl >, RBCGaugeActionParameters > ActionBase
GRID_SERIALIZABLE_CLASS_MEMBERS(RBCGaugeActionParameters, RealD, beta, RealD, c1)
Convenience class for common physically defined cases.
virtual void initialize()
ActionModule< SymanzikGaugeAction< Impl >, BetaGaugeActionParameters > ActionBase
The tree-level Symanzik improved gauge action, introduced in Nucl.Phys.B 236 (1984) 397.
virtual void acquireResource(typename Base::Resource &GridMod)
virtual void initialize()
TwoFlavourEOFModule(Reader< ReaderClass > &R)
PseudoFermionModuleBase< Impl, TwoFlavourEvenOddPseudoFermionAction > Base
Base::solver_type solver_mod
Base::operator_type fop_mod
Base::solver_type solver_mod
Base::operator_type fop_mod
TwoFlavourFModule(Reader< ReaderClass > &R)
virtual void initialize()
virtual void acquireResource(typename Base::Resource &GridMod)
PseudoFermionModuleBase< Impl, TwoFlavourPseudoFermionAction > Base
PseudoFermionModuleBase< Impl, TwoFlavourEvenOddRatioPseudoFermionAction > Base
Base::operator_type fop_denominator_mod
virtual void acquireResource(typename Base::Resource &GridMod)
TwoFlavourRatioEOFModule(Reader< ReaderClass > &R)
Base::solver_type solver_mod
Base::operator_type fop_numerator_mod
virtual void initialize()
Base::operator_type fop_numerator_mod
PseudoFermionModuleBase< Impl, TwoFlavourRatioPseudoFermionAction > Base
Base::operator_type fop_denominator_mod
virtual void initialize()
TwoFlavourRatioFModule(Reader< ReaderClass > &R)
Base::solver_type solver_mod
virtual void acquireResource(typename Base::Resource &GridMod)
virtual void initialize()
ActionModule< WilsonGaugeAction< Impl >, BetaGaugeActionParameters > ActionBase
The Wilson gauge action, as introduced in Wilson, Phys. Rev. D 10, 2445. See for example Gattringer a...