From ad406b2c3e2e1af101864acc3d7af7547447c44b Mon Sep 17 00:00:00 2001 From: Quadro Date: Wed, 9 Jun 2021 16:29:15 -0400 Subject: [PATCH] Provide a call back for subdomain solve / local domain pseudofermion restriction --- Grid/qcd/action/pseudofermion/TwoFlavourEvenOddRatio.h | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/Grid/qcd/action/pseudofermion/TwoFlavourEvenOddRatio.h b/Grid/qcd/action/pseudofermion/TwoFlavourEvenOddRatio.h index e9dfdee0..ced7312b 100644 --- a/Grid/qcd/action/pseudofermion/TwoFlavourEvenOddRatio.h +++ b/Grid/qcd/action/pseudofermion/TwoFlavourEvenOddRatio.h @@ -50,6 +50,8 @@ NAMESPACE_BEGIN(Grid); FermionField PhiOdd; // the pseudo fermion field for this trajectory FermionField PhiEven; // the pseudo fermion field for this trajectory + virtual void refreshRestrict(FermionField &eta) {}; + public: TwoFlavourEvenOddRatioPseudoFermionAction(FermionOperator &_NumOp, FermionOperator &_DenOp, @@ -60,7 +62,8 @@ NAMESPACE_BEGIN(Grid); TwoFlavourEvenOddRatioPseudoFermionAction(FermionOperator &_NumOp, FermionOperator &_DenOp, OperatorFunction & DS, - OperatorFunction & AS, OperatorFunction & HS) : + OperatorFunction & AS, + OperatorFunction & HS) : NumOp(_NumOp), DenOp(_DenOp), DerivativeSolver(DS), @@ -93,6 +96,7 @@ NAMESPACE_BEGIN(Grid); FermionField eta (NumOp.FermionGrid()); gaussian(pRNG,eta); eta = eta * scale; + refreshRestrict(eta); // Used by DDHMC refresh(U,eta); } @@ -177,7 +181,7 @@ NAMESPACE_BEGIN(Grid); NumOp.ImportGauge(U); DenOp.ImportGauge(U); - + SchurDifferentiableOperator Mpc(DenOp); SchurDifferentiableOperator Vpc(NumOp); @@ -212,7 +216,7 @@ NAMESPACE_BEGIN(Grid); assert(DenOp.ConstEE() == 1); dSdU = -dSdU; - + }; }; NAMESPACE_END(Grid);