bordered matrix.
More...
#include <LOCA_Epetra_BorderedOp.H>
Inheritance diagram for LOCA::Epetra::BorderedOp:
Public Member Functions | |
| BorderedOp (Epetra_Operator &jac, const Epetra_Vector &a, const Epetra_Vector &b) | |
| Constructor. | |
| virtual | ~BorderedOp () |
| Destructor. | |
| virtual int | SetUseTranspose (bool UseTranspose) |
| If set true, transpose of this operator will be applied. | |
| 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. | |
| virtual int | ApplyInverse (const Epetra_MultiVector &X, Epetra_MultiVector &Y) const |
| Returns the result of a Epetra_Operator inverse applied to an Epetra_MultiVector X in Y. | |
| virtual double | NormInf () const |
| Returns the infinity norm of the bordered matrix. | |
| virtual const char * | Label () const |
| Returns a character string describing the operator. | |
| virtual bool | UseTranspose () const |
| Returns the current UseTranspose setting. | |
| virtual bool | HasNormInf () const |
| Returns true if the this object can provide an approximate Inf-norm, false otherwise. | |
| virtual const Epetra_Comm & | Comm () const |
| Returns a reference to the Epetra_Comm communicator associated with this operator. | |
| virtual const Epetra_Map & | OperatorDomainMap () const |
| Returns the Epetra_Map object associated with the domain of this matrix operator. | |
| virtual const Epetra_Map & | OperatorRangeMap () const |
| Returns the Epetra_Map object associated with the range of this matrix operator. | |
| virtual Epetra_Vector * | buildEpetraExtendedVec (Epetra_Vector &x, double p, bool doCopy) const |
| Builds an extended vector from components. | |
| virtual void | setEpetraExtendedVec (Epetra_Vector &x, double &p, Epetra_Vector &extVec) const |
| Sets components from extended vector. | |
Protected Member Functions | |
| void | buildExtendedMap (const Epetra_BlockMap &map, Epetra_Map *&extMapPtr, bool buildImporter, bool haveParam) |
| Builds extended domain, range maps. | |
| int | blockMap2PointMap (const Epetra_BlockMap &BlockMap, Epetra_Map *&PointMap) const |
| Converts a block map to an equivalent point map. | |
Protected Attributes | |
| string | label |
| Label for operator. | |
| Epetra_Operator & | jacOperator |
Stores operator representing . | |
| const Epetra_Vector * | aVecPtr |
| Stores pointer to a vector. | |
| const Epetra_Vector * | bVecPtr |
| Stores pointer to b vector. | |
| const Epetra_BlockMap * | underlyingMapPtr |
| Stores underlying domain map. | |
| const Epetra_Comm * | underlyingCommPtr |
| Stores comm. | |
| int | underlyingLength |
| Stores underlying vector local length. | |
| Epetra_Map * | extendedMapPtr |
| Stores extended domain map. | |
| Epetra_Map * | extendedImportMapPtr |
| Stores extended turning point map for importing param component. | |
| Epetra_Import * | extendedImporter |
| Stores importer object for importing param component. | |
| bool | haveParamComponent |
| Flag indicating whether we have the parameter component. | |
| bool | useTranspose |
| Flag indicating whether to use transpose of operator. | |
bordered matrix.
The LOCA::Epetra::BorderedOp is an Epetra_Operator representing the
bordered matrix
where
is an Epetra_Operator representing an
matrix, and
and
are length
Epetra_Vector's (The case where
and/or
are multi-vectors is not yet supported). It is assumed the Epetra_Map's for
,
, and
are the same and the corresponding map for the bordered matrix is constructed from this map by storing the additional component on processor 0. The buildEpetraExtendedVec() method can be used to construct an Epetra_Vector using this map and a supplied length
Epetra_Vector and a scalar, while setEpetraExtendedVec() splits an extended vector into its length
and scalar components. The Apply() method performs the
matrix multiplication while ApplyInverse() uses a block-elimination algorithm to compute the inverse using the ApplyInverse() method of the underlying operator
. In this way, linear systems of the form
can be solved in a matrix-free mode using the Apply() method. This operator can also represent a preconditioner of the form
using the ApplyInvese() method, where
is a preconditioner for
. Note that if
is nearly singular, the preconditioner should not be too good because otherwise the preconditining operation represented by ApplyInverse() becomes unstable.
|
||||||||||||||||
|
Constructor. Builds the bordered operator using the supplied operator jac and Epetra_Vector's a and b. It is assumed a, b, and jac all have the same map. |
|
||||||||||||
|
Returns the result of a Epetra_Operator applied to a Epetra_MultiVector Input in Result. Computes the extended matrix-vector product
or its transpose if UseTranpose() is true. Currently, only the case where Input and Result are Epetra_Vector's is supported. Implements Epetra_Operator. |
|
||||||||||||
|
Returns the result of a Epetra_Operator inverse applied to an Epetra_MultiVector X in Y. Solves the extended system
using the following block-elimination algorithm:
Currently, only the case where Input and Result are Epetra_Vector's is supported. If UseTranpose() is true, the tranpose of the system is solved. Implements Epetra_Operator. |
|
||||||||||||||||
|
Builds an extended vector from components. Builds an extended vector using the map representing the bordered matrix. If doCopy is true, the contents of x are copied into the extended vector, otherwise only space for the extended vector is created. |
|
|
Returns the infinity norm of the bordered matrix.
This is defined only if NormInf() of the underlying operator Implements Epetra_Operator. |
|
||||||||||||||||
|
Sets components from extended vector. Splits the extended vector extVec into components x and p by copying values out of extVec. |
|
|
If set true, transpose of this operator will be applied.
Note that is only valid if the underlying operator Implements Epetra_Operator. |
1.3.9.1