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

Class for an H²-matrix, which extends block matrices with additional functionality, e.g. permutations and uniform vectors.

#include <TH2Matrix.hh>

Inheritance diagram for TH2Matrix:
TBlockMatrix TMatrix TLockable TTypeInfo

Public Member Functions

 TH2Matrix ()
 default ctor without cluster bases
 TH2Matrix (const TBlockIndexSet &bis, const TClusterBasis< real > *row_cb, const TClusterBasis< real > *col_cb)
 TH2Matrix (const TBlockIndexSet &bis, const TClusterBasis< complex > *row_cb, const TClusterBasis< complex > *col_cb)
 TH2Matrix (const TBlockIndexSet &bis, const TClusterBasis< real > *row_cb, const TClusterBasis< real > *col_cb, const TPermutation &row_perm_e2i, const TPermutation &col_perm_e2i)
 TH2Matrix (const TBlockIndexSet &bis, const TClusterBasis< complex > *row_cb, const TClusterBasis< complex > *col_cb, const TPermutation &row_perm_e2i, const TPermutation &col_perm_e2i)
virtual real entry (const idx_t i, const idx_t j) const
 access single matrix coefficient
virtual const complex centry (const idx_t i, const idx_t j) const
 return matrix coefficient (i, j)
const TClusterBasis< real > * rrow_cb () const
 access row cluster basis
const TClusterBasis< real > * rcol_cb () const
 access column cluster basis
void assign_cb (const TClusterBasis< real > *row_cb, const TClusterBasis< real > *col_cb)
void set_row_perm (const TPermutation &perm_e2i, const TPermutation &perm_i2e)
 set row permutations
void set_col_perm (const TPermutation &perm_e2i, const TPermutation &perm_i2e)
 set column permutations
const TPermutationrow_perm_e2i () const
 access row permutation (extern to intern)
const TPermutationrow_perm_i2e () const
 access row permutation (intern to extern)
const TPermutationcol_perm_e2i () const
 access column permutation (extern to intern)
const TPermutationcol_perm_i2e () const
 access column permutation (intern to extern)
bool has_perm () const
 return true if all mappings are present and of correct size
virtual void mul_vec (const real alpha, const TVector *x, const real beta, TVector *y, const matop_t op=MATOP_NORM) const
 compute y ≔ β·y + α·op(M)·x, with M = this
virtual void cmul_vec (const complex alpha, const TVector *x, const complex beta, TVector *y, const matop_t op=MATOP_NORM) const
 compute y ≔ β·y + α·op(M)·x, with M = this
virtual TMatrixcreate () const
 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
 copy matrix wrt. accuracy acc and optional coarsening
virtual void copy_to (TMatrix *A) const
 copy matrix into A
virtual void copy_to (TMatrix *A, const TTruncAcc &acc, const bool coarsen=false) const
 copy matrix into A with accuracy acc and optional coarsening
virtual void copy_struct (const TMatrix *A)
 copy complete structural information from given matrix
virtual TVectorrow_vector () const
 return appropriate row vector type for matrix
virtual TVectorcol_vector () const
 return appropriate column vector type for matrix
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 matrix is of type t
virtual void read (TByteStream &s)
 read data from stream s and copy to matrix
virtual void build (TByteStream &s)
 use data from stream s to build 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 TBlockMatrix
 TBlockMatrix (const TBlockCluster *bct=NULL)
 construct block matrix with size and block structure defined by bct
 TBlockMatrix (const TBlockIndexSet &bis)
 construct block matrix with over block index set bis
virtual ~TBlockMatrix ()
 dtor
virtual void set_cluster (const TBlockCluster *c)
 set cluster of matrix
virtual size_t rows () const
 return number of rows
virtual size_t cols () const
 return number of columns
void set_size (const size_t r, const size_t c)
 set size of matrix
uint block_rows () const
 return number of block-rows
uint block_cols () const
 return number of block-columns
uint no_of_blocks () const
 return number of sub blocks of matrix
void set_block_struct (const uint n, const uint m)
 set block structure
virtual void set_form (const matform_t f)
 set matrix format
TMatrixblock (const uint i, const uint j)
 return block at block index (i, j)
const TMatrixblock (const uint i, const uint j) const
 return block at block index (i, j)
void set_block (const uint i, const uint j, TMatrix *A)
 set matrix block at block index (i,j) to matrix A
void replace_block (TMatrix *A, TMatrix *B)
 replace matrix block A by matrix B (don't delete A !)
TMatrixbc_block (const TBlockCluster *t) const
 return subblock of matrix corresponding to block cluster t
TMatrixbc_block (const TCluster *tau, const TCluster *sigma) const
 return subblock of matrix corresponding to block cluster (tau, sigma)
void clear_blocks ()
 clear pointers to all sub blocks
virtual void to_real ()
 convert data to real valued representation (if possible)
virtual void to_complex ()
 convert data to complex valued representation (if possible)
virtual void adjust_value_type ()
 make value type of this and all sub blocks consistent
virtual void scale (const real alpha)
 compute this ≔ α·this
virtual void add (const real alpha, const TMatrix *matrix)
 compute this ≔ this + α · matrix
virtual void cscale (const complex alpha)
 compute this ≔ α·this
virtual void cadd (const complex alpha, const TMatrix *matrix)
 compute this ≔ this + α · matrix
void collect_leaves (std::list< TMatrix * > &leaf_list) const
 collect matrix blocks corresponding to leaves in list leaf_list
virtual void transpose ()
 transpose matrix
virtual void conjugate ()
 conjugate matrix coefficients
virtual void truncate (const TTruncAcc &acc)
 truncate all rank-blocks in matrix to accuracy acc
virtual void print (const uint ofs=0) const
 print matrix to stdout
virtual void check_data () const
 test data for invalid values, e.g. INF and NAN
- 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
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
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 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 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 void sum (const TProcSet &p, const uint pid, const uint nparts, TByteStream *bs, const TTruncAcc &acc)
- 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

Constructor & Destructor Documentation

TH2Matrix ( const TBlockIndexSet bis,
const TClusterBasis< real > *  row_cb,
const TClusterBasis< real > *  col_cb 
)

construct H²-matrix over block index set bis with cluster bases row_cb and col_cb

TH2Matrix ( const TBlockIndexSet bis,
const TClusterBasis< complex > *  row_cb,
const TClusterBasis< complex > *  col_cb 
)

construct H²-matrix over block index set bis with cluster bases row_cb and col_cb

TH2Matrix ( const TBlockIndexSet bis,
const TClusterBasis< real > *  row_cb,
const TClusterBasis< real > *  col_cb,
const TPermutation row_perm_e2i,
const TPermutation col_perm_e2i 
)

construct H²-matrix over block index set bis with cluster bases row_cb and col_cb and permutations row_perm_e2i and col_perm_e2i

TH2Matrix ( const TBlockIndexSet bis,
const TClusterBasis< complex > *  row_cb,
const TClusterBasis< complex > *  col_cb,
const TPermutation row_perm_e2i,
const TPermutation col_perm_e2i 
)

construct H²-matrix over block index set bis with cluster bases row_cb and col_cb and permutations row_perm_e2i and col_perm_e2i

Member Function Documentation

void assign_cb ( const TClusterBasis< real > *  row_cb,
const TClusterBasis< real > *  col_cb 
)

assign cluster bases to local matrix and to all uniform sub blocks

  • rank and value type of bases must be identical to corresponding dimension and value type of coefficient matrices (also in sub blocks!)