Defines a preconditioner using incomplete LU (ILU) factorisation. More...
#include <ptems/solvers/preconditioners/ilu.hpp>
Public Types | |
typedef T | value_type |
The entry types of the matrix to precondition. More... | |
Public Member Functions | |
ILUPreconditioner (const SparsityPattern &sparsity, PreconditionerType type=PreconditionerType::Right) | |
Creates an incomplete LU factorisation preconditioner with the given sparsity pattern. More... | |
void | Initialise (const ParallelComm &comm, const std::vector< SparseMatrixEntry< T >> &mat, std::size_t firstRow, std::size_t size, const std::vector< std::size_t > rowOffset) override |
Initialise the preconditioner for the specified matrix. More... | |
virtual void | ApplyLeft (const ParallelComm &comm, std::vector< T > &rhs) override |
Apply the left preconditioner to the specified vector overriding the vector with the result. More... | |
virtual void | ApplyRight (const ParallelComm &comm, std::vector< T > &rhs) override |
Apply the right preconditioner to the specified vector overriding the vector with the result. More... | |
virtual PreconditionerType | Type () const override |
Gets the type of the preconditioner. More... | |
Defines a preconditioner using incomplete LU (ILU) factorisation.
An ILU factorisation performs LU factorisation computes SPARSE lower ( \(L\)) and upper ( \(U\)) triangular matrices such that the residual \(LU-A\), where \(A\) is the matrix being factorised has a given sparsity pattern, and, ideally, such that \(LU \approx A\).
The | type of the matrix entries the pre-conditioner is for |
|
inherited |
The entry types of the matrix to precondition.
|
inline |
Creates an incomplete LU factorisation preconditioner with the given sparsity pattern.
sparsity | Sparsity pattern of L+U |
type | Specifies whether this preconditioner should be applied as a left, right, or split preconditioner 9default=Right) |
|
inlineoverridevirtual |
Apply the left preconditioner to the specified vector overriding the vector with the result.
comm | MPI communicator for parallel preconditioning |
rhs | Vector to precondition (contains complete vector NOT slice). Update with the preconditioned vector |
Implements ptems::Preconditioner< T >.
|
inlineoverridevirtual |
Apply the right preconditioner to the specified vector overriding the vector with the result.
comm | MPI communicator for parallel preconditioning |
rhs | Vector to precondition (contains complete vector NOT slice). Update with the preconditioned vector |
Implements ptems::Preconditioner< T >.
|
inlineoverridevirtual |
Initialise the preconditioner for the specified matrix.
The preconditioner can be called with a "slice" if using MPI (different processors get different slices)
comm | MPI communicator for parallel preconditioning |
mat | The slice of the matrix for the current process as a sparse matrix. Entries are ordered by row, then column |
firstRow | The row index of the first row in the slice |
size | The number of rows (and columns) of the FULL matrix |
rowOffset | The offset into mat for each row in the slice (the offset with index 0 is for firstRow (and will always by 0), 1 for firstRow+1 etc.) |
Implements ptems::Preconditioner< T >.
|
inlineoverridevirtual |
Gets the type of the preconditioner.
Implements ptems::Preconditioner< T >.