29#ifndef FERMIONOPERATOR_MODULES_H
30#define FERMIONOPERATOR_MODULES_H
37template <
class Product>
43template <
template <
typename>
class FOType,
class FermionImpl,
class FOPar>
49 std::unique_ptr< FOType<FermionImpl> >
FOPtr;
57 template <
class ReaderClass>
62 std::cout <<
GridLogError <<
"Adding too many Grids to the FermionOperatorModule" << std::endl;
74 virtual unsigned int Ls(){
79 std::cout << this->
Par_ << std::endl;
95template <
char const *str,
class FermionImpl,
class ReaderClass >
97 :
public Factory < FermionOperatorModuleBase<FermionOperator<FermionImpl> > , Reader<ReaderClass> > {
112 return std::string(str);
130template <
class FermionImpl >
133 using FermBase::FermBase;
138 typename FermionImpl::GaugeField
U(GridMod->get_full());
155template <
class FermionImpl >
158 using FermBase::FermBase;
160 virtual unsigned int Ls(){
161 return this->
Par_.Ls;
168 typename FermionImpl::GaugeField
U(GridMod->get_full());
170 *(GridMod5d->get_full()), *(GridMod5d->get_rb()),
171 this->Par_.mass, this->Par_.M5, this->Par_.b, this->Par_.c));
184template <
class FermionImpl >
187 using FermBase::FermBase;
189 virtual unsigned int Ls(){
190 return this->
Par_.Ls;
197 typename FermionImpl::GaugeField
U(GridMod->get_full());
199 *(GridMod5d->get_full()), *(GridMod5d->get_rb()),
200 this->Par_.mass, this->Par_.M5));
217template <
class FermionImpl >
220 using FermBase::FermBase;
222 virtual unsigned int Ls(){
223 return this->
Par_.Ls;
230 typename FermionImpl::GaugeField
U(GridMod->get_full());
232 *(GridMod5d->get_full()), *(GridMod5d->get_rb()),
233 this->Par_.mq1, this->Par_.mq2, this->Par_.mq3,
234 this->Par_.shift, this->Par_.pm, this->Par_.M5));
GridLogger GridLogError(1, "Error", GridLogColours, "RED")
#define NAMESPACE_BEGIN(A)
static INTERNAL_PRECISION U
virtual void initialize()
virtual unsigned int Ls()
FermionOperatorModule< DomainWallEOFAFermion, FermionImpl, DomainWallEOFAFermionParameters > FermBase
GRID_SERIALIZABLE_CLASS_MEMBERS(DomainWallEOFAFermionParameters, RealD, mq1, RealD, mq2, RealD, mq3, RealD, shift, int, pm, RealD, M5, unsigned int, Ls)
virtual unsigned int Ls()
virtual void initialize()
FermionOperatorModule< DomainWallFermion, FermionImpl, DomainWallFermionParameters > FermBase
GRID_SERIALIZABLE_CLASS_MEMBERS(DomainWallFermionParameters, RealD, mass, RealD, M5, unsigned int, Ls)
virtual void AddGridPair(GridModule &)=0
std::unique_ptr< WilsonFermion< FermionImpl > > FOPtr
virtual void print_parameters()
void AddGridPair(GridModule &Mod)
virtual void initialize()=0
HMCModuleBase< FermionOperator< FermionImpl > > Base
virtual unsigned int Ls()
std::vector< GridModule * > GridRefs
FermionOperatorModule(FOPar Par)
FermionOperatorModule(Reader< ReaderClass > &Reader)
FermionOperator< FermionImpl > Product
Reader< ReaderClass > TheReader
HMC_FermionOperatorModuleFactory(const HMC_FermionOperatorModuleFactory &e)=delete
void operator=(const HMC_FermionOperatorModuleFactory &e)=delete
HMC_FermionOperatorModuleFactory(void)=default
static HMC_FermionOperatorModuleFactory & getInstance(void)
std::string obj_type() const
virtual unsigned int Ls()
FermionOperatorModule< MobiusFermion, FermionImpl, MobiusFermionParameters > FermBase
virtual void initialize()
GRID_SERIALIZABLE_CLASS_MEMBERS(MobiusFermionParameters, RealD, mass, RealD, M5, RealD, b, RealD, c, unsigned int, Ls)
Parametrized(Parameters Par)
static GridCartesian * makeFiveDimGrid(int Ls, const GridCartesian *FourDimGrid)
static GridRedBlackCartesian * makeFiveDimRedBlackGrid(int Ls, const GridCartesian *FourDimGrid)
virtual void initialize()
FermionOperatorModule< WilsonFermion, FermionImpl, WilsonFermionParameters > FermBase
GRID_SERIALIZABLE_CLASS_MEMBERS(WilsonFermionParameters, RealD, mass)