LOCA::MultiContinuation::ExtendedGroup Class Reference

Base class for all continuation groups. More...

#include <LOCA_MultiContinuation_ExtendedGroup.H>

Inheritance diagram for LOCA::MultiContinuation::ExtendedGroup:

[legend]
Collaboration diagram for LOCA::MultiContinuation::ExtendedGroup:
[legend]
List of all members.

Public Member Functions

 ExtendedGroup (LOCA::MultiContinuation::AbstractGroup &grp, const vector< int > &paramIDs, NOX::Parameter::List &params)
 Constructor with integer continuation parameter ids.
 ExtendedGroup (LOCA::MultiContinuation::AbstractGroup &grp, const string &paramID, NOX::Parameter::List &params)
 Constructor for single parameter continuation.
 ExtendedGroup (const ExtendedGroup &source, NOX::CopyType type=NOX::DeepCopy)
 Copy constructor.
virtual ~ExtendedGroup ()
 Destructor.
virtual ExtendedGroupoperator= (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::Groupoperator= (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 &params)
 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 &params, 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 &params, 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::VectorgetX () const
 Return extended solution vector.
virtual const NOX::Abstract::VectorgetF () const
 Return extended residual.
virtual double getNormF () const
 Return 2-norm of extended residual.
virtual const NOX::Abstract::VectorgetGradient () const
 Gradient is never valid.
virtual const NOX::Abstract::VectorgetNewton () 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::AbstractGroupoperator= (const LOCA::Extended::AbstractGroup &source)
 Assignment operator.
virtual const LOCA::Continuation::AbstractGroupgetUnderlyingGroup () const
 Return underlying group.
virtual LOCA::Continuation::AbstractGroupgetUnderlyingGroup ()
 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::ExtendedVectorgetPredictorDirection (int i) const
 Get predictor direction i.
virtual const LOCA::MultiContinuation::ExtendedMultiVectorgetPredictorDirections () 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::ExtendedVectorgetPrevX () 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 &params)
 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::AbstractGroupgrpPtr
 Pointer to base group that defines $F$.
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::ExtendedVectorxVec
 Stores view of first column of xMultiVec.
LOCA::MultiContinuation::ExtendedVectorfVec
 Stores view of first column of fMultiVec.
LOCA::MultiContinuation::ExtendedMultiVectorffMultiVec
 Stores view of first column of fMultiVec as a multivec.
LOCA::MultiContinuation::ExtendedMultiVectordfdpMultiVec
 Stores view of df/dp columns of fMultiVec.
LOCA::MultiContinuation::ExtendedVectornewtonVec
 Stores view of first column of newtonMultiVec.
LOCA::MultiContinuation::ExtendedVectorgradientVec
 Stores view of first column of gradientMultiVec.
LOCA::MultiContinuation::ExtendedVectorpredictorVec
 Stores view of first column of predictorMultiVec.
LOCA::MultiContinuation::ExtendedVectorscaledPredictorVec
 Stores view of first column of scaledPredictorMultiVec.
LOCA::MultiContinuation::ExtendedVectorprevXVec
 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.

Detailed Description

Base class for all continuation groups.

Continuation is defined as computing some curve $(x(s),p(s))\in\Re^{n+1}$ such that $F(x(s),p(s))=0$ for some parameterization $s$. Given some point $(x_0,p_0)$ on the curve, another nearby point on the curve is calculated by first computing a predictor direction $v\in\Re^{n+1}$ and the approximate point $(x^\ast,p^\ast) = (x_0,p_0) + v\Delta s$ where $\Delta s$ is the step size. Then the next point on the curve is computed by solving the extended set of equations

\[ \begin{array}{cc} F(x,p) &= 0 \\ g(x,p,x_0,p_0,x^\ast,p^\ast,v,\Delta s) &= 0 \end{array} \]

for $(x,p)$. The equation $g(x,p,x_0,p_0,x^\ast,p^\ast,v,\Delta s)=0$ is called the continuation equation and different choices of $g$ 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 $F$), 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 $x$ and parameter component $p$. Since any reparameterization will impact step size control, this group defines an interface for computing a "scale factor" for the continuation equation $g = 0$ 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 & Destructor Documentation

LOCA::MultiContinuation::ExtendedGroup::ExtendedGroup LOCA::MultiContinuation::AbstractGroup grp,
const vector< int > &  paramIDs,
NOX::Parameter::List params
 

Constructor with integer continuation parameter ids.

The argument grp is the underlying group which implements $F$, paramID is the index of the continuation parameter, params is the parameter list for the continuation groups described above.

The grp argument is a non-const reference and may be modified.

LOCA::MultiContinuation::ExtendedGroup::ExtendedGroup LOCA::MultiContinuation::AbstractGroup grp,
const string &  paramID,
NOX::Parameter::List params
 

Constructor for single parameter continuation.

The argument grp is the underlying group which implements $F$, paramID is the name of the continuation parameter, params is the parameter list for the continuation groups described above.

The grp argument is a non-const reference and may be modified.


Member Function Documentation

virtual const NOX::Abstract::MultiVector::DenseMatrix* LOCA::MultiContinuation::ExtendedGroup::getConstraintDerivativesP  )  const [pure virtual]
 

Return parameter component of constraint derivatives.

May return NULL if constraint derivative is zero

Implemented in LOCA::MultiContinuation::ArcLengthGroup, and LOCA::MultiContinuation::NaturalGroup.

virtual const NOX::Abstract::MultiVector* LOCA::MultiContinuation::ExtendedGroup::getConstraintDerivativesX  )  const [pure virtual]
 

Return solution component of constraint derivatives.

May return NULL if constraint derivative is zero

Implemented in LOCA::MultiContinuation::ArcLengthGroup, and LOCA::MultiContinuation::NaturalGroup.


The documentation for this class was generated from the following files:
Generated on Thu Sep 18 12:42:25 2008 for NOX by doxygen 1.3.9.1