BEM++  2.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Groups Pages
Public Types | Public Member Functions | Private Types | Private Member Functions | List of all members
Fiber::NumericalQuadratureStrategy< BasisFunctionType, ResultType, GeometryFactory, Enable > Class Template Reference

Quadrature strategy according to which integrals are evaluated by numerical quadrature. More...

#include </home/wojtek/Projects/BEM/bempp-sven/bempp/lib/fiber/numerical_quadrature_strategy.hpp>

Inheritance diagram for Fiber::NumericalQuadratureStrategy< BasisFunctionType, ResultType, GeometryFactory, Enable >:
Fiber::NumericalQuadratureStrategyBase< BasisFunctionType, ResultType, GeometryFactory, Enable > Fiber::QuadratureStrategy< BasisFunctionType, ResultType, GeometryFactory, Enable > Fiber::QuadratureStrategyBase< BasisFunctionType, ResultType, GeometryFactory >

Public Types

typedef Base::CoordinateType CoordinateType
 
- Public Types inherited from Fiber::NumericalQuadratureStrategyBase< BasisFunctionType, ResultType, GeometryFactory, Enable >
typedef QuadratureStrategy
< BasisFunctionType,
ResultType, GeometryFactory,
Enable > 
Base
 
typedef Base::CoordinateType CoordinateType
 
- Public Types inherited from Fiber::QuadratureStrategy< BasisFunctionType, ResultType, GeometryFactory, Enable >
typedef Base::CoordinateType CoordinateType
 
- Public Types inherited from Fiber::QuadratureStrategyBase< BasisFunctionType, ResultType, GeometryFactory >
typedef ScalarTraits
< ResultType >::RealType 
CoordinateType
 

Public Member Functions

 NumericalQuadratureStrategy ()
 Construct a numerical quadrature strategy. More...
 
 NumericalQuadratureStrategy (const AccuracyOptionsEx &accuracyOptions)
 Construct a numerical quadrature strategy. More...
 
 NumericalQuadratureStrategy (const AccuracyOptionsEx &accuracyOptions, const shared_ptr< const SingleQuadratureRuleFamily< CoordinateType > > &singleQuadratureRuleFamily, const shared_ptr< const DoubleQuadratureRuleFamily< CoordinateType > > &doubleQuadratureRuleFamily)
 Construct a numerical quadrature strategy. More...
 
 NumericalQuadratureStrategy (const shared_ptr< const QuadratureDescriptorSelectorFactory< BasisFunctionType > > &quadratureDescriptorSelectorFactory, const shared_ptr< const SingleQuadratureRuleFamily< CoordinateType > > &singleQuadratureRuleFamily, const shared_ptr< const DoubleQuadratureRuleFamily< CoordinateType > > &doubleQuadratureRuleFamily)
 Construct a numerical quadrature strategy. More...
 
- Public Member Functions inherited from Fiber::NumericalQuadratureStrategyBase< BasisFunctionType, ResultType, GeometryFactory, Enable >
 NumericalQuadratureStrategyBase (const shared_ptr< const QuadratureDescriptorSelectorFactory< BasisFunctionType > > &quadratureDescriptorSelectorFactory, const shared_ptr< const SingleQuadratureRuleFamily< CoordinateType > > &singleQuadratureRuleFamily, const shared_ptr< const DoubleQuadratureRuleFamily< CoordinateType > > &doubleQuadratureRuleFamily)
 
virtual std::auto_ptr
< LocalAssemblerForLocalOperators
< ResultType > > 
makeAssemblerForIdentityOperators (const shared_ptr< const GeometryFactory > &geometryFactory, const shared_ptr< const RawGridGeometry< CoordinateType > > &rawGeometry, const shared_ptr< const std::vector< const Shapeset< BasisFunctionType > * > > &testShapesets, const shared_ptr< const std::vector< const Shapeset< BasisFunctionType > * > > &trialShapesets, const shared_ptr< const CollectionOfShapesetTransformations< CoordinateType > > &testTransformations, const shared_ptr< const CollectionOfShapesetTransformations< CoordinateType > > &trialTransformations, const shared_ptr< const OpenClHandler > &openClHandler) const
 
virtual std::auto_ptr
< LocalAssemblerForLocalOperators
< ResultType > > 
makeAssemblerForLocalOperators (const shared_ptr< const GeometryFactory > &geometryFactory, const shared_ptr< const RawGridGeometry< CoordinateType > > &rawGeometry, const shared_ptr< const std::vector< const Shapeset< BasisFunctionType > * > > &testShapesets, const shared_ptr< const std::vector< const Shapeset< BasisFunctionType > * > > &trialShapesets, const shared_ptr< const CollectionOfShapesetTransformations< CoordinateType > > &testTransformations, const shared_ptr< const CollectionOfShapesetTransformations< CoordinateType > > &trialTransformations, const shared_ptr< const TestTrialIntegral< BasisFunctionType, ResultType > > &integral, const shared_ptr< const OpenClHandler > &openClHandler) const
 
- Public Member Functions inherited from Fiber::QuadratureStrategy< BasisFunctionType, ResultType, GeometryFactory, Enable >
std::auto_ptr
< LocalAssemblerForIntegralOperators
< ResultType > > 
makeAssemblerForIntegralOperators (const shared_ptr< const GeometryFactory > &testGeometryFactory, const shared_ptr< const GeometryFactory > &trialGeometryFactory, const shared_ptr< const RawGridGeometry< CoordinateType > > &testRawGeometry, const shared_ptr< const RawGridGeometry< CoordinateType > > &trialRawGeometry, const shared_ptr< const std::vector< const Shapeset< BasisFunctionType > * > > &testShapesets, const shared_ptr< const std::vector< const Shapeset< BasisFunctionType > * > > &trialShapesets, const shared_ptr< const CollectionOfShapesetTransformations< CoordinateType > > &testTransformations, const shared_ptr< const CollectionOfKernels< ResultType > > &kernels, const shared_ptr< const CollectionOfShapesetTransformations< CoordinateType > > &trialTransformations, const shared_ptr< const TestKernelTrialIntegral< BasisFunctionType, ResultType, ResultType > > &integral, const shared_ptr< const OpenClHandler > &openClHandler, const ParallelizationOptions &parallelizationOptions, VerbosityLevel::Level verbosityLevel, bool cacheSingularIntegrals) const
 Allocate a Galerkin-mode local assembler for an integral operator with complex kernel.
 
std::auto_ptr
< LocalAssemblerForGridFunctions
< ResultType > > 
makeAssemblerForGridFunctions (const shared_ptr< const GeometryFactory > &geometryFactory, const shared_ptr< const RawGridGeometry< CoordinateType > > &rawGeometry, const shared_ptr< const std::vector< const Shapeset< BasisFunctionType > * > > &testShapesets, const shared_ptr< const CollectionOfShapesetTransformations< CoordinateType > > &testTransformations, const shared_ptr< const Function< ResultType > > &function, const shared_ptr< const OpenClHandler > &openClHandler) const
 Allocate a local assembler for calculations of the projections of complex-valued functions from a given space on a Fiber::Function.
 
std::auto_ptr
< EvaluatorForIntegralOperators
< ResultType > > 
makeEvaluatorForIntegralOperators (const shared_ptr< const GeometryFactory > &geometryFactory, const shared_ptr< const RawGridGeometry< CoordinateType > > &rawGeometry, const shared_ptr< const std::vector< const Shapeset< BasisFunctionType > * > > &trialShapesets, const shared_ptr< const CollectionOfKernels< ResultType > > &kernel, const shared_ptr< const CollectionOfShapesetTransformations< CoordinateType > > &trialTransformations, const shared_ptr< const KernelTrialIntegral< BasisFunctionType, ResultType, ResultType > > &integral, const shared_ptr< const std::vector< std::vector< ResultType > > > &argumentLocalCoefficients, const shared_ptr< const OpenClHandler > &openClHandler, const ParallelizationOptions &parallelizationOptions) const
 Allocate an evaluator for an integral operator with complex-valued kernel applied to a grid function.
 
std::auto_ptr
< LocalAssemblerForPotentialOperators
< ResultType > > 
makeAssemblerForPotentialOperators (const arma::Mat< CoordinateType > &evaluationPoints, const shared_ptr< const GeometryFactory > &geometryFactory, const shared_ptr< const RawGridGeometry< CoordinateType > > &rawGeometry, const shared_ptr< const std::vector< const Shapeset< BasisFunctionType > * > > &trialShapesets, const shared_ptr< const CollectionOfKernels< ResultType > > &kernels, const shared_ptr< const CollectionOfShapesetTransformations< CoordinateType > > &trialTransformations, const shared_ptr< const KernelTrialIntegral< BasisFunctionType, ResultType, ResultType > > &integral, const shared_ptr< const OpenClHandler > &openClHandler, const ParallelizationOptions &parallelizationOptions, VerbosityLevel::Level verbosityLevel) const
 Allocate a local assembler for a potential operator with complex kernel.
 
- Public Member Functions inherited from Fiber::QuadratureStrategyBase< BasisFunctionType, ResultType, GeometryFactory >
std::auto_ptr
< LocalAssemblerForIntegralOperators
< ResultType > > 
makeAssemblerForIntegralOperators (const shared_ptr< const GeometryFactory > &testGeometryFactory, const shared_ptr< const GeometryFactory > &trialGeometryFactory, const shared_ptr< const RawGridGeometry< CoordinateType > > &testRawGeometry, const shared_ptr< const RawGridGeometry< CoordinateType > > &trialRawGeometry, const shared_ptr< const std::vector< const Shapeset< BasisFunctionType > * > > &testShapesets, const shared_ptr< const std::vector< const Shapeset< BasisFunctionType > * > > &trialShapesets, const shared_ptr< const CollectionOfShapesetTransformations< CoordinateType > > &testTransformations, const shared_ptr< const CollectionOfKernels< CoordinateType > > &kernels, const shared_ptr< const CollectionOfShapesetTransformations< CoordinateType > > &trialTransformations, const shared_ptr< const TestKernelTrialIntegral< BasisFunctionType, CoordinateType, ResultType > > &integral, const shared_ptr< const OpenClHandler > &openClHandler, const ParallelizationOptions &parallelizationOptions, VerbosityLevel::Level verbosityLevel, bool cacheSingularIntegrals) const
 Allocate a Galerkin-mode local assembler for an integral operator with real kernel.
 
virtual std::auto_ptr
< LocalAssemblerForLocalOperators
< ResultType > > 
makeAssemblerForIdentityOperators (const shared_ptr< const GeometryFactory > &geometryFactory, const shared_ptr< const RawGridGeometry< CoordinateType > > &rawGeometry, const shared_ptr< const std::vector< const Shapeset< BasisFunctionType > * > > &testShapesets, const shared_ptr< const std::vector< const Shapeset< BasisFunctionType > * > > &trialShapesets, const shared_ptr< const CollectionOfShapesetTransformations< CoordinateType > > &testTransformations, const shared_ptr< const CollectionOfShapesetTransformations< CoordinateType > > &trialTransformations, const shared_ptr< const OpenClHandler > &openClHandler) const =0
 Allocate a Galerkin-mode local assembler for the identity operator. More...
 
virtual std::auto_ptr
< LocalAssemblerForLocalOperators
< ResultType > > 
makeAssemblerForLocalOperators (const shared_ptr< const GeometryFactory > &geometryFactory, const shared_ptr< const RawGridGeometry< CoordinateType > > &rawGeometry, const shared_ptr< const std::vector< const Shapeset< BasisFunctionType > * > > &testShapesets, const shared_ptr< const std::vector< const Shapeset< BasisFunctionType > * > > &trialShapesets, const shared_ptr< const CollectionOfShapesetTransformations< CoordinateType > > &testTransformations, const shared_ptr< const CollectionOfShapesetTransformations< CoordinateType > > &trialTransformations, const shared_ptr< const TestTrialIntegral< BasisFunctionType, ResultType > > &integral, const shared_ptr< const OpenClHandler > &openClHandler) const =0
 Allocate a Galerkin-mode local assembler for a local operator.
 
std::auto_ptr
< LocalAssemblerForGridFunctions
< ResultType > > 
makeAssemblerForGridFunctions (const shared_ptr< const GeometryFactory > &geometryFactory, const shared_ptr< const RawGridGeometry< CoordinateType > > &rawGeometry, const shared_ptr< const std::vector< const Shapeset< BasisFunctionType > * > > &testShapesets, const shared_ptr< const CollectionOfShapesetTransformations< CoordinateType > > &testTransformations, const shared_ptr< const Function< ResultType > > &function, const shared_ptr< const OpenClHandler > &openClHandler) const
 Allocate a local assembler for calculations of the projections of functions from a given space on a Fiber::Function.
 
std::auto_ptr
< EvaluatorForIntegralOperators
< ResultType > > 
makeEvaluatorForIntegralOperators (const shared_ptr< const GeometryFactory > &geometryFactory, const shared_ptr< const RawGridGeometry< CoordinateType > > &rawGeometry, const shared_ptr< const std::vector< const Shapeset< BasisFunctionType > * > > &trialShapesets, const shared_ptr< const CollectionOfKernels< CoordinateType > > &kernels, const shared_ptr< const CollectionOfShapesetTransformations< CoordinateType > > &trialTransformations, const shared_ptr< const KernelTrialIntegral< BasisFunctionType, CoordinateType, ResultType > > &integral, const shared_ptr< const std::vector< std::vector< ResultType > > > &argumentLocalCoefficients, const shared_ptr< const OpenClHandler > &openClHandler, const ParallelizationOptions &parallelizationOptions) const
 Allocate an evaluator for an integral operator with real kernel applied to a grid function.
 
std::auto_ptr
< LocalAssemblerForPotentialOperators
< ResultType > > 
makeAssemblerForPotentialOperators (const arma::Mat< CoordinateType > &evaluationPoints, const shared_ptr< const GeometryFactory > &geometryFactory, const shared_ptr< const RawGridGeometry< CoordinateType > > &rawGeometry, const shared_ptr< const std::vector< const Shapeset< BasisFunctionType > * > > &trialShapesets, const shared_ptr< const CollectionOfKernels< CoordinateType > > &kernels, const shared_ptr< const CollectionOfShapesetTransformations< CoordinateType > > &trialTransformations, const shared_ptr< const KernelTrialIntegral< BasisFunctionType, CoordinateType, ResultType > > &integral, const shared_ptr< const OpenClHandler > &openClHandler, const ParallelizationOptions &parallelizationOptions, VerbosityLevel::Level verbosityLevel) const
 Allocate a local assembler for a potential operator with real kernel.
 

Private Types

typedef
NumericalQuadratureStrategyBase
< BasisFunctionType,
ResultType, GeometryFactory,
Enable > 
Base
 

Private Member Functions

virtual std::auto_ptr
< LocalAssemblerForIntegralOperators
< ResultType > > 
makeAssemblerForIntegralOperatorsImplComplexKernel (const shared_ptr< const GeometryFactory > &testGeometryFactory, const shared_ptr< const GeometryFactory > &trialGeometryFactory, const shared_ptr< const RawGridGeometry< CoordinateType > > &testRawGeometry, const shared_ptr< const RawGridGeometry< CoordinateType > > &trialRawGeometry, const shared_ptr< const std::vector< const Shapeset< BasisFunctionType > * > > &testShapesets, const shared_ptr< const std::vector< const Shapeset< BasisFunctionType > * > > &trialShapesets, const shared_ptr< const CollectionOfShapesetTransformations< CoordinateType > > &testTransformations, const shared_ptr< const CollectionOfKernels< ResultType > > &kernels, const shared_ptr< const CollectionOfShapesetTransformations< CoordinateType > > &trialTransformations, const shared_ptr< const TestKernelTrialIntegral< BasisFunctionType, ResultType, ResultType > > &integral, const shared_ptr< const OpenClHandler > &openClHandler, const ParallelizationOptions &parallelizationOptions, VerbosityLevel::Level verbosityLevel, bool cacheSingularIntegrals) const
 
virtual std::auto_ptr
< LocalAssemblerForGridFunctions
< ResultType > > 
makeAssemblerForGridFunctionsImplComplexUserFunction (const shared_ptr< const GeometryFactory > &geometryFactory, const shared_ptr< const RawGridGeometry< CoordinateType > > &rawGeometry, const shared_ptr< const std::vector< const Shapeset< BasisFunctionType > * > > &testShapesets, const shared_ptr< const CollectionOfShapesetTransformations< CoordinateType > > &testTransformations, const shared_ptr< const Function< ResultType > > &function, const shared_ptr< const OpenClHandler > &openClHandler) const
 
virtual std::auto_ptr
< EvaluatorForIntegralOperators
< ResultType > > 
makeEvaluatorForIntegralOperatorsImplComplexKernel (const shared_ptr< const GeometryFactory > &geometryFactory, const shared_ptr< const RawGridGeometry< CoordinateType > > &rawGeometry, const shared_ptr< const std::vector< const Shapeset< BasisFunctionType > * > > &trialShapesets, const shared_ptr< const CollectionOfKernels< ResultType > > &kernels, const shared_ptr< const CollectionOfShapesetTransformations< CoordinateType > > &trialTransformations, const shared_ptr< const KernelTrialIntegral< BasisFunctionType, ResultType, ResultType > > &integral, const shared_ptr< const std::vector< std::vector< ResultType > > > &argumentLocalCoefficients, const shared_ptr< const OpenClHandler > &openClHandler, const ParallelizationOptions &parallelizationOptions) const
 
virtual std::auto_ptr
< LocalAssemblerForPotentialOperators
< ResultType > > 
makeAssemblerForPotentialOperatorsImplComplexKernel (const arma::Mat< CoordinateType > &evaluationPoints, const shared_ptr< const GeometryFactory > &geometryFactory, const shared_ptr< const RawGridGeometry< CoordinateType > > &rawGeometry, const shared_ptr< const std::vector< const Shapeset< BasisFunctionType > * > > &trialShapesets, const shared_ptr< const CollectionOfKernels< ResultType > > &kernels, const shared_ptr< const CollectionOfShapesetTransformations< CoordinateType > > &trialTransformations, const shared_ptr< const KernelTrialIntegral< BasisFunctionType, ResultType, ResultType > > &integral, const shared_ptr< const OpenClHandler > &openClHandler, const ParallelizationOptions &parallelizationOptions, VerbosityLevel::Level verbosityLevel) const
 

Additional Inherited Members

- Protected Member Functions inherited from Fiber::NumericalQuadratureStrategyBase< BasisFunctionType, ResultType, GeometryFactory, Enable >
shared_ptr< const
QuadratureDescriptorSelectorFactory
< BasisFunctionType > > 
quadratureDescriptorSelectorFactory () const
 
shared_ptr< const
SingleQuadratureRuleFamily
< CoordinateType > > 
singleQuadratureRuleFamily () const
 
shared_ptr< const
DoubleQuadratureRuleFamily
< CoordinateType > > 
doubleQuadratureRuleFamily () const
 

Detailed Description

template<typename BasisFunctionType, typename ResultType, typename GeometryFactory, typename Enable = void>
class Fiber::NumericalQuadratureStrategy< BasisFunctionType, ResultType, GeometryFactory, Enable >

Quadrature strategy according to which integrals are evaluated by numerical quadrature.

A quadrature strategy provides functions constructing local assemblers used to discretize boundary operators and user-defined functions. A particular quadrature strategy determines how the integrals involved in this discretization are evaluated.

This is the default quadrature strategy available in BEM++. In this quadrature strategy integrals are evaluated by numerical quadrature.

The process of selecting a quadrature rule for the evaluation of a particular integral can be customized at different levels of generality. The choice of quadrature rule is done in two steps:

  1. A quadrature descriptor selector is given the index of the element, or the pair of elements, over which integration should be done. It determines the desired order of accuracy of the quadrature rule and, for integrals over pairs of elements, the configuration of the two elements, i.e. whether they are coincident, adjacent or disjoint. These pieces of information are stored in a quadrature descriptor.
  2. A quadrature rule family is given a quadrature descriptor and determines the points and weights of the quadrature rule to be applied.

By default, NumericalQuadratureStrategy uses quadrature descriptor selectors being instances of the classes DefaultQuadratureDescriptorSelectorForIntegralOperators, DefaultQuadratureDescriptorSelectorForLocalOperators and DefaultQuadratureDescriptorSelectorForGridFunctions. You can make it use different selectors by passing a custom QuadratureDescriptorSelectorFactory object to the constructor of NumericalQuadratureStrategy.

The default quadrature descriptor selectors are customizable: you can control the choice of quadrature orders using an AccuracyOptionsEx options passed to another constructor of NumericalQuadratureStrategy.

By default, NumericalQuadratureStrategy uses the quadrature rule families being instances of DefaultDoubleQuadratureRuleFamily and DefaultSingleQuadratureRuleFamily. These use Gaussian quadrature for regular integrals and the Sauter-Schwab quadrature rules (*) for singular integrals. If you wish, you can subclass DoubleQuadratureRuleFamily and/or SingleQuadratureRuleFamily and pass their instances to a NumericalQuadratureStrategy contructor.

(*) S. Sauter, Ch. Schwab, "Boundary Element Methods" (2010).

Constructor & Destructor Documentation

template<typename BasisFunctionType , typename ResultType , typename GeometryFactory >
Fiber::NumericalQuadratureStrategy< BasisFunctionType, ResultType, GeometryFactory >::NumericalQuadratureStrategy ( )

Construct a numerical quadrature strategy.

This constructor makes the newly created object use the default quadrature descriptor selector factory and the default accuracy options.

template<typename BasisFunctionType , typename ResultType , typename GeometryFactory >
Fiber::NumericalQuadratureStrategy< BasisFunctionType, ResultType, GeometryFactory >::NumericalQuadratureStrategy ( const AccuracyOptionsEx accuracyOptions)
explicit

Construct a numerical quadrature strategy.

This constructor makes the newly created object use the default quadrature descriptor selector factory with custom accuracy options and the default quadrature rule families.

template<typename BasisFunctionType , typename ResultType , typename GeometryFactory >
Fiber::NumericalQuadratureStrategy< BasisFunctionType, ResultType, GeometryFactory >::NumericalQuadratureStrategy ( const AccuracyOptionsEx accuracyOptions,
const shared_ptr< const SingleQuadratureRuleFamily< CoordinateType > > &  singleQuadratureRuleFamily,
const shared_ptr< const DoubleQuadratureRuleFamily< CoordinateType > > &  doubleQuadratureRuleFamily 
)

Construct a numerical quadrature strategy.

This constructor makes the newly created object use the default quadrature descriptor selector factory with custom accuracy options and custom quadrature rule families.

template<typename BasisFunctionType, typename ResultType , typename GeometryFactory >
Fiber::NumericalQuadratureStrategy< BasisFunctionType, ResultType, GeometryFactory >::NumericalQuadratureStrategy ( const shared_ptr< const QuadratureDescriptorSelectorFactory< BasisFunctionType > > &  quadratureDescriptorSelectorFactory,
const shared_ptr< const SingleQuadratureRuleFamily< CoordinateType > > &  singleQuadratureRuleFamily,
const shared_ptr< const DoubleQuadratureRuleFamily< CoordinateType > > &  doubleQuadratureRuleFamily 
)

Construct a numerical quadrature strategy.

This constructor makes the newly created object use a custom quadrature descriptor selector factory and quadrature rule families.


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