NOX Development
Public Member Functions | Protected Member Functions | Protected Attributes
LOCA::Pitchfork::MinimallyAugmented::ExtendedGroup Class Reference

A group representing the minimally augemented pitchfork equations. More...

#include <LOCA_Pitchfork_MinimallyAugmented_ExtendedGroup.H>

Inheritance diagram for LOCA::Pitchfork::MinimallyAugmented::ExtendedGroup:
Inheritance graph
Collaboration diagram for LOCA::Pitchfork::MinimallyAugmented::ExtendedGroup:
Collaboration graph

List of all members.

Public Member Functions

 ExtendedGroup (const Teuchos::RCP< LOCA::GlobalData > &global_data, const Teuchos::RCP< LOCA::Parameter::SublistParser > &topParams, const Teuchos::RCP< Teuchos::ParameterList > &pfParams, const Teuchos::RCP< LOCA::Pitchfork::MinimallyAugmented::AbstractGroup > &grp)
 ExtendedGroup (const ExtendedGroup &source, NOX::CopyType type=NOX::DeepCopy)
 Copy constructor.
virtual ~ExtendedGroup ()
double getBifParam () const
 Get bifurcation parameter.
Implementation of NOX::Abstract::Group virtual methods
virtual NOX::Abstract::Groupoperator= (const NOX::Abstract::Group &source)
 Assignment operator.
virtual Teuchos::RCP
< NOX::Abstract::Group
clone (NOX::CopyType type=NOX::DeepCopy) const
 Clone 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.
computeF ()
 Compute extended continuation equations.
computeJacobian ()
 Compute extended continuation jacobian.
computeGradient ()
 Gradient is not defined for this system.
computeNewton (Teuchos::ParameterList &params)
 Compute Newton direction for extended continuation system.
applyJacobian (const NOX::Abstract::Vector &input, NOX::Abstract::Vector &result) const
 Applies Jacobian for extended system.
applyJacobianTranspose (const NOX::Abstract::Vector &input, NOX::Abstract::Vector &result) const
 Jacobian transpose not defined for this system.
applyJacobianInverse (Teuchos::ParameterList &params, const NOX::Abstract::Vector &input, NOX::Abstract::Vector &result) const
 Applies Jacobian inverse for extended system.
applyJacobianMultiVector (const NOX::Abstract::MultiVector &input, NOX::Abstract::MultiVector &result) const
 Applies Jacobian for extended system.
applyJacobianTransposeMultiVector (const NOX::Abstract::MultiVector &input, NOX::Abstract::MultiVector &result) const
 Jacobian transpose not defined for this system.
applyJacobianInverseMultiVector (Teuchos::ParameterList &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
getX () const
 Return extended solution vector.
virtual const
getF () const
 Return extended residual.
virtual double getNormF () const
 Return 2-norm of extended residual.
virtual const
getGradient () const
 Gradient is never valid.
virtual const
getNewton () const
 Return extended Newton direction.
virtual Teuchos::RCP< const
getXPtr () const
 Return RCP to extended solution vector.
virtual Teuchos::RCP< const
getFPtr () const
 Return RCP to extended residual.
virtual Teuchos::RCP< const
getGradientPtr () const
 Gradient is never valid.
virtual Teuchos::RCP< const
getNewtonPtr () const
 Return RCP to extended Newton direction.
virtual double getNormNewtonSolveResidual () const
 Returns 2-norm of extended Newton solve residual.
Implementation of LOCA::Extended::MultiAbstractGroup

virtual methods

virtual Teuchos::RCP< const
getUnderlyingGroup () const
 Return underlying group.
virtual Teuchos::RCP
< LOCA::MultiContinuation::AbstractGroup
getUnderlyingGroup ()
 Return underlying group.
Implementation of LOCA::MultiContinuation::AbstractGroup

virtual methods

virtual void copy (const NOX::Abstract::Group &source)
 Assignment operator.
virtual void setParamsMulti (const std::vector< int > &paramIDs, const NOX::Abstract::MultiVector::DenseMatrix &vals)
 Set parameters indexed by (integer) paramIDs.
virtual void setParams (const ParameterVector &p)
 Set the parameter vector in the group to p (pVector = p).
virtual void setParam (int paramID, double val)
 Set parameter indexed by (integer) paramID.
virtual void setParam (std::string paramID, double val)
 Set parameter indexed by (std::string) paramID.
virtual const ParameterVectorgetParams () const
 Return a const reference to the ParameterVector owned by the group.
virtual double getParam (int paramID) const
 Return copy of parameter indexed by (integer) paramID.
virtual double getParam (std::string paramID) const
 Return copy of parameter indexed by (std::string) paramID.
computeDfDpMulti (const std::vector< int > &paramIDs, NOX::Abstract::MultiVector &dfdp, bool isValidF)
virtual void preProcessContinuationStep (LOCA::Abstract::Iterator::StepStatus stepStatus)
 Perform any preprocessing before a continuation step starts.
virtual void postProcessContinuationStep (LOCA::Abstract::Iterator::StepStatus stepStatus)
 Perform any postprocessing after a continuation step finishes.
virtual void projectToDraw (const NOX::Abstract::Vector &x, double *px) const
 Projects solution to a few scalars for multiparameter continuation.
virtual int projectToDrawDimension () const
 Returns the dimension of the project to draw array.
virtual double computeScaledDotProduct (const NOX::Abstract::Vector &a, const NOX::Abstract::Vector &b) const
 Compute a scaled dot product.
virtual void printSolution (const double conParam) const
 Function to print out solution and parameter after successful step.
virtual void printSolution (const NOX::Abstract::Vector &x, const double conParam) const
 Function to print out a vector and parameter after successful step.
virtual void scaleVector (NOX::Abstract::Vector &x) const
 Scales a vector using scaling vector.
Implementation of
virtual int getBorderedWidth () const
 Return the total width of the bordered rows/columns.
virtual Teuchos::RCP< const
getUnborderedGroup () const
 Get bottom-level unbordered group.
virtual bool isCombinedAZero () const
 Indicates whether combined A block is zero.
virtual bool isCombinedBZero () const
 Indicates whether combined B block is zero.
virtual bool isCombinedCZero () const
 Indicates whether combined C block is zero.
virtual void extractSolutionComponent (const NOX::Abstract::MultiVector &v, NOX::Abstract::MultiVector &v_x) const
virtual void extractParameterComponent (bool use_transpose, const NOX::Abstract::MultiVector &v, NOX::Abstract::MultiVector::DenseMatrix &v_p) const
virtual void loadNestedComponents (const NOX::Abstract::MultiVector &v_x, const NOX::Abstract::MultiVector::DenseMatrix &v_p, NOX::Abstract::MultiVector &v) const
virtual void fillA (NOX::Abstract::MultiVector &A) const
 Fill the combined A block as described above.
virtual void fillB (NOX::Abstract::MultiVector &B) const
 Fill the combined B block as described above.
virtual void fillC (NOX::Abstract::MultiVector::DenseMatrix &C) const
 Fill the combined C block as described above.

Protected Member Functions

virtual void resetIsValid ()
 Resets all isValid flags to false.
virtual void setupViews ()
 Sets up multivector views.
void setBifParam (double param)
 Set bifurcation parameter.
void getInitialVectors (Teuchos::RCP< NOX::Abstract::Vector > &aVecPtr, Teuchos::RCP< NOX::Abstract::Vector > &bVecPtr, bool isSymmetric)
 Computes initial "a" and "b" vectors.

Protected Attributes

Teuchos::RCP< LOCA::GlobalDataglobalData
 Pointer LOCA global data object.
< LOCA::Parameter::SublistParser
 Parsed top-level parameters.
< Teuchos::ParameterList
 Pitchfork parameter list.
< LOCA::Pitchfork::MinimallyAugmented::AbstractGroup
 Pointer to base group that defines $F$.
< LOCA::BorderedSystem::AbstractGroup
 Pointer to base group as a bordered group.
< LOCA::Pitchfork::MinimallyAugmented::Constraint
 Pointer to constraint object.
LOCA::MultiContinuation::ExtendedMultiVector xMultiVec
 Stores the extended solution vector.
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::ExtendedVector
 Stores view of first column of xMultiVec.
< NOX::Abstract::Vector
 Vector for $\psi$.
< LOCA::MultiContinuation::ExtendedVector
 Stores view of first column of fMultiVec.
< LOCA::MultiContinuation::ExtendedMultiVector
 Stores view of first column of fMultiVec as a multivec.
< LOCA::MultiContinuation::ExtendedMultiVector
 Stores view of df/dp columns of fMultiVec.
< LOCA::MultiContinuation::ExtendedMultiVector
 Stores view of f and first column of df/dp.
< LOCA::MultiContinuation::ExtendedVector
 Stores view of first column of newtonMultiVec.
< LOCA::MultiContinuation::ExtendedVector
 Stores view of first column of gradientMultiVec.
< LOCA::BorderedSolver::JacobianOperator
< LOCA::BorderedSolver::AbstractStrategy
 Stores bordered solver strategy.
std::vector< int > index_f
 Stores indices for getting f part of fMultiVec.
std::vector< int > index_dfdp
 Stores indices for getting df/dp part of fMultiVec.
int bifParamID
 Stores the bifurcation parameter index.
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 isBordered
 Flag that indicates whether underlying group is a bordered group.

Detailed Description

A group representing the minimally augemented pitchfork equations.

The LOCA::Pitchfork::MinimallyAugmented::ExtendedGroup is a concrete implementation of the NOX::Abstract::Group, LOCA::MultiContinuation::AbstractGroup and LOCA::Extended::MultiAbstractGroup that defines the following extended set of equations that are regular at a generic pitchfork:

\[ G(z) = \left[ \begin{array}{c} F(x,p)+s\psi\\ \sigma \\ \langle x,\psi \rangle \end{array} \right] = 0 \]

where $z = [x, p, s]\in\Re^{n+2}$, $x$ is the solution vector, $s$ is the slack variable representing the asymmetry, $p$ is the bifurcation parameter, $\psi$ is the asymmetric vector, and $\sigma\in\Re$ is a measure of the singularity of $F$ and is defined via

\[ \begin{bmatrix} J & a \\ b^T & 0 \end{bmatrix} \begin{bmatrix} v \\ \sigma_1 \end{bmatrix} = \begin{bmatrix} 0 \\ n \end{bmatrix}, \]

\[ \begin{bmatrix} J^T & b \\ a^T & 0 \end{bmatrix} \begin{bmatrix} w \\ \sigma_2 \end{bmatrix} = \begin{bmatrix} 0 \\ n \end{bmatrix}, \]

\[ \sigma = w^T J v/n \]

for any vectors $a$ and $b$ in $\Re^n$. Using these relationships, it is easy to show

\[ \begin{split} \sigma_x &= (w^T J v)_x/n = w^T J_x v/n \\ \sigma_p &= (w^T J v)_p/n = w^T J_p v/n \end{split} \]

The group stores an underlying group of type LOCA::Pitchfork::MinimallyAugmented::AbstractGroup to represent the equations $F(x,p) = 0$ and to manipulate the underlying Jacobian $J$. This interface defines methods for computing the derivatives $(w^T J v)_x$ and $(w^T J v)_p$ and computing the inner product $\langle \psi,x \rangle $ as well.

This class implements all of the NOX::Abstract::Group, LOCA::MultiContinuation::AbstractGroup, and LOCA::Extended::MultiAbstractGroup methods for this extended set of equations and therefore is a complete group which can be passed to most NOX solvers to locate a single pitchfork or to the LOCA::Stepper to compute a family of pitchforks in a second parameter.

The class is intialized via the pfParams parameter list argument to the constructor. The parameters this class recognizes are:

Constructor & Destructor Documentation

LOCA::Pitchfork::MinimallyAugmented::ExtendedGroup::ExtendedGroup ( const Teuchos::RCP< LOCA::GlobalData > &  global_data,
const Teuchos::RCP< LOCA::Parameter::SublistParser > &  topParams,
const Teuchos::RCP< Teuchos::ParameterList > &  pfParams,
const Teuchos::RCP< LOCA::Pitchfork::MinimallyAugmented::AbstractGroup > &  grp 


global_data[in] Global data object
topParams[in] Parsed top-level parameter list.
pfParams[in] Parameter list determining the bordered solver method.
grp[in] Group representing $f$.

References bifParamID, bordered_grp, borderedSolver, constraintsPtr, Teuchos::RCP< T >::get(), LOCA::ParameterVector::getIndex(), globalData, grpPtr, isBordered, parsedParams, pitchforkParams, psiVec, Teuchos::rcp(), setupViews(), and xVec.

Member Function Documentation

NOX::Abstract::Group::ReturnType LOCA::Pitchfork::MinimallyAugmented::ExtendedGroup::computeDfDpMulti ( const std::vector< int > &  paramIDs,
NOX::Abstract::MultiVector dfdp,
bool  isValidF 
) [virtual]

Compute $\partial F/\partial p$ for each parameter $p$ indexed by paramIDs. The first column of dfdp holds F, which is valid if isValidF is true. Otherwise F must be computed.

Implements LOCA::MultiContinuation::AbstractGroup.

References LOCA::Extended::MultiVector::getScalars(), LOCA::MultiContinuation::ExtendedMultiVector::getXMultiVec(), and NOX::Abstract::Group::Ok.

void LOCA::Pitchfork::MinimallyAugmented::ExtendedGroup::extractParameterComponent ( bool  use_transpose,
const NOX::Abstract::MultiVector v,
NOX::Abstract::MultiVector::DenseMatrix v_p 
) const [virtual]
void LOCA::Pitchfork::MinimallyAugmented::ExtendedGroup::extractSolutionComponent ( const NOX::Abstract::MultiVector v,
NOX::Abstract::MultiVector v_x 
) const [virtual]

Given the vector v, extract the underlying solution component corresponding to the unbordered group.

Implements LOCA::BorderedSystem::AbstractGroup.

References LOCA::MultiContinuation::ExtendedMultiVector::getXMultiVec().

void LOCA::Pitchfork::MinimallyAugmented::ExtendedGroup::loadNestedComponents ( const NOX::Abstract::MultiVector v_x,
const NOX::Abstract::MultiVector::DenseMatrix v_p,
NOX::Abstract::MultiVector v 
) const [virtual]

Given the solution component v_x and combined parameter components v_p, distribute these components through the nested sub-vectors in v.

Implements LOCA::BorderedSystem::AbstractGroup.

References LOCA::Extended::MultiVector::getScalars(), LOCA::MultiContinuation::ExtendedMultiVector::getXMultiVec(), Teuchos::SerialDenseMatrix< OrdinalType, ScalarType >::numCols(), and Teuchos::View.

void LOCA::Pitchfork::MinimallyAugmented::ExtendedGroup::postProcessContinuationStep ( LOCA::Abstract::Iterator::StepStatus  stepStatus) [virtual]

Perform any postprocessing after a continuation step finishes.

The stepStatus argument indicates whether the step was successful.

Reimplemented from LOCA::MultiContinuation::AbstractGroup.

void LOCA::Pitchfork::MinimallyAugmented::ExtendedGroup::preProcessContinuationStep ( LOCA::Abstract::Iterator::StepStatus  stepStatus) [virtual]

Perform any preprocessing before a continuation step starts.

The stepStatus argument indicates whether the previous step was successful.

Reimplemented from LOCA::MultiContinuation::AbstractGroup.

The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends