1
0
mirror of https://github.com/paboyle/Grid.git synced 2025-04-24 12:45:56 +01:00

Mixed precision & domain changes

This commit is contained in:
Quadro 2021-06-09 16:27:59 -04:00
parent 302356189c
commit e6366b98a5

View File

@ -41,6 +41,7 @@ private:
SchurFactoredFermionOperator<ImplD,ImplF> & NumOp;// the basic operator SchurFactoredFermionOperator<ImplD,ImplF> & NumOp;// the basic operator
SchurFactoredFermionOperator<ImplD,ImplF> & DenOp;// the basic operator SchurFactoredFermionOperator<ImplD,ImplF> & DenOp;// the basic operator
RealD InnerStoppingCondition;
RealD ActionStoppingCondition; RealD ActionStoppingCondition;
RealD DerivativeStoppingCondition; RealD DerivativeStoppingCondition;
@ -49,9 +50,10 @@ private:
public: public:
DomainDecomposedBoundaryTwoFlavourRatioPseudoFermion(SchurFactoredFermionOperator<ImplD,ImplF> &_NumOp, DomainDecomposedBoundaryTwoFlavourRatioPseudoFermion(SchurFactoredFermionOperator<ImplD,ImplF> &_NumOp,
SchurFactoredFermionOperator<ImplD,ImplF> &_DenOp, SchurFactoredFermionOperator<ImplD,ImplF> &_DenOp,
RealD _DerivativeTol, RealD _ActionTol) RealD _DerivativeTol, RealD _ActionTol, RealD _InnerTol=1.0e-6)
: NumOp(_NumOp), DenOp(_DenOp), : NumOp(_NumOp), DenOp(_DenOp),
Phi(_NumOp.PeriodicFermOpD.FermionGrid()), Phi(_NumOp.PeriodicFermOpD.FermionGrid()),
InnerStoppingCondition(_InnerTol),
DerivativeStoppingCondition(_DerivativeTol), DerivativeStoppingCondition(_DerivativeTol),
ActionStoppingCondition(_ActionTol) ActionStoppingCondition(_ActionTol)
{}; {};
@ -89,10 +91,13 @@ public:
gaussian(pRNG,eta); eta=eta*scale; gaussian(pRNG,eta); eta=eta*scale;
NumOp.ProjectBoundaryBar(eta); NumOp.ProjectBoundaryBar(eta);
NumOp.tolinner=InnerStoppingCondition;
DenOp.tolinner=InnerStoppingCondition;
DenOp.tol = ActionStoppingCondition; DenOp.tol = ActionStoppingCondition;
NumOp.tol = ActionStoppingCondition; NumOp.tol = ActionStoppingCondition;
DenOp.R(eta,tmp); DenOp.R(eta,tmp);
NumOp.RInv(tmp,Phi); NumOp.RInv(tmp,Phi);
DumpSliceNorm("Phi",Phi);
}; };
@ -107,6 +112,8 @@ public:
FermionField X(NumOp.PeriodicFermOpD.FermionGrid()); FermionField X(NumOp.PeriodicFermOpD.FermionGrid());
FermionField Y(NumOp.PeriodicFermOpD.FermionGrid()); FermionField Y(NumOp.PeriodicFermOpD.FermionGrid());
NumOp.tolinner=InnerStoppingCondition;
DenOp.tolinner=InnerStoppingCondition;
DenOp.tol = ActionStoppingCondition; DenOp.tol = ActionStoppingCondition;
NumOp.tol = ActionStoppingCondition; NumOp.tol = ActionStoppingCondition;
NumOp.R(Phi,Y); NumOp.R(Phi,Y);
@ -146,6 +153,8 @@ public:
FermionField PdagRinvDagRinvP_Phi(fgrid); FermionField PdagRinvDagRinvP_Phi(fgrid);
// RealD action = S(U); // RealD action = S(U);
NumOp.tolinner=InnerStoppingCondition;
DenOp.tolinner=InnerStoppingCondition;
DenOp.tol = DerivativeStoppingCondition; DenOp.tol = DerivativeStoppingCondition;
NumOp.tol = DerivativeStoppingCondition; NumOp.tol = DerivativeStoppingCondition;