Ifpack2 Templated Preconditioning Package
Version 1.0
|
Store and solve a local dense linear problem. More...
#include <Ifpack2_DenseContainer_decl.hpp>
Store and solve a local dense linear problem.
MatrixType | A specialization of Tpetra::RowMatrix. |
Please refer to the documentation of the Container interface. Currently, Containers are used by BlockRelaxation. Block relaxations need to be able to do two things:
DenseContainer stores the diagonal blocks as dense matrices, and solves them using either LAPACK (for the four Scalar types that it supports) or a custom LU factorization (for Scalar types not supported by LAPACK).
As with Ifpack2::Container, MatrixType
must be a specialization of Tpetra::RowMatrix. Using a dense matrix for each block is a good idea when the blocks are small. For large and / or sparse blocks, it would probably be better to use an implementation of Container that stores the blocks sparsely, in particular SparseContainer.
This class may store the dense local matrix using values of a different type (LocalScalarType
) than those in MatrixType
. You may mix and match so long as implicit conversions are available between LocalScalarType
and MatrixType::scalar_type
.
This class currently assumes the following about the column and row Maps of the input matrix:
These assumptions may be violated if the input matrix is a Tpetra::CrsMatrix that was constructed with a user-provided column Map. The assumptions are not mathematically necessary and could be relaxed at any time. Implementers who wish to do so will need to modify the extract() method, so that it translates explicitly between local row and column indices, instead of just assuming that they are the same.