Ifpack2 Templated Preconditioning Package
Version 1.0
|
Store and solve a local TriDi linear problem. More...
#include <Ifpack2_TriDiContainer_decl.hpp>
Store and solve a local TriDi 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:
TriDiContainer stores the diagonal blocks as TriDi matrices, and solves them using LAPACK (for the four Scalar types that it supports)
As with Ifpack2::Container, MatrixType must be a specialization of Tpetra::RowMatrix. Using a TriDi 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. If your matrix is banded but not tridiagonal, use BandedContainer.
This class may store the TriDi 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 specialization 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.