29 #ifndef Rythmos_IMPLICITBDF_STEPPER_RAMPING_STEP_CONTROL_DECL_H
30 #define Rythmos_IMPLICITBDF_STEPPER_RAMPING_STEP_CONTROL_DECL_H
32 #include "Rythmos_ErrWtVecCalcAcceptingStepControlStrategyBase.hpp"
33 #include "Rythmos_ImplicitBDFStepperStepControl.hpp"
68 template<
class Scalar>
74 typedef typename Teuchos::ScalarTraits<Scalar>::magnitudeType ScalarMag;
82 const Scalar& stepSize,
const StepSizeType& stepSizeType);
86 StepSizeType* stepSizeType,
int* order);
91 ,
const RCP<
const Thyra::VectorBase<Scalar> >& soln
92 ,
const RCP<
const Thyra::VectorBase<Scalar> >& ee
129 void setErrWtVecCalc(
const RCP<ErrWtVecCalcBase<Scalar> >& errWtVecCalc);
140 Teuchos::FancyOStream &out,
141 const Teuchos::EVerbosityLevel verbLevel
167 int numberOfSteps()
const;
169 int numberOfFailedSteps()
const;
171 Scalar currentStepSize()
const;
173 int currentOrder()
const;
180 const Thyra::VectorBase<Scalar>& weight,
181 const Thyra::VectorBase<Scalar>& vector
184 void setStepControlState_(StepControlStrategyState state);
186 void updateCoeffs_();
189 bool doOutput_(Teuchos::EVerbosityLevel verbLevel);
193 StepControlStrategyState stepControlState_;
194 RCP<ErrWtVecCalcBase<Scalar> > errWtVecCalc_;
195 RCP<Teuchos::ParameterList> parameterList_;
197 StepSizeType stepSizeType_;
198 Scalar requestedStepSize_;
199 Scalar currentStepSize_;
201 Scalar nextStepSize_;
205 int totalNumberOfFailedSteps_;
206 int countOfConstantStepsAfterFailure_;
207 int newtonConvergenceStatus_;
212 RCP<const Thyra::VectorBase<Scalar> > ee_;
213 RCP<Thyra::VectorBase<Scalar> > errWtVec_;
214 RCP<Thyra::VectorBase<Scalar> > delta_;
215 ScalarMag relErrTol_;
216 ScalarMag absErrTol_;
219 int numConstantSteps_;
220 Scalar initialStepSize_;
223 Scalar stepSizeIncreaseFactor_;
224 Scalar stepSizeDecreaseFactor_;
227 bool useLETToDetermineConvergence_;
228 bool restrictStepSizeByNumberOfNonlinearIterations_;
229 int numberOfNonlinearIterationsForStepSizeRestriction_;
230 std::vector<Scalar> breakPoints_;
231 std::list<Scalar> currentBreakPoints_;
235 Array<Scalar> alpha_;
237 Array<Scalar> sigma_;
238 Array<Scalar> gamma_;
253 #endif // Rythmos_IMPLICITBDF_STEPPER_STEP_CONTROL_DECL_H
void describe(Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel) const
Base class for defining stepper functionality.
void setParameterList(RCP< Teuchos::ParameterList > const ¶mList)
RCP< Teuchos::ParameterList > unsetParameterList()
RCP< Teuchos::ParameterList > getNonconstParameterList()
bool supportsCloning() const
RCP< const ErrWtVecCalcBase< Scalar > > getErrWtVecCalc() const
void setStepControlData(const StepperBase< Scalar > &stepper)
StepControlStrategyState getCurrentState()
bool acceptStep(const StepperBase< Scalar > &stepper, Scalar *LETValue)
void setRequestedStepSize(const StepperBase< Scalar > &stepper, const Scalar &stepSize, const StepSizeType &stepSizeType)
Mix-in interface for step control strategy objects that accept an external error weight calculation a...
void setErrWtVecCalc(const RCP< ErrWtVecCalcBase< Scalar > > &errWtVecCalc)
void initialize(const StepperBase< Scalar > &stepper)
void setCorrection(const StepperBase< Scalar > &stepper, const RCP< const Thyra::VectorBase< Scalar > > &soln, const RCP< const Thyra::VectorBase< Scalar > > &ee, int solveStatus)
RCP< const Teuchos::ParameterList > getValidParameters() const
RCP< StepControlStrategyBase< Scalar > > cloneStepControlStrategyAlgorithm() const
void nextStepSize(const StepperBase< Scalar > &stepper, Scalar *stepSize, StepSizeType *stepSizeType, int *order)
void completeStep(const StepperBase< Scalar > &stepper)
AttemptedStepStatusFlag rejectStep(const StepperBase< Scalar > &stepper)