Ifpack2 Templated Preconditioning Package
Version 1.0
|
Store and solve a local Banded linear problem. More...
#include <Ifpack2_BandedContainer_decl.hpp>
Store and solve a local Banded 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:
BandedContainer stores the diagonal blocks as Banded 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 Banded 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 Banded 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.