Ifpack Package Browser (Single Doxygen Collection)
Development
|
Ifpack_TriDiContainer: a class to define containers for dense matrices. More...
#include <Ifpack_TriDiContainer.h>
Public Member Functions | |
virtual double | InitializeFlops () const |
Returns the flops in Initialize(). More... | |
virtual double | ComputeFlops () const |
Returns the flops in Compute(). More... | |
virtual double | ApplyFlops () const |
Returns the flops in Apply(). More... | |
virtual double | ApplyInverseFlops () const |
Returns the flops in ApplyInverse(). More... | |
virtual std::ostream & | Print (std::ostream &os) const |
Prints basic information on iostream. This function is used by operator<<. More... | |
Public Member Functions inherited from Ifpack_Container | |
virtual | ~Ifpack_Container () |
Destructor. More... | |
Private Member Functions | |
virtual int | Extract (const Epetra_RowMatrix &Matrix_in) |
Extract the submatrices identified by the ID set int ID(). More... | |
Private Attributes | |
int | NumRows_ |
Number of rows in the container. More... | |
int | NumVectors_ |
Number of vectors in the container. More... | |
Ifpack_SerialTriDiMatrix | NonFactoredMatrix_ |
TriDi matrix, that contains the non-factored matrix. More... | |
Ifpack_SerialTriDiMatrix | Matrix_ |
TriDi matrix. More... | |
Epetra_SerialDenseMatrix | LHS_ |
SerialDense vector representing the LHS. More... | |
Epetra_SerialDenseMatrix | RHS_ |
SerialDense vector representing the RHS. More... | |
Ifpack_SerialTriDiSolver | Solver_ |
TriDi solver (solution will be get using LAPACK). More... | |
Epetra_IntSerialDenseVector | ID_ |
Sets of local rows. More... | |
bool | KeepNonFactoredMatrix_ |
If true , keeps a copy of the non-factored matrix. More... | |
bool | IsInitialized_ |
If true , the container has been successfully initialized. More... | |
bool | IsComputed_ |
If true , the container has been successfully computed. More... | |
std::string | Label_ |
Label for this object. More... | |
double | ComputeFlops_ |
Flops in Compute(). More... | |
double | ApplyFlops_ |
Flops in Apply(). More... | |
double | ApplyInverseFlops_ |
Flops in ApplyInverse(). More... | |
Ifpack_TriDiContainer (const int NumRows_in, const int NumVectors_in=1) | |
Default constructor. More... | |
Ifpack_TriDiContainer (const Ifpack_TriDiContainer &rhs) | |
Copy constructor. More... | |
virtual | ~Ifpack_TriDiContainer () |
Destructor. More... | |
Ifpack_TriDiContainer & | operator= (const Ifpack_TriDiContainer &rhs) |
Operator=. More... | |
virtual int | NumRows () const |
Returns the number of rows of the matrix and LHS/RHS. More... | |
virtual int | NumVectors () const |
Returns the number of vectors in LHS/RHS. More... | |
virtual int | SetNumVectors (const int NumVectors_in) |
Sets the number of vectors for LHS/RHS. More... | |
virtual double & | LHS (const int i, const int Vector=0) |
Returns the i-th component of the vector Vector of LHS. More... | |
virtual double & | RHS (const int i, const int Vector=0) |
Returns the i-th component of the vector Vector of RHS. More... | |
virtual int & | ID (const int i) |
Returns the ID associated to local row i. More... | |
virtual int | SetMatrixElement (const int row, const int col, const double value) |
Set the matrix element (row,col) to value . More... | |
virtual int | SetParameters (Teuchos::ParameterList &) |
Sets all necessary parameters. More... | |
virtual bool | IsInitialized () const |
Returns true is the container has been successfully initialized. More... | |
virtual bool | IsComputed () const |
Returns true is the container has been successfully computed. More... | |
virtual const char * | Label () const |
Returns the label of this container. More... | |
virtual int | SetKeepNonFactoredMatrix (const bool flag) |
If flag is true , keeps a copy of the non-factored matrix. More... | |
virtual bool | KeepNonFactoredMatrix () const |
Returns KeepNonFactoredMatrix_. More... | |
virtual const Epetra_SerialDenseMatrix & | LHS () const |
Returns the dense vector containing the LHS. More... | |
virtual const Epetra_SerialDenseMatrix & | RHS () const |
Returns the dense vector containing the RHS. More... | |
virtual const Ifpack_SerialTriDiMatrix & | Matrix () const |
Returns the dense matrix or its factors. More... | |
virtual const Ifpack_SerialTriDiMatrix & | NonFactoredMatrix () const |
Returns the non-factored dense matrix (only if stored). More... | |
virtual const Epetra_IntSerialDenseVector & | ID () const |
Returns the integer dense vector of IDs. More... | |
virtual int | Initialize () |
Initialize the container. More... | |
virtual int | Compute (const Epetra_RowMatrix &Matrix_in) |
Finalizes the linear system matrix and prepares for the application of the inverse. More... | |
virtual int | Apply () |
Apply the matrix to RHS, results are stored in LHS. More... | |
virtual int | ApplyInverse () |
Apply the inverse of the matrix to RHS, results are stored in LHS. More... | |
Ifpack_TriDiContainer: a class to define containers for dense matrices.
To understand what an IFPACK container is, please refer to the documentation of the pure virtual class Ifpack_Container. Currently, containers are used by class Ifpack_BlockRelaxation.
Using block methods, one needs to store all diagonal blocks and to be also to apply the inverse of each diagonal block. Using class Ifpack_TriDiContainer, one can store the blocks as dense matrices, which can be advantageous when the blocks are small. Otherwise, class Ifpack_SparseContainer is probably more appropriate.
A typical use of a container is as follows:
A call to Compute() computes the LU factorization of the linear system matrix, using LAPACK (more precisely, by calling the corresponding routines in Ifpack_SerialTriDiSolver). The default behavior is to store the matrix factors by overwriting the linear system matrix itself. This way, method Apply() fails, as the original matrix does no longer exists. An alternative is to call KeepNonFactoredMatrix(true)
, which forces Ifpack_TriDiContainer to maintain in memory a copy of the non-factored matrix.
Definition at line 124 of file Ifpack_TriDiContainer.h.
|
inline |
Default constructor.
Definition at line 131 of file Ifpack_TriDiContainer.h.
|
inline |
Copy constructor.
Definition at line 143 of file Ifpack_TriDiContainer.h.
|
inlinevirtual |
Destructor.
Definition at line 159 of file Ifpack_TriDiContainer.h.
|
inline |
Operator=.
Definition at line 166 of file Ifpack_TriDiContainer.h.
|
virtual |
Returns the number of rows of the matrix and LHS/RHS.
Implements Ifpack_Container.
Definition at line 48 of file Ifpack_TriDiContainer.cpp.
|
inlinevirtual |
Returns the number of vectors in LHS/RHS.
Implements Ifpack_Container.
Definition at line 193 of file Ifpack_TriDiContainer.h.
|
inlinevirtual |
Sets the number of vectors for LHS/RHS.
Implements Ifpack_Container.
Definition at line 199 of file Ifpack_TriDiContainer.h.
|
virtual |
Returns the i-th component of the vector Vector of LHS.
Implements Ifpack_Container.
Definition at line 95 of file Ifpack_TriDiContainer.cpp.
|
virtual |
Returns the i-th component of the vector Vector of RHS.
Implements Ifpack_Container.
Definition at line 101 of file Ifpack_TriDiContainer.cpp.
|
virtual |
Returns the ID associated to local row i.
The set of (local) rows assigned to this container is defined by calling ID(i) = j, where i (from 0 to NumRows()) indicates the container-row, and j indicates the local row in the calling process.
This is usually used to recorder the local row ID (on calling process) of the i-th row in the container.
Implements Ifpack_Container.
Definition at line 145 of file Ifpack_TriDiContainer.cpp.
|
virtual |
Set the matrix element (row,col) to value
.
Implements Ifpack_Container.
Definition at line 108 of file Ifpack_TriDiContainer.cpp.
|
inlinevirtual |
Sets all necessary parameters.
Implements Ifpack_Container.
Definition at line 243 of file Ifpack_TriDiContainer.h.
|
inlinevirtual |
Returns true
is the container has been successfully initialized.
Implements Ifpack_Container.
Definition at line 249 of file Ifpack_TriDiContainer.h.
|
inlinevirtual |
Returns true
is the container has been successfully computed.
Implements Ifpack_Container.
Definition at line 255 of file Ifpack_TriDiContainer.h.
|
inlinevirtual |
Returns the label of this container.
Implements Ifpack_Container.
Definition at line 261 of file Ifpack_TriDiContainer.h.
|
inlinevirtual |
If flag
is true
, keeps a copy of the non-factored matrix.
Definition at line 267 of file Ifpack_TriDiContainer.h.
|
inlinevirtual |
Returns KeepNonFactoredMatrix_.
Definition at line 274 of file Ifpack_TriDiContainer.h.
|
inlinevirtual |
Returns the dense vector containing the LHS.
Definition at line 280 of file Ifpack_TriDiContainer.h.
|
inlinevirtual |
Returns the dense vector containing the RHS.
Definition at line 286 of file Ifpack_TriDiContainer.h.
|
inlinevirtual |
Returns the dense matrix or its factors.
Definition at line 292 of file Ifpack_TriDiContainer.h.
|
inlinevirtual |
Returns the non-factored dense matrix (only if stored).
Definition at line 298 of file Ifpack_TriDiContainer.h.
|
inlinevirtual |
Returns the integer dense vector of IDs.
Definition at line 304 of file Ifpack_TriDiContainer.h.
|
virtual |
Initialize the container.
Implements Ifpack_Container.
Definition at line 54 of file Ifpack_TriDiContainer.cpp.
|
virtual |
Finalizes the linear system matrix and prepares for the application of the inverse.
Implements Ifpack_Container.
Definition at line 208 of file Ifpack_TriDiContainer.cpp.
|
virtual |
Apply the matrix to RHS, results are stored in LHS.
Implements Ifpack_Container.
Definition at line 240 of file Ifpack_TriDiContainer.cpp.
|
virtual |
Apply the inverse of the matrix to RHS, results are stored in LHS.
Implements Ifpack_Container.
Definition at line 128 of file Ifpack_TriDiContainer.cpp.
|
inlinevirtual |
Returns the flops in Initialize().
Implements Ifpack_Container.
Definition at line 326 of file Ifpack_TriDiContainer.h.
|
inlinevirtual |
Returns the flops in Compute().
Implements Ifpack_Container.
Definition at line 331 of file Ifpack_TriDiContainer.h.
|
inlinevirtual |
Returns the flops in Apply().
Implements Ifpack_Container.
Definition at line 336 of file Ifpack_TriDiContainer.h.
|
inlinevirtual |
Returns the flops in ApplyInverse().
Implements Ifpack_Container.
Definition at line 341 of file Ifpack_TriDiContainer.h.
|
virtual |
Prints basic information on iostream. This function is used by operator<<.
Implements Ifpack_Container.
Definition at line 259 of file Ifpack_TriDiContainer.cpp.
|
privatevirtual |
Extract the submatrices identified by the ID set int ID().
Definition at line 152 of file Ifpack_TriDiContainer.cpp.
|
private |
Number of rows in the container.
Definition at line 355 of file Ifpack_TriDiContainer.h.
|
private |
Number of vectors in the container.
Definition at line 357 of file Ifpack_TriDiContainer.h.
|
private |
TriDi matrix, that contains the non-factored matrix.
Definition at line 359 of file Ifpack_TriDiContainer.h.
|
private |
TriDi matrix.
Definition at line 361 of file Ifpack_TriDiContainer.h.
|
private |
SerialDense vector representing the LHS.
Definition at line 363 of file Ifpack_TriDiContainer.h.
|
private |
SerialDense vector representing the RHS.
Definition at line 365 of file Ifpack_TriDiContainer.h.
|
private |
TriDi solver (solution will be get using LAPACK).
Definition at line 367 of file Ifpack_TriDiContainer.h.
|
private |
Sets of local rows.
Definition at line 369 of file Ifpack_TriDiContainer.h.
|
private |
If true
, keeps a copy of the non-factored matrix.
Definition at line 371 of file Ifpack_TriDiContainer.h.
|
private |
If true
, the container has been successfully initialized.
Definition at line 373 of file Ifpack_TriDiContainer.h.
|
private |
If true
, the container has been successfully computed.
Definition at line 375 of file Ifpack_TriDiContainer.h.
|
private |
Label for this
object.
Definition at line 377 of file Ifpack_TriDiContainer.h.
|
private |
Flops in Compute().
Definition at line 380 of file Ifpack_TriDiContainer.h.
|
private |
Flops in Apply().
Definition at line 382 of file Ifpack_TriDiContainer.h.
|
private |
Flops in ApplyInverse().
Definition at line 384 of file Ifpack_TriDiContainer.h.