28#ifndef QCD_PSEUDOFERMION_ONE_FLAVOUR_RATIONAL_H
29#define QCD_PSEUDOFERMION_ONE_FLAVOUR_RATIONAL_H
86 virtual std::string
action_name(){
return "OneFlavourRationalPseudoFermionAction";}
89 std::stringstream sstream;
113 RealD scale = std::sqrt(0.5);
115 FermionField eta(
FermOp.FermionGrid());
124 msCG(MdagMOp,eta,
Phi);
137 FermionField Y(
FermOp.FermionGrid());
145 auto grid =
FermOp.FermionGrid();
147 grid->Broadcast(0,r);
148 if ( (r%
param.BoundsCheckFreq)==0 ) {
149 FermionField gauss(
FermOp.FermionGrid());
157 std::cout <<
GridLogMessage <<
"Pseudofermion action FIXME -- is -1/4 solve or -1/2 solve faster??? "<<action<<std::endl;
182 virtual void deriv(
const GaugeField &
U,GaugeField & dSdU) {
186 std::vector<FermionField> MPhi_k (Npole,
FermOp.FermionGrid());
188 FermionField X(
FermOp.FermionGrid());
189 FermionField Y(
FermOp.FermionGrid());
191 GaugeField tmp(
FermOp.GaugeGrid());
199 msCG(MdagMOp,
Phi,MPhi_k);
202 for(
int k=0;k<Npole;k++){
void InverseSqrtBoundsCheck(int MaxIter, double tol, LinearOperatorBase< Field > &HermOp, Field &GaussNoise, MultiShiftFunction &PowerNegHalf)
void HighBoundCheck(LinearOperatorBase< Field > &HermOp, Field &Phi, RealD hi)
RealD norm2(const Lattice< vobj > &arg)
void gaussian(GridParallelRNG &rng, Lattice< vobj > &l)
GridLogger GridLogMessage(1, "Message", GridLogColours, "NORMAL")
#define NAMESPACE_BEGIN(A)
static constexpr int DaggerYes
static constexpr int DaggerNo
static INTERNAL_PRECISION U
Base class for all actions.
double generateApprox(int num_degree, int den_degree, unsigned long power_num, unsigned long power_den, int a_len, double *a_param, int *a_pow)
OneFlavourRationalParams Params
virtual std::string LogParameters()
Print the parameters of the action.
MultiShiftFunction PowerHalf
virtual RealD S(const GaugeField &U)
Evaluate this action with the given gauge field.
virtual std::string action_name()
Report the name of the action.
MultiShiftFunction PowerNegHalf
FermionOperator< Impl > & FermOp
MultiShiftFunction PowerNegQuarter
virtual void deriv(const GaugeField &U, GaugeField &dSdU)
virtual void refresh(const GaugeField &U, GridSerialRNG &sRNG, GridParallelRNG &pRNG)
Refresh pseudofermion fields.
MultiShiftFunction PowerQuarter
OneFlavourRationalPseudoFermionAction(FermionOperator< Impl > &Op, Params &p)