|
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 the notation above), represented by a grid function. |
| [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. |
containing the charge distribution, i.e. argument.grid(), even if the potential has a unique extension from
to
. Hence values of the potential at any points belonging to
can be badly wrong.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 the notation above), represented by a grid function. |
| [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.
containing the charge distribution, i.e. argument.grid(), even if the potential has a unique extension from
to
. Hence values of the potential at any vertices of evaluationGrid that coincide with
can be badly wrong.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_ >.
1.8.5