HLIBpro  2.5.1
TLU Class Reference

Computes LU factorisation $ A = LU $. More...

#include <mat_fac.hh>

Public Member Functions

void factorise (TMatrix *A, const TTruncAcc &acc) const
 
auto eval_matrix (TMatrix *A) const -> std::unique_ptr< TFacMatrix >
 
auto inv_matrix (TMatrix *A) const -> std::unique_ptr< TFacInvMatrix >
 
void split (const TMatrix *A, TMatrix *&L, TMatrix *&U) const
 
std::pair< TMatrix *, TMatrix *> split (TMatrix *A) const
 
size_t pm_steps (const TMatrix *A) const
 return number of factorisation steps for A for progress meter
 

Public Attributes

 __pad0__: _options( opts ) {} ~TLU () {} void set_options ( const fac_options_t opts ) { _options = opts
 standard constructor with optional LU settings
 

Detailed Description

This class computes the LU factorisation $A = LU$ of a matrix $A$ with lower, unit triangular matrix $L$ and upper triangular matrix $U$.

The factorisation may be either point wise, i.e. a real LU factorisation, or block wise in which case, dense diagonal matrix blocks are inverted.

Support for multiple threads is available, although the expectable speedup is limited, e.g. best suited for at most 4 threads.

Member Function Documentation

◆ eval_matrix()

auto eval_matrix ( TMatrix A) const -> std::unique_ptr< TFacMatrix >

return suitable representation for evaluating factors L and U

Parameters
ALU factors to be represented

◆ factorise()

void factorise ( TMatrix A,
const TTruncAcc acc 
) const

compute LU factorisation of given matrix

Parameters
Aon input matrix to factorise; on output factors L and U
accaccuracy of factorisation

◆ inv_matrix()

auto inv_matrix ( TMatrix A) const -> std::unique_ptr< TFacInvMatrix >

return suitable inverse representation of factors L and U

Parameters
ALU factor to be represented

◆ split() [1/2]

void split ( const TMatrix A,
TMatrix *&  L,
TMatrix *&  U 
) const

split given matrix A into individual factors L and U

Parameters
Ajoined LU factors
Lmatrix pointer to store factor L
Umatrix pointer to store factor U
eval_typedetermines block-wise or point-wise evaluation

◆ split() [2/2]

std::pair< TMatrix *, TMatrix * > split ( TMatrix A) const

split matrix A into individual factors L and U; A is destroyed and L/U will contain the former submatrices of A