NOX Development
Public Member Functions | Protected Attributes
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]

List of all members.

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.

Protected Attributes

double agrValue
 Stores the aggressiveness factor $a$.
double maxNonlinearSteps
 Maximum number of nonlinear iterations.

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:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends