HLIBpro  1.2
Public Member Functions | Protected Member Functions | List of all members
TInvarBasisQuadBEMBF< T_ansatzsp, T_testsp, T_val > Class Template Reference

Class for quadrature based bilinear forms with invariant basis functions. More...

#include <TQuadBEMBF.hh>

Inheritance diagram for TInvarBasisQuadBEMBF< T_ansatzsp, T_testsp, T_val >:
TQuadBEMBF< T_ansatzsp, T_testsp, T_val > TBEMBF< T_ansatzsp, T_testsp, T_val > TBilinearForm< T_val >

Public Member Functions

 TInvarBasisQuadBEMBF (const ansatzsp_t *ansatzsp, const testsp_t *testsp, const uint order, const bool dist_ada=false)
virtual ~TInvarBasisQuadBEMBF ()
 destructor
virtual void eval (const std::vector< idx_t > &row_ind, const std::vector< idx_t > &col_ind, BLAS::Matrix< value_t > &values) const
- Public Member Functions inherited from TQuadBEMBF< T_ansatzsp, T_testsp, T_val >
 TQuadBEMBF (const ansatzsp_t *ansatzsp, const testsp_t *testsp, const uint order, const bool dist_ada=false)
virtual ~TQuadBEMBF ()
 destructor
- Public Member Functions inherited from TBEMBF< T_ansatzsp, T_testsp, T_val >
 TBEMBF (const ansatzsp_t *aansatzsp, const testsp_t *atestsp)
 construct bilinear form over function spaces ansatzsp and testsp
virtual ~TBEMBF ()
 destructor
const ansatzsp_t * ansatz_space () const
 return ansatz space
const testsp_t * test_space () const
 return test space
- Public Member Functions inherited from TBilinearForm< T_val >
bool is_complex () const
 return true if bilinear form is complex valued
virtual matform_t format () const
 return format of bilinear form, e.g. symmetric

Protected Member Functions

void compute_basis_func ()
 compute ansatz and test basis functions for all quadrature points
const std::vector
< ansatz_value_t > * 
ansatz_val (const idx_t idx, const TGrid::triangle_t &tri, const uint ncommon, const uint order) const
const std::vector< test_value_t > * test_val (const idx_t idx, const TGrid::triangle_t &tri, const uint ncommon, const uint order) const
 same as
- Protected Member Functions inherited from TQuadBEMBF< T_ansatzsp, T_testsp, T_val >
uint reorder_common (idx_t *vtx0idxs, idx_t *vtx1idxs) const
uint adjust_order (const idx_t *vtx0idxs, const idx_t *vtx1idxs, const uint order) const
 adjust quadrature order order depending on diameter and distance of triangles
const quad_rule_tquad_rule (const uint ncommon, const uint order) const
 return quadrature rule for ncommon vertices and order order
virtual void eval_kernel (const idx_t tri0idx, const idx_t tri1idx, const TGrid::triangle_t &tri0, const TGrid::triangle_t &tri1, const quad_rule_t *quad_rule, std::vector< value_t > &values) const =0

Additional Inherited Members

- Protected Attributes inherited from TBEMBF< T_ansatzsp, T_testsp, T_val >
const ansatzsp_t * _ansatz_sp
 function space for ansatz functions
const testsp_t * _test_sp
 function space for test functions

Detailed Description

template<typename T_ansatzsp, typename T_testsp, typename T_val>
class HLIB::TInvarBasisQuadBEMBF< T_ansatzsp, T_testsp, T_val >

TConstBasusQuadBEMBF extends TQuadBEMBF for function spaces with invariant basis functions, e.g. with respect to translation, scaling and rotation. This allows their precomputation for the unit triangle, improving efficiency.

Constructor & Destructor Documentation

TInvarBasisQuadBEMBF ( const ansatzsp_t *  ansatzsp,
const testsp_t *  testsp,
const uint  order,
const bool  dist_ada = false 
)

construct bilinear form over function spaces ansatzsp and testsp using quadratur with order order; if dist_ada is true, the quadrature order is adaptively adjusted according to distance

Member Function Documentation

const std::vector< ansatz_value_t >* ansatz_val ( const idx_t  idx,
const TGrid::triangle_t tri,
const uint  ncommon,
const uint  order 
) const
inlineprotected

return ansatz basis function values for index idx in triangle tri for quadrature points with ncommon common vertices and order order

virtual void eval ( const std::vector< idx_t > &  row_ind,
const std::vector< idx_t > &  col_ind,
BLAS::Matrix< value_t > &  values 
) const
virtual

evaluate subblock defined by row_ind × col_ind; the indices in row_ind and col_ind can be arbitrary, e.g. must not be contiguous

Reimplemented from TQuadBEMBF< T_ansatzsp, T_testsp, T_val >.

const std::vector< test_value_t >* test_val ( const idx_t  idx,
const TGrid::triangle_t tri,
const uint  ncommon,
const uint  order 
) const
inlineprotected
See Also
ansatz_val but for test space