30#ifndef QCD_PSEUDOFERMION_TWO_FLAVOUR_EVEN_ODD_H
31#define QCD_PSEUDOFERMION_TWO_FLAVOUR_EVEN_ODD_H
41 :
public Action<typename Impl::GaugeField> {
64 PhiEven(Op.FermionRedBlackGrid()),
65 PhiOdd(Op.FermionRedBlackGrid())
68 virtual std::string
action_name(){
return "TwoFlavourEvenOddPseudoFermionAction";}
71 std::stringstream sstream;
88 RealD scale = std::sqrt(0.5);
90 FermionField eta (
FermOp.FermionGrid());
91 FermionField etaOdd (
FermOp.FermionRedBlackGrid());
92 FermionField etaEven(
FermOp.FermionRedBlackGrid());
119 FermionField X(
FermOp.FermionRedBlackGrid());
120 FermionField Y(
FermOp.FermionRedBlackGrid());
132 action = action +
norm2(Y);
134 std::cout <<
GridLogMessage <<
"Pseudofermion EO action "<<action<<std::endl;
146 virtual void deriv(
const GaugeField &
U,GaugeField & dSdU) {
149 FermionField X(
FermOp.FermionRedBlackGrid());
150 FermionField Y(
FermOp.FermionRedBlackGrid());
151 GaugeField tmp(
FermOp.GaugeGrid());
161 Mpc.
MpcDeriv(tmp , Y, X ); dSdU=tmp;
171 assert(
FermOp.ConstEE() == 1);
RealD norm2(const Lattice< vobj > &arg)
void gaussian(GridParallelRNG &rng, Lattice< vobj > &l)
void pickCheckerboard(int cb, Lattice< vobj > &half, const Lattice< vobj > &full)
GridLogger GridLogMessage(1, "Message", GridLogColours, "NORMAL")
#define NAMESPACE_BEGIN(A)
static INTERNAL_PRECISION U
Base class for all actions.
virtual void MpcDag(const Field &in, Field &out)
virtual void Mpc(const Field &in, Field &out)
void MpcDagDeriv(GaugeField &Force, const FermionField &U, const FermionField &V)
void MpcDeriv(GaugeField &Force, const FermionField &U, const FermionField &V)
void Op(const Field &in, Field &out)
virtual RealD S(const GaugeField &U)
Evaluate this action with the given gauge field.
virtual void refresh(const GaugeField &U, GridSerialRNG &sRNG, GridParallelRNG &pRNG)
Refresh pseudofermion fields.
TwoFlavourEvenOddPseudoFermionAction(FermionOperator< Impl > &Op, OperatorFunction< FermionField > &DS, OperatorFunction< FermionField > &AS)
virtual void deriv(const GaugeField &U, GaugeField &dSdU)
virtual std::string LogParameters()
Print the parameters of the action.
FermionOperator< Impl > & FermOp
OperatorFunction< FermionField > & DerivativeSolver
OperatorFunction< FermionField > & ActionSolver
virtual std::string action_name()
Report the name of the action.