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

Adjoint abstract boundary operator. More...

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

Inheritance diagram for Bempp::AdjointAbstractBoundaryOperator< BasisFunctionType_, ResultType_ >:
Bempp::AbstractBoundaryOperator< BasisFunctionType_, ResultType_ >

Public Types

typedef Base::BasisFunctionType BasisFunctionType
 Type of the values of the (components of the) basis functions into which functions acted upon by the operator are expanded. More...
 
typedef Base::ResultType ResultType
 Type used to represent elements of the weak form of the operator. More...
 
typedef Base::CoordinateType CoordinateType
 Type used to represent coordinates. More...
 
typedef Base::QuadratureStrategy QuadratureStrategy
 Type of the appropriate instantiation of Fiber::QuadratureStrategy. More...
 
- Public Types inherited from Bempp::AbstractBoundaryOperator< BasisFunctionType_, ResultType_ >
typedef BasisFunctionType_ BasisFunctionType
 Type of the values of the (components of the) basis functions into which functions acted upon by the operator are expanded.
 
typedef ResultType_ ResultType
 Type used to represent elements of the weak form of the operator.
 
typedef ScalarTraits
< ResultType >::RealType 
CoordinateType
 Type used to represent coordinates.
 
typedef
Fiber::QuadratureStrategy
< BasisFunctionType,
ResultType, GeometryFactory
QuadratureStrategy
 Type of the appropriate instantiation of Fiber::QuadratureStrategy.
 

Public Member Functions

 AdjointAbstractBoundaryOperator (const BoundaryOperator< BasisFunctionType, ResultType > &boundaryOp, int symmetry=AUTO_SYMMETRY)
 Constructor. More...
 
 AdjointAbstractBoundaryOperator (const BoundaryOperator< BasisFunctionType, ResultType > &boundaryOp, const shared_ptr< const Space< BasisFunctionType > > &range, int symmetry=AUTO_SYMMETRY)
 Constructor. More...
 
virtual bool isLocal () const
 Return whether this operator is local. More...
 
- Public Member Functions inherited from Bempp::AbstractBoundaryOperator< BasisFunctionType_, ResultType_ >
 AbstractBoundaryOperator (const shared_ptr< const Space< BasisFunctionType > > &domain, const shared_ptr< const Space< BasisFunctionType > > &range, const shared_ptr< const Space< BasisFunctionType > > &dualToRange, const std::string &label, int symmetry)
 Constructor. More...
 
virtual ~AbstractBoundaryOperator ()
 Destructor.
 
virtual BEMPP_DEPRECATED
shared_ptr< const
AbstractBoundaryOperatorId
id () const
 Return the identifier of this operator. More...
 
shared_ptr< const Space
< BasisFunctionType > > 
domain () const
 Domain. More...
 
shared_ptr< const Space
< BasisFunctionType > > 
range () const
 Range. More...
 
shared_ptr< const Space
< BasisFunctionType > > 
dualToRange () const
 Dual to range. More...
 
std::string label () const
 Return the label of the operator.
 
int symmetry () const
 Return the symmetry properties of the operator. More...
 
shared_ptr
< DiscreteBoundaryOperator
< ResultType_ > > 
assembleWeakForm (const Context< BasisFunctionType_, ResultType_ > &context) const
 Assemble and return the operator's weak form. More...
 

Protected Member Functions

virtual shared_ptr
< DiscreteBoundaryOperator
< ResultType_ > > 
assembleWeakFormImpl (const Context< BasisFunctionType, ResultType > &context) const
 Assemble and return the operator's weak form. More...
 
- Protected Member Functions inherited from Bempp::AbstractBoundaryOperator< BasisFunctionType_, ResultType_ >
void collectDataForAssemblerConstruction (const AssemblyOptions &options, shared_ptr< Fiber::RawGridGeometry< CoordinateType > > &testRawGeometry, shared_ptr< Fiber::RawGridGeometry< CoordinateType > > &trialRawGeometry, shared_ptr< GeometryFactory > &testGeometryFactory, shared_ptr< GeometryFactory > &trialGeometryFactory, shared_ptr< std::vector< const Fiber::Shapeset< BasisFunctionType_ > * > > &testShapesets, shared_ptr< std::vector< const Fiber::Shapeset< BasisFunctionType_ > * > > &trialShapesets, shared_ptr< Fiber::OpenClHandler > &openClHandler, bool &cacheSingularIntegrals) const
 Given an AssemblyOptions object, construct objects necessary for subsequent local assembler construction.
 
void collectOptionsIndependentDataForAssemblerConstruction (shared_ptr< Fiber::RawGridGeometry< CoordinateType > > &testRawGeometry, shared_ptr< Fiber::RawGridGeometry< CoordinateType > > &trialRawGeometry, shared_ptr< GeometryFactory > &testGeometryFactory, shared_ptr< GeometryFactory > &trialGeometryFactory, shared_ptr< std::vector< const Fiber::Shapeset< BasisFunctionType_ > * > > &testShapesets, shared_ptr< std::vector< const Fiber::Shapeset< BasisFunctionType_ > * > > &trialShapesets) const
 Construct those objects necessary for subsequent local assembler construction that are independent from assembly options.
 
void collectOptionsDependentDataForAssemblerConstruction (const AssemblyOptions &options, const shared_ptr< Fiber::RawGridGeometry< CoordinateType > > &testRawGeometry, const shared_ptr< Fiber::RawGridGeometry< CoordinateType > > &trialRawGeometry, shared_ptr< Fiber::OpenClHandler > &openClHandler, bool &cacheSingularIntegrals) const
 Construct those objects necessary for subsequent local assembler construction that depend on assembly options.
 

Private Types

typedef
AbstractBoundaryOperator
< BasisFunctionType_,
ResultType_ > 
Base
 

Private Attributes

BoundaryOperator
< BasisFunctionType,
ResultType
m_operator
 

Detailed Description

template<typename BasisFunctionType_, typename ResultType_>
class Bempp::AdjointAbstractBoundaryOperator< BasisFunctionType_, ResultType_ >

Adjoint abstract boundary operator.

This class represents the adjoint of an abstract boundary operator.

Currently the adjoint operator can be constructed only for operators acting on real-valued basis functions. Let $A$ be such an operator, and let $\mathsf{A}$ be its discrete weak form. Then the discrete weak form of the adjoint of $A$ is the transpose of $\mathsf{A}$.

Note that this definition is not the one most usual in mathematics (where the conjugate transpose would be used). However, it corresponds to the relation between the double-layer potential boundary operator and adjoint double-layer potential boundary operator for Laplace and Helmholtz equation as defined in standard texts. Hence, for example, the discrete weak forms of the operators B and C in the code snippet below are numerically identical (at least to within quadrature accuracy):

BoundaryOperator<BFT, RT> A =
helmholtz3dDoubleLayerBoundaryOperator<BFT>(
context, domain, range, dualToRange, waveNumber);
BoundaryOperator<BFT, RT> B =
helmholtz3dAdjointDoubleLayerBoundaryOperator<BFT>(
context, domain, range, dualToRange, waveNumber);
BoundaryOperator<BFT, RT> C = adjoint(A);
See Also
adjoint().

Member Typedef Documentation

template<typename BasisFunctionType_ , typename ResultType_ >
typedef Base::BasisFunctionType Bempp::AdjointAbstractBoundaryOperator< BasisFunctionType_, ResultType_ >::BasisFunctionType

Type of the values of the (components of the) basis functions into which functions acted upon by the operator are expanded.

template<typename BasisFunctionType_ , typename ResultType_ >
typedef Base::CoordinateType Bempp::AdjointAbstractBoundaryOperator< BasisFunctionType_, ResultType_ >::CoordinateType

Type used to represent coordinates.

template<typename BasisFunctionType_ , typename ResultType_ >
typedef Base::QuadratureStrategy Bempp::AdjointAbstractBoundaryOperator< BasisFunctionType_, ResultType_ >::QuadratureStrategy

Type of the appropriate instantiation of Fiber::QuadratureStrategy.

template<typename BasisFunctionType_ , typename ResultType_ >
typedef Base::ResultType Bempp::AdjointAbstractBoundaryOperator< BasisFunctionType_, ResultType_ >::ResultType

Type used to represent elements of the weak form of the operator.

Constructor & Destructor Documentation

template<typename BasisFunctionType , typename ResultType >
Bempp::AdjointAbstractBoundaryOperator< BasisFunctionType, ResultType >::AdjointAbstractBoundaryOperator ( const BoundaryOperator< BasisFunctionType, ResultType > &  boundaryOp,
int  symmetry = AUTO_SYMMETRY 
)

Constructor.

Construct the boundary operator $\alpha L$, where $\alpha$ is the scalar weight and $L$ is the operator represented by boundaryOp.

By default the symmetry of the weak form of the resulting operator is determined automatically. It can be set manually via the parameter symmetry, which can be any combination of the flags defined in the enumeration type Symmetry.

References Bempp::BoundaryOperator< BasisFunctionType, ResultType >::domain(), Bempp::BoundaryOperator< BasisFunctionType, ResultType >::dualToRange(), and Bempp::BoundaryOperator< BasisFunctionType, ResultType >::range().

template<typename BasisFunctionType , typename ResultType >
Bempp::AdjointAbstractBoundaryOperator< BasisFunctionType, ResultType >::AdjointAbstractBoundaryOperator ( const BoundaryOperator< BasisFunctionType, ResultType > &  boundaryOp,
const shared_ptr< const Space< BasisFunctionType > > &  range,
int  symmetry = AUTO_SYMMETRY 
)

Constructor.

This constructor allows to explicitly specify the range space. This is useful if the standard heuristic to detect this space fails. An example is a boundary operator, where the domain and range live on different grids.

Member Function Documentation

template<typename BasisFunctionType , typename ResultType >
shared_ptr< DiscreteBoundaryOperator< ResultType > > Bempp::AdjointAbstractBoundaryOperator< BasisFunctionType, ResultType >::assembleWeakFormImpl ( const Context< BasisFunctionType, ResultType > &  context) const
protectedvirtual

Assemble and return the operator's weak form.

This virtual function is invoked by assembleWeakForm() to do the actual work.

Implements Bempp::AbstractBoundaryOperator< BasisFunctionType_, ResultType_ >.

References Bempp::TRANSPOSE.

template<typename BasisFunctionType , typename ResultType >
bool Bempp::AdjointAbstractBoundaryOperator< BasisFunctionType, ResultType >::isLocal ( ) const
virtual

Return whether this operator is local.

Suppose that an operator $A$ acting on a function $f(x)$ produces another function $g(x)$. We say that $A$ is local if the value of $g$ at any point $x$ depends only on the values of $f$ in an infinitesimal neighbourhood of $x$.

Multiplicative and differential operators are local and discretization of their weak forms with finite elements leads to sparse matrices. Conversely, integral operators are in general non-local and discretization of their weak forms leads to dense matrices.

Implements Bempp::AbstractBoundaryOperator< BasisFunctionType_, ResultType_ >.


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