BEM++  2.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Groups Pages
Public Types | Public Member Functions | Protected Member Functions | Private Member Functions | List of all members
Bempp::DiscreteBlockedBoundaryOperator< ValueType > Class Template Reference

Discrete boundary operator composed of multiple blocks stored separately. More...

#include </home/wojtek/Projects/BEM/bempp-sven/bempp/lib/assembly/discrete_blocked_boundary_operator.hpp>

Inheritance diagram for Bempp::DiscreteBlockedBoundaryOperator< ValueType >:
Bempp::DiscreteBoundaryOperator< ValueType >

Public Types

typedef
DiscreteBoundaryOperator
< ValueType > 
Base
 

Public Member Functions

 DiscreteBlockedBoundaryOperator (const Fiber::_2dArray< shared_ptr< const Base > > &blocks, const std::vector< size_t > &rowCounts, const std::vector< size_t > &columnCounts)
 Constructor. More...
 
virtual unsigned int rowCount () const
 Number of rows of the operator.
 
virtual unsigned int columnCount () const
 Number of columns of the operator.
 
virtual shared_ptr< const
DiscreteBoundaryOperator
< ValueType > > 
getComponent (int row, int col) const
 return the block component at position (i,j) in the block operator matrix.
 
virtual void addBlock (const std::vector< int > &rows, const std::vector< int > &cols, const ValueType alpha, arma::Mat< ValueType > &block) const
 Add a subblock of this operator to a matrix. More...
 
shared_ptr< const
DiscreteBlockedBoundaryOperator
< ValueType > > 
asDiscreteAcaBlockedBoundaryOperator (double eps=-1, int maximumRank=-1) const
 Return a new DiscreteBlockedBoundaryOperator, in which every component is castable to a DiscreteAcaBoundaryOperator. More...
 
virtual shared_ptr< const
DiscreteBoundaryOperator
< ValueType > > 
asDiscreteAcaBoundaryOperator (double eps=-1, int maximumRank=-1, bool interleave=false) const
 Return a representation that can be cast to a DiscreteAcaBoundaryOperator. More...
 
virtual Teuchos::RCP< const
Thyra::VectorSpaceBase
< ValueType > > 
domain () const
 
virtual Teuchos::RCP< const
Thyra::VectorSpaceBase
< ValueType > > 
range () const
 
- Public Member Functions inherited from Bempp::DiscreteBoundaryOperator< ValueType >
virtual ~DiscreteBoundaryOperator ()
 Destructor.
 
void apply (const Thyra::EOpTransp M_trans, const Thyra::MultiVectorBase< ValueType > &x_in, const Thyra::Ptr< Thyra::MultiVectorBase< ValueType > > &y_inout, const ValueType alpha, const ValueType beta) const
 Apply the linear operator to a multivector. More...
 
void apply (const TranspositionMode trans, const arma::Mat< ValueType > &x_in, arma::Mat< ValueType > &y_inout, const ValueType alpha, const ValueType beta) const
 Apply the operator to a vector. More...
 
virtual void dump () const
 Write a textual representation of the operator to standard output. More...
 
virtual arma::Mat< ValueType > asMatrix () const
 Matrix representation of the operator. More...
 

Protected Member Functions

virtual bool opSupportedImpl (Thyra::EOpTransp M_trans) const
 
- Protected Member Functions inherited from Bempp::DiscreteBoundaryOperator< ValueType >
virtual void applyImpl (const Thyra::EOpTransp M_trans, const Thyra::MultiVectorBase< ValueType > &X_in, const Teuchos::Ptr< Thyra::MultiVectorBase< ValueType > > &Y_inout, const ValueType alpha, const ValueType beta) const
 

Private Member Functions

virtual void applyBuiltInImpl (const TranspositionMode trans, const arma::Col< ValueType > &x_in, arma::Col< ValueType > &y_inout, const ValueType alpha, const ValueType beta) const
 
void mergeHMatrices (unsigned currentLevel, const std::vector< Fiber::_2dArray< unsigned > > &rowSonSizes, const std::vector< Fiber::_2dArray< unsigned > > &colSonSizes, const Fiber::_2dArray< const blcluster * > clusters, const Fiber::_2dArray< size_t > indexOffsets, blcluster *result) const
 

Additional Inherited Members

Detailed Description

template<typename ValueType>
class Bempp::DiscreteBlockedBoundaryOperator< ValueType >

Discrete boundary operator composed of multiple blocks stored separately.

This class represents a linear operator whose matrix

\[ L = \begin{bmatrix} L_{11} & L_{12} & \dots & L_{1n} \\ L_{21} & L_{22} & \dots & L_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ L_{m1} & L_{m2} & \dots & L_{mn} \end{bmatrix} \]

is composed of $m \times n$ discrete boundary operators $L_{ij}$.

Constructor & Destructor Documentation

template<typename ValueType >
Bempp::DiscreteBlockedBoundaryOperator< ValueType >::DiscreteBlockedBoundaryOperator ( const Fiber::_2dArray< shared_ptr< const Base > > &  blocks,
const std::vector< size_t > &  rowCounts,
const std::vector< size_t > &  columnCounts 
)

Constructor.

Parameters
[in]blocks2D array of shared pointers to the discrete boundary operators $L_{ij}$ making up the newly constructed blocked operator. A null shared pointer is equivalent to a discrete boundary operator with zero matrix.
[in]rowCountsVector whose ith element is the number of rows of the matrix of each operator in ith row of the array blocks.
[in]columnCountsVector whose ith element is the number of columns of the matrix of each operator in ith column of the array blocks.

References Bempp::toString().

Member Function Documentation

template<typename ValueType >
void Bempp::DiscreteBlockedBoundaryOperator< ValueType >::addBlock ( const std::vector< int > &  rows,
const std::vector< int > &  cols,
const ValueType  alpha,
arma::Mat< ValueType > &  block 
) const
virtual

Add a subblock of this operator to a matrix.

Perform the operation block += alpha * L[rows, cols], where block is a matrix, alpha a scalar and L[rows, cols] a subblock of this discrete linear operator.

Parameters
[in]rowsVector of row indices.
[in]colsVector of column indices.
[in]alphaMultiplier.
[in,out]blockOn entry, matrix of size (rows.size(), cols.size()). On exit, each element (i, j) of this matrix will be augmented by the element (rows[i], cols[j]) of this operator, multiplied by alpha.

Row and column indices may be unsorted.

This method need not be supported by all subclasses. It is mainly intended for internal use during weak-form assembly.

Implements Bempp::DiscreteBoundaryOperator< ValueType >.

template<typename ValueType >
shared_ptr< const DiscreteBlockedBoundaryOperator< ValueType > > Bempp::DiscreteBlockedBoundaryOperator< ValueType >::asDiscreteAcaBlockedBoundaryOperator ( double  eps = -1,
int  maximumRank = -1 
) const

Return a new DiscreteBlockedBoundaryOperator, in which every component is castable to a DiscreteAcaBoundaryOperator.

This routine calls the DiscreteBoundaryOperator::asDiscreteAcaBoundaryOperator() function for each block component, which may throw a std::bad_cast exception if conversion of a block fails.

Parameters
[in]epsAccuracy tolerance for H-Matrix addition.
[in]maximumRankMaximum rank of blocks to be considered low rank in the case of H-Matrix addition.
Returns
A pointer to a DiscreteBlockedBoundaryOperator object, where every component is castable to DiscreteAcaBoundaryOperator.
Note
This function throws an exception if BEM++ has been compiled without AHMED.
template<typename ValueType >
shared_ptr< const DiscreteBoundaryOperator< ValueType > > Bempp::DiscreteBlockedBoundaryOperator< ValueType >::asDiscreteAcaBoundaryOperator ( double  eps = -1,
int  maximumRank = -1,
bool  interleave = false 
) const
virtual

Return a representation that can be cast to a DiscreteAcaBoundaryOperator.

The conversion only succeeds if all members of the DiscreteBoundaryOperator itself can be cast to a DiscreteAcaBoundaryOperator or if it is a linear combination of DiscreteOperators that can be cast to type DiscreteAcaBoundaryOperator. Operator compositions are not yet supported by this function.

Parameters
[in]epsThe $\epsilon$ parameter controlling the accuracy of H-matrix addition in case this operation is needed to construct the H-matrix representation of the operator. If eps is negative (default), it is set to the smaller of the values of $\epsilon$ specified during the creation of the two H-matrices to be added.
[in]maximumRankMaximum rank of blocks to be considered low rank when adding two H-Matrices. If maximumRank is negative, it is set to the larger of the maximum ranks specified during the creation of the two H-matrices to be added.
Returns
A pointer to a DiscreteBoundaryOperator object castable to DiscreteAcaBoundaryOperator.
Note
This function throws an exception if BEM++ has been compiled without AHMED.

Reimplemented from Bempp::DiscreteBoundaryOperator< ValueType >.


The documentation for this class was generated from the following files: