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

Base class for NumericalQuadratureStrategy. More...

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

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

Public Types

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

 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.
 

Protected Member Functions

shared_ptr< const
QuadratureDescriptorSelectorFactory
< BasisFunctionType > > 
quadratureDescriptorSelectorFactory () const
 
shared_ptr< const
SingleQuadratureRuleFamily
< CoordinateType > > 
singleQuadratureRuleFamily () const
 
shared_ptr< const
DoubleQuadratureRuleFamily
< CoordinateType > > 
doubleQuadratureRuleFamily () const
 

Private Member Functions

virtual std::auto_ptr
< LocalAssemblerForIntegralOperators
< ResultType > > 
makeAssemblerForIntegralOperatorsImplRealKernel (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
 
virtual std::auto_ptr
< LocalAssemblerForGridFunctions
< ResultType > > 
makeAssemblerForGridFunctionsImplRealUserFunction (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< CoordinateType > > &function, const shared_ptr< const OpenClHandler > &openClHandler) const
 
virtual std::auto_ptr
< EvaluatorForIntegralOperators
< ResultType > > 
makeEvaluatorForIntegralOperatorsImplRealKernel (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
 
virtual std::auto_ptr
< LocalAssemblerForPotentialOperators
< ResultType > > 
makeAssemblerForPotentialOperatorsImplRealKernel (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
 

Private Attributes

shared_ptr< const
QuadratureDescriptorSelectorFactory
< BasisFunctionType > > 
m_quadratureDescriptorSelectorFactory
 
shared_ptr< const
SingleQuadratureRuleFamily
< CoordinateType > > 
m_singleQuadratureRuleFamily
 
shared_ptr< const
DoubleQuadratureRuleFamily
< CoordinateType > > 
m_doubleQuadratureRuleFamily
 

Detailed Description

template<typename BasisFunctionType, typename ResultType, typename GeometryFactory, typename Enable>
class Fiber::NumericalQuadratureStrategyBase< BasisFunctionType, ResultType, GeometryFactory, Enable >

Base class for NumericalQuadratureStrategy.

This is the base class of the default quadrature strategy available in BEM++. This quadrature strategy evaluates integrals 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.


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