Public Member Functions
|virtual ||~Ifpack_Container ()|
| ||Destructor. |
|virtual int ||NumRows () const =0|
| ||Returns the number of rows of the matrix and LHS/RHS. |
|virtual int ||NumVectors () const =0|
| ||Returns the number of vectors in LHS/RHS. |
|virtual int ||SetNumVectors (const int i)=0|
| ||Sets the number of vectors for LHS/RHS. |
|virtual double & ||LHS (const int i, const int Vector=0)=0|
| ||Returns the i-th component of the vector Vector of LHS. |
|virtual double & ||RHS (const int i, const int Vector=0)=0|
| ||Returns the i-th component of the vector Vector of RHS. |
|virtual int & ||ID (const int i)=0|
| ||Returns the ID associated to local row i. |
|virtual int ||SetMatrixElement (const int row, const int col, const double value)=0|
| ||Set the matrix element (row,col) to |
|virtual int ||Initialize ()=0|
| ||Initializes the container, by performing all operations that only require matrix structure. |
|virtual int ||Compute (const Epetra_RowMatrix &A)=0|
| ||Finalizes the linear system matrix and prepares for the application of the inverse. |
|virtual int ||SetParameters (Teuchos::ParameterList &List)=0|
| ||Sets all necessary parameters. |
|virtual bool ||IsInitialized () const =0|
| ||Returns |
true is the container has been successfully initialized.
|virtual bool ||IsComputed () const =0|
| ||Returns |
true is the container has been successfully computed.
|virtual int ||Apply ()=0|
| ||Apply the matrix to RHS, results are stored in LHS. |
|virtual int ||ApplyInverse ()=0|
| ||Apply the inverse of the matrix to RHS, results are stored in LHS. |
|virtual const char * ||Label () const =0|
| ||Returns the label of this container. |
|virtual double ||InitializeFlops () const =0|
| ||Returns the flops in Initialize(). |
|virtual double ||ComputeFlops () const =0|
| ||Returns the flops in Compute(). |
|virtual double ||ApplyFlops () const =0|
| ||Returns the flops in Apply(). |
|virtual double ||ApplyInverseFlops () const =0|
| ||Returns the flops in ApplyInverse(). |
|virtual ostream & ||Print (std::ostream &os) const =0|
| ||Prints out basic information about the container. |
Ifpack_Container: a pure virtual class for creating and solving local linear problems.
Class Ifpack_Container provides the abstract interfaces for containers. A "container" is an object that hosts all it is necessary to create, populate, and solve local linear problems. The local linear problem matrix, B, is a submatrix of the local components of a distributed matrix, A. The idea of container is to specify the rows of A that are contained in B, then extract B from A, and compute all it is necessary to solve a linear system in B. Then, set starting solution (if necessary) and right-hand side for B, and solve the linear system in B.
A container should be used in the following manner:
- Create an container object, specifying the number of rows of B.
- If necessary, set parameters for the solution using SetParameters().
- Initialize the container by calling Initialize().
- Specify the ID of the local rows of A that are contained in B, using ID().
- Prepare the linear system solver using Compute().
- set LHS and/or RHS elements using LHS() and RHS().
- Solve the linear system using ApplyInverse().
- Get the componenets of the computed solution using LHS().
The number of vectors can be set using SetNumVectors(), and it is defaulted to 1.
Containers are currently used by class Ifpack_BlockRelaxation.
Ifpack_Container is a pure virtual class. Two concrete implementations are provided in classes Ifpack_SparseContainer (that stores matrices in sparse the format Epetra_CrsMatrix) and Ifpack_DenseContainer (for relatively small matrices, as matrices are stored as Epetra_SerialDenseMatrix's).
- Still to do:
- Flops count has to be tested.
- Marzio Sala, SNL 9214.
- Last update Oct-04.
Definition at line 85 of file Ifpack_Container.h.