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 >.