LOCA::MultiContinuation::ExtendedGroup Class Reference

Base class for all continuation groups. More...

#include <LOCA_MultiContinuation_ExtendedGroup.H>

Inheritance diagram for LOCA::MultiContinuation::ExtendedGroup:

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

Public Member Functions

 ExtendedGroup (const ExtendedGroup &source, NOX::CopyType type=NOX::DeepCopy)
 Copy constructor.
virtual ~ExtendedGroup ()
virtual ExtendedGroupoperator= (const ExtendedGroup &source)
 Assignment operator.
Implementation of NOX::Abstract::Group virtual methods
virtual NOX::Abstract::Groupoperator= (const NOX::Abstract::Group &source)
 Assignment operator.
virtual NOX::Abstract::Groupclone (NOX::CopyType type=NOX::DeepCopy) const
 Cloning function.
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::MultiAbstractGroup
virtual methods

virtual LOCA::Extended::MultiAbstractGroupoperator= (const LOCA::Extended::MultiAbstractGroup &source)
 Assignment operator.
virtual Teuchos::RefCountPtr<
const LOCA::MultiContinuation::AbstractGroup
getUnderlyingGroup () const
 Return underlying group.
virtual Teuchos::RefCountPtr<
getUnderlyingGroup ()
 Return underlying group.
Implementation of LOCA::MultiContinuation::AbstractStrategy
virtual methods

virtual LOCA::MultiContinuation::AbstractStrategyoperator= (const MultiContinuation::AbstractStrategy &source)
 Assignment operator.
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 bool isPredictor () const
 Is Predictor valid.
virtual void scaleTangent ()
 Scales tangent to predictor.
virtual void setPredictorTangentDirection (const LOCA::MultiContinuation::ExtendedVector &v, int i)
 Sets tangent to predictor.
virtual const LOCA::MultiContinuation::ExtendedMultiVectorgetPredictorTangent () const
 Returns tangent to predictor.
virtual const LOCA::MultiContinuation::ExtendedMultiVectorgetScaledPredictorTangent () const
 Returns scaled tangent to 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

 ExtendedGroup (const Teuchos::RefCountPtr< LOCA::GlobalData > &global_data, const Teuchos::RefCountPtr< LOCA::Parameter::SublistParser > &topParams, const Teuchos::RefCountPtr< NOX::Parameter::List > &continuationParams, const Teuchos::RefCountPtr< LOCA::MultiContinuation::AbstractGroup > &grp, const Teuchos::RefCountPtr< LOCA::MultiPredictor::AbstractStrategy > &pred, const vector< int > &paramIDs)
 Constructor used by derived classes.
virtual void setConstraints (const Teuchos::RefCountPtr< LOCA::MultiContinuation::ConstraintInterface > &constraints)
 Set constraint object.

Protected Attributes

Teuchos::RefCountPtr< LOCA::GlobalDataglobalData
 Pointer LOCA global data object.
Teuchos::RefCountPtr< LOCA::Parameter::SublistParserparsedParams
 Parsed top-level parameters.
Teuchos::RefCountPtr< NOX::Parameter::ListcontinuationParams
 Continuation parameter list.
Teuchos::RefCountPtr< LOCA::MultiContinuation::AbstractGroupgrpPtr
 Pointer to underlying group.
Teuchos::RefCountPtr< LOCA::MultiPredictor::AbstractStrategypredictor
 Pointer to predictor object.
Teuchos::RefCountPtr< LOCA::MultiContinuation::ConstrainedGroupconGroup
 Pointer to constrained group implementation.
int numParams
 Number of parameters.
LOCA::MultiContinuation::ExtendedMultiVector tangentMultiVec
 Stores the tangent to the predictor.
LOCA::MultiContinuation::ExtendedMultiVector scaledTangentMultiVec
 Stores the scaled tangent to the predictor.
LOCA::MultiContinuation::ExtendedVector prevXVec
 Stores the previous extended solution vector.
vector< int > conParamIDs
 integer id of continuation parameters
vector< double > stepSize
 continuation step size
vector< double > stepSizeScaleFactor
 step size scale factors
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.

Mathematically, this computation amounts to repeatedly computing solutions to a constrained nonlinear system. This class provides a common implementation for all continuation groups in terms of the LOCA::MultiContinuation::ConstrainedGroup using a supplied group to represent $F$ and an implementation of LOCA::MultiContinuation::ConstraintInterface to represent $g$.

Note that this class has no public constructor other than the copy constructor since it is intended to only provide an implemenation of much of the continuation work. Each derived class that implements a specific continuation strategy should provide its own public constructor.

Member Function Documentation

void LOCA::MultiContinuation::ExtendedGroup::setConstraints const Teuchos::RefCountPtr< LOCA::MultiContinuation::ConstraintInterface > &  constraints  )  [protected, virtual]

Set constraint object.

This allows the constraint object to be set after the group is constructed using the above constructor.

void LOCA::MultiContinuation::ExtendedGroup::setPredictorTangentDirection const LOCA::MultiContinuation::ExtendedVector v,
int  i

Sets tangent to predictor.

This is required by MF which takes the tangent space, orthogonalizes it, and then sets it back in the group.

Implements LOCA::MultiContinuation::AbstractStrategy.

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