35template<
class ImplD,
class ImplF>
41 SchurFactoredFermionOperator<ImplD,ImplF> &
DenOp;
55 Phi(_DenOp.FermionGrid()) {};
57 virtual std::string
action_name(){
return "DomainDecomposedBoundaryTwoFlavourPseudoFermion";}
61 std::stringstream sstream;
79 RealD scale = std::sqrt(0.5);
85 FermionField eta(
DenOp.FermionGrid());
89 DenOp.ProjectBoundaryBar(eta);
104 FermionField X(
DenOp.FermionGrid());
113 virtual void deriv(
const GaugeField &
U,GaugeField & dSdU)
122 FermionField X(fgrid);
123 FermionField Y(fgrid);
124 FermionField tmp(fgrid);
126 GaugeField force(ugrid);
128 FermionField DiDdb_Phi(fgrid);
129 FermionField DidRinv_Phi(fgrid);
130 FermionField Rinv_Phi(fgrid);
137 DenOp.Dinverse(tmp,DiDdb_Phi);
138 Rinv_Phi =
Phi - DiDdb_Phi;
139 DenOp.ProjectBoundaryBar(Rinv_Phi);
142 DenOp.DinverseDag(Rinv_Phi,DidRinv_Phi);
150 DenOp.PeriodicFermOpD.MDeriv(force,Y,X,
DaggerNo); dSdU=force;
151 DenOp.PeriodicFermOpD.MDeriv(force,X,Y,
DaggerYes); dSdU=dSdU+force;
void DumpSliceNorm(std::string s, const Lattice< vobj > &f, int mu=-1)
RealD norm2(const Lattice< vobj > &arg)
void gaussian(GridParallelRNG &rng, Lattice< vobj > &l)
#define NAMESPACE_BEGIN(A)
static constexpr int DaggerYes
static constexpr int DaggerNo
static INTERNAL_PRECISION U
Base class for all actions.
virtual RealD S(const GaugeField &U)
Evaluate this action with the given gauge field.
SchurFactoredFermionOperator< ImplD, ImplF > & DenOp
RealD ActionStoppingCondition
DomainDecomposedBoundaryTwoFlavourPseudoFermion(SchurFactoredFermionOperator< ImplD, ImplF > &_DenOp, RealD _DerivativeTol, RealD _ActionTol, RealD _InnerTol=1.0e-6)
RealD InnerStoppingCondition
virtual void deriv(const GaugeField &U, GaugeField &dSdU)
INHERIT_IMPL_TYPES(ImplD)
RealD DerivativeStoppingCondition
virtual std::string LogParameters()
Print the parameters of the action.
virtual std::string action_name()
Report the name of the action.
virtual void refresh(const GaugeField &U, GridSerialRNG &sRNG, GridParallelRNG &pRNG)
Refresh pseudofermion fields.