gko::experimental::factorization::
Factorization#
The container produced by every factorisation in this namespace. Owns
the computed factors and dispatches on apply: depending on the
internal representation, applying the Factorization performs the
appropriate combination of triangular solves and matrix multiplies that
realises the action of \(A^{-1}\) (or its approximation).
Lives in the experimental namespace pending API stabilisation.
-
template<typename ValueType, typename IndexType>
class Factorization # Inherits from
public gko::EnableLinOp<Factorization<ValueType, IndexType>>
Represents a generic factorization consisting of two triangular factors (upper and lower) and an optional diagonal scaling matrix. This class is used to represent a wide range of different factorizations to be passed on to direct solvers and other similar operations. The storage_type represents how the individual factors are stored internally: They may be stored as separate matrices or in a single matrix, and be symmetric or unsymmetric, with the diagonal belonging to both factory, a single factor or being a separate scaling factor (Cholesky vs. LDL^H vs. LU vs. LDU).
- Template Parameters:
ValueType – the value type used to store the factorization entries
IndexType – the index type used to represent the sparsity pattern
Public Functions
-
std::unique_ptr<Factorization> unpack() const#
Transforms the factorization from a compact representation suitable only for triangular solves to a composition representation that can also be used to access individual factors and multiply with the factorization.
- Returns:
a new Factorization object containing this factorization represented as storage_type::composition.
-
storage_type get_storage_type() const#
Returns the storage type used by this factorization.
-
std::shared_ptr<const matrix_type> get_lower_factor() const#
Returns the lower triangular factor of the factorization, if available, nullptr otherwise.
-
std::shared_ptr<const diag_type> get_diagonal() const#
Returns the diagonal scaling matrix of the factorization, if available, nullptr otherwise.
-
std::shared_ptr<const matrix_type> get_upper_factor() const#
Returns the upper triangular factor of the factorization, if available, nullptr otherwise.
-
std::shared_ptr<const matrix_type> get_combined() const#
Returns the matrix storing a compact representation of the factorization, if available, nullptr otherwise.
-
Factorization(const Factorization&)#
Creates a deep copy of the factorization.
-
Factorization(Factorization&&)#
Moves from the given factorization, leaving it empty.
Public Static Functions
- static std::unique_ptr<Factorization> create_from_composition(
- std::unique_ptr<composition_type> composition,
Creates a Factorization from an existing composition.
- Parameters:
composition – the composition consisting of 2 or 3 elements. We expect the first entry to be a lower triangular matrix, and the last entry to be an upper triangular matrix. If the composition has 3 elements, we expect the middle entry to be a diagonal matrix.
- Returns:
a Factorization storing the elements from the Composition.
- static std::unique_ptr<Factorization> create_from_symm_composition(
- std::unique_ptr<composition_type> composition,
Creates a Factorization from an existing symmetric composition.
- Parameters:
composition – the composition consisting of 2 or 3 elements. We expect the first entry to be a lower triangular matrix, and the last entry to be the transpose of the first entry. If the composition has 3 elements, we expect the middle entry to be a diagonal matrix.
- Returns:
a symmetric Factorization storing the elements from the Composition.
- static std::unique_ptr<Factorization> create_from_combined_lu(
- std::unique_ptr<matrix_type> matrix,
Creates a Factorization from an existing combined representation of an LU factorization.
- Parameters:
matrix – the composition consisting of 2 or 3 elements. We expect the first entry to be a lower triangular matrix, and the last entry to be the transpose of the first entry. If the composition has 3 elements, we expect the middle entry to be a diagonal matrix.
- Returns:
a symmetric Factorization storing the elements from the Composition.