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

Standard implementation of an elementary singular integral operator. More...

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

Inheritance diagram for Bempp::GeneralElementarySingularIntegralOperator< BasisFunctionType_, KernelType_, ResultType_ >:
Bempp::ElementarySingularIntegralOperator< BasisFunctionType_, KernelType_, ResultType_ > Bempp::ElementaryIntegralOperator< BasisFunctionType_, KernelType_, ResultType_ > Bempp::ElementaryIntegralOperatorBase< BasisFunctionType_, ResultType_ > Bempp::AbstractBoundaryOperator< BasisFunctionType_, ResultType_ >

Public Types

typedef Base::BasisFunctionType BasisFunctionType
 Type of the values of the basis functions into which functions acted upon by the operator are expanded.
 
typedef Base::KernelType KernelType
 Type of the values of kernel functions.
 
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::CollectionOfShapesetTransformations 
CollectionOfShapesetTransformations
 Type of the appropriate instantiation of Fiber::CollectionOfShapesetTransformations. More...
 
typedef
Base::CollectionOfBasisTransformations 
CollectionOfBasisTransformations
 Type of the appropriate instantiation of Fiber::CollectionOfBasisTransformations. More...
 
typedef Base::CollectionOfKernels CollectionOfKernels
 Type of the appropriate instantiation of Fiber::CollectionOfKernels. More...
 
typedef
Base::TestKernelTrialIntegral 
TestKernelTrialIntegral
 Type of the appropriate instantiation of Fiber::TestKernelTrialIntegral. More...
 
- Public Types inherited from Bempp::ElementarySingularIntegralOperator< BasisFunctionType_, KernelType_, ResultType_ >
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::KernelType KernelType
 Type of the values of the (components of the) kernel functions. 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::CollectionOfBasisTransformations 
CollectionOfBasisTransformations
 Type of the appropriate instantiation of Fiber::CollectionOfBasisTransformations. More...
 
typedef
Base::CollectionOfShapesetTransformations 
CollectionOfShapesetTransformations
 Type of the appropriate instantiation of Fiber::CollectionOfShapesetTransformations. More...
 
typedef Base::CollectionOfKernels CollectionOfKernels
 Type of the appropriate instantiation of Fiber::CollectionOfKernels. More...
 
typedef
Base::TestKernelTrialIntegral 
TestKernelTrialIntegral
 Type of the appropriate instantiation of Fiber::TestKernelTrialIntegral. More...
 
- Public Types inherited from Bempp::ElementaryIntegralOperator< BasisFunctionType_, KernelType_, ResultType_ >
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 Base::LocalAssembler LocalAssembler
 Type of the appropriate instantiation of Fiber::LocalAssemblerForOperators. More...
 
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::ElementaryIntegralOperatorBase< BasisFunctionType_, ResultType_ >
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.
 
- 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

template<typename KernelFunctor , typename TestTransformationsFunctor , typename TrialTransformationsFunctor , typename IntegrandFunctor >
 GeneralElementarySingularIntegralOperator (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, const KernelFunctor &kernelFunctor, const TestTransformationsFunctor &testTransformationsFunctor, const TrialTransformationsFunctor &trialTransformationsFunctor, const IntegrandFunctor &integrandFunctor)
 Constructor. More...
 
template<typename KernelFunctor , typename TestTransformationsFunctor , typename TrialTransformationsFunctor >
 GeneralElementarySingularIntegralOperator (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, const KernelFunctor &kernelFunctor, const TestTransformationsFunctor &testTransformationsFunctor, const TrialTransformationsFunctor &trialTransformationsFunctor, const shared_ptr< Fiber::TestKernelTrialIntegral< BasisFunctionType_, KernelType_, ResultType_ > > &integral)
 
 GeneralElementarySingularIntegralOperator (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, const shared_ptr< Fiber::CollectionOfKernels< KernelType_ > > &kernels, const shared_ptr< Fiber::CollectionOfShapesetTransformations< CoordinateType > > &testTransformations, const shared_ptr< Fiber::CollectionOfShapesetTransformations< CoordinateType > > &trialTransformations, const shared_ptr< Fiber::TestKernelTrialIntegral< BasisFunctionType_, KernelType_, ResultType_ > > &integral)
 
virtual const CollectionOfKernelskernels () const
 Return the collection of kernel functions occurring in the weak form of this operator.
 
virtual const
CollectionOfShapesetTransformations
testTransformations () const
 Return the collection of test function transformations occurring in the weak form of this operator.
 
virtual const
CollectionOfShapesetTransformations
trialTransformations () const
 Return the collection of trial function transformations occurring in the weak form of this operator.
 
virtual const
TestKernelTrialIntegral
integral () const
 Return an object representing the integral that is the weak form of this operator. More...
 
- Public Member Functions inherited from Bempp::ElementarySingularIntegralOperator< BasisFunctionType_, KernelType_, ResultType_ >
 ElementarySingularIntegralOperator (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 isRegular () const
 Return whether applying this operator to a regular function yields a regular integral.
 
- Public Member Functions inherited from Bempp::ElementaryIntegralOperator< BasisFunctionType_, KernelType_, ResultType_ >
 ElementaryIntegralOperator (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::ElementaryIntegralOperatorBase< BasisFunctionType_, ResultType_ >
 ElementaryIntegralOperatorBase (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...
 
 ~ElementaryIntegralOperatorBase ()
 Destructor.
 
std::auto_ptr< LocalAssemblermakeAssembler (const QuadratureStrategy &quadStrategy, const shared_ptr< const GeometryFactory > &testGeometryFactory, const shared_ptr< const GeometryFactory > &trialGeometryFactory, const shared_ptr< const Fiber::RawGridGeometry< CoordinateType > > &testRawGeometry, const shared_ptr< const Fiber::RawGridGeometry< CoordinateType > > &trialRawGeometry, const shared_ptr< const std::vector< const Fiber::Shapeset< BasisFunctionType > * > > &testShapesets, const shared_ptr< const std::vector< const Fiber::Shapeset< BasisFunctionType > * > > &trialShapesets, const shared_ptr< const Fiber::OpenClHandler > &openClHandler, const ParallelizationOptions &parallelizationOptions, VerbosityLevel::Level verbosityLevel, bool cacheSingularIntegrals) const
 Construct a local assembler suitable for this operator. More...
 
std::auto_ptr< LocalAssemblermakeAssembler (const QuadratureStrategy &quadStrategy, const AssemblyOptions &options) const
 Construct a local assembler suitable for this operator using a specified quadrature strategy. More...
 
shared_ptr
< DiscreteBoundaryOperator
< ResultType_ > > 
assembleWeakFormInternal (LocalAssembler &assembler, const Context< BasisFunctionType, ResultType > &context) const
 Assemble the operator's weak form using a specified local assembler. 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...
 

Private Types

typedef
ElementarySingularIntegralOperator
< BasisFunctionType_,
KernelType_, ResultType_ > 
Base
 

Additional Inherited Members

- Static Public Member Functions inherited from Bempp::AbstractBoundaryOperator< BasisFunctionType_, ResultType_ >
static std::string uniqueLabel ()
 Generate and return a new unique label "OpN", where N is a number.
 
- Protected Member Functions inherited from Bempp::ElementaryIntegralOperator< BasisFunctionType_, KernelType_, ResultType_ >
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.
 

Detailed Description

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

Standard implementation of an elementary singular integral operator.

This class provides an implementation of the interface defined by ElementarySingularIntegralOperator that is sufficient for most purposes. The constructor takes four functor objects representing the four elements of the operator's weak form (collection of kernels, collections of test and trial function transformations, and the weak form integrand). These functors are used to construct instances of appropriate instantiations of DefaultCollectionOfKernels, DefaultCollectionOfShapesetTransformations and DefaultTestKernelTrialIntegral. These objects are stored as private member variables and are returned by the implementations of the virtual methods kernels(), testTransformations(), trialTransformations() and integral().

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::CollectionOfBasisTransformations Bempp::GeneralElementarySingularIntegralOperator< 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::CollectionOfKernels Bempp::GeneralElementarySingularIntegralOperator< BasisFunctionType_, KernelType_, ResultType_ >::CollectionOfKernels

Type of the appropriate instantiation of Fiber::CollectionOfKernels.

template<typename BasisFunctionType_ , typename KernelType_ , typename ResultType_ >
typedef Base::CollectionOfShapesetTransformations Bempp::GeneralElementarySingularIntegralOperator< BasisFunctionType_, KernelType_, ResultType_ >::CollectionOfShapesetTransformations

Type of the appropriate instantiation of Fiber::CollectionOfShapesetTransformations.

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

Type used to represent coordinates.

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

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

template<typename BasisFunctionType_ , typename KernelType_ , typename ResultType_ >
typedef Base::TestKernelTrialIntegral Bempp::GeneralElementarySingularIntegralOperator< BasisFunctionType_, KernelType_, ResultType_ >::TestKernelTrialIntegral

Type of the appropriate instantiation of Fiber::TestKernelTrialIntegral.

Constructor & Destructor Documentation

template<typename BasisFunctionType_ , typename KernelType_ , typename ResultType_ >
template<typename KernelFunctor , typename TestTransformationsFunctor , typename TrialTransformationsFunctor , typename IntegrandFunctor >
Bempp::GeneralElementarySingularIntegralOperator< BasisFunctionType_, KernelType_, ResultType_ >::GeneralElementarySingularIntegralOperator ( 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,
const KernelFunctor &  kernelFunctor,
const TestTransformationsFunctor &  testTransformationsFunctor,
const TrialTransformationsFunctor &  trialTransformationsFunctor,
const IntegrandFunctor &  integrandFunctor 
)

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.
[in]kernelFunctorA functor object to be used to evaluate the collection of kernels of this operator at a single pair of points. The KernelFunctor class must provide the interface defined in the documentation of DefaultCollectionOfKernels.
[in]testTransformationsFunctorA functor object to be used to evaluate the collection of test function transformations at a single point. The TestTransformationsFunctor class must provide the interface defined in the documentation of DefaultCollectionOfShapesetTransformations.
[in]trialTransformationsFunctorA functor object to be used to evaluate the collection of trial function transformations at a single point. The TrialTransformationsFunctor class must provide the interface defined in the documentation of DefaultCollectionOfShapesetTransformations.
[in]integrandFunctorA functor object to be used to evaluate the integrand of the weak form at a single pair of points. The IntegrandFunctor class must provide the interface defined in the documentation of DefaultTestKernelTrialIntegral.

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.

The implementation of this constructor is contained in general_elementary_singular_integral_operator_imp.hpp. This header must be included in any file creating a new GeneralElementarySingularIntegralOperator object.

template<typename BasisFunctionType_ , typename KernelType_ , typename ResultType_ >
template<typename KernelFunctor , typename TestTransformationsFunctor , typename TrialTransformationsFunctor >
Bempp::GeneralElementarySingularIntegralOperator< BasisFunctionType_, KernelType_, ResultType_ >::GeneralElementarySingularIntegralOperator ( 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,
const KernelFunctor &  kernelFunctor,
const TestTransformationsFunctor &  testTransformationsFunctor,
const TrialTransformationsFunctor &  trialTransformationsFunctor,
const shared_ptr< Fiber::TestKernelTrialIntegral< BasisFunctionType_, KernelType_, ResultType_ > > &  integral 
)

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

This constructor takes the same arguments as the preceding one except for the integral argument, which should be a shared pointer to an instance of (a subclass of) Fiber::TestKernelTrialIntegral.

template<typename BasisFunctionType_ , typename KernelType_ , typename ResultType_ >
Bempp::GeneralElementarySingularIntegralOperator< BasisFunctionType_, KernelType_, ResultType_ >::GeneralElementarySingularIntegralOperator ( 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,
const shared_ptr< Fiber::CollectionOfKernels< KernelType_ > > &  kernels,
const shared_ptr< Fiber::CollectionOfShapesetTransformations< CoordinateType > > &  testTransformations,
const shared_ptr< Fiber::CollectionOfShapesetTransformations< CoordinateType > > &  trialTransformations,
const shared_ptr< Fiber::TestKernelTrialIntegral< BasisFunctionType_, KernelType_, ResultType_ > > &  integral 
)

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

This constructor takes the same first five arguments as the preceding ones, but the last four arguments should be shared pointers to instances of Fiber::CollectionOfKernels, Fiber::CollectionOfShapesetTransformations and Fiber::TestKernelTrialIntegral.

Member Function Documentation

template<typename BasisFunctionType_ , typename KernelType_ , typename ResultType_ >
virtual const TestKernelTrialIntegral& Bempp::GeneralElementarySingularIntegralOperator< BasisFunctionType_, KernelType_, ResultType_ >::integral ( ) const
inlinevirtual

Return an object representing the integral that is the weak form of this operator.

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.

Implements Bempp::ElementaryIntegralOperator< BasisFunctionType_, KernelType_, ResultType_ >.


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