BEM++
2.0
|
Standard implementation of a hypersingular singular integral operator. More...
#include </home/wojtek/Projects/BEM/bempp-sven/bempp/lib/assembly/general_hypersingular_integral_operator.hpp>
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... | |
![]() | |
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 | |
template<typename KernelFunctor , typename TestTransformationsFunctor , typename TrialTransformationsFunctor , typename IntegrandFunctor , typename OffDiagonalKernelFunctor , typename OffDiagonalTestTransformationsFunctor , typename OffDiagonalTrialTransformationsFunctor , typename OffDiagonalIntegrandFunctor > | |
GeneralHypersingularIntegralOperator (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, const OffDiagonalKernelFunctor &offDiagonalKernelFunctor, const OffDiagonalTestTransformationsFunctor &offDiagonalTestTransformationsFunctor, const OffDiagonalTrialTransformationsFunctor &offDiagonalTrialTransformationsFunctor, const OffDiagonalIntegrandFunctor &offDiagonalIntegrandFunctor) | |
Constructor. More... | |
template<typename KernelFunctor , typename TestTransformationsFunctor , typename TrialTransformationsFunctor , typename OffDiagonalKernelFunctor , typename OffDiagonalTestTransformationsFunctor , typename OffDiagonalTrialTransformationsFunctor > | |
GeneralHypersingularIntegralOperator (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, const OffDiagonalKernelFunctor &offDiagonalKernelFunctor, const OffDiagonalTestTransformationsFunctor &offDiagonalTestTransformationsFunctor, const OffDiagonalTrialTransformationsFunctor &offDiagonalTrialTransformationsFunctor, const shared_ptr< Fiber::TestKernelTrialIntegral< BasisFunctionType_, KernelType_, ResultType_ > > &offDiagonalIntegral) | |
virtual const CollectionOfKernels & | kernels () 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 first representation of the weak form of this operator (valid for all pairs of test and trial functions). | |
virtual const CollectionOfShapesetTransformations & | trialTransformations () const |
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 |
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 |
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 |
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 |
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 |
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... | |
![]() | |
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... | |
Private Types | |
typedef HypersingularIntegralOperator < BasisFunctionType_, KernelType_, ResultType_ > | Base |
Additional Inherited Members | |
![]() | |
static std::string | uniqueLabel () |
Generate and return a new unique label "OpN", where N is a number. | |
![]() | |
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. | |
Standard implementation of a hypersingular singular integral operator.
This class provides an implementation of the interface defined by HypersingularIntegralOperator that is sufficient for most purposes. The constructor takes eight 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) for its two representations: one valid for all pairs of test and trial functions, the other necessarily valid only for test and trial functions with nonoverlapping support, but with a more restricted form (see the documentation of HypersingularIntegralOperator for more details). 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(), integral(), offDiagonalKernels(), offDiagonalTestTransformations(), offDiagonalTrialTransformations() and offDiagonalIntegral().
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::CollectionOfBasisTransformations Bempp::GeneralHypersingularIntegralOperator< BasisFunctionType_, KernelType_, ResultType_ >::CollectionOfBasisTransformations |
Type of the appropriate instantiation of Fiber::CollectionOfBasisTransformations.
typedef Base::CollectionOfKernels Bempp::GeneralHypersingularIntegralOperator< BasisFunctionType_, KernelType_, ResultType_ >::CollectionOfKernels |
Type of the appropriate instantiation of Fiber::CollectionOfKernels.
typedef Base::CollectionOfShapesetTransformations Bempp::GeneralHypersingularIntegralOperator< BasisFunctionType_, KernelType_, ResultType_ >::CollectionOfShapesetTransformations |
Type of the appropriate instantiation of Fiber::CollectionOfShapesetTransformations.
typedef Base::CoordinateType Bempp::GeneralHypersingularIntegralOperator< BasisFunctionType_, KernelType_, ResultType_ >::CoordinateType |
Type used to represent coordinates.
typedef Base::ResultType Bempp::GeneralHypersingularIntegralOperator< BasisFunctionType_, KernelType_, ResultType_ >::ResultType |
Type used to represent elements of the weak form of the operator.
typedef Base::TestKernelTrialIntegral Bempp::GeneralHypersingularIntegralOperator< BasisFunctionType_, KernelType_, ResultType_ >::TestKernelTrialIntegral |
Type of the appropriate instantiation of Fiber::TestKernelTrialIntegral.
Bempp::GeneralHypersingularIntegralOperator< BasisFunctionType_, KernelType_, ResultType_ >::GeneralHypersingularIntegralOperator | ( | 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, | ||
const OffDiagonalKernelFunctor & | offDiagonalKernelFunctor, | ||
const OffDiagonalTestTransformationsFunctor & | offDiagonalTestTransformationsFunctor, | ||
const OffDiagonalTrialTransformationsFunctor & | offDiagonalTrialTransformationsFunctor, | ||
const OffDiagonalIntegrandFunctor & | offDiagonalIntegrandFunctor | ||
) |
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. |
[in] | kernelFunctor | A 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] | testTransformationsFunctor | A 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] | trialTransformationsFunctor | A 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] | integrandFunctor | A 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. |
[in] | offDiagonalKernelFunctor | A functor object that may be used to evaluate the collection of kernels of this operator at a single pair of points lying in nonadjacent elements. The KernelFunctor class must provide the interface defined in the documentation of DefaultCollectionOfKernels. |
[in] | offDiagonalTestTransformationsFunctor | A 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] | offDiagonalTrialTransformationsFunctor | A 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] | offDiagonalIntegrandFunctor | A 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 GeneralHypersingularIntegralOperator object.
Bempp::GeneralHypersingularIntegralOperator< BasisFunctionType_, KernelType_, ResultType_ >::GeneralHypersingularIntegralOperator | ( | 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, | ||
const OffDiagonalKernelFunctor & | offDiagonalKernelFunctor, | ||
const OffDiagonalTestTransformationsFunctor & | offDiagonalTestTransformationsFunctor, | ||
const OffDiagonalTrialTransformationsFunctor & | offDiagonalTrialTransformationsFunctor, | ||
const shared_ptr< Fiber::TestKernelTrialIntegral< BasisFunctionType_, KernelType_, ResultType_ > > & | offDiagonalIntegral | ||
) |
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
and offDiagonalIntegral
arguments, which should be shared pointers to instances of (a subclass of) Fiber::TestKernelTrialIntegral rather than functors.
|
inlinevirtual |
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.
Implements Bempp::HypersingularIntegralOperator< BasisFunctionType_, KernelType_, ResultType_ >.
|
inlinevirtual |
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.
Implements Bempp::HypersingularIntegralOperator< BasisFunctionType_, KernelType_, ResultType_ >.
|
inlinevirtual |
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).
Implements Bempp::HypersingularIntegralOperator< BasisFunctionType_, KernelType_, ResultType_ >.
|
inlinevirtual |
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).
Implements Bempp::HypersingularIntegralOperator< BasisFunctionType_, KernelType_, ResultType_ >.