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" 67 template<
class Scalar>
73 typedef typename Teuchos::ScalarTraits<Scalar>::magnitudeType ScalarMag;
81 const Scalar& stepSize,
const StepSizeType& stepSizeType);
85 StepSizeType* stepSizeType,
int* order);
90 ,
const RCP<
const Thyra::VectorBase<Scalar> >& soln
91 ,
const RCP<
const Thyra::VectorBase<Scalar> >& ee
128 void setErrWtVecCalc(
const RCP<ErrWtVecCalcBase<Scalar> >& errWtVecCalc);
139 Teuchos::FancyOStream &out,
140 const Teuchos::EVerbosityLevel verbLevel
166 int numberOfSteps()
const;
168 int numberOfFailedSteps()
const;
170 Scalar currentStepSize()
const;
172 int currentOrder()
const;
179 const Thyra::VectorBase<Scalar>& weight,
180 const Thyra::VectorBase<Scalar>& vector
183 void setStepControlState_(StepControlStrategyState state);
185 void updateCoeffs_();
188 bool doOutput_(Teuchos::EVerbosityLevel verbLevel);
192 StepControlStrategyState stepControlState_;
193 RCP<ErrWtVecCalcBase<Scalar> > errWtVecCalc_;
194 RCP<Teuchos::ParameterList> parameterList_;
196 StepSizeType stepSizeType_;
197 Scalar requestedStepSize_;
198 Scalar currentStepSize_;
200 Scalar nextStepSize_;
204 int totalNumberOfFailedSteps_;
205 int countOfConstantStepsAfterFailure_;
206 int newtonConvergenceStatus_;
211 RCP<const Thyra::VectorBase<Scalar> > ee_;
212 RCP<Thyra::VectorBase<Scalar> > errWtVec_;
213 RCP<Thyra::VectorBase<Scalar> > delta_;
214 ScalarMag relErrTol_;
215 ScalarMag absErrTol_;
218 int numConstantSteps_;
219 Scalar initialStepSize_;
222 Scalar stepSizeIncreaseFactor_;
223 Scalar stepSizeDecreaseFactor_;
226 bool useLETToDetermineConvergence_;
227 bool restrictStepSizeByNumberOfNonlinearIterations_;
228 int numberOfNonlinearIterationsForStepSizeRestriction_;
232 Array<Scalar> alpha_;
234 Array<Scalar> sigma_;
235 Array<Scalar> gamma_;
250 #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)