LOCA::Epetra::Group Class Reference

Extension of the NOX::Epetra::Group to LOCA. More...

#include <LOCA_Epetra_Group.H>

Inheritance diagram for LOCA::Epetra::Group:

[legend]
Collaboration diagram for LOCA::Epetra::Group:
[legend]
List of all members.

Public Member Functions

 Group (NOX::Parameter::List &printParams, NOX::Parameter::List &linearSolverParams, Interface &i, const ParameterVector &p, NOX::Epetra::Vector &x, Epetra_Operator &J)
 Constructor with Jacobian Operator only.
 Group (NOX::Parameter::List &printParams, NOX::Parameter::List &linearSolverParams, Interface &i, const ParameterVector &p, NOX::Epetra::Vector &x, Epetra_Operator &J, Epetra_Operator &M)
 Constructor with a separate Jacobian (J) and Preconditioner (M).
 Group (const Group &source, NOX::CopyType type=NOX::DeepCopy)
 Copy constructor. If type is DeepCopy, takes ownership of valid shared Jacobian and shared preconditioning matrix.
virtual ~Group ()
 Destructor.
virtual Groupoperator= (const Group &source)
 Assignment operator.
virtual NOX::Epetra::InterfacegetUserInterface ()
 Return the userInterface.
virtual void printSolution (const NOX::Epetra::Vector &x, const double conParam) const
 Call the user interface print() routine, any vector.
void setScaleVector (const NOX::Abstract::Vector &s)
 Sets the scale vector.
Overloaded NOX::Epetra::Group 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 NOX::Abstract::Group::ReturnType computeF ()
 Overloaded computeF().
virtual NOX::Abstract::Group::ReturnType computeJacobian ()
 Overloaded computeJacobian().
Implementation of LOCA::Abstract::Group virtual methods.
virtual LOCA::Abstract::Groupoperator= (const LOCA::Abstract::Group &source)
 Assignment operator.
Implementation of LOCA::Continuation::AbstractGroup virtual methods.
virtual void setParams (const ParameterVector &p)
 Set the parameters.
virtual void setParam (int paramID, double val)
 Set parameter indexed by paramID.
virtual void setParam (string paramID, double val)
 Set parameter indexed by paramID.
const LOCA::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 paramID.
virtual double getParam (string paramID) const
 Return copy of parameter indexed by paramID.
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
 Call the user interface print() routine, solution vector.
virtual void printSolution (const NOX::Abstract::Vector &x, const double conParam) const
 Call the user interface print() routine, any vector.
virtual NOX::Abstract::Group::ReturnType applyHouseholderJacobianInverse (NOX::Parameter::List &params, const NOX::Abstract::Vector &f, const NOX::Abstract::Vector &dfdp, const NOX::Abstract::Vector &ux, double up, double beta, NOX::Abstract::Vector &result_x, double &result_p) const
 Solve arclength continuation equations using Householder projection.
Implementation of LOCA::Bifurcation::TPBord::AbstractGroup virtual methods.
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
 Solve a bordered system of equations.
Implementation of LOCA::Homotopy::AbstractGroup virtual methods.
virtual NOX::Abstract::Group::ReturnType augmentJacobianForHomotopy (double conParamValue)
 Replace Jacobian $J$ by $J+pI$ where $I$ is the identity matrix and $p$ is a scalar (conParamValue).

Protected Member Functions

void setBorderedAztecOptions (const NOX::Parameter::List &p, AztecOO &aztec) const
 Sets aztec solver options for matrix-free bordered system.

Protected Attributes

LOCA::ParameterVector params
 Parameter vector.
InterfaceuserInterface
 Reference to the user supplied interface functions.
Epetra_VectortmpVectorPtr2
 Extra vector needed for intermediate calculations of LOCA routines.
NOX::Abstract::VectorscaleVecPtr
 Stores a pointer to the scale vector.

Detailed Description

Extension of the NOX::Epetra::Group to LOCA.

This class is derived both from the NOX::Epetra::Group and LOCA::Abstract::Group classes and therefore inherits the implementation of the NOX::Abstract::Group interface provided by NOX::Epetra::Group.

This class provides implementations of LOCA AbstractGroup virtual methods specific to the Epetra group. It stores a parameter vector for setting/retrieving parameter values (LOCA::Continuation::AbstractGroup), provides a facility for computing eigenvalues (LOCA::Continuation::AbstractGroup) using the Anasazi package, and augements the Jacobian matrix for homotopy (LOCA::Homotopy::AbstractGroup), It currently has no support for storing a mass matrix and therefore cannot be used in Hopf or generalized eigenvalue computations. Since it is derived from the LOCA::Abstract::Group (which is in-turn derived from all FiniteDifference groups), this group implicitly uses the finite-difference implementations of parameter and second derivatives provided by the FiniteDifference groups.

The computeF() and computeJacobian() methods of the NOX::Epetra::Group parent class are overloaded here. They both set the entire contents of the parameter vector in the problem interface before calling the NOX::Epetra::Group computeF() and computeJacobian().


Constructor & Destructor Documentation

LOCA::Epetra::Group::Group NOX::Parameter::List printParams,
NOX::Parameter::List linearSolverParams,
Interface i,
const ParameterVector p,
NOX::Epetra::Vector x,
Epetra_Operator J
 

Constructor with Jacobian Operator only.

Either there is no preconditioning or the Jacobian will be used for preconditioning. An Epetra_Operator must be supplied for the Jacobian even in Matrix-Free mode. linearSolverParams is the "Linear Solver" sublist of parameter list.

The scaling vector is set to a default of all one's

LOCA::Epetra::Group::Group NOX::Parameter::List printParams,
NOX::Parameter::List linearSolverParams,
Interface i,
const ParameterVector p,
NOX::Epetra::Vector x,
Epetra_Operator J,
Epetra_Operator M
 

Constructor with a separate Jacobian (J) and Preconditioner (M).

linearSolverParams is the "Linear %Solver" sublist of parameter list. The scaling vector is set to a default of all one's


Member Function Documentation

NOX::Abstract::Group::ReturnType LOCA::Epetra::Group::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 [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} \]

Reimplemented from LOCA::Abstract::Group.

NOX::Abstract::Group::ReturnType LOCA::Epetra::Group::applyHouseholderJacobianInverse NOX::Parameter::List params,
const NOX::Abstract::Vector f,
const NOX::Abstract::Vector dfdp,
const NOX::Abstract::Vector ux,
double  up,
double  beta,
NOX::Abstract::Vector result_x,
double &  result_p
const [virtual]
 

Solve arclength continuation equations using Householder projection.

This method computes a solution to the following system of equations

\[ \begin{bmatrix} J & \frac{df}{dp} \end{bmatrix} Q \Delta x = f \]

where $Q\in\Re^{n+1\times n}$$ is an orthogonal matrix such that for any $z\in\Re^n$,

\[ Q z = P \begin{bmatrix} z \\ 0 \end{bmatrix}. \]

Here $P = I - \beta u u^T\in\Re^{n+1\times n+1}$ is a Householder transformation such that $P v = \|v\|_2 e_{n+1}$ and $u_{n+1} = 1$ where $v\in\Re^{n+1}$ is the predictor vector and $e_{n+1}$ is the $n+1$ column of the identity.

The implementation here uses Aztec with an Ifpack preconditioner for $J$.

Reimplemented from LOCA::Continuation::AbstractGroup.

NOX::Abstract::Group::ReturnType LOCA::Epetra::Group::computeF  )  [virtual]
 

Overloaded computeF().

Calls LOCA::Epetra::Interface::setParams before evalulating F.

Reimplemented from NOX::Epetra::Group.

NOX::Abstract::Group::ReturnType LOCA::Epetra::Group::computeJacobian  )  [virtual]
 

Overloaded computeJacobian().

Calls LOCA::Epetra::Interface::setParams before evalulating J.

Reimplemented from NOX::Epetra::Group.

double LOCA::Epetra::Group::computeScaledDotProduct const NOX::Abstract::Vector a,
const NOX::Abstract::Vector b
const [virtual]
 

Compute a scaled dot product.

The implementation here uses the scaling vector $s$ if one is supplied:

\[ \sum_{i=1}^n a_i*b_i*s_i*s_i. \]

If the scaling vector is not provided, the standard dot product is used.

Reimplemented from LOCA::Continuation::AbstractGroup.


Member Data Documentation

Epetra_Vector* LOCA::Epetra::Group::tmpVectorPtr2 [protected]
 

Extra vector needed for intermediate calculations of LOCA routines.

NOTE: there already is a tmpVectorPtr in the NOX::Epetra::Group. This is a second temporary vector if that one extra isn't enough.


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