BEM++
2.0
|
Composition (product) of discrete linear operators stored separately. More...
#include </home/wojtek/Projects/BEM/bempp-sven/bempp/lib/assembly/discrete_boundary_operator_composition.hpp>
Public Types | |
typedef DiscreteBoundaryOperator < ValueType > | Base |
Public Member Functions | |
DiscreteBoundaryOperatorComposition (const shared_ptr< const Base > &outer, const shared_ptr< const Base > &inner) | |
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 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... | |
virtual Teuchos::RCP< const Thyra::VectorSpaceBase < ValueType > > | domain () const |
virtual Teuchos::RCP< const Thyra::VectorSpaceBase < ValueType > > | range () const |
![]() | |
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 shared_ptr< const DiscreteBoundaryOperator > | asDiscreteAcaBoundaryOperator (double eps=-1, int maximumRank=-1, bool interleave=false) const |
Return a representation that can be cast to a DiscreteAcaBoundaryOperator. 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 |
![]() | |
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 |
Additional Inherited Members | |
![]() | |
template<typename ValueType > | |
shared_ptr< const DiscreteBoundaryOperator < ValueType > > | operator+ (const shared_ptr< const DiscreteBoundaryOperator< ValueType > > &op) |
Unary plus: return a copy of the argument. | |
template<typename ValueType > | |
shared_ptr< const DiscreteBoundaryOperator < ValueType > > | operator- (const shared_ptr< const DiscreteBoundaryOperator< ValueType > > &op) |
Return a shared pointer to a DiscreteBoundaryOperator representing the operand multiplied by -1. More... | |
template<typename ValueType > | |
shared_ptr < DiscreteBoundaryOperator < ValueType > > | operator+ (const shared_ptr< const DiscreteBoundaryOperator< ValueType > > &op1, const shared_ptr< const DiscreteBoundaryOperator< ValueType > > &op2) |
Return a shared pointer to a DiscreteBoundaryOperator representing the sum of the operands. More... | |
template<typename ValueType > | |
shared_ptr < DiscreteBoundaryOperator < ValueType > > | operator- (const shared_ptr< const DiscreteBoundaryOperator< ValueType > > &op1, const shared_ptr< const DiscreteBoundaryOperator< ValueType > > &op2) |
Return a shared pointer to a DiscreteBoundaryOperator representing the difference of the operands. More... | |
template<typename ValueType , typename ScalarType > | |
boost::enable_if< typename boost::mpl::has_key < boost::mpl::set< float, double, std::complex< float > , std::complex< double > >, ScalarType >, shared_ptr < DiscreteBoundaryOperator < ValueType > > >::type | operator* (ScalarType scalar, const shared_ptr< const DiscreteBoundaryOperator< ValueType > > &op) |
Return a shared pointer to a DiscreteBoundaryOperator representing the operator *op multiplied by scalar . More... | |
template<typename ValueType , typename ScalarType > | |
boost::enable_if< typename boost::mpl::has_key < boost::mpl::set< float, double, std::complex< float > , std::complex< double > >, ScalarType >, shared_ptr < DiscreteBoundaryOperator < ValueType > > >::type | operator* (const shared_ptr< const DiscreteBoundaryOperator< ValueType > > &op, ScalarType scalar) |
Return a shared pointer to a DiscreteBoundaryOperator representing the operator *op multiplied by scalar . More... | |
template<typename ValueType > | |
shared_ptr < DiscreteBoundaryOperator < ValueType > > | operator* (const shared_ptr< const DiscreteBoundaryOperator< ValueType > > &op1, const shared_ptr< const DiscreteBoundaryOperator< ValueType > > &op2) |
Return a shared pointer to a DiscreteBoundaryOperator representing a composition of operators, (*op1) * (*op2) . More... | |
template<typename ValueType > | |
shared_ptr < DiscreteBoundaryOperator < ValueType > > | mul (const shared_ptr< const DiscreteBoundaryOperator< ValueType > > &op1, const shared_ptr< const DiscreteBoundaryOperator< ValueType > > &op2) |
Return a shared pointer to a DiscreteBoundaryOperator representing a composition of operators, (*op1) * (*op2) . More... | |
template<typename ValueType , typename ScalarType > | |
shared_ptr < DiscreteBoundaryOperator < ValueType > > | operator/ (const shared_ptr< const DiscreteBoundaryOperator< ValueType > > &op, ScalarType scalar) |
Return a shared pointer to a DiscreteBoundaryOperator representing the operator *op divided by scalar . More... | |
template<typename ValueType > | |
shared_ptr < DiscreteBoundaryOperator < ValueType > > | transpose (const shared_ptr< const DiscreteBoundaryOperator< ValueType > > &op) |
Return a shared pointer to a DiscreteBoundaryOperator representing the transposed operator *op . More... | |
template<typename ValueType > | |
shared_ptr < DiscreteBoundaryOperator < ValueType > > | conjugate (const shared_ptr< const DiscreteBoundaryOperator< ValueType > > &op) |
Return a shared pointer to a DiscreteBoundaryOperator representing the conjugated operator *op . More... | |
template<typename ValueType > | |
shared_ptr < DiscreteBoundaryOperator < ValueType > > | conjugateTranspose (const shared_ptr< const DiscreteBoundaryOperator< ValueType > > &op) |
Return a shared pointer to a DiscreteBoundaryOperator representing the conjugate-transposed operator *op . More... | |
template<typename ValueType > | |
shared_ptr < DiscreteBoundaryOperator < ValueType > > | transpose (TranspositionMode trans, const shared_ptr< const DiscreteBoundaryOperator< ValueType > > &op) |
Return a shared pointer to a DiscreteBoundaryOperator representing the transposed and/or conjugated (depending on the value of the argument trans ) operator *op . More... | |
template<typename RealType > | |
shared_ptr < DiscreteBoundaryOperator < std::complex< RealType > > > | complexify (const shared_ptr< const DiscreteBoundaryOperator< RealType > > &op) |
Return a shared pointer to a DiscreteBoundaryOperator representing the "complexified" operator *op . More... | |
Composition (product) of discrete linear operators stored separately.
Bempp::DiscreteBoundaryOperatorComposition< ValueType >::DiscreteBoundaryOperatorComposition | ( | const shared_ptr< const Base > & | outer, |
const shared_ptr< const Base > & | inner | ||
) |
Constructor.
Construct a discrete operator representing the product of the operators outer
and inner
(in this order).
outer->columnCount() == inner->rowCount()
), otherwise a std::invalid_argument
exception is thrown.
|
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.
[in] | rows | Vector of row indices. |
[in] | cols | Vector of column indices. |
[in] | alpha | Multiplier. |
[in,out] | block | On 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 >.