BEM++
2.0
|
Elementary integral boundary operator. More...
#include </home/wojtek/Projects/BEM/bempp-sven/bempp/lib/assembly/elementary_integral_operator.hpp>
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 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. | |
![]() | |
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 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 | |
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. | |
virtual bool | isRegular () const =0 |
Return whether applying this operator to a regular function yields a regular integral. | |
![]() | |
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< LocalAssembler > | makeAssembler (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 ¶llelizationOptions, VerbosityLevel::Level verbosityLevel, bool cacheSingularIntegrals) const |
Construct a local assembler suitable for this operator. More... | |
std::auto_ptr< LocalAssembler > | makeAssembler (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... | |
![]() | |
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... | |
![]() | |
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 ElementaryIntegralOperatorBase < BasisFunctionType_, ResultType_ > | Base |
Private Member Functions | |
virtual const CollectionOfKernels & | kernels () 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 weak form of this operator. | |
virtual const CollectionOfShapesetTransformations & | trialTransformations () const =0 |
Return the collection of trial function transformations occurring in the weak form of this operator. | |
virtual const TestKernelTrialIntegral & | integral () const =0 |
Return an object representing the integral that is the weak form of this operator. More... | |
virtual std::auto_ptr < LocalAssembler > | makeAssemblerImpl (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 ¶llelizationOptions, VerbosityLevel::Level verbosityLevel, bool cacheSingularIntegrals) const |
Construct a local assembler suitable for this operator. More... | |
virtual shared_ptr < DiscreteBoundaryOperator < ResultType_ > > | assembleWeakFormInternalImpl2 (LocalAssembler &assembler, const Context< BasisFunctionType, ResultType > &context) const |
Assemble the operator's weak form using a specified local assembler. More... | |
Elementary integral boundary operator.
This class represents an integral boundary operator whose weak form is
where is a surface embedded in a space of dimension higher by one and the integrand
is an arbitrary bilinear (or sesquilinear) form of the test function
belonging to the space dual to the range of
and the trial function
belonging to the domain of
. In the simplest and most common case,
is just
where is a kernel function and the asterisk denotes complex conjugation. For more complex operators,
might involve some transformations of the test and trial functions (e.g. their surface divergence or curl), the kernel function might be a tensor, or
might consist of several terms. The exact form of
for a particular boundary operator is determined by the implementation of the virtual functions integral(), kernels(), testTransformations() and trialTransformations().
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.
typedef Base::BasisFunctionType Bempp::ElementaryIntegralOperator< 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.
typedef Fiber::CollectionOfShapesetTransformations<CoordinateType> Bempp::ElementaryIntegralOperator< BasisFunctionType_, KernelType_, ResultType_ >::CollectionOfBasisTransformations |
Type of the appropriate instantiation of Fiber::CollectionOfBasisTransformations.
typedef Base::CoordinateType Bempp::ElementaryIntegralOperator< BasisFunctionType_, KernelType_, ResultType_ >::CoordinateType |
Type used to represent coordinates.
typedef Base::LocalAssembler Bempp::ElementaryIntegralOperator< BasisFunctionType_, KernelType_, ResultType_ >::LocalAssembler |
Type of the appropriate instantiation of Fiber::LocalAssemblerForOperators.
typedef Base::QuadratureStrategy Bempp::ElementaryIntegralOperator< BasisFunctionType_, KernelType_, ResultType_ >::QuadratureStrategy |
Type of the appropriate instantiation of Fiber::QuadratureStrategy.
typedef Base::ResultType Bempp::ElementaryIntegralOperator< BasisFunctionType_, KernelType_, ResultType_ >::ResultType |
Type used to represent elements of the weak form of the operator.
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.
[in] | domain | Function space being the domain of the operator. |
[in] | range | Function space being the range of the operator. |
[in] | dualToRange | Function space dual to the the range of the operator. |
[in] | label | Textual label of the operator. If empty, a unique label is generated automatically. |
[in] | symmetry | Symmetry 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.
|
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::Context< BasisFunctionType, ResultType >::quadStrategy().
|
privatevirtual |
Assemble the operator's weak form using a specified local assembler.
This virtual function is invoked by assembleWeakFormInternal() to do the actual work.
Implements Bempp::ElementaryIntegralOperatorBase< BasisFunctionType_, ResultType_ >.
References Bempp::Context< BasisFunctionType, ResultType >::assemblyOptions().
|
privatepure virtual |
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.
Implemented in Bempp::GeneralElementarySingularIntegralOperator< BasisFunctionType_, KernelType_, ResultType_ >.
|
privatevirtual |
Construct a local assembler suitable for this operator.
This function is invoked by both overloads of makeAssembler() to do the actual work.
Implements Bempp::ElementaryIntegralOperatorBase< BasisFunctionType_, ResultType_ >.