LOCA::Bifurcation::TPBord::AbstractGroup Class Reference

Interface to underlying groups for turning point calculations. More...

#include <LOCA_Bifurcation_TPBord_AbstractGroup.H>

Inheritance diagram for LOCA::Bifurcation::TPBord::AbstractGroup:

[legend]
Collaboration diagram for LOCA::Bifurcation::TPBord::AbstractGroup:
[legend]
List of all members.

Public Member Functions

 AbstractGroup ()
 Default constructor.
virtual ~AbstractGroup ()
 Destructor.
Pure virtual methods
These methods must be defined by any concrete implementation

virtual AbstractGroupoperator= (const AbstractGroup &source)=0
 Assignment operator.
virtual NOX::Abstract::Group::ReturnType applySingularJacobianInverse (NOX::Parameter::List &params, const NOX::Abstract::Vector &input, const NOX::Abstract::Vector &approxNullVec, const NOX::Abstract::Vector &jacApproxNullVec, NOX::Abstract::Vector &result)=0
 applyJacobianInverse for nearly singular systems
virtual NOX::Abstract::Group::ReturnType applySingularJacobianInverseMulti (NOX::Parameter::List &params, const NOX::Abstract::Vector *const *inputs, const NOX::Abstract::Vector &approxNullVec, const NOX::Abstract::Vector &jacApproxNullVec, NOX::Abstract::Vector **results, int nVecs)=0
 Version of applySingularJacobianInverse() for multiple RHS.
virtual NOX::Abstract::Group::ReturnType computeDJnDp (const NOX::Abstract::Vector &nullVector, const int param_id, NOX::Abstract::Vector &result)=0
 Computes the derivative $\partial Jn/\partial p$ where $p$ is the parameter indexed by param_id.
virtual NOX::Abstract::Group::ReturnType computeDJnDp (const NOX::Abstract::Vector &nullVector, const int param_id, const NOX::Abstract::Vector &JnVector, NOX::Abstract::Vector &result)=0
 Computes the derivative $\partial Jn/\partial p$ where $p$ is the parameter indexed by param_id. The argument JnVector stores $Jn$.
virtual NOX::Abstract::Group::ReturnType computeDJnDxa (const NOX::Abstract::Vector &nullVector, const NOX::Abstract::Vector &aVector, NOX::Abstract::Vector &result)=0
 Computes the directional derivative $\frac{\partial Jn}{\partial x} a$ for the given direction $a$.
virtual NOX::Abstract::Group::ReturnType computeDJnDxa (const NOX::Abstract::Vector &nullVector, const NOX::Abstract::Vector &aVector, const NOX::Abstract::Vector &JnVector, NOX::Abstract::Vector &result)=0
 Computes the directional derivative $\frac{\partial Jn}{\partial x} a$ for the given direction $a$. The argument JnVector stores $Jn$.
virtual NOX::Abstract::Group::ReturnType computeDJnDxa (const NOX::Abstract::Vector &nullVector, const NOX::Abstract::MultiVector &aVector, NOX::Abstract::MultiVector &result)=0
 Computes the directional derivative $\frac{\partial Jn}{\partial x} a$ for the given direction $a$.
virtual NOX::Abstract::Group::ReturnType computeDJnDxa (const NOX::Abstract::Vector &nullVector, const NOX::Abstract::MultiVector &aVector, const NOX::Abstract::Vector &JnVector, NOX::Abstract::MultiVector &result)=0
 Computes the directional derivative $\frac{\partial Jn}{\partial x} a$ for the given direction $a$. The argument JnVector stores $Jn$.
Virtual methods with default implementations
These methods should be overloaded in a concrete implementation if more appropriate/efficient approaches are available.

virtual double innerProduct (const NOX::Abstract::Vector &x, const NOX::Abstract::Vector &y)
 Compute inner product between two vectors.
Virtual methods specific to the modified bordering algorithm
virtual NOX::Abstract::Group::ReturnType applyBorderedJacobianInverse (bool trans, NOX::Parameter::List &params, const NOX::Abstract::Vector &a, const NOX::Abstract::Vector &b, const NOX::Abstract::Vector &vInput, double sInput, NOX::Abstract::Vector &vResult, double &sResult) const =0
 Solve a bordered system of equations.
virtual NOX::Abstract::Group::ReturnType applyBorderedJacobianInverseMulti (bool trans, NOX::Parameter::List &params, const NOX::Abstract::Vector &a, const NOX::Abstract::Vector &b, const NOX::Abstract::Vector *const *vInputs, double *sInputs, NOX::Abstract::Vector **vResults, double *sResults, int nVecs) const
 Solve a bordered system of equations with multiple right- hand-sides.

Detailed Description

Interface to underlying groups for turning point calculations.

This abstract class provides the required interface for underlying groups to locate turning points and pitchforks using the bordering algorithms (see LOCA::Bifurcation::TPBord::ExtendedGroup and LOCA::Bifurcation::PitchforkBord::ExtendedGroup for a description of the governing equations and bordering algorithms).

This class is derived from the LOCA::Continuation::AbstractGroup and declares several pure virtual methods to solve the linear set of equations $Jx=b$ for $J$ nearly singular, and to compute various derivatives of $Jn$ for a given $n$. Default implementations for the singular solves are encapsulated in the LOCA::Bifurcation::TPBord::SingularSolveGroup and for the derivatives using finite differencing in the LOCA::Bifurcation::TPBord::FiniteDifferenceGroup.

The last virtual method, innerProduct() has a default implementation given by the dot product, but should be overloaded for any problem that has a different definition for the inner product (this is only used in the LOCA::Bifurcation::PitchforkBord::ExtendedGroup for the assymetry).


Member Function Documentation

virtual NOX::Abstract::Group::ReturnType LOCA::Bifurcation::TPBord::AbstractGroup::applyBorderedJacobianInverse bool  trans,
NOX::Parameter::List params,
const NOX::Abstract::Vector a,
const NOX::Abstract::Vector b,
const NOX::Abstract::Vector vInput,
double  sInput,
NOX::Abstract::Vector vResult,
double &  sResult
const [pure virtual]
 

Solve a bordered system of equations.

Compute the solution to the bordered system of equations

\[ \begin{bmatrix} J & a \\ b^T & 0 \end{bmatrix} \begin{bmatrix} \text{vResult} \\ \text{sResult} \end{bmatrix} = \begin{bmatrix} \text{vInput} \\ \text{sInput} \end{bmatrix} \]

Implemented in LOCA::Abstract::Group, LOCA::Epetra::Group, and LOCA::LAPACK::Group.

NOX::Abstract::Group::ReturnType LOCA::Bifurcation::TPBord::AbstractGroup::applyBorderedJacobianInverseMulti bool  trans,
NOX::Parameter::List params,
const NOX::Abstract::Vector a,
const NOX::Abstract::Vector b,
const NOX::Abstract::Vector *const *  vInputs,
double *  sInputs,
NOX::Abstract::Vector **  vResults,
double *  sResults,
int  nVecs
const [virtual]
 

Solve a bordered system of equations with multiple right- hand-sides.

The default implementation here is to call applyBorderedJacobianInverse() serially for each right-hand-side.

virtual NOX::Abstract::Group::ReturnType LOCA::Bifurcation::TPBord::AbstractGroup::applySingularJacobianInverse NOX::Parameter::List params,
const NOX::Abstract::Vector input,
const NOX::Abstract::Vector approxNullVec,
const NOX::Abstract::Vector jacApproxNullVec,
NOX::Abstract::Vector result
[pure virtual]
 

applyJacobianInverse for nearly singular systems

This method is to compute the solution to $Jx=b$ for nearly singular $J$. approxNullVec contains an approximation to the null vector $n$ such that $Jn\approx0$, and jacApproxNullVec contains $Jn$. The idea is these quantities are supposed to help in obtaining an accurate solution to $Jx=b$.

Implemented in LOCA::Bifurcation::TPBord::SingularSolveGroup.


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