NOX  Development
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
Public Member Functions | Protected Attributes | List of all members
LOCA::StepSize::Adaptive Class Reference

Adaptive step size control strategy More...

#include <LOCA_StepSize_Adaptive.H>

Inheritance diagram for LOCA::StepSize::Adaptive:
Inheritance graph
[legend]
Collaboration diagram for LOCA::StepSize::Adaptive:
Collaboration graph
[legend]

Public Member Functions

 Adaptive (const Teuchos::RCP< LOCA::GlobalData > &global_data, const Teuchos::RCP< LOCA::Parameter::SublistParser > &topParams, const Teuchos::RCP< Teuchos::ParameterList > &stepsizeParams)
 Constructor.
 
virtual ~Adaptive ()
 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...
 
- Public Member Functions inherited from LOCA::StepSize::Constant
 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 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 Attributes

double agrValue
 Stores the aggressiveness factor $a$.
 
double maxNonlinearSteps
 Maximum number of nonlinear iterations.
 
- Protected Attributes inherited from LOCA::StepSize::Constant
Teuchos::RCP< LOCA::GlobalDataglobalData
 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.
 

Additional Inherited Members

- Protected Member Functions inherited from LOCA::StepSize::Constant
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...
 

Detailed Description

Adaptive step size control strategy

This class implements an adaptive step size control strategy derived from the strategy implemented in the LOCA::StepSize::Constant class. If the previous step was unsucessful, the step size is cut in half as in the constant strategy, but if the step was sucessful this strategy increases the step size based on the number of nonlinear solver iterations required in the previous step. In particular, the new step size $\Delta s_{new}$ is given by

\[ \Delta s_{new} = \Delta s_{old}\left(1 + a\left(\frac{N_{max} - N}{N_{max}}\right)^2\right) \]

where $a\in[0,1]$ is an aggressiveness factor, $N$ is the number of nonlinear solver iterations in the previous step, and $N_{max}$ is the maximum number of nonlinear solver iterations.

The parameters used by this class supplied in the constructor are the same as used by the Constant class in addition to:

Member Function Documentation

NOX::Abstract::Group::ReturnType LOCA::StepSize::Adaptive::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 
)
virtual

Compute the step size as described above.

Parameters
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
Returns
ReturnType code indicating success or failure Returns NOX::Abstract::Group::Failed if the computed step size is smaller than the minimum step size

Reimplemented from LOCA::StepSize::Constant.

References LOCA::StepSize::Constant::failedFactor, NOX::Solver::Generic::getNumIterations(), LOCA::Extended::Vector::getScalar(), LOCA::MultiContinuation::AbstractStrategy::getStepSizeScaleFactor(), LOCA::StepSize::Constant::isFirstStep, LOCA::StepSize::Constant::maxStepSize, LOCA::StepSize::Constant::minStepSize, LOCA::StepSize::Constant::startStepSize, and LOCA::Abstract::Iterator::Unsuccessful.


The documentation for this class was generated from the following files: