#include <LOCA_MultiContinuation_ExtendedGroup.H>
Inheritance diagram for LOCA::MultiContinuation::ExtendedGroup:
Public Member Functions | |
| ExtendedGroup (LOCA::MultiContinuation::AbstractGroup &grp, const vector< int > ¶mIDs, NOX::Parameter::List ¶ms) | |
| Constructor with integer continuation parameter ids. | |
| ExtendedGroup (LOCA::MultiContinuation::AbstractGroup &grp, const string ¶mID, NOX::Parameter::List ¶ms) | |
| Constructor for single parameter continuation. | |
| ExtendedGroup (const ExtendedGroup &source, NOX::CopyType type=NOX::DeepCopy) | |
| Copy constructor. | |
| virtual | ~ExtendedGroup () |
| Destructor. | |
| virtual ExtendedGroup & | operator= (const ExtendedGroup &source) |
| Assignment operator. | |
Virtual interface for all continuation methods | |
| virtual NOX::Abstract::Group::ReturnType | computeConstraints ()=0 |
| Compute continuation constraint equations. | |
| virtual NOX::Abstract::Group::ReturnType | computeConstraintDerivatives ()=0 |
| Compute continuation constraint equations. | |
| virtual bool | isConstraints () const =0 |
Return true if constraint residuals are valid. | |
| virtual bool | isConstraintDerivatives () const =0 |
Return true if constraint derivatives are valid. | |
| virtual const NOX::Abstract::MultiVector::DenseMatrix & | getConstraints () const =0 |
| Return constraint residuals. | |
| virtual const NOX::Abstract::MultiVector * | getConstraintDerivativesX () const =0 |
| Return solution component of constraint derivatives. | |
| virtual const NOX::Abstract::MultiVector::DenseMatrix * | getConstraintDerivativesP () const =0 |
| Return parameter component of constraint derivatives. | |
| virtual bool | isConstraintDerivativesXZero () const =0 |
Return true if solution component of constraint derivatives is zero. | |
| virtual bool | isConstraintDerivativesPZero () const =0 |
Return true if solution component of constraint derivatives is zero. | |
Implementation of NOX::Abstract::Group virtual methods | |
| virtual NOX::Abstract::Group & | operator= (const NOX::Abstract::Group &source) |
| Assignment operator. | |
| virtual void | setX (const NOX::Abstract::Vector &y) |
| Set the solution vector to y. | |
| virtual void | computeX (const NOX::Abstract::Group &g, const NOX::Abstract::Vector &d, double step) |
| Compute and return solution vector, x, where this.x = grp.x + step * d. | |
| virtual NOX::Abstract::Group::ReturnType | computeF () |
| Compute extended continuation equations. | |
| virtual NOX::Abstract::Group::ReturnType | computeJacobian () |
| Compute extended continuation jacobian. | |
| virtual NOX::Abstract::Group::ReturnType | computeGradient () |
| Gradient is not defined for this system. | |
| virtual NOX::Abstract::Group::ReturnType | computeNewton (NOX::Parameter::List ¶ms) |
| Compute Newton direction for extended continuation system. | |
| virtual NOX::Abstract::Group::ReturnType | applyJacobian (const NOX::Abstract::Vector &input, NOX::Abstract::Vector &result) const |
| Applies Jacobian for extended system. | |
| virtual NOX::Abstract::Group::ReturnType | applyJacobianTranspose (const NOX::Abstract::Vector &input, NOX::Abstract::Vector &result) const |
| Jacobian transpose not defined for this system. | |
| virtual NOX::Abstract::Group::ReturnType | applyJacobianInverse (NOX::Parameter::List ¶ms, const NOX::Abstract::Vector &input, NOX::Abstract::Vector &result) const |
| Applies Jacobian inverse for extended system. | |
| virtual NOX::Abstract::Group::ReturnType | applyJacobianMultiVector (const NOX::Abstract::MultiVector &input, NOX::Abstract::MultiVector &result) const |
| Applies Jacobian for extended system. | |
| virtual NOX::Abstract::Group::ReturnType | applyJacobianTransposeMultiVector (const NOX::Abstract::MultiVector &input, NOX::Abstract::MultiVector &result) const |
| Jacobian transpose not defined for this system. | |
| virtual NOX::Abstract::Group::ReturnType | applyJacobianInverseMultiVector (NOX::Parameter::List ¶ms, const NOX::Abstract::MultiVector &input, NOX::Abstract::MultiVector &result) const |
| Applies Jacobian inverse for extended system. | |
| virtual bool | isF () const |
Return true if extended residual is valid. | |
| virtual bool | isJacobian () const |
Return true if the extended Jacobian is valid. | |
| virtual bool | isGradient () const |
| Always returns false. | |
| virtual bool | isNewton () const |
Return true if the extended Newton direction is valid. | |
| virtual const NOX::Abstract::Vector & | getX () const |
| Return extended solution vector. | |
| virtual const NOX::Abstract::Vector & | getF () const |
| Return extended residual. | |
| virtual double | getNormF () const |
| Return 2-norm of extended residual. | |
| virtual const NOX::Abstract::Vector & | getGradient () const |
| Gradient is never valid. | |
| virtual const NOX::Abstract::Vector & | getNewton () const |
| Return extended Newton direction. | |
| virtual double | getNormNewtonSolveResidual () const |
| Returns 2-norm of extended Newton solve residual. | |
Implementation of LOCA::Extended::AbstractGroup virtual methods | |
| virtual LOCA::Extended::AbstractGroup & | operator= (const LOCA::Extended::AbstractGroup &source) |
| Assignment operator. | |
| virtual const LOCA::Continuation::AbstractGroup & | getUnderlyingGroup () const |
| Return underlying group. | |
| virtual LOCA::Continuation::AbstractGroup & | getUnderlyingGroup () |
| Return underlying group. | |
Implementation of LOCA::Stepper::AbstractGroup virtual methods | |
| virtual int | getNumParams () const |
| Returns number of parameters. | |
| virtual void | notifyCompletedStep () |
| Notifies group that continuation step is completed. | |
| virtual NOX::Abstract::Group::ReturnType | computePredictor () |
| Compute predictor directions. | |
| virtual const LOCA::MultiContinuation::ExtendedVector & | getPredictorDirection (int i) const |
| Get predictor direction i. | |
| virtual const LOCA::MultiContinuation::ExtendedMultiVector & | getPredictorDirections () const |
| Get all predictor directions. | |
| virtual void | setPredictorDirection (const LOCA::MultiContinuation::ExtendedVector &v, int i) |
| Set predictor direction i. | |
| virtual void | setPredictorDirections (const LOCA::MultiContinuation::ExtendedMultiVector &v) |
| Set all predictor directions. | |
| virtual bool | isPredictor () const |
| Is Predictor valid. | |
| virtual void | resetPredictor (NOX::Parameter::List &predictorParams) |
| Reset predictor manager. | |
| virtual void | scalePredictor () |
| Scales predictor. | |
| virtual void | setPrevX (const NOX::Abstract::Vector &y) |
| Set the previous solution vector y. | |
| virtual const LOCA::MultiContinuation::ExtendedVector & | getPrevX () const |
| Gets the previous solution vector. | |
| virtual void | setStepSize (double deltaS, int i=0) |
| Set step size for continuation constraint equation i. | |
| virtual double | getStepSize (int i=0) const |
| Get step size for continuation constraint equation i. | |
| virtual void | setContinuationParameter (double val, int i=0) |
| Sets the value for continuation parameter i. | |
| virtual double | getContinuationParameter (int i=0) const |
| Returns the value for continuation parameter i. | |
| virtual int | getContinuationParameterID (int i=0) const |
| Get the continuation parameter id for parameter i. | |
| virtual const vector< int > & | getContinuationParameterIDs () const |
| Get the continuation parameter ids. | |
| virtual string | getContinuationParameterName (int i=0) const |
| Get the continuation parameter id for parameter i. | |
| virtual double | getStepSizeScaleFactor (int i=0) const |
| Returns step size scale factor for constraint equation i. | |
| virtual void | printSolution () const |
| Prints the group. | |
| virtual double | computeScaledDotProduct (const NOX::Abstract::Vector &x, const NOX::Abstract::Vector &y) const |
| Computes a scaled dot product between two continuation vectors. | |
| virtual int | projectToDrawDimension () const |
| Returns dimension of project to draw array. | |
| virtual void | projectToDraw (const LOCA::MultiContinuation::ExtendedVector &x, double *px) const |
| Fills the project to draw array. | |
Protected Member Functions | |
| virtual NOX::Abstract::Group::ReturnType | applyJacobianInverseNewton (NOX::Parameter::List ¶ms) |
| applyJacobianInverseMultiVector specialized to Newton solves | |
| virtual void | resetIsValid () |
| Resets all isValid flags to false. | |
| virtual void | setupViews () |
| Sets up multivector views. | |
Protected Attributes | |
| LOCA::MultiContinuation::AbstractGroup * | grpPtr |
Pointer to base group that defines . | |
| int | numParams |
| Number of parameters. | |
| LOCA::MultiContinuation::ExtendedMultiVector | xMultiVec |
| Stores the extended solution vector and J^-1 df/dp. | |
| LOCA::MultiContinuation::ExtendedMultiVector | fMultiVec |
| Stores the extended residual vector and df/dp. | |
| LOCA::MultiContinuation::ExtendedMultiVector | newtonMultiVec |
| Stores the extended Newton vector. | |
| LOCA::MultiContinuation::ExtendedMultiVector | gradientMultiVec |
| Stores the extended gradient vector. | |
| LOCA::MultiContinuation::ExtendedMultiVector | predictorMultiVec |
| Vector to hold predictor direction. | |
| LOCA::MultiContinuation::ExtendedMultiVector | scaledPredictorMultiVec |
| Vector to hold scaled predictor direction. | |
| LOCA::MultiContinuation::ExtendedMultiVector | prevXMultiVec |
| Stores the previous extended solution vector. | |
| LOCA::MultiContinuation::ExtendedVector * | xVec |
| Stores view of first column of xMultiVec. | |
| LOCA::MultiContinuation::ExtendedVector * | fVec |
| Stores view of first column of fMultiVec. | |
| LOCA::MultiContinuation::ExtendedMultiVector * | ffMultiVec |
| Stores view of first column of fMultiVec as a multivec. | |
| LOCA::MultiContinuation::ExtendedMultiVector * | dfdpMultiVec |
| Stores view of df/dp columns of fMultiVec. | |
| LOCA::MultiContinuation::ExtendedVector * | newtonVec |
| Stores view of first column of newtonMultiVec. | |
| LOCA::MultiContinuation::ExtendedVector * | gradientVec |
| Stores view of first column of gradientMultiVec. | |
| LOCA::MultiContinuation::ExtendedVector * | predictorVec |
| Stores view of first column of predictorMultiVec. | |
| LOCA::MultiContinuation::ExtendedVector * | scaledPredictorVec |
| Stores view of first column of scaledPredictorMultiVec. | |
| LOCA::MultiContinuation::ExtendedVector * | prevXVec |
| Stores view of first column of prevXMultiVec. | |
| LOCA::BorderedSystem::Manager | borderedSolver |
| Stores manager for bordered solve methods. | |
| LOCA::Predictor::Manager | predictorManager |
| Stores manager for predictor computations. | |
| vector< int > | index_f |
| Stores indices for getting f part of fMultiVec. | |
| vector< int > | index_dfdp |
| Stores indices for getting df/dp part of fMultiVec. | |
| vector< int > | conParamIDs |
| integer id of continuation parameters | |
| vector< double > | stepSize |
| continuation step size | |
| vector< double > | stepSizeScaleFactor |
| step size scale factors | |
| bool | ownsGroup |
| Flag indicating whether we have our own copy of the underlying group. | |
| bool | isValidF |
| Is residual vector valid. | |
| bool | isValidJacobian |
| Is Jacobian matrix valid. | |
| bool | isValidNewton |
| Is Newton vector valid. | |
| bool | isValidGradient |
| Is Gradient vector valid. | |
| bool | isValidPredictor |
| Is Predictor vector valid. | |
| bool | baseOnSecant |
| Flag indicating whether to base predictor direction on secant. | |
Continuation is defined as computing some curve
such that
for some parameterization
. Given some point
on the curve, another nearby point on the curve is calculated by first computing a predictor direction
and the approximate point
where
is the step size. Then the next point on the curve is computed by solving the extended set of equations
for
. The equation
is called the continuation equation and different choices of
yield different continuation methods.
This group, derived from the LOCA::Extended::AbstractGroup, defines an additional interface that continuation groups should implement so that all continuation groups can be manipulated by the LOCA::Stepper and LOCA::StepSize objects in a consistent fashion. This group also defines some generic algorithms for commom computations among continuation groups and manages some of the data needed by all continuation groups.. It stores a pointer to the underlying group (representing
), a class of the type LOCA::Continuation::AbstractGroup.
Ofter duing a continuation run, the continuation path must be reparameterized due to changing relative magnitudes of the solution component
and parameter component
. Since any reparameterization will impact step size control, this group defines an interface for computing a "scale factor" for the continuation equation
and a step size scale factor which can be multiplied by the step size to have a consitent step size across reparameterizations. See LOCA::Continuation::ArcLengthGroup for an example on how this can be used. The default implementation here is for no reparameterization (scale factors are identically 1).
These parameters relavant to this group are:
|
||||||||||||||||
|
Constructor with integer continuation parameter ids.
The argument grp is the underlying group which implements The grp argument is a non-const reference and may be modified. |
|
||||||||||||||||
|
Constructor for single parameter continuation.
The argument grp is the underlying group which implements The grp argument is a non-const reference and may be modified. |
|
|
Return parameter component of constraint derivatives. May return NULL if constraint derivative is zero Implemented in LOCA::MultiContinuation::ArcLengthGroup, and LOCA::MultiContinuation::NaturalGroup. |
|
|
Return solution component of constraint derivatives. May return NULL if constraint derivative is zero Implemented in LOCA::MultiContinuation::ArcLengthGroup, and LOCA::MultiContinuation::NaturalGroup. |
1.3.9.1