HLIBpro  1.2
Public Member Functions | Protected Member Functions | List of all members
TFacMatrix Class Reference

baseclass for representing the factorised matrices

#include <TLUMatrix.hh>

Inheritance diagram for TFacMatrix:
TMatrix TLockable TTypeInfo TLDLMatrix TLDUMatrix TLLMatrix TLUMatrix

Public Member Functions

 TFacMatrix (TMatrix *afac_matrix, const eval_type_t aeval_type=CFG::Arith::eval_type)
 TFacMatrix (const TScalarVector *D1, TMatrix *afac_matrix, const TScalarVector *D2, const eval_type_t aeval_type=CFG::Arith::eval_type)
 ~TFacMatrix ()
 destructor
virtual size_t rows () const
 return number of rows
virtual size_t cols () const
 return number of columns
virtual void set_size (const size_t n, const size_t m)
 set size of matrix
TMatrixmatrix ()
 access internal factorised matrix
bool has_scaling () const
 return info about presence of scaling matrices
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)
virtual real entry (const idx_t i, const idx_t j) const
virtual const complex centry (const idx_t i, const idx_t j) const
virtual void mul_vec (const real alpha, const TVector *x, const real beta, TVector *y, const matop_t op=MATOP_NORM) const
 matrix-vector-multiplication : y = α op(A) · x + β · y
virtual void cmul_vec (const complex alpha, const TVector *x, const complex beta, TVector *y, const matop_t op=MATOP_NORM) const
 matrix-vector-multiplication : y = α op(A) · x + β · y
virtual void transpose ()
 transpose matrix
virtual void conjugate ()
 conjugate matrix coefficients
virtual void truncate (const TTruncAcc &acc)
 truncate matrix to given accuracy
virtual void print (const uint ofs=0) const
 print basic info about matrix
virtual void to_real ()
 switch to real valued representation
virtual void to_complex ()
 switch to complex valued representation
virtual void copy_to (TMatrix *A) const
 copy matrix into given matrix
virtual TVectorrow_vector () const
 return appropriate vector-types for row index set of matrix
virtual TVectorcol_vector () const
 return appropriate vector-types for column index set of matrix
virtual TMatrixinverse () const =0
 return matrix object for the inverse operator
virtual size_t byte_size () const
 return size in bytes used by this object
virtual typeid_t type () const
 return type ID of matrix
virtual bool is_type (const typeid_t t) const
 return true if local object is of given type ID t
virtual void read (TByteStream &s)
 read data from stream s and copy to matrix
virtual void write (TByteStream &s) const
 write data to stream s
virtual size_t bs_size () const
 returns size of object in bytestream
- Public Member Functions inherited from TMatrix
 TMatrix (const bool acomplex=false)
 construct zero sized matrix
 TMatrix (const TBlockCluster *c)
 construct matrix of size defined by block cluster c
 TMatrix (const TBlockIndexSet &bis)
 construct matrix of size defined by block cluster c
 TMatrix (const TMatrix &A)
 copy constructor
virtual ~TMatrix ()
 dtor
TIndexSet row_is () const
 return row index set
TIndexSet col_is () const
 return column index set
TBlockIndexSet block_is () const
 return block index set
virtual idx_t row_ofs () const
 return first index (number) in row
virtual idx_t col_ofs () const
 return first index (number) in column
virtual void set_ofs (const idx_t r, const idx_t c)
 set index set offsets
virtual void set_block_is (const TBlockIndexSet &is)
 set block index set of matrix
bool is_nonsym () const
 return true if matrix is unsymmetric
bool is_symmetric () const
 return true if matrix is symmetric
bool is_hermitian () const
 return true if matrix is hermitian
matform_t form () const
 return matrix format
void set_nonsym ()
 set matrix to be unsymmetric
void set_symmetric ()
 set matrix to be symmetric
void set_hermitian ()
 set matrix to be hermitian
virtual void set_form (const matform_t f)
 set matrix format
const TProcSetprocs () const
 return matrix processor set
uint nprocs () const
 return number of processors in local set
void set_procs (const TProcSet &ps)
 set processor set of matrix
virtual void copy_struct (const TMatrix *M)
bool is_real () const
 return true if matrix is real valued
bool is_complex () const
 return true if matrix is complex valued
void set_complex (const bool b, const bool force=false)
const TBlockClustercluster () const
 return corresponding block cluster of matrix
virtual void set_cluster (const TBlockCluster *c)
 set block cluster of matrix
virtual void scale (const real alpha)
 compute this ≔ α·this
virtual void add (const real alpha, const TMatrix *matrix)
 compute this ≔ this + α · matrix
virtual TMatrixmul_right (const real alpha, const TMatrix *B, const matop_t op_A, const matop_t op_B) const
 compute α·op(A)·op(B), with A = this
virtual TMatrixmul_left (const real alpha, const TMatrix *A, const matop_t op_A, const matop_t op_B) const
 compute α·op(A)·op(B), with B = this
virtual void cscale (const complex alpha)
 compute this ≔ α·this
virtual void cadd (const complex alpha, const TMatrix *matrix)
 compute this ≔ this + α · matrix
virtual TMatrixcmul_right (const complex alpha, const TMatrix *B, const matop_t op_A, const matop_t op_B) const
 compute α·op(A)·op(B), with A = this
virtual TMatrixcmul_left (const complex alpha, const TMatrix *A, const matop_t op_A, const matop_t op_B) const
 compute α·op(A)·op(B), with B = this
virtual size_t global_byte_size () const
virtual TMatrixcreate () const =0
 return matrix of same class (but no content)
virtual TMatrixcopy () const
 return copy of matrix
virtual TMatrixcopy (const TTruncAcc &acc, const bool coarsen=false) const
 return copy of matrix with accuracy acc and optional coarsening
virtual void copy_to (TMatrix *A, const TTruncAcc &acc, const bool coarsen=false) const
 copy matrix into matrix A with accuracy acc and optional coarsening
virtual void build (TByteStream &s)
 use data from stream s to build matrix
virtual void sum (const TProcSet &p, const uint pid, const uint nparts, TByteStream *bs, const TTruncAcc &acc)
virtual void check_data () const
 test data for invalid values, e.g. INF and NAN
- Public Member Functions inherited from TLockable
TMutexmutex ()
 give access to internal mutex
void lock ()
 lock local mutex of matrix
void unlock ()
 unlock local mutex of matrix
- Public Member Functions inherited from TTypeInfo
virtual String typestr () const
 return string representation of type

Protected Member Functions

virtual void eval (TVector *x, const matop_t op) const =0

Constructor & Destructor Documentation

TFacMatrix ( TMatrix afac_matrix,
const eval_type_t  aeval_type = CFG::Arith::eval_type 
)
inline

constructor without diagonal scaling

TFacMatrix ( const TScalarVector D1,
TMatrix afac_matrix,
const TScalarVector D2,
const eval_type_t  aeval_type = CFG::Arith::eval_type 
)
inline

constructor with diagonal scaling applied

Member Function Documentation

virtual const complex centry ( const idx_t  i,
const idx_t  j 
) const
inlinevirtual

return index (i,j) of the matrix (complex valued)

  • i and j are global indices, e.g. not w.r.t. local index set

Reimplemented from TMatrix.

virtual real entry ( const idx_t  i,
const idx_t  j 
) const
inlinevirtual

return index (i,j) of the matrix (real valued)

  • i and j are global indices, e.g. not w.r.t. local index set

Reimplemented from TMatrix.

virtual void eval ( TVector x,
const matop_t  op 
) const
protectedpure virtual

internal evaluation method for factors

Implemented in TLLMatrix, TLDLMatrix, TLDUMatrix, and TLUMatrix.