NOX
Development
|
Constant step size control strategy More...
#include <LOCA_StepSize_Constant.H>
Public Member Functions | |
Constant (const Teuchos::RCP< LOCA::GlobalData > &global_data, const Teuchos::RCP< LOCA::Parameter::SublistParser > &topParams, const Teuchos::RCP< Teuchos::ParameterList > &stepsizeParams) | |
Constructor. | |
virtual | ~Constant () |
Destructor. | |
virtual NOX::Abstract::Group::ReturnType | computeStepSize (LOCA::MultiContinuation::AbstractStrategy &curGroup, const LOCA::MultiContinuation::ExtendedVector &predictor, const NOX::Solver::Generic &solver, const LOCA::Abstract::Iterator::StepStatus &stepStatus, const LOCA::Abstract::Iterator &stepper, double &stepSize) |
Compute the step size as described above. More... | |
virtual double | getPrevStepSize () const |
Returns previous step size. | |
virtual double | getStartStepSize () const |
Returns initial step size. | |
Public Member Functions inherited from LOCA::StepSize::AbstractStrategy | |
AbstractStrategy () | |
Constructor. | |
virtual | ~AbstractStrategy () |
Destructor. | |
Protected Member Functions | |
virtual NOX::Abstract::Group::ReturnType | clipStepSize (double &stepSize) |
Clip the computed step size to the bounds given by the maximum and minimum step sizes. More... | |
Protected Attributes | |
Teuchos::RCP< LOCA::GlobalData > | globalData |
Global data. | |
double | maxStepSize |
Maximum step size. | |
double | minStepSize |
Minimum step size. | |
double | startStepSize |
Initial step size. | |
double | failedFactor |
Factor by which step size is reduced after a failed step. | |
double | successFactor |
Factor by which step size is increased after a successful step. | |
double | prevStepSize |
Previous step size. | |
bool | isFirstStep |
Flag indicating if this is the first step. | |
Constant step size control strategy
This class implements a roughly constant step size control strategy. If the previous step was sucessful, the new step size is set equal to the old, otherwise the step size is cut by a supplied factor. Once a sucessful step is made, the step size is increased by a supplied factor until the initial step size is reached.
This class also incorporates rescaling of the continuation parameter when calculating a step size (common in arc-length continuation). For the first continuation step, the step size is chosen so that step size times the parameter component of the predictor is equal to the initial step size. From then on, the step size is multiplied by the step size scale factor (see ( LOCA::MultiContinuation::ArcLengthGroup) which incorporates rescaling of the continuation parameter.
The parameters used by this class supplied in the constructor are:
|
protectedvirtual |
Clip the computed step size to the bounds given by the maximum and minimum step sizes.
Returns NOX::Abstract::Group::Failed if the computed step size is smaller than the minimum step size
References NOX::Utils::Error, NOX::Abstract::Group::Failed, and NOX::Abstract::Group::Ok.
|
virtual |
Compute the step size as described above.
curGroup | [in] Current continuation group |
predictor | [in] Current predictor direction |
solver | [in] Solver from previous step |
stepStatus | [in] Status of previous step |
stepper | [in] Stepper |
stepSize | [out] Computed step size |
Implements LOCA::StepSize::AbstractStrategy.
Reimplemented in LOCA::StepSize::Adaptive.
References LOCA::Extended::Vector::getScalar(), LOCA::MultiContinuation::AbstractStrategy::getStepSizeScaleFactor(), and LOCA::Abstract::Iterator::Unsuccessful.