HLIBpro 3.1
Loading...
Searching...
No Matches
THCA< T_value > Class Template Reference

uses hybrid cross approximation (HCA) for computing low rank approximation More...

#include <TLowRankApx.hh>

Inheritance diagram for THCA< T_value >:
TLowRankApx< T_value >

Classes

struct  stat_t
 
class  TGeneratorFn
 class defining kernel generator function used by HCA More...
 

Public Member Functions

 THCA (const coeff_fn_t *coeff, const TGeneratorFn *generator, const real_t aca_eps, const uint ipol_order)
 
virtual std::unique_ptr< TMatrix< value_t > > build (const TBlockCluster *bc, const TTruncAcc &acc) const
 
virtual std::unique_ptr< TMatrix< value_t > > build (const TBlockIndexSet &, const TTruncAcc &) const
 
virtual bool has_statistics () const
 indicate if algorithm provides statistics
 

Protected Member Functions

void setup_interpolation ()
 build interpolation points for unit cube in \( R^d \)
 
void transform_ipol_points (const TGeomCluster *cl, tensor_grid_t &grid, const uint ipol_order) const
 transform interpolation points to local cluster
 
void compute_row (const idx_t row_idx, const tensor_grid_t &rowcl_grid, const tensor_grid_t &colcl_grid, const BLAS::Matrix< value_t > &A, const BLAS::Matrix< value_t > &B, const size_t rank, BLAS::Vector< value_t > &row, const uint ipol_order) const
 compute single corrected row of kernel generator matrix
 
void compute_col (const idx_t col_idx, const tensor_grid_t &rowcl_grid, const tensor_grid_t &colcl_grid, const BLAS::Matrix< value_t > &A, const BLAS::Matrix< value_t > &B, const size_t rank, BLAS::Vector< value_t > &col, const uint ipol_order) const
 compute single corrected row of kernel generator matrix
 
void compute_U (const TIndexSet &rowis, const size_t rank, BLAS::Matrix< value_t > &U, const std::vector< idx_t > &col_pivot, const tensor_grid_t &colcl_grid, const uint ipol_order) const
 compute matrix U
 
void compute_V (const TIndexSet &colis, const size_t rank, BLAS::Matrix< value_t > &V, const std::vector< idx_t > &row_pivot, const tensor_grid_t &rowcl_grid, const uint ipol_order) const
 compute matrix V
 

Detailed Description

template<typename T_value>
class Hpro::THCA< T_value >
     THCA provides a low rank approximation algorithm with a guaranteed
     approximation quality. It is based on the <em>generator function</em> \f$\gamma(x,y)\f$
     of a BEM kernel function \f$k(x,y)\f$ and it's derivatives \f$ D_x \gamma(x, y_{l}) \f$
     and \f$ D_y \gamma(x, y_{l}) \f$.

     The class THCA needs a user implemented generator function of type TGeneratorFn, in which
     the function itself and the integrals of the corresponding derivates are defined.

     Furthermore, HCA is based on interpolation, of which the order defines the accuracy of
     the final result. This interpolation order together with an accuracy for the approximation
     of the generator function is specific to the given problem, and hence, user defined.

Constructor & Destructor Documentation

◆ THCA()

template<typename T_value >
THCA ( const coeff_fn_t coeff,
const TGeneratorFn generator,
const real_t  aca_eps,
const uint  ipol_order 
)

construct HCA based on matrix coefficient function coeff and kernel generator function generator.

The accuracy of the HCA algorithm is defined by aca_eps, the relative accuracy of the internal ACA algorithm and the interpolation order ipol_order.

Member Function Documentation

◆ build() [1/2]

template<typename T_value >
virtual std::unique_ptr< TMatrix< value_t > > build ( const TBlockCluster bc,
const TTruncAcc acc 
) const
virtual

build low rank matrix for block cluster bct with rank defined by accuracy acc

Reimplemented from TLowRankApx< T_value >.

◆ build() [2/2]

template<typename T_value >
virtual std::unique_ptr< TMatrix< value_t > > build ( const TBlockIndexSet bis,
const TTruncAcc acc 
) const
inlinevirtual

build low rank matrix for block index set bis with rank defined by accuracy acc

Implements TLowRankApx< T_value >.