BEM++
2.0
|
Potential operator. More...
#include </home/wojtek/Projects/BEM/bempp-sven/bempp/lib/assembly/potential_operator.hpp>
Public Types | |
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 of the values of the (components of the) potential. | |
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 | |
virtual | ~PotentialOperator () |
Destructor. | |
virtual std::auto_ptr < InterpolatedFunction < ResultType > > | evaluateOnGrid (const GridFunction< BasisFunctionType, ResultType > &argument, const Grid &evaluationGrid, const QuadratureStrategy &quadStrategy, const EvaluationOptions &options) const =0 |
Evaluate the potential of a given charge distribution on a prescribed grid. More... | |
virtual arma::Mat< ResultType > | evaluateAtPoints (const GridFunction< BasisFunctionType, ResultType > &argument, const arma::Mat< CoordinateType > &evaluationPoints, const QuadratureStrategy &quadStrategy, const EvaluationOptions &options) const =0 |
Evaluate the potential of a given charge distribution at prescribed points. More... | |
virtual AssembledPotentialOperator < BasisFunctionType, ResultType > | assemble (const shared_ptr< const Space< BasisFunctionType > > &space, const shared_ptr< const arma::Mat< CoordinateType > > &evaluationPoints, const QuadratureStrategy &quadStrategy, const EvaluationOptions &options) const =0 |
Create and return an AssembledPotentialOperator object. More... | |
virtual int | componentCount () const =0 |
Number of components of the values of the potential. More... | |
Potential operator.
This class represents a linear operator that, acting on a function defined on a surface
embedded in a space
of dimension higher by one, produces a potential defined at any point of
lying outside
. The function
is called the charge distribution.
The functions evaluateOnGrid() and evaluateAtPoints() can be used to evaluate the potential produced by a given charge distribution, represented with a GridFunction object, at specified points in .
BasisFunctionType_ | Type of the values of the (components of the) basis functions into which functions acted upon by the operator are expanded. |
ResultType_ | Type of the values of the (components of the) potential. |
Both template parameters can take the following values: float
, double
, std::complex<float>
and std::complex<double>
. Both types must have the same precision: for instance, mixing float
with std::complex<double>
is not allowed. If BasisFunctionType_
is set to a complex type, then ResultType_
must be set to the same type.
|
pure virtual |
Create and return an AssembledPotentialOperator object.
The returned AssembledPotentialOperator object stores the values of the potentials generated at the points listed in the array evaluationPoints
by the charge distributions equal to the individual basis functions of the space space
. The object can afterwards be used to evaluate efficiently the potentials generated by multiple GridFunctions expanded in the space space
.
[in] | space | The space whose basis functions will be taken as the charge distributions inducing the potentials to be evaluated. |
[in] | evaluationPoints | 2D array whose (i, j)th element is the ith coordinate of the jth point at which the potential should be evaluated. The first dimension of this array should be equal to space.grid().dimWorld() . |
[in] | quadStrategy | A QuadratureStrategy object controlling how the integrals will be evaluated. |
[in] | options | Evaluation options. This parameter controls, notably, the format used to store the matrix of precalculated potential values: a dense matrix or an H-matrix. |
Implemented in Bempp::ElementaryPotentialOperator< BasisFunctionType_, KernelType_, ResultType_ >, Bempp::ElementaryPotentialOperator< BasisFunctionType_, ScalarTraits< BasisFunctionType_ >::ComplexType, ScalarTraits< BasisFunctionType_ >::ComplexType >, and Bempp::ElementaryPotentialOperator< BasisFunctionType_, ScalarTraits< ResultType_ >::RealType, ResultType_ >.
|
pure virtual |
Number of components of the values of the potential.
E.g. 1 for a scalar-valued potential, 3 for a vector-valued potential.
Implemented in Bempp::ElementaryPotentialOperator< BasisFunctionType_, KernelType_, ResultType_ >, Bempp::ElementaryPotentialOperator< BasisFunctionType_, ScalarTraits< BasisFunctionType_ >::ComplexType, ScalarTraits< BasisFunctionType_ >::ComplexType >, and Bempp::ElementaryPotentialOperator< BasisFunctionType_, ScalarTraits< ResultType_ >::RealType, ResultType_ >.
|
pure virtual |
Evaluate the potential of a given charge distribution at prescribed points.
[in] | argument | Argument of the potential operator ( ![]() |
[in] | evaluationPoints | 2D array whose (i, j)th element is the ith coordinate of the jth point at which the potential should be evaluated. The first dimension of this array should be equal to argument.grid().dimWorld() . |
[in] | quadStrategy | A QuadratureStrategy object controlling how the integrals will be evaluated. |
[in] | options | Evaluation options. |
argument.grid()
, even if the potential has a unique extension from The current implementation does not yet take special measures to prevent loss of accuracy near , either. Users are advised to increase the quadrature accuracy for points lying in the vicinity of
.
Implemented in Bempp::ElementaryPotentialOperator< BasisFunctionType_, KernelType_, ResultType_ >, Bempp::ElementaryPotentialOperator< BasisFunctionType_, ScalarTraits< BasisFunctionType_ >::ComplexType, ScalarTraits< BasisFunctionType_ >::ComplexType >, and Bempp::ElementaryPotentialOperator< BasisFunctionType_, ScalarTraits< ResultType_ >::RealType, ResultType_ >.
|
pure virtual |
Evaluate the potential of a given charge distribution on a prescribed grid.
[in] | argument | Argument of the potential operator ( ![]() |
[in] | evaluationGrid | Grid at whose vertices the potential will be evaluated. The grid may have arbitrary dimension, but must be embedded in a world of the same dimension as argument.grid() . |
[in] | quadStrategy | A QuadratureStrategy object controlling how the integrals will be evaluated. |
[in] | options | Evaluation options. |
evaluationGrid
.argument.grid()
, even if the potential has a unique extension from evaluationGrid
that coincide with The current implementation does not yet take special measures to prevent loss of accuracy near , either. If in doubt, increase the quadrature accuracy.
Implemented in Bempp::ElementaryPotentialOperator< BasisFunctionType_, KernelType_, ResultType_ >, Bempp::ElementaryPotentialOperator< BasisFunctionType_, ScalarTraits< BasisFunctionType_ >::ComplexType, ScalarTraits< BasisFunctionType_ >::ComplexType >, and Bempp::ElementaryPotentialOperator< BasisFunctionType_, ScalarTraits< ResultType_ >::RealType, ResultType_ >.