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

Reduce verbose

This commit is contained in:
Quadro 2021-06-09 14:56:49 -04:00
parent 9394450c1a
commit 302356189c

View File

@ -41,15 +41,17 @@ private:
SchurFactoredFermionOperator<ImplD,ImplF> & DenOp;// the basic operator SchurFactoredFermionOperator<ImplD,ImplF> & DenOp;// the basic operator
RealD ActionStoppingCondition; RealD ActionStoppingCondition;
RealD DerivativeStoppingCondition; RealD DerivativeStoppingCondition;
RealD InnerStoppingCondition;
FermionField Phi; // the pseudo fermion field for this trajectory FermionField Phi; // the pseudo fermion field for this trajectory
RealD refresh_action; RealD refresh_action;
public: public:
DomainDecomposedBoundaryTwoFlavourPseudoFermion(SchurFactoredFermionOperator<ImplD,ImplF> &_DenOp,RealD _DerivativeTol, RealD _ActionTol ) DomainDecomposedBoundaryTwoFlavourPseudoFermion(SchurFactoredFermionOperator<ImplD,ImplF> &_DenOp,RealD _DerivativeTol, RealD _ActionTol, RealD _InnerTol = 1.0e-6 )
: DenOp(_DenOp), : DenOp(_DenOp),
DerivativeStoppingCondition(_DerivativeTol), DerivativeStoppingCondition(_DerivativeTol),
ActionStoppingCondition(_ActionTol), ActionStoppingCondition(_ActionTol),
InnerStoppingCondition(_InnerTol),
Phi(_DenOp.FermionGrid()) {}; Phi(_DenOp.FermionGrid()) {};
virtual std::string action_name(){return "DomainDecomposedBoundaryTwoFlavourPseudoFermion";} virtual std::string action_name(){return "DomainDecomposedBoundaryTwoFlavourPseudoFermion";}
@ -76,6 +78,7 @@ public:
// //
RealD scale = std::sqrt(0.5); RealD scale = std::sqrt(0.5);
DenOp.tolinner=InnerStoppingCondition;
DenOp.tol =ActionStoppingCondition; DenOp.tol =ActionStoppingCondition;
DenOp.ImportGauge(U); DenOp.ImportGauge(U);
@ -85,7 +88,7 @@ public:
DenOp.ProjectBoundaryBar(eta); DenOp.ProjectBoundaryBar(eta);
DenOp.R(eta,Phi); DenOp.R(eta,Phi);
//DumpSliceNorm("Phi",Phi);
refresh_action = norm2(eta); refresh_action = norm2(eta);
}; };
@ -94,6 +97,7 @@ public:
////////////////////////////////////////////////////// //////////////////////////////////////////////////////
virtual RealD S(const GaugeField &U) { virtual RealD S(const GaugeField &U) {
DenOp.tolinner=InnerStoppingCondition;
DenOp.tol=ActionStoppingCondition; DenOp.tol=ActionStoppingCondition;
DenOp.ImportGauge(U); DenOp.ImportGauge(U);
@ -108,6 +112,7 @@ public:
virtual void deriv(const GaugeField &U,GaugeField & dSdU) virtual void deriv(const GaugeField &U,GaugeField & dSdU)
{ {
DenOp.tolinner=InnerStoppingCondition;
DenOp.tol=DerivativeStoppingCondition; DenOp.tol=DerivativeStoppingCondition;
DenOp.ImportGauge(U); DenOp.ImportGauge(U);
@ -122,34 +127,29 @@ public:
FermionField DiDdb_Phi(fgrid); // Vector C in my notes FermionField DiDdb_Phi(fgrid); // Vector C in my notes
FermionField DidRinv_Phi(fgrid); // Vector D in my notes FermionField DidRinv_Phi(fgrid); // Vector D in my notes
FermionField DdbdDidRinv_Phi(fgrid);
FermionField Rinv_Phi(fgrid); FermionField Rinv_Phi(fgrid);
FermionField RinvDagRinv_Phi(fgrid);
// FermionField RinvDagRinv_Phi(fgrid);
// FermionField DdbdDidRinv_Phi(fgrid);
// R^-1 term // R^-1 term
DumpSliceNorm("Phi",Phi);
DenOp.dBoundaryBar(Phi,tmp); DenOp.dBoundaryBar(Phi,tmp);
DumpSliceNorm("Ddb Phi",tmp);
DenOp.Dinverse(tmp,DiDdb_Phi); // Vector C DenOp.Dinverse(tmp,DiDdb_Phi); // Vector C
DumpSliceNorm("DiDdb Phi",DiDdb_Phi);
Rinv_Phi = Phi - DiDdb_Phi; Rinv_Phi = Phi - DiDdb_Phi;
DenOp.ProjectBoundaryBar(Rinv_Phi); DenOp.ProjectBoundaryBar(Rinv_Phi);
DumpSliceNorm("Rinv Phi",Rinv_Phi);
// R^-dagger R^-1 term // R^-dagger R^-1 term
DenOp.DinverseDag(Rinv_Phi,DidRinv_Phi); // Vector D DenOp.DinverseDag(Rinv_Phi,DidRinv_Phi); // Vector D
DumpSliceNorm("DidRinv Phi",DidRinv_Phi); /*
DenOp.dBoundaryBarDag(DidRinv_Phi,DdbdDidRinv_Phi); DenOp.dBoundaryBarDag(DidRinv_Phi,DdbdDidRinv_Phi);
RinvDagRinv_Phi = Rinv_Phi - DdbdDidRinv_Phi; RinvDagRinv_Phi = Rinv_Phi - DdbdDidRinv_Phi;
DenOp.ProjectBoundaryBar(RinvDagRinv_Phi); DenOp.ProjectBoundaryBar(RinvDagRinv_Phi);
*/
X = DiDdb_Phi; X = DiDdb_Phi;
Y = DidRinv_Phi; Y = DidRinv_Phi;
DenOp.PeriodicFermOpD.MDeriv(force,Y,X,DaggerNo); dSdU=force; DenOp.PeriodicFermOpD.MDeriv(force,Y,X,DaggerNo); dSdU=force;
DenOp.PeriodicFermOpD.MDeriv(force,X,Y,DaggerYes); dSdU=dSdU+force; DenOp.PeriodicFermOpD.MDeriv(force,X,Y,DaggerYes); dSdU=dSdU+force;
DumpSliceNorm("force",dSdU);
dSdU *= -1.0; dSdU *= -1.0;
}; };
}; };