LOCA::EpetraNew::Group Class Reference

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

#include <LOCA_EpetraNew_Group.H>

Inheritance diagram for LOCA::EpetraNew::Group:

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

Public Member Functions

 Group (NOX::Parameter::List &printingParams, LOCA::EpetraNew::Interface::Required &i, NOX::Epetra::Vector &initialGuess, const LOCA::ParameterVector &p)
 Constructor with NO linear system (VERY LIMITED).
 Group (NOX::Parameter::List &printingParams, LOCA::EpetraNew::Interface::Required &i, NOX::Epetra::Vector &initialGuess, NOX::EpetraNew::LinearSystem &linSys, const LOCA::ParameterVector &p)
 Standard Constructor.
 Group (NOX::Parameter::List &printingParams, LOCA::EpetraNew::Interface::TimeDependent &i, NOX::Epetra::Vector &initialGuess, NOX::EpetraNew::LinearSystem &linSys, const LOCA::ParameterVector &p)
 Constructor with time-dependent interface.
 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::EpetraNew::Interface::RequiredgetUserInterface ()
 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::EpetraNew::Group methods.
virtual NOX::Abstract::Groupoperator= (const NOX::Abstract::Group &source)
 Assignment operator.
virtual NOX::Abstract::Groupoperator= (const NOX::EpetraNew::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::MultiContinuation::AbstractGroup virtual methods.
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.
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).
Implementation of LOCA::TimeDependent::AbstractGroup virtual methods.
virtual NOX::Abstract::Group::ReturnType computeMassMatrix ()
virtual NOX::Abstract::Group::ReturnType applyMassMatrix (const NOX::Abstract::Vector &input, NOX::Abstract::Vector &result) const
virtual bool isMassMatrix ()
virtual NOX::Abstract::Group::ReturnType applyShiftedMatrix (const NOX::Abstract::Vector &input, NOX::Abstract::Vector &result, double shift) const
virtual NOX::Abstract::Group::ReturnType applyShiftedMatrix (const NOX::Epetra::Vector &input, NOX::Epetra::Vector &result, double shift) const
virtual NOX::Abstract::Group::ReturnType applyShiftedMatrixInverse (NOX::Parameter::List &params, const NOX::Abstract::Vector &input, NOX::Abstract::Vector &result, double shift)
Implementation of LOCA::Bifurcation::TPBord::AbstractGroup virtual methods.
virtual void scaleVector (NOX::Abstract::Vector &x) const
 Scales a vector using scaling vector.

Protected Attributes

LOCA::ParameterVector params
 Parameter vector.
LOCA::EpetraNew::Interface::RequireduserInterface
 Reference to the user supplied interface functions.
bool interfaceTime
 Flag indicating whether interface is derived from LOCA::EpetraNew::Interface::TimeDependent.
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:New:Group to LOCA.

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

This class provides implementations of LOCA AbstractGroup virtual methods specific to the EpetraNew 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::EpetraNew::Group parent class are overloaded here. They both set the entire contents of the parameter vector in the problem interface before calling the NOX::EpetraNew::Group computeF() and computeJacobian().


Constructor & Destructor Documentation

LOCA::EpetraNew::Group::Group NOX::Parameter::List printingParams,
LOCA::EpetraNew::Interface::Required i,
NOX::Epetra::Vector initialGuess,
const LOCA::ParameterVector p
 

Constructor with NO linear system (VERY LIMITED).

WARNING: If this constructor is used, then methods that require a Jacobian or preconditioning will not be available. You will be limited to simple algorithms like nonlinear-CG with no preconditioning.


Member Function Documentation

NOX::Abstract::Group::ReturnType LOCA::EpetraNew::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::EpetraNew::Group::applyMassMatrix const NOX::Abstract::Vector input,
NOX::Abstract::Vector result
const [virtual]
 

Multiply the mass matrix by a vector. (Currently only has matrix-free implementation.)

Reimplemented from LOCA::TimeDependent::AbstractGroup.

NOX::Abstract::Group::ReturnType LOCA::EpetraNew::Group::applyShiftedMatrix const NOX::Abstract::Vector input,
NOX::Abstract::Vector result,
double  shift
const [virtual]
 

Multiply the shifted matrix by a vector. (Currently only has matrix-free implementation.)

Reimplemented from LOCA::TimeDependent::AbstractGroup.

NOX::Abstract::Group::ReturnType LOCA::EpetraNew::Group::applyShiftedMatrixInverse NOX::Parameter::List params,
const NOX::Abstract::Vector input,
NOX::Abstract::Vector result,
double  shift
[virtual]
 

Solve the linear system with the shifted matrix, using the same solver and settings as for the Jacobian matrix.

Reimplemented from LOCA::Abstract::Group.

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

Overloaded computeF().

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

Reimplemented from NOX::EpetraNew::Group.

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

Overloaded computeJacobian().

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

Reimplemented from NOX::EpetraNew::Group.

NOX::Abstract::Group::ReturnType LOCA::EpetraNew::Group::computeMassMatrix  )  [virtual]
 

Compute the mass matrix for the system. (Currently only has matrix-free implementation.)

Reimplemented from LOCA::TimeDependent::AbstractGroup.

double LOCA::EpetraNew::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.

void LOCA::EpetraNew::Group::projectToDraw const NOX::Abstract::Vector x,
double *  px
const [virtual]
 

Projects solution to a few scalars for multiparameter continuation.

This method is called every time a solution is saved by the multiparameter continuation code MF for later visualization and should project the solution vector down to a few scalars. The array px will be preallocated to the proper length given by projectToDrawDimension().

The implementation here is to call the corresponding method in the interface.

Reimplemented from LOCA::MultiContinuation::AbstractGroup.

int LOCA::EpetraNew::Group::projectToDrawDimension  )  const [virtual]
 

Returns the dimension of the project to draw array.

The implementation here is to call the corresponding method in the interface.

Reimplemented from LOCA::MultiContinuation::AbstractGroup.

void LOCA::EpetraNew::Group::scaleVector NOX::Abstract::Vector x  )  const [virtual]
 

Scales a vector using scaling vector.

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

\[ x_i = a_i*s_i. \]

If the scaling vector is not provided, the vector is rescaled by the square root of its length.

Reimplemented from LOCA::Continuation::AbstractGroup.


Member Data Documentation

Epetra_Vector* LOCA::EpetraNew::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:42:24 2008 for NOX by doxygen 1.3.9.1