LOCA::Bifurcation::PitchforkBord::ExtendedGroup Class Reference

LOCA's generic pitchfork group. Implements the bordering algorithm to solve pitchfork equations. More...

#include <LOCA_Bifurcation_PitchforkBord_ExtendedGroup.H>

Inheritance diagram for LOCA::Bifurcation::PitchforkBord::ExtendedGroup:

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

Public Member Functions

 ExtendedGroup (LOCA::Bifurcation::TPBord::AbstractGroup &g, NOX::Parameter::List &bifParamList)
 Constructor with initial data passed through parameter lists.
 ExtendedGroup (LOCA::Bifurcation::TPBord::AbstractGroup &g, const NOX::Abstract::Vector &asymVec, const NOX::Abstract::Vector &lenVec, const NOX::Abstract::Vector &nullVec, int paramId=0)
 Constructor to set the base group, bifurcation paramter, length vector.
 ExtendedGroup (const LOCA::Bifurcation::TPBord::AbstractGroup &g, const NOX::Abstract::Vector &asymVec, const NOX::Abstract::Vector &lenVec, const NOX::Abstract::Vector &nullVec, int paramId=0)
 Constructor to set the base group, bifurcation paramter, length vector.
 ExtendedGroup (const ExtendedGroup &source, NOX::CopyType type=NOX::DeepCopy)
 Copy constructor.
virtual ~ExtendedGroup ()
 Destructor.
virtual NOX::Abstract::Groupoperator= (const NOX::Abstract::Group &source)
 Assignment operator.
virtual LOCA::Continuation::AbstractGroupoperator= (const LOCA::Continuation::AbstractGroup &source)
 Assignment operator.
virtual LOCA::Extended::AbstractGroupoperator= (const LOCA::Extended::AbstractGroup &source)
 Assignment operator.
virtual ExtendedGroupoperator= (const ExtendedGroup &source)
 Assignment operator.
virtual NOX::Abstract::Groupclone (NOX::CopyType type=NOX::DeepCopy) const
 Cloning function.
virtual void setParams (const ParameterVector &p)
 Set the parameter list in the group to p (pVector = p).
virtual const ParameterVectorgetParams () const
 Return a const reference to the ParameterVector owned by the group.
virtual void setParam (int paramID, double val)
 Set parameter indexed by paramID.
virtual double getParam (int paramID) const
 Return copy of parameter indexed by paramID.
virtual void setParam (string paramID, double val)
 Set parameter indexed by paramID.
virtual double getParam (string paramID) const
 Return copy of parameter indexed by paramID.
virtual NOX::Abstract::Group::ReturnType computeDfDp (int paramID, NOX::Abstract::Vector &result)
 Compute $dF/dp$ for the extended system.
virtual void printSolution (const double conParam) const
 Calls groups print function for solution vector null vec, and params.
virtual void printSolution (const NOX::Abstract::Vector &x_, const double conParam) const
 Calls groups print function for solution vector null vec, and params.
virtual const LOCA::Continuation::AbstractGroupgetUnderlyingGroup () const
 Return underlying group.
virtual LOCA::Continuation::AbstractGroupgetUnderlyingGroup ()
 Return underlying group.
"Compute" functions.
virtual void setX (const NOX::Abstract::Vector &y)
 Set the solution vector, x, to y.
virtual void setX (const LOCA::Bifurcation::PitchforkBord::ExtendedVector &y)
 Set the solution vector, x, 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 void computeX (const ExtendedGroup &g, const LOCA::Bifurcation::PitchforkBord::ExtendedVector &d, double step)
 Compute and return solution vector, x, where this.x = grp.x + step * d.
virtual NOX::Abstract::Group::ReturnType computeF ()
 Compute the turning 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 (NOX::Parameter::List &params)
 Compute Newton direction using bordering algorithm.
Jacobian operations.
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 (NOX::Parameter::List &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 applyJacobianInverseMulti (NOX::Parameter::List &params, const NOX::Abstract::Vector *const *inputs, NOX::Abstract::Vector **results, int nVecs) const
 Applies the inverse of the extended Jacobian matrix using the bordering algorithm for multiple right-hand sides.
"Is" functions.
Checks to see if various objects have been computed. Returns true if the corresponding "compute" function has been called since the last update to the solution vector (via instantiation or computeX).

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.
"Get" functions.
Note that these function do not check whether or not the vectors are valid. Must use the "Is" functions for that purpose.

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.

Protected Member Functions

void init (bool perturbSoln=false, double perturbSize=0.0)
 Initializes group.
double getBifParam () const
 Get bifurcation parameter.
void setBifParam (double param)
 Set bifurcation parameter.
double lTransNorm (const NOX::Abstract::Vector &n) const
 Defines null vector normalization $l^Tn$.

Protected Attributes

LOCA::Bifurcation::TPBord::AbstractGroupgrpPtr
LOCA::Bifurcation::PitchforkBord::ExtendedVector pfXVec
 Stores the turning point solution vector.
LOCA::Bifurcation::PitchforkBord::ExtendedVector pfFVec
 Stores the turning point residual vector.
LOCA::Bifurcation::PitchforkBord::ExtendedVector pfNewtonVec
 Stores the turning point Newton vector.
NOX::Abstract::VectorasymVecPtr
 Stores the asymmetry vector.
NOX::Abstract::VectorlengthVecPtr
 Stores the constant length vector.
int bifParamId
 Stores the bifurcation parameter index.
NOX::Abstract::VectorderivResidualParamPtr
 Stores the derivative of the solution residual w.r.t. bifparam.
NOX::Abstract::VectorderivNullResidualParamPtr
 Stores the derivative of the null vector residual w.r.t. bifparam.
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.

Detailed Description

LOCA's generic pitchfork group. Implements the bordering algorithm to solve pitchfork equations.

The PitchforkBord::Group is a concrete implementation of the LOCA::Continuation::GroupInterface that defines the following extended set of equations:

\[ G(z) = \left[ \begin{array}{c} F(x,p)+\sigma\psi\\ Jn \\ \langle x, \psi\rangle \\ l^Tn-1 \end{array} \right] = 0 \]

where $z = [x, n, \sigma, p]\in\Re^{2n+2}$, $x$ is the solution vector, $n$ is the null vector, $\psi$ is the antisymmetric vector, $\sigma$ is the slack variables representing the asymmetry in the problem, $l$ is the length normalization vector and $J$ is the Jacobian of F.

This class implements all of the NOX::Abstract::Group and LOCA::Continuation::GroupInterface methods for this extended set of equations. Newton solves are computed by the bordering algorithm.


Member Function Documentation

NOX::Abstract::Group::ReturnType LOCA::Bifurcation::PitchforkBord::ExtendedGroup::computeJacobian  )  [virtual]
 

Compute the blocks of the Jacobian derivative of $G$.

Certain second derivatives such as (Jn)_x are not calculated since only their action on vectors are needed for later solves.

Reimplemented from NOX::Abstract::Group.


Member Data Documentation

LOCA::Bifurcation::TPBord::AbstractGroup* LOCA::Bifurcation::PitchforkBord::ExtendedGroup::grpPtr [protected]
 

Stores the underlying group, which stores the solution vector, jacobian, and solution residual


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