BEM++
2.0
|
Hypersingular integral boundary operator. More...
#include </home/wojtek/Projects/BEM/bempp-sven/bempp/lib/assembly/hypersingular_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 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. | |
![]() | |
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. | |
![]() | |
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 AbstractBoundaryOperator < 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 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 CollectionOfKernels & | offDiagonalKernels () 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... | |
Hypersingular integral boundary operator.
This abstract class represents an integral boundary operator providing two alternative ways to evaluate its weak form
. One of them must be valid for any pair of test and trial functions,
and
, 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
where 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 (
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().
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::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.
typedef Fiber::CollectionOfShapesetTransformations<CoordinateType> Bempp::HypersingularIntegralOperator< BasisFunctionType_, KernelType_, ResultType_ >::CollectionOfBasisTransformations |
Type of the appropriate instantiation of Fiber::CollectionOfBasisTransformations.
typedef Base::CoordinateType Bempp::HypersingularIntegralOperator< BasisFunctionType_, KernelType_, ResultType_ >::CoordinateType |
Type used to represent coordinates.
typedef Base::QuadratureStrategy Bempp::HypersingularIntegralOperator< BasisFunctionType_, KernelType_, ResultType_ >::QuadratureStrategy |
Type of the appropriate instantiation of Fiber::QuadratureStrategy.
typedef Base::ResultType Bempp::HypersingularIntegralOperator< BasisFunctionType_, KernelType_, ResultType_ >::ResultType |
Type used to represent elements of the weak form of the operator.
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.
[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(), Bempp::Context< BasisFunctionType, ResultType >::quadStrategy(), and Bempp::AssemblyOptions::verbosityLevel().
|
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_ >.
|
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_ >.
|
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_ >.
|
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_ >.