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 | List of all members
Bempp::HypersingularIntegralOperator< BasisFunctionType_, KernelType_, ResultType_ > Class Template Referenceabstract

Hypersingular integral boundary operator. More...

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

Inheritance diagram for Bempp::HypersingularIntegralOperator< BasisFunctionType_, KernelType_, ResultType_ >:
Bempp::AbstractBoundaryOperator< BasisFunctionType_, ResultType_ > Bempp::GeneralHypersingularIntegralOperator< BasisFunctionType_, KernelType_, 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...
 
typedef
Fiber::LocalAssemblerForIntegralOperators
< ResultType
LocalAssembler
 Type of the appropriate instantiation of Fiber::LocalAssemblerForOperators.
 
typedef KernelType_ KernelType
 Type of the values of the (components of the) kernel functions.
 
typedef
Fiber::CollectionOfShapesetTransformations
< CoordinateType
CollectionOfShapesetTransformations
 Type of the appropriate instantiation of Fiber::CollectionOfShapesetTransformations.
 
typedef
Fiber::CollectionOfShapesetTransformations
< CoordinateType
CollectionOfBasisTransformations
 Type of the appropriate instantiation of Fiber::CollectionOfBasisTransformations. More...
 
typedef
Fiber::CollectionOfKernels
< KernelType
CollectionOfKernels
 Type of the appropriate instantiation of Fiber::CollectionOfKernels.
 
typedef
Fiber::TestKernelTrialIntegral
< BasisFunctionType,
KernelType, ResultType
TestKernelTrialIntegral
 Type of the appropriate instantiation of Fiber::TestKernelTrialIntegral.
 
- 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

 HypersingularIntegralOperator (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 bool isLocal () const
 Return false.
 
- 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 Member Functions

virtual const CollectionOfKernelskernels () const =0
 Return the collection of kernel functions occurring in the weak form of this operator.
 
virtual const
CollectionOfShapesetTransformations
testTransformations () const =0
 Return the collection of test-function transformations occurring in the first representation of the weak form of this operator (valid for all pairs of test and trial functions).
 
virtual const
CollectionOfShapesetTransformations
trialTransformations () const =0
 Return the collection of trial-function transformations occurring in the first representation of the weak form of this operator (valid for all pairs of test and trial functions).
 
virtual const
TestKernelTrialIntegral
integral () const =0
 Return an object representing the integral that is the first representation of the weak form of this operator (valid for all pairs of test and trial functions). More...
 
virtual const CollectionOfKernelsoffDiagonalKernels () const =0
 Return the collection of kernel functions occurring in the in the second representation of the weak form of this operator (valid at least for pairs of test and trial functions with nonoverlapping supports).
 
virtual const
CollectionOfShapesetTransformations
offDiagonalTestTransformations () const =0
 Return the collection of test-function transformations occurring in the second representation of the weak form of this operator (valid at least for pairs of test and trial functions with nonoverlapping supports). More...
 
virtual const
CollectionOfShapesetTransformations
offDiagonalTrialTransformations () const =0
 Return the collection of trial-function transformations occurring in the second representation of the weak form of this operator (valid at least for pairs of test and trial functions with nonoverlapping supports). More...
 
virtual const
TestKernelTrialIntegral
offDiagonalIntegral () const =0
 Return an object representing the integral that is the second representation of the weak form of this operator (valid at least for pairs of test and trial functions with nonoverlapping supports). More...
 

Detailed Description

template<typename BasisFunctionType_, typename KernelType_, typename ResultType_>
class Bempp::HypersingularIntegralOperator< BasisFunctionType_, KernelType_, ResultType_ >

Hypersingular integral boundary operator.

This abstract class represents an integral boundary operator $\mathcal A$ providing two alternative ways to evaluate its weak form $\langle \phi, \mathcal A \psi \rangle$. One of them must be valid for any pair of test and trial functions, $\phi$ and $\psi$, and it can be expressed by a formula of an arbitrary form; in particular, it can contain differential operators, e.g. surface div and curl, acting on the test and trial functions. The other one needs only be valid for test and trial functions with nonoverlapping support, and it must be of the form

\[ \int_\Gamma \int_\Sigma \phi^*(x) \, K(x, y) \, \psi(y) \, \mathrm{d}\Gamma(x) \,\mathrm{d}\Sigma(y), \]

where $K(x, y)$ is an arbitrary kernel; note that the formula contains "bare" test and trial functions, without any operators acting on them.

When the discrete weak form of an integral operator represented by a subclass of this class is assembled in the hybrid ACA mode (

See Also
AcaOptions::mode), the first representation of the weak form is used in the Assembly of nonadmissible blocks and the second in the Assembly of admissible ("off-diagonal") blocks.

The first representation of the weak form is determined by the implementation of the virtual functions integral(), kernels(), testTransformations() and trialTransformations(). The second representation is determined by the implementation of the virtual functions offDiagonalIntegral(), offDiagonalKernels(), offDiagonalTestTransformations() and offDiagonalTrialTransformations().

Template Parameters
BasisFunctionType_Type of the values of the (components of the) basis functions into which functions acted upon by the operator are expanded.
KernelType_Type of the values of the (components of the) kernel functions occurring in the integrand of the operator.
ResultType_Type used to represent elements of the weak form of the operator.

All three template parameters can take the following values: float, double, std::complex<float> and std::complex<double>. All types must have the same precision: for instance, mixing float with std::complex<double> is not allowed. If either BasisFunctionType_ or KernelType_ is a complex type, then ResultType_ must be set to the same type.

Member Typedef Documentation

template<typename BasisFunctionType_ , typename KernelType_ , typename ResultType_ >
typedef Base::BasisFunctionType Bempp::HypersingularIntegralOperator< BasisFunctionType_, KernelType_, 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 KernelType_ , typename ResultType_ >
typedef Fiber::CollectionOfShapesetTransformations<CoordinateType> Bempp::HypersingularIntegralOperator< BasisFunctionType_, KernelType_, ResultType_ >::CollectionOfBasisTransformations

Type of the appropriate instantiation of Fiber::CollectionOfBasisTransformations.

Deprecated:
This type is deprecated; use CollectionOfShapesetTransformations instead.
template<typename BasisFunctionType_ , typename KernelType_ , typename ResultType_ >
typedef Base::CoordinateType Bempp::HypersingularIntegralOperator< BasisFunctionType_, KernelType_, ResultType_ >::CoordinateType

Type used to represent coordinates.

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

Type of the appropriate instantiation of Fiber::QuadratureStrategy.

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

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

Constructor & Destructor Documentation

template<typename BasisFunctionType , typename KernelType , typename ResultType >
Bempp::HypersingularIntegralOperator< BasisFunctionType, KernelType, ResultType >::HypersingularIntegralOperator ( 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.

Parameters
[in]domainFunction space being the domain of the operator.
[in]rangeFunction space being the range of the operator.
[in]dualToRangeFunction space dual to the the range of the operator.
[in]labelTextual label of the operator. If empty, a unique label is generated automatically.
[in]symmetrySymmetry of the weak form of the operator. Can be any combination of the flags defined in the enumeration type Symmetry.

None of the shared pointers may be null and the spaces range and dualToRange must be defined on the same grid, otherwise an exception is thrown.

Member Function Documentation

template<typename BasisFunctionType , typename KernelType , typename ResultType >
shared_ptr< DiscreteBoundaryOperator< ResultType > > Bempp::HypersingularIntegralOperator< BasisFunctionType, KernelType, ResultType >::assembleWeakFormImpl ( const Context< BasisFunctionType, ResultType > &  context) const
protectedvirtual
template<typename BasisFunctionType_ , typename KernelType_ , typename ResultType_ >
virtual const TestKernelTrialIntegral& Bempp::HypersingularIntegralOperator< BasisFunctionType_, KernelType_, ResultType_ >::integral ( ) const
privatepure virtual

Return an object representing the integral that is the first representation of the weak form of this operator (valid for all pairs of test and trial functions).

Subclasses of TestKernelTrialIntegral implement functions that evaluate the integral using the data provided by a CollectionOfKernels representing the kernel functions occurring in the integrand and a pair of CollectionOfShapesetTransformations objects representing the test and trial function transformations occurring in the integrand.

Implemented in Bempp::GeneralHypersingularIntegralOperator< BasisFunctionType_, KernelType_, ResultType_ >.

template<typename BasisFunctionType_ , typename KernelType_ , typename ResultType_ >
virtual const TestKernelTrialIntegral& Bempp::HypersingularIntegralOperator< BasisFunctionType_, KernelType_, ResultType_ >::offDiagonalIntegral ( ) const
privatepure virtual

Return an object representing the integral that is the second representation of the weak form of this operator (valid at least for pairs of test and trial functions with nonoverlapping supports).

Subclasses of TestKernelTrialIntegral implement functions that evaluate the integral using the data provided by a CollectionOfKernels representing the kernel functions occurring in the integrand and a pair of CollectionOfShapesetTransformations objects representing the test and trial basis function transformations occurring in the integrand.

Implemented in Bempp::GeneralHypersingularIntegralOperator< BasisFunctionType_, KernelType_, ResultType_ >.

template<typename BasisFunctionType_ , typename KernelType_ , typename ResultType_ >
virtual const CollectionOfShapesetTransformations& Bempp::HypersingularIntegralOperator< BasisFunctionType_, KernelType_, ResultType_ >::offDiagonalTestTransformations ( ) const
privatepure virtual

Return the collection of test-function transformations occurring in the second representation of the weak form of this operator (valid at least for pairs of test and trial functions with nonoverlapping supports).

It should normally be the mapping of shape functions (defined on the reference element) to basis functions (defined on the physical elements).

Implemented in Bempp::GeneralHypersingularIntegralOperator< BasisFunctionType_, KernelType_, ResultType_ >.

template<typename BasisFunctionType_ , typename KernelType_ , typename ResultType_ >
virtual const CollectionOfShapesetTransformations& Bempp::HypersingularIntegralOperator< BasisFunctionType_, KernelType_, ResultType_ >::offDiagonalTrialTransformations ( ) const
privatepure virtual

Return the collection of trial-function transformations occurring in the second representation of the weak form of this operator (valid at least for pairs of test and trial functions with nonoverlapping supports).

It should normally be the mapping of shape functions (defined on the reference element) to basis functions (defined on the physical elements).

Implemented in Bempp::GeneralHypersingularIntegralOperator< BasisFunctionType_, KernelType_, ResultType_ >.


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