43 #ifndef ROOT_TQpSolverBase
44 #define ROOT_TQpSolverBase
65 kSUCCESSFUL_TERMINATION = 0,
72 class TQpSolverBase :
public TObject
76 TQpLinSolverBase *fSys;
89 Double_t *fMu_history;
90 Double_t *fRnorm_history;
91 Double_t *fPhi_history;
93 Double_t *fPhi_min_history;
100 TQpSolverBase(
const TQpSolverBase &another);
102 virtual ~TQpSolverBase();
104 virtual void Start (TQpProbBase *formulation,
105 TQpVar *iterate,TQpDataBase *prob,
106 TQpResidual *resid,TQpVar *step);
108 virtual void DefStart (TQpProbBase *formulation,
109 TQpVar *iterate,TQpDataBase *prob,
110 TQpResidual *resid,TQpVar *step);
112 virtual void SteveStart (TQpProbBase *formulation,
113 TQpVar *iterate,TQpDataBase *prob,
114 TQpResidual *resid,TQpVar *step);
116 virtual void DumbStart (TQpProbBase *formulation,
117 TQpVar *iterate,TQpDataBase *prob,
118 TQpResidual *resid,TQpVar *step);
124 virtual Int_t Solve (TQpDataBase *prob,TQpVar *iterate,
125 TQpResidual *resids) = 0;
128 virtual Double_t FinalStepLength
129 (TQpVar *iterate,TQpVar *step);
132 virtual void DoMonitor (TQpDataBase *data,TQpVar *vars,
133 TQpResidual *resids,Double_t alpha,
134 Double_t sigma,Int_t i,Double_t mu,
135 Int_t stop_code,Int_t level);
137 virtual void DefMonitor (TQpDataBase *data,TQpVar *vars,
138 TQpResidual *resids,Double_t alpha,
139 Double_t sigma,Int_t i,Double_t mu,
140 Int_t stop_code,Int_t level) = 0;
143 virtual Int_t DoStatus (TQpDataBase *data,TQpVar *vars,
144 TQpResidual *resids,Int_t i,Double_t mu,
148 virtual Int_t DefStatus (TQpDataBase *data,TQpVar *vars,
149 TQpResidual *resids,Int_t i,Double_t mu,
154 TQpLinSolverBase *GetLinearSystem() {
return fSys; }
155 void SetMuTol (Double_t m) { fMutol = m; }
156 Double_t GetMuTol () {
return fMutol; }
158 void SetArTol (Double_t ar) { fArtol = ar; }
159 Double_t GetArTol () {
return fArtol; }
160 Double_t DataNorm () {
return fDnorm; }
162 TQpSolverBase &operator= (
const TQpSolverBase &source);
164 ClassDef(TQpSolverBase,1)