LOCA::Epetra::HouseholderJacOp Class Reference

Epetra operator representing a $n+1$ bordered matrix. More...

#include <LOCA_Epetra_HouseholderJacOp.H>

Inheritance diagram for LOCA::Epetra::HouseholderJacOp:

Collaboration diagram for LOCA::Epetra::HouseholderJacOp:
List of all members.

Public Member Functions

 HouseholderJacOp (const Epetra_Operator &jac, const Epetra_MultiVector &dfdpVec, const Epetra_MultiVector &houseVec_x, double houseVec_p, double b)
virtual ~HouseholderJacOp ()
virtual int SetUseTranspose (bool UseTranspose)
 This operator does not support a transpose.
virtual int Apply (const Epetra_MultiVector &Input, Epetra_MultiVector &Result) const
 Returns the result of a Epetra_Operator applied to a Epetra_MultiVector Input in Result as described above.
virtual int ApplyInverse (const Epetra_MultiVector &X, Epetra_MultiVector &Y) const
 This method does nothing.
virtual double NormInf () const
 Returns an approximate infinity norm of the Householder jac matrix.
virtual const char * Label () const
 Returns a character string describing the operator.
virtual bool UseTranspose () const
 Returns the current UseTranspose setting. Always returns false.
virtual bool HasNormInf () const
 Returns true if the this object can provide an approximate Inf-norm, false otherwise.
virtual const Epetra_CommComm () const
 Returns a reference to the Epetra_Comm communicator associated with this operator.
virtual const Epetra_MapOperatorDomainMap () const
 Returns the Epetra_Map object associated with the domain of this matrix operator.
virtual const Epetra_MapOperatorRangeMap () const
 Returns the Epetra_Map object associated with the range of this matrix operator.
void init (const Epetra_MultiVector &x)
 Initialize operator. Call this before starting a linear solve. The Epetra_MultiVector argument x must be of the same size and distribution as arguments to Apply().
void finish ()
 Finish up solve. Call this after a linear solve is finished to inform the operator that the solve is completed.
void applyHouse (Epetra_MultiVector &x, double &p) const
 This method applies the Housholder transformation from $\Re^{n+1}$ to $\Re^{n+1}$ and overwrites its arguments.
void applyHouse (const Epetra_MultiVector &x, double p, Epetra_MultiVector &result_x, double &result_p) const
 This version of applyHouse does not overwrite its arguments.

Protected Attributes

string label
 Label for operator.
const Epetra_OperatorjacOperator
 Stores operator representing $J$.
const Epetra_MultiVectordfdp
 Stores reference to $df/dp$ vector.
const Epetra_MultiVectorhouse_x
 Stores reference to x component of Householder vector.
double house_p
 Stores parameter component of Householder vector.
double beta
 Stores constant in Householder transformation.
 Temporary multi-vec used in Apply().

Detailed Description

Epetra operator representing a $n+1$ bordered matrix.

The LOCA::Epetra::HouseholderJacOp is an Epetra_Operator representing the matrix

\[ \begin{bmatrix} J & \frac{df}{dp} \end{bmatrix} Q \]

where $J$ is an Epetra_Operator representing an $n\times n$ Jacobian matrix $\frac{df}{dx}$, and $Q\in\Re^{n+1\times n}$ is orthogonal and whose columns span $v^{\perp}$ with $v\in\Re^{n+1}$ a supplied vector. The action of $Q$ is defined for any $z\in\Re^n$ by

\[ 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 $e_{n+1}$ is the $n+1$ column of the identity.

The Apply() method performs the matrix-vector multiplication using the Householder transformation $P$ and the matrix operator $J$. ApplyInverse() is not implemented.

This operator is used to compute solutions to the system of equations

\[ \begin{bmatrix} J & \frac{df}{dp} \end{bmatrix} \begin{bmatrix} \Delta x \\ \Delta p \end{bmatrix} = f \quad \text{s.t.}\quad v^T\begin{bmatrix}\Delta x \\ \Delta p\end{bmatrix} = 0 \]

in an iterative solver context for pseudo-arclength continuation where $v$ is the predictor vector.

Constructor & Destructor Documentation

LOCA::Epetra::HouseholderJacOp::HouseholderJacOp const Epetra_Operator jac,
const Epetra_MultiVector dfdpVec,
const Epetra_MultiVector houseVec_x,
double  houseVec_p,
double  b


Builds the operator using the supplied operator jac and Epetra_Vector's dfdpVec and houseVec_x. Here houseVec_x is the x (solution) component of the Householder vector, houseVec_p is the parameter component, and b is the scalar in the Householder transformation.

Member Function Documentation

double LOCA::Epetra::HouseholderJacOp::NormInf  )  const [virtual]

Returns an approximate infinity norm of the Householder jac matrix.

This is defined only if NormInf() of the underlying operator $J$ is defined and is given by $\|J\|_\infty+\|\frac{df}{dp}\|_\infty$.

Implements Epetra_Operator.

int LOCA::Epetra::HouseholderJacOp::SetUseTranspose bool  UseTranspose  )  [virtual]

This operator does not support a transpose.

Setting this to true throws an error.

Implements Epetra_Operator.

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