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 Member Functions | Private Attributes | Related Functions | List of all members
Bempp::AbstractBoundaryOperatorPseudoinverse< BasisFunctionType_, ResultType_ > Class Template Reference

Inverse or pseudoinverse of an abstract boundary operator. More...

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

Inheritance diagram for Bempp::AbstractBoundaryOperatorPseudoinverse< 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

 AbstractBoundaryOperatorPseudoinverse (const BoundaryOperator< BasisFunctionType, ResultType > &boundaryOp)
 Construct a (pseudo)inverse of boundaryOp.
 
 AbstractBoundaryOperatorPseudoinverse (const BoundaryOperator< BasisFunctionType, ResultType > &boundaryOp, const shared_ptr< const Space< BasisFunctionType > > &dualToRange)
 
virtual bool isLocal () const
 Return whether this operator is local. More...
 
virtual BEMPP_DEPRECATED
shared_ptr< const
AbstractBoundaryOperatorId
id () const
 Return the identifier of this operator. 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.
 
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 Member Functions

shared_ptr
< DiscreteBoundaryOperator
< ResultType_ > > 
assembleWeakFormForSparseOperator (const Context< BasisFunctionType, ResultType > &context, const shared_ptr< const DiscreteSparseBoundaryOperator< ResultType > > &wrappedDiscreteOp) const
 
shared_ptr
< DiscreteBoundaryOperator
< ResultType_ > > 
assembleWeakFormForDenseOperator (const Context< BasisFunctionType, ResultType > &context, const shared_ptr< const DiscreteDenseBoundaryOperator< ResultType > > &wrappedDiscreteOp) const
 

Private Attributes

BoundaryOperator
< BasisFunctionType,
ResultType
m_operator
 
shared_ptr< const
AbstractBoundaryOperatorId
m_id
 

Related Functions

(Note that these are not member functions.)

template<typename BasisFunctionType , typename ResultType >
BoundaryOperator
< BasisFunctionType,
ResultType
pseudoinverse (const BoundaryOperator< BasisFunctionType, ResultType > &boundaryOp)
 Construct a (pseudo)inverse of a boundary operator. More...
 
template<typename BasisFunctionType , typename ResultType >
BoundaryOperator
< BasisFunctionType,
ResultType
pseudoinverse (const BoundaryOperator< BasisFunctionType, ResultType > &boundaryOp, const shared_ptr< const Space< BasisFunctionType > > &dualToRange)
 Construct a (pseudo)inverse of a boundary operator. This overload additionally specifies the dualToRange space if it cannot be detected automatically.
 

Detailed Description

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

Inverse or pseudoinverse of an abstract boundary operator.

Member Typedef Documentation

template<typename BasisFunctionType_ , typename ResultType_ >
typedef Base::BasisFunctionType Bempp::AbstractBoundaryOperatorPseudoinverse< 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::AbstractBoundaryOperatorPseudoinverse< BasisFunctionType_, ResultType_ >::CoordinateType

Type used to represent coordinates.

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

Type of the appropriate instantiation of Fiber::QuadratureStrategy.

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

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

Member Function Documentation

template<typename BasisFunctionType , typename ResultType >
shared_ptr< DiscreteBoundaryOperator< ResultType > > Bempp::AbstractBoundaryOperatorPseudoinverse< 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::Context< BasisFunctionType, ResultType >::assemblyOptions(), and Bempp::AssemblyOptions::verbosityLevel().

template<typename BasisFunctionType , typename ResultType >
shared_ptr< const AbstractBoundaryOperatorId > Bempp::AbstractBoundaryOperatorPseudoinverse< BasisFunctionType, ResultType >::id ( ) const
virtual

Return the identifier of this operator.

If the weak form of this operator is cacheable, return a shared pointer to a valid instance of a subclass of AbstractBoundaryOperatorId that is guaranteed to be different for all logically different abstract boundary operators.

If the weak form of this operator is not cacheable, return a null shared pointer. This is the default implementation.

Deprecated:
This method is deprecated and will be removed in a future version of BEM++. Boundary operator identifiers are no longer used by the discrete weak-form caching mechanism.

Reimplemented from Bempp::AbstractBoundaryOperator< BasisFunctionType_, ResultType_ >.

template<typename BasisFunctionType , typename ResultType >
bool Bempp::AbstractBoundaryOperatorPseudoinverse< 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_ >.

Friends And Related Function Documentation

template<typename BasisFunctionType , typename ResultType >
BoundaryOperator< BasisFunctionType, ResultType > pseudoinverse ( const BoundaryOperator< BasisFunctionType, ResultType > &  boundaryOp)
related

Construct a (pseudo)inverse of a boundary operator.

This is a convenience function that creates an AbstractBoundaryOperatorPseudoinverse object representing the (pseudo)inverse of boundaryOp, immediately wraps the newly created abstract operator in a BoundaryOperator and returns the latter.


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