HLIBpro  2.8.1
TFacInvMatrix Class Referenceabstract

Baseclass for representing the inverse of factorised matrices. More...

#include <TFacInvMatrix.hh>

Inheritance diagram for TFacInvMatrix:
TLinearOperator TTypeInfo TLDLInvMatrix TLDUInvMatrix TLLInvMatrix TLUInvMatrix

Public Member Functions

template<typename T_mat >
 TFacInvMatrix (T_mat &&afac_matrix, const eval_type_t aeval_type=CFG::Arith::eval_type, const storage_type_t astorage_type=CFG::Arith::storage_type)
 
template<typename T_mat >
 TFacInvMatrix (T_mat &&afac_matrix, const TTruncAcc &aacc, const eval_type_t aeval_type=CFG::Arith::eval_type, const storage_type_t astorage_type=CFG::Arith::storage_type)
 
template<typename T_mat >
 TFacInvMatrix (const TScalarVector *D1, T_mat &&afac_matrix, const TScalarVector *D2, const eval_type_t aeval_type=CFG::Arith::eval_type, const storage_type_t astorage_type=CFG::Arith::storage_type)
 
virtual ~TFacInvMatrix ()
 dtor
 
const TMatrixmatrix () const
 access factorised matrix
 
bool has_scaling () const
 return true if diagonal scaling is used
 
const TScalarVectorscaling_left () const
 return left scaling matrix
 
const TScalarVectorscaling_right () const
 return right scaling matrix
 
eval_type_t eval_type () const
 return evaluation type (pointwise/blockwise)
 
storage_type_t storage_type () const
 return evaluation type (pointwise/blockwise)
 
const TTruncAcc accuracy () const
 return internal accuracy for matrix arithmetic
 
void set_accuracy (const TTruncAcc &aacc)
 set internal accuracy for matrix arithmetic
 
bool is_complex () const
 return true, if field type is complex
 
bool is_self_adjoint () const
 return true, of operator is self adjoint
 
virtual void apply (const TVector *x, TVector *y, const matop_t op=apply_normal) const
 
virtual void apply_add (const real alpha, const TVector *x, TVector *y, const matop_t op=apply_normal) const
 
virtual void apply_add (const real alpha, const BLAS::Vector< real > &x, BLAS::Vector< real > &y, const matop_t op=apply_normal) const
 
virtual size_t domain_dim () const
 return dimension of domain
 
virtual size_t range_dim () const
 return dimension of range
 
virtual auto domain_vector () const -> std::unique_ptr< TVector >
 return vector in domain space
 
virtual auto range_vector () const -> std::unique_ptr< TVector >
 return vector in range space
 
- Public Member Functions inherited from TTypeInfo
virtual typeid_t type () const =0
 return type ID of object
 
virtual bool is_type (const typeid_t t) const
 return true if local object is of given type ID t
 
virtual std::string typestr () const
 return string representation of type
 

Detailed Description

      TFacInvMatrix and the derived classes represent operators based on
      factorised matrices providing the ability to evaluate the inverse
      of the corresponding matrix (in factorised form), e.g. for \f$ A = LU \f$
      the inverse \f$ (LU)^{-1} \f$ is applied.

      Optionally, diagonal scalings from left and right may have been
      applied before the factorisation and now taken into account in the
      evaluation.

Constructor & Destructor Documentation

◆ TFacInvMatrix() [1/3]

TFacInvMatrix ( T_mat &&  afac_matrix,
const eval_type_t  aeval_type = CFG::Arith::eval_type,
const storage_type_t  astorage_type = CFG::Arith::storage_type 
)
inline

construct inverse operator with factorised matrix afac_matrix (no diagonal scaling applied)

◆ TFacInvMatrix() [2/3]

TFacInvMatrix ( T_mat &&  afac_matrix,
const TTruncAcc aacc,
const eval_type_t  aeval_type = CFG::Arith::eval_type,
const storage_type_t  astorage_type = CFG::Arith::storage_type 
)
inline

construct inverse operator with factorised matrix afac_matrix with accuracy for matrix arithmetic (without diagonal scaling)

◆ TFacInvMatrix() [3/3]

TFacInvMatrix ( const TScalarVector D1,
T_mat &&  afac_matrix,
const TScalarVector D2,
const eval_type_t  aeval_type = CFG::Arith::eval_type,
const storage_type_t  astorage_type = CFG::Arith::storage_type 
)
inline

construct inverse operator with factorised matrix afac_matrix and additional row and column scaling factors D1 and D2, e.g. A = D1·Ã·D2, with à = afac_matrix

Member Function Documentation

◆ apply()

virtual void apply ( const TVector x,
TVector y,
const matop_t  op = apply_normal 
) const
virtual

mapping function of linear operator A, e.g. y ≔ A(x). Depending on op, either A, A^T or A^H is applied.

Implements TLinearOperator.

◆ apply_add() [1/2]

virtual void apply_add ( const real  alpha,
const BLAS::Vector< real > &  x,
BLAS::Vector< real > &  y,
const matop_t  op = apply_normal 
) const
virtual

same as above but only the dimension of the vector spaces is tested, not the corresponding index sets

Implements TLinearOperator.

◆ apply_add() [2/2]

virtual void apply_add ( const real  alpha,
const TVector x,
TVector y,
const matop_t  op = apply_normal 
) const
virtual

mapping function with update: yy + α A( x ). Depending on op, either A, A^T or A^H is applied.

Implements TLinearOperator.