LOCA::Hopf::MooreSpence::ExtendedGroup Class Reference

A group representing the Moore-Spence Hopf equations. More...

#include <LOCA_Hopf_MooreSpence_ExtendedGroup.H>

Inheritance diagram for LOCA::Hopf::MooreSpence::ExtendedGroup:

Inheritance graph
[legend]
Collaboration diagram for LOCA::Hopf::MooreSpence::ExtendedGroup:

Collaboration graph
[legend]
List of all members.

Implementation of LOCA::MultiContinuation::AbstractGroup

virtual methods

virtual void copy (const NOX::Abstract::Group &source)
 Assignment operator.
virtual void setParamsMulti (const 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.
virtual void setParam (int paramID, double val)
 Set parameter indexed by paramID.
virtual void setParam (string paramID, double val)
 Set parameter indexed by paramID.
virtual const ParameterVectorgetParams () const
 Return a const reference to the paramter vector owned by the group.
virtual double getParam (int paramID) const
 Return copy of parameter indexed by paramID.
virtual double getParam (string paramID) const
 Return copy of parameter indexed by paramID.
virtual NOX::Abstract::Group::ReturnType computeDfDpMulti (const 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 void printSolution (const double conParam) const
 Function to print out extended solution and continuation parameter after successful continuation step.
virtual void printSolution (const NOX::Abstract::Vector &x_, const double conParam) const
 Function to print out extended solution and continuation parameter after successful continuation step.
double getBifParam () const
 Get bifurcation parameter.
double getFrequency () const
 Get bifurcation frequency.
double lTransNorm (const NOX::Abstract::Vector &z) const
 Defines null vector normalization $l^Tz$ equation.
void lTransNorm (const NOX::Abstract::MultiVector &z, NOX::Abstract::MultiVector::DenseMatrix &result) const
 null vector normalization for multivectors
void setBifParam (double param)
 Set bifurcation parameter.
void setupViews ()
 Sets up multivector views.
void init (bool perturbSoln=false, double perturbSize=0.0)
 Initializes group.
Teuchos::RCP< LOCA::GlobalDataglobalData
 Pointer LOCA global data object.
Teuchos::RCP< LOCA::Parameter::SublistParserparsedParams
 Parsed top-level parameters.
Teuchos::RCP< Teuchos::ParameterListhopfParams
 Bifurcation parameter list.
Teuchos::RCP< LOCA::Hopf::MooreSpence::AbstractGroupgrpPtr
 Pointer to base group that defines $F$.
LOCA::Hopf::MooreSpence::ExtendedMultiVector xMultiVec
 Stores the extended solution vector.
LOCA::Hopf::MooreSpence::ExtendedMultiVector fMultiVec
 Stores the extended residual vector and df/dp.
LOCA::Hopf::MooreSpence::ExtendedMultiVector newtonMultiVec
 Stores the extended Newton vector.
Teuchos::RCP< NOX::Abstract::MultiVectorlengthMultiVec
 Stores the length normalization vector.
Teuchos::RCP< LOCA::Hopf::MooreSpence::ExtendedVectorxVec
 Stores view of first column of xMultiVec.
Teuchos::RCP< LOCA::Hopf::MooreSpence::ExtendedVectorfVec
 Stores view of first column of fMultiVec.
Teuchos::RCP< LOCA::Hopf::MooreSpence::ExtendedMultiVectorffMultiVec
 Stores view of first column of fMultiVec as a multivec.
Teuchos::RCP< LOCA::Hopf::MooreSpence::ExtendedMultiVectordfdpMultiVec
 Stores view of df/dp columns of fMultiVec.
Teuchos::RCP< LOCA::Hopf::MooreSpence::ExtendedVectornewtonVec
 Stores view of first column of newtonMultiVec.
Teuchos::RCP< NOX::Abstract::VectorlengthVec
 Stores view of first column of lengthMultiVec.
Teuchos::RCP< NOX::Abstract::MultiVectormassTimesY
 Stores mass matrix times real component of eigenvector.
Teuchos::RCP< NOX::Abstract::MultiVectorminusMassTimesZ
 Stores negative of mass matrix times imaginary component of eigenvector.
Teuchos::RCP< LOCA::Hopf::MooreSpence::SolverStrategysolverStrategy
 Stores bordering strategy.
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 > bifParamID
 Stores the bifurcation parameter index.
bool isValidF
 Is residual vector valid.
bool isValidJacobian
 Is Jacobian matrix valid.
bool isValidNewton
 Is Newton vector valid.

Public Member Functions

 ExtendedGroup (const Teuchos::RCP< LOCA::GlobalData > &global_data, const Teuchos::RCP< LOCA::Parameter::SublistParser > &topParams, const Teuchos::RCP< Teuchos::ParameterList > &hopfParams, const Teuchos::RCP< LOCA::Hopf::MooreSpence::AbstractGroup > &g)
 Constructor with initial data passed through parameter lists.
 ExtendedGroup (const ExtendedGroup &source, NOX::CopyType type=NOX::DeepCopy)
 Copy constructor.
virtual ~ExtendedGroup ()
 Destructor.
Implementation of NOX::Abstract::Group virtual methods
virtual NOX::Abstract::Groupoperator= (const NOX::Abstract::Group &source)
 Assignment operator.
virtual Teuchos::RCP< NOX::Abstract::Groupclone (NOX::CopyType type=NOX::DeepCopy) const
 Cloning function.
virtual void setX (const NOX::Abstract::Vector &y)
 Set the solution vector, x, to y.
virtual void computeX (const NOX::Abstract::Group &g, const NOX::Abstract::Vector &d, double step)
 Compute this.x = grp.x + step * d.
virtual NOX::Abstract::Group::ReturnType computeF ()
 Compute the Hopf point equation residual $G$.
virtual NOX::Abstract::Group::ReturnType computeJacobian ()
 Compute the blocks of the Jacobian derivative of $G$.
virtual NOX::Abstract::Group::ReturnType computeGradient ()
 Gradient computation is not defined for this group.
virtual NOX::Abstract::Group::ReturnType computeNewton (Teuchos::ParameterList &params)
 Compute Newton direction using applyJacobianInverse().
virtual NOX::Abstract::Group::ReturnType applyJacobian (const NOX::Abstract::Vector &input, NOX::Abstract::Vector &result) const
 Computes the extended Jacobian vector product.
virtual NOX::Abstract::Group::ReturnType applyJacobianTranspose (const NOX::Abstract::Vector &input, NOX::Abstract::Vector &result) const
 Jacobian transpose product is not defined by this group.
virtual NOX::Abstract::Group::ReturnType applyJacobianInverse (Teuchos::ParameterList &params, const NOX::Abstract::Vector &input, NOX::Abstract::Vector &result) const
 Applies the inverse of the extended Jacobian matrix using the bordering algorithm.
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 (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 the extended residual $G$ 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 $z$.
virtual const NOX::Abstract::VectorgetF () const
 Return extended equation residual $G(z)$.
virtual double getNormF () const
 Return 2-norm of $G(z)$.
virtual const NOX::Abstract::VectorgetGradient () const
 Vector returned is not valid.
virtual const NOX::Abstract::VectorgetNewton () const
 Return extended Newton direction.
virtual double getNormNewtonSolveResidual () const
 Return the norm of the Newton solve residual.
Implementation of LOCA::Extended::MultiAbstractGroup
virtual methods

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

Detailed Description

A group representing the Moore-Spence Hopf equations.

The LOCA::Hopf::MooreSpence::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 Hopf point:

\[ G(z) = \left[ \begin{array}{c} F(x,p) \\ Jy-\omega Bz \\ Jz+\omega By \\ l^Ty-1 \\ l^Tz \end{array} \right] = 0 \]

where $z = [x, y, z, \omega, p]\in\Re^{3n+2}$, $x$ is the solution vector, $y+i\omega z$ is the complex eigenvector of $J$ with corresponding eigenvalues $\pm i\omega$, $l$ is the length normalization vector and $J$ is the Jacobian of F w.r.t $x$.

The group stores an underlying group of type LOCA::Hopf::MooreSpence AbstractGroup to represent the equations $F(x,p) = 0$ and to manipulate the underlying Jacobian $J$. Note that the entire extended Jacobian $D_z G$ is not stored in memory, rather a block-elimination algorithm (bordering algorithm) is used to compute linear solves of the extended Jacobian (see LOCA::Hopf::MooreSpence::SolverFactory() for more details).

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 Hopf point or to the LOCA::Stepper to compute a family of Hopf points in a second parameter.

However, Jacobian-tranpose operations and gradient calculations cannot be implemented efficiently and therefore gradient-base nonlinear solvers such as steepest descent and Trust region methods cannot be used to solve the extended Hopf point equations.

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


Member Function Documentation

NOX::Abstract::Group::ReturnType LOCA::Hopf::MooreSpence::ExtendedGroup::applyJacobianInverse ( Teuchos::ParameterList params,
const NOX::Abstract::Vector input,
NOX::Abstract::Vector result 
) const [virtual]

Applies the inverse of the extended Jacobian matrix using the bordering algorithm.

This method is a special case of applyJacobianInverseMultiVector() for a single right-hand-side.

Reimplemented from NOX::Abstract::Group.

NOX::Abstract::Group::ReturnType LOCA::Hopf::MooreSpence::ExtendedGroup::applyJacobianInverseMultiVector ( Teuchos::ParameterList params,
const NOX::Abstract::MultiVector input,
NOX::Abstract::MultiVector result 
) const [virtual]

Applies Jacobian inverse for extended system.

Uses a LOCA::Hopf::MooreSpence::SolverStrategy instantiated by the LOCA::Hopf::MooreSpence::SolverFactory to implement the solve.

Reimplemented from NOX::Abstract::Group.

NOX::Abstract::Group::ReturnType LOCA::Hopf::MooreSpence::ExtendedGroup::computeDfDpMulti ( const 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.

void LOCA::Hopf::MooreSpence::ExtendedGroup::lTransNorm ( const NOX::Abstract::MultiVector z,
NOX::Abstract::MultiVector::DenseMatrix result 
) const

null vector normalization for multivectors

Note: result should have 1 row and z.numVectors() columns.

void LOCA::Hopf::MooreSpence::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::Hopf::MooreSpence::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.

void LOCA::Hopf::MooreSpence::ExtendedGroup::printSolution ( const NOX::Abstract::Vector x_,
const double  conParam 
) const [virtual]

Function to print out extended solution and continuation parameter after successful continuation step.

This method prints the solution, null-vector, and parameter components of the extended solution vector using the printSolution method of the underlying group.

Reimplemented from LOCA::MultiContinuation::AbstractGroup.

void LOCA::Hopf::MooreSpence::ExtendedGroup::printSolution ( const double  conParam  )  const [virtual]

Function to print out extended solution and continuation parameter after successful continuation step.

This method prints the solution, null-vector, and parameter components of the extended solution vector using the printSolution method of the underlying group.

Reimplemented from LOCA::MultiContinuation::AbstractGroup.


The documentation for this class was generated from the following files:
Generated on Wed May 12 21:41:56 2010 for NOX by  doxygen 1.4.7