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

Mixed prec tolerance changes

This commit is contained in:
Quadro 2021-06-09 12:57:03 -04:00
parent 6dcaed621c
commit 5fdbb924f0

View File

@ -39,19 +39,20 @@ public:
private: private:
SchurFactoredFermionOperator<ImplD,ImplF> & NumOp;// the basic operator SchurFactoredFermionOperator<ImplD,ImplF> & NumOp;// the basic operator
RealD InnerStoppingCondition;
RealD ActionStoppingCondition; RealD ActionStoppingCondition;
RealD DerivativeStoppingCondition; RealD DerivativeStoppingCondition;
FermionField Phi; // the pseudo fermion field for this trajectory FermionField Phi; // the pseudo fermion field for this trajectory
public: public:
DomainDecomposedBoundaryTwoFlavourBosonPseudoFermion(SchurFactoredFermionOperator<ImplD,ImplF> &_NumOp,RealD _DerivativeTol, RealD _ActionTol) DomainDecomposedBoundaryTwoFlavourBosonPseudoFermion(SchurFactoredFermionOperator<ImplD,ImplF> &_NumOp,RealD _DerivativeTol, RealD _ActionTol, RealD _InnerTol=1.0e-6)
: NumOp(_NumOp), : NumOp(_NumOp),
DerivativeStoppingCondition(_DerivativeTol), DerivativeStoppingCondition(_DerivativeTol),
ActionStoppingCondition(_ActionTol), ActionStoppingCondition(_ActionTol),
InnerStoppingCondition(_InnerTol),
Phi(_NumOp.FermionGrid()) {}; Phi(_NumOp.FermionGrid()) {};
virtual std::string action_name(){return "DomainDecomposedBoundaryTwoFlavourBosonPseudoFermion";} virtual std::string action_name(){return "DomainDecomposedBoundaryTwoFlavourBosonPseudoFermion";}
virtual std::string LogParameters(){ virtual std::string LogParameters(){
std::stringstream sstream; std::stringstream sstream;
return sstream.str(); return sstream.str();
@ -73,6 +74,7 @@ public:
// //
RealD scale = std::sqrt(0.5); RealD scale = std::sqrt(0.5);
NumOp.tolinner=InnerStoppingCondition;
NumOp.tol=ActionStoppingCondition; NumOp.tol=ActionStoppingCondition;
NumOp.ImportGauge(U); NumOp.ImportGauge(U);
@ -81,9 +83,10 @@ public:
gaussian(pRNG,eta); eta=eta*scale; gaussian(pRNG,eta); eta=eta*scale;
NumOp.ProjectBoundaryBar(eta); NumOp.ProjectBoundaryBar(eta);
//DumpSliceNorm("eta",eta);
NumOp.RInv(eta,Phi); NumOp.RInv(eta,Phi);
//DumpSliceNorm("Phi",Phi,-1); //DumpSliceNorm("Phi",Phi);
}; };
@ -92,6 +95,7 @@ public:
////////////////////////////////////////////////////// //////////////////////////////////////////////////////
virtual RealD S(const GaugeField &U) { virtual RealD S(const GaugeField &U) {
NumOp.tolinner=InnerStoppingCondition;
NumOp.tol=ActionStoppingCondition; NumOp.tol=ActionStoppingCondition;
NumOp.ImportGauge(U); NumOp.ImportGauge(U);
@ -106,6 +110,7 @@ public:
virtual void deriv(const GaugeField &U,GaugeField & dSdU) virtual void deriv(const GaugeField &U,GaugeField & dSdU)
{ {
NumOp.tolinner=InnerStoppingCondition;
NumOp.tol=DerivativeStoppingCondition; NumOp.tol=DerivativeStoppingCondition;
NumOp.ImportGauge(U); NumOp.ImportGauge(U);