30#ifndef QCD_PSEUDOFERMION_TWO_FLAVOUR_H
31#define QCD_PSEUDOFERMION_TWO_FLAVOUR_H
62 Phi(Op.FermionGrid()){};
65 virtual std::string
action_name(){
return "TwoFlavourPseudoFermionAction";}
68 std::stringstream sstream;
93 const RealD scale = std::sqrt(0.5);
95 FermionField eta(
FermOp.FermionGrid());
97 gaussian(pRNG, eta); eta = scale *eta;
109 FermionField X(
FermOp.FermionGrid());
110 FermionField Y(
FermOp.FermionGrid());
118 std::cout <<
GridLogMessage <<
"Pseudofermion action " << action << std::endl;
131 virtual void deriv(
const GaugeField &
U, GaugeField &dSdU) {
134 FermionField X(
FermOp.FermionGrid());
135 FermionField Y(
FermOp.FermionGrid());
136 GaugeField tmp(
FermOp.GaugeGrid());
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.
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.
virtual void deriv(const GaugeField &U, GaugeField &dSdU)
virtual std::string action_name()
Report the name of the action.
OperatorFunction< FermionField > & DerivativeSolver
OperatorFunction< FermionField > & ActionSolver
TwoFlavourPseudoFermionAction(FermionOperator< Impl > &Op, OperatorFunction< FermionField > &DS, OperatorFunction< FermionField > &AS)
FermionOperator< Impl > & FermOp
virtual std::string LogParameters()
Print the parameters of the action.