BEM++
2.0
|
Function space. More...
#include </home/wojtek/Projects/BEM/bempp-sven/bempp/lib/space/space.hpp>
Public Types | |
typedef Fiber::ScalarTraits < BasisFunctionType > ::RealType | CoordinateType |
Type used to represent coordinates. | |
typedef Fiber::ScalarTraits < BasisFunctionType > ::ComplexType | ComplexType |
Equivalent to std::complex<CoordinateType>. | |
typedef Fiber::CollectionOfShapesetTransformations < CoordinateType > | CollectionOfShapesetTransformations |
Appropriate instantiation of Fiber::CollectionOfShapesetTransformations. | |
typedef Fiber::CollectionOfBasisTransformations < CoordinateType > | CollectionOfBasisTransformations |
Appropriate instantiation of Fiber::CollectionOfBasisTransformations. | |
Public Member Functions | |
Space (const shared_ptr< const Grid > &grid) | |
Constructor. More... | |
Space (const Space< BasisFunctionType > &other) | |
Copy Constructor. | |
virtual | ~Space () |
Destructor. | |
Space< BasisFunctionType > & | operator= (const Space< BasisFunctionType > &other) |
Assignment operator. | |
virtual void | setElementVariant (const Entity< 0 > &element, ElementVariant variant)=0 |
Set the variant of element element to variant . More... | |
virtual ElementVariant | elementVariant (const Entity< 0 > &element) const =0 |
Return current variant of element element . More... | |
shared_ptr< GeometryFactory > | elementGeometryFactory () const |
Return the GeometryFactory associated with the mesh. | |
BEMPP_DEPRECATED void | assignDofs () |
Assign global degrees of freedom to local degrees of freedom. More... | |
BEMPP_DEPRECATED bool | dofsAssigned () const |
True if global degrees of freedom have been already assigned to local degrees of freedom, false otherwise. More... | |
virtual size_t | flatLocalDofCount () const =0 |
Total number of local degrees of freedom on all elements. | |
virtual size_t | globalDofCount () const =0 |
Number of global degrees of freedom. | |
virtual void | getGlobalDofs (const Entity< 0 > &element, std::vector< GlobalDofIndex > &dofs) const |
Map local degrees of freedom residing on an element to global degrees of freedom. More... | |
virtual void | getGlobalDofs (const Entity< 0 > &element, std::vector< GlobalDofIndex > &dofs, std::vector< BasisFunctionType > &localDofWeights) const |
Map local degrees of freedom residing on an element to global degrees of freedom. More... | |
virtual bool | gridIsIdentical (const Space< BasisFunctionType > &other) const |
Return true if both spaces act on the same grid. | |
virtual SpaceIdentifier | spaceIdentifier () const =0 |
Return the identifier of the space. | |
virtual bool | spaceIsCompatible (const Space< BasisFunctionType > &other) const =0 |
Return true if other is compatible to this space, i.e. the global dofs of the two spaces agree with each other. | |
virtual void | global2localDofs (const std::vector< GlobalDofIndex > &globalDofs, std::vector< std::vector< LocalDof > > &localDofs) const |
Map global degrees of freedom to local degrees of freedom. More... | |
virtual void | global2localDofs (const std::vector< GlobalDofIndex > &globalDofs, std::vector< std::vector< LocalDof > > &localDofs, std::vector< std::vector< BasisFunctionType > > &localDofWeights) const |
virtual void | flatLocal2localDofs (const std::vector< FlatLocalDofIndex > &flatLocalDofs, std::vector< LocalDof > &localDofs) const =0 |
Map flat indices of local degrees of freedom to local degrees of freedom. More... | |
virtual void | getGlobalDofInterpolationPoints (arma::Mat< CoordinateType > &points) const |
Retrieve the interpolation points of the global degrees of freedom. More... | |
virtual void | getNormalsAtGlobalDofInterpolationPoints (arma::Mat< CoordinateType > &normals) const |
Retrieve the unit vectors normal to the grid at the interpolation points of the global degrees of freedom. More... | |
virtual void | getGlobalDofInterpolationDirections (arma::Mat< CoordinateType > &directions) const |
Retrieve the interpolation directions of the global degrees of freedom. More... | |
virtual void | getGlobalDofBoundingBoxes (std::vector< BoundingBox< CoordinateType > > &boundingBoxes) const |
Retrieve bounding boxes of global degrees of freedom. More... | |
virtual void | getFlatLocalDofBoundingBoxes (std::vector< BoundingBox< CoordinateType > > &boundingBoxes) const |
Retrieve bounding boxes of local degrees of freedom ordered by their flat index. More... | |
virtual void | getGlobalDofPositions (std::vector< Point3D< CoordinateType > > &positions) const =0 |
Retrieve the reference positions of global degrees of freedom. More... | |
virtual void | getFlatLocalDofPositions (std::vector< Point3D< CoordinateType > > &positions) const =0 |
Retrieve the reference positions of local degrees of freedom ordered by their flat index. More... | |
virtual void | getGlobalDofNormals (std::vector< Point3D< CoordinateType > > &normals) const |
Retrieve the unit vectors normal to the grid at the positions of global degrees of freedom. More... | |
virtual void | getFlatLocalDofNormals (std::vector< Point3D< CoordinateType > > &normals) const |
Retrieve the unit vectors normal to the grid at the positions of global degrees of freedom. More... | |
virtual BEMPP_DEPRECATED void | dumpClusterIds (const char *fileName, const std::vector< unsigned int > &clusterIdsOfGlobalDofs) const =0 |
Write a VTK file showing the distribution of global or flat local degrees of freedom into clusters. More... | |
virtual void | dumpClusterIdsEx (const char *fileName, const std::vector< unsigned int > &clusterIdsOfGlobalDofs, DofType dofType) const |
Write a VTK file showing the distribution of global or flat local degrees of freedom into clusters. More... | |
Attributes | |
virtual shared_ptr< const Space< BasisFunctionType > > | discontinuousSpace (const shared_ptr< const Space< BasisFunctionType > > &self) const =0 |
Return a shared pointer to an appropriate counterpart to this space, with basis functions extending only over single elements. More... | |
virtual bool | isDiscontinuous () const =0 |
Return true if each basis function of this space extends over only a single element, false otherwise. | |
virtual bool | isBarycentric () const =0 |
Return true if space is based on a barycentric refinement. | |
virtual int | domainDimension () const =0 |
Dimension of the grid on which functions from this space are defined. | |
virtual int | codomainDimension () const =0 |
Dimension of the codomain of the functions. More... | |
shared_ptr< const Grid > | grid () const |
Shared pointer to the grid on which the functions from this space are defined. | |
virtual BEMPP_DEPRECATED const Fiber::Basis < BasisFunctionType > & | basis (const Entity< 0 > &element) const |
Reference to the shapeset attached to the specified element. More... | |
virtual const Fiber::Shapeset < BasisFunctionType > & | shapeset (const Entity< 0 > &element) const |
Reference to the shapeset attached to the specified element. | |
virtual BEMPP_DEPRECATED const CollectionOfBasisTransformations & | shapeFunctionValue () const |
Transformation mapping shape functions to basis functions. More... | |
virtual shared_ptr< const Space< BasisFunctionType > > | barycentricSpace (const shared_ptr< const Space< BasisFunctionType > > &self) const |
Return an equivalent space (in terms of global Dofs), but defined using local dofs on the barycentrically refined grid. | |
unsigned int | level () const |
Return the grid level of the current space. | |
int | gridDimension () const |
Return the underlying grid dimension. | |
int | worldDimension () const |
Return the underlying world dimension. | |
const GridView & | gridView () const |
Return the grid view of the current space. | |
virtual const CollectionOfShapesetTransformations & | basisFunctionValue () const |
Transformation mapping shape functions to basis functions. More... | |
Related Functions | |
(Note that these are not member functions.) | |
template<typename BasisFunctionType > | |
void | getAllShapesets (const Space< BasisFunctionType > &space, std::vector< const Fiber::Shapeset< BasisFunctionType > * > &shapesets) |
Get pointers to Basis objects corresponding to all elements of the grid on which a function space is defined. More... | |
template<typename BasisFunctionType > | |
void BEMPP_DEPRECATED | getAllBases (const Space< BasisFunctionType > &space, std::vector< const Fiber::Basis< BasisFunctionType > * > &bases) |
Get pointers to Basis objects corresponding to all elements of the grid on which a function space is defined. More... | |
template<typename BasisFunctionType > | |
int | maximumShapesetOrder (const Space< BasisFunctionType > &space) |
Return the maximum polynomial order of the shapesets defined by space on the elements of the space's underlying grid. | |
Function space.
This class represents a space of functions defined on a grid. The space is spanned by a finite number of scalar- or vector-valued basis functions. The template parameter BasisFunctionType
is the type of the values of (the components of) these basis functions, and can be set to float
, double
, std::complex<float>
or std::complex<double>
.
The basis functions of a space, also known as global degrees of freedom (DOFs), can have support extending over multiple elements of the grid. They are, however, composed of one or more local basis functions (local degrees of freedom), each of which resides on a single element. The mapping of local to global degrees of freedom is triggered by calling the function assignDofs(). Many other member functions of Space may only be invoked after assignDofs() has beeen called.
|
explicit |
Constructor.
[in] | grid | Grid on which functions from this space should be defined. |
[in] | level | Level of the grid on which the space should be defined. |
An exception is thrown if grid
is a null pointer.
void Bempp::Space< BasisFunctionType >::assignDofs | ( | ) |
Assign global degrees of freedom to local degrees of freedom.
|
inlinevirtual |
Reference to the shapeset attached to the specified element.
References Bempp::Space< BasisFunctionType >::shapeset().
|
inlinevirtual |
Transformation mapping shape functions to basis functions.
This function returns a CollectionOfShapesetTransformations object consisting of a single transformation that maps values of shape functions defined on a reference element to those of basis functions defined on a particular element of the grid.
This transformation is the identity for spaces of scalar-valued functions, but may be more complicated for spaces of vector-valued functions, e.g. .
Reimplemented in Bempp::RaviartThomas0VectorSpace< BasisFunctionType >, and Bempp::ScalarSpace< BasisFunctionType >.
Referenced by Bempp::Space< BasisFunctionType >::shapeFunctionValue().
|
pure virtual |
Dimension of the codomain of the functions.
In other words, number of components of the values of the functions. (E.g. H1 space -> 1, H(curl) space on a 2D surface -> 2).
Implemented in Bempp::RaviartThomas0VectorSpace< BasisFunctionType >, Bempp::PiecewiseLinearContinuousScalarSpaceBarycentric< BasisFunctionType >, Bempp::PiecewisePolynomialDiscontinuousScalarSpace< BasisFunctionType >, Bempp::PiecewiseLinearDiscontinuousScalarSpaceBarycentric< BasisFunctionType >, Bempp::PiecewiseConstantDiscontinuousScalarSpaceBarycentric< BasisFunctionType >, Bempp::PiecewiseConstantScalarSpaceBarycentric< BasisFunctionType >, Bempp::PiecewisePolynomialContinuousScalarSpace< BasisFunctionType >, Bempp::PiecewiseConstantScalarSpace< BasisFunctionType >, Bempp::PiecewiseConstantDualGridScalarSpace< BasisFunctionType >, Bempp::PiecewiseConstantDualGridDiscontinuousScalarSpace< BasisFunctionType >, Bempp::PiecewiseLinearScalarSpace< BasisFunctionType >, and Bempp::UnitScalarSpace< BasisFunctionType >.
|
pure virtual |
Return a shared pointer to an appropriate counterpart to this space, with basis functions extending only over single elements.
Let denote the function space represented by this object, with
its basis functions.
If the functions are scalar-valued, discontinuousSpace() should return a shared pointer to an object representing a space
with basis functions
such that:
If the values of functions are vectors with
components, discontinuousSpace() should return a shared pointer to an object representing a space
of with scalar-valued basis functions
such that
[in] | self | This must be a shared pointer to *this . |
Implemented in Bempp::PiecewisePolynomialDiscontinuousScalarSpace< BasisFunctionType >, Bempp::PiecewisePolynomialContinuousScalarSpace< BasisFunctionType >, Bempp::RaviartThomas0VectorSpace< BasisFunctionType >, Bempp::PiecewiseLinearDiscontinuousScalarSpace< BasisFunctionType >, Bempp::PiecewiseLinearDiscontinuousScalarSpaceBarycentric< BasisFunctionType >, Bempp::PiecewiseLinearContinuousScalarSpace< BasisFunctionType >, Bempp::PiecewiseLinearContinuousScalarSpaceBarycentric< BasisFunctionType >, Bempp::PiecewiseConstantDiscontinuousScalarSpaceBarycentric< BasisFunctionType >, Bempp::PiecewiseConstantScalarSpaceBarycentric< BasisFunctionType >, Bempp::PiecewiseConstantScalarSpace< BasisFunctionType >, Bempp::PiecewiseConstantDualGridScalarSpace< BasisFunctionType >, Bempp::PiecewiseConstantDualGridDiscontinuousScalarSpace< BasisFunctionType >, and Bempp::UnitScalarSpace< BasisFunctionType >.
bool Bempp::Space< BasisFunctionType >::dofsAssigned | ( | ) | const |
True if global degrees of freedom have been already assigned to local degrees of freedom, false otherwise.
|
pure virtual |
Write a VTK file showing the distribution of global or flat local degrees of freedom into clusters.
[in] | fileName | Name of the VTK file to be created (without extension). |
[in] | clusterIdsOfGlobalDofs | Vector whose ith element contains the identifier of the cluster to which ith global degree of freedom has been assigned. |
This function generates a VTK file containing a single data series mapping the ``positions'' (see getGlobalDofPositions()) of global degrees of freedom to the identifiers of the clusters to which these degrees of freedom have been assigned. It is intended for debugging clustering algorithms.
Implemented in Bempp::RaviartThomas0VectorSpace< BasisFunctionType >, Bempp::PiecewisePolynomialDiscontinuousScalarSpace< BasisFunctionType >, Bempp::PiecewiseLinearContinuousScalarSpaceBarycentric< BasisFunctionType >, Bempp::PiecewiseLinearDiscontinuousScalarSpaceBarycentric< BasisFunctionType >, Bempp::PiecewisePolynomialContinuousScalarSpace< BasisFunctionType >, Bempp::PiecewiseConstantDiscontinuousScalarSpaceBarycentric< BasisFunctionType >, Bempp::PiecewiseConstantScalarSpaceBarycentric< BasisFunctionType >, Bempp::PiecewiseConstantScalarSpace< BasisFunctionType >, Bempp::PiecewiseConstantDualGridScalarSpace< BasisFunctionType >, Bempp::PiecewiseLinearContinuousScalarSpace< BasisFunctionType >, Bempp::PiecewiseLinearDiscontinuousScalarSpace< BasisFunctionType >, Bempp::PiecewiseConstantDualGridDiscontinuousScalarSpace< BasisFunctionType >, and Bempp::UnitScalarSpace< BasisFunctionType >.
|
virtual |
Write a VTK file showing the distribution of global or flat local degrees of freedom into clusters.
[in] | fileName | Name of the VTK file to be created (without extension). |
[in] | clusterIdsOfGlobalDofs | Vector whose ith element contains the identifier of the cluster to which ith degree of freedom has been assigned. |
[in] | dofType | Type of degrees of freedom (GLOBAL_DOFS or FLAT_LOCAL_DOFS). |
This function generates a VTK file containing a single data series mapping the ``positions'' (see getGlobalDofPositions() and getFlatLocalDofPositions()) of the chosen type of degrees of freedom to the identifiers of the clusters to which these degrees of freedom have been assigned. It is intended for debugging clustering algorithms.
This function supersedes dumpClusterIds().
Reimplemented in Bempp::RaviartThomas0VectorSpace< BasisFunctionType >, Bempp::PiecewisePolynomialDiscontinuousScalarSpace< BasisFunctionType >, Bempp::PiecewiseLinearContinuousScalarSpaceBarycentric< BasisFunctionType >, Bempp::PiecewiseLinearDiscontinuousScalarSpaceBarycentric< BasisFunctionType >, Bempp::PiecewisePolynomialContinuousScalarSpace< BasisFunctionType >, Bempp::PiecewiseConstantDiscontinuousScalarSpaceBarycentric< BasisFunctionType >, Bempp::PiecewiseConstantScalarSpaceBarycentric< BasisFunctionType >, Bempp::PiecewiseConstantScalarSpace< BasisFunctionType >, Bempp::PiecewiseConstantDualGridScalarSpace< BasisFunctionType >, Bempp::PiecewiseLinearContinuousScalarSpace< BasisFunctionType >, Bempp::PiecewiseLinearDiscontinuousScalarSpace< BasisFunctionType >, Bempp::PiecewiseConstantDualGridDiscontinuousScalarSpace< BasisFunctionType >, and Bempp::UnitScalarSpace< BasisFunctionType >.
|
pure virtual |
Return current variant of element element
.
See the documentation of setElementVariant() for more information.
Implemented in Bempp::RaviartThomas0VectorSpace< BasisFunctionType >, Bempp::PiecewisePolynomialDiscontinuousScalarSpace< BasisFunctionType >, Bempp::PiecewiseLinearDiscontinuousScalarSpaceBarycentric< BasisFunctionType >, Bempp::PiecewisePolynomialContinuousScalarSpace< BasisFunctionType >, Bempp::PiecewiseLinearContinuousScalarSpaceBarycentric< BasisFunctionType >, Bempp::PiecewiseConstantDiscontinuousScalarSpaceBarycentric< BasisFunctionType >, Bempp::PiecewiseConstantDualGridScalarSpace< BasisFunctionType >, Bempp::PiecewiseConstantScalarSpaceBarycentric< BasisFunctionType >, Bempp::PiecewiseConstantDualGridDiscontinuousScalarSpace< BasisFunctionType >, Bempp::PiecewiseConstantScalarSpace< BasisFunctionType >, Bempp::UnitScalarSpace< BasisFunctionType >, and Bempp::PiecewiseLinearScalarSpace< BasisFunctionType >.
|
pure virtual |
Map flat indices of local degrees of freedom to local degrees of freedom.
[in] | flatLocalDofs | Vector containing flat indices of local degrees of freedom. |
[out] | localDofs | Vector whose i th element is the local degree of freedom with flat index given by flatLocalDofs[i] . |
Implemented in Bempp::RaviartThomas0VectorSpace< BasisFunctionType >, Bempp::PiecewisePolynomialDiscontinuousScalarSpace< BasisFunctionType >, Bempp::PiecewiseLinearContinuousScalarSpaceBarycentric< BasisFunctionType >, Bempp::PiecewiseLinearDiscontinuousScalarSpaceBarycentric< BasisFunctionType >, Bempp::PiecewisePolynomialContinuousScalarSpace< BasisFunctionType >, Bempp::PiecewiseConstantDiscontinuousScalarSpaceBarycentric< BasisFunctionType >, Bempp::PiecewiseConstantScalarSpaceBarycentric< BasisFunctionType >, Bempp::PiecewiseConstantScalarSpace< BasisFunctionType >, Bempp::PiecewiseLinearDiscontinuousScalarSpace< BasisFunctionType >, Bempp::PiecewiseConstantDualGridScalarSpace< BasisFunctionType >, Bempp::PiecewiseLinearContinuousScalarSpace< BasisFunctionType >, Bempp::PiecewiseConstantDualGridDiscontinuousScalarSpace< BasisFunctionType >, and Bempp::UnitScalarSpace< BasisFunctionType >.
|
inlinevirtual |
Retrieve bounding boxes of local degrees of freedom ordered by their flat index.
[out] | boundingBoxes | Vector whose ith element contains the bounding box the local degree of freedom with flat index i. |
Reimplemented in Bempp::RaviartThomas0VectorSpace< BasisFunctionType >, Bempp::PiecewisePolynomialDiscontinuousScalarSpace< BasisFunctionType >, Bempp::PiecewiseLinearContinuousScalarSpaceBarycentric< BasisFunctionType >, Bempp::PiecewiseLinearDiscontinuousScalarSpaceBarycentric< BasisFunctionType >, Bempp::PiecewisePolynomialContinuousScalarSpace< BasisFunctionType >, Bempp::PiecewiseConstantDiscontinuousScalarSpaceBarycentric< BasisFunctionType >, Bempp::PiecewiseConstantScalarSpaceBarycentric< BasisFunctionType >, Bempp::PiecewiseConstantScalarSpace< BasisFunctionType >, Bempp::PiecewiseLinearDiscontinuousScalarSpace< BasisFunctionType >, Bempp::PiecewiseConstantDualGridScalarSpace< BasisFunctionType >, Bempp::PiecewiseLinearContinuousScalarSpace< BasisFunctionType >, Bempp::PiecewiseConstantDualGridDiscontinuousScalarSpace< BasisFunctionType >, and Bempp::UnitScalarSpace< BasisFunctionType >.
|
inlinevirtual |
Retrieve the unit vectors normal to the grid at the positions of global degrees of freedom.
[out] | normals | Vector whose ith element contains the unit vector normal to the grid at the reference position of the local degree of freedom with flat index i. |
Reimplemented in Bempp::RaviartThomas0VectorSpace< BasisFunctionType >, Bempp::PiecewisePolynomialDiscontinuousScalarSpace< BasisFunctionType >, Bempp::PiecewiseLinearContinuousScalarSpaceBarycentric< BasisFunctionType >, Bempp::PiecewiseLinearDiscontinuousScalarSpaceBarycentric< BasisFunctionType >, Bempp::PiecewisePolynomialContinuousScalarSpace< BasisFunctionType >, Bempp::PiecewiseConstantDiscontinuousScalarSpaceBarycentric< BasisFunctionType >, Bempp::PiecewiseConstantScalarSpaceBarycentric< BasisFunctionType >, Bempp::PiecewiseConstantScalarSpace< BasisFunctionType >, Bempp::PiecewiseConstantDualGridScalarSpace< BasisFunctionType >, Bempp::PiecewiseLinearContinuousScalarSpace< BasisFunctionType >, Bempp::PiecewiseLinearDiscontinuousScalarSpace< BasisFunctionType >, and Bempp::PiecewiseConstantDualGridDiscontinuousScalarSpace< BasisFunctionType >.
|
pure virtual |
Retrieve the reference positions of local degrees of freedom ordered by their flat index.
[out] | positions | Vector whose ith element contains the coordinates of the point taken to be the ``reference position'' (in some sense) of the local degree of freedom with flat index i. |
Implemented in Bempp::RaviartThomas0VectorSpace< BasisFunctionType >, Bempp::PiecewisePolynomialDiscontinuousScalarSpace< BasisFunctionType >, Bempp::PiecewiseLinearContinuousScalarSpaceBarycentric< BasisFunctionType >, Bempp::PiecewiseLinearDiscontinuousScalarSpaceBarycentric< BasisFunctionType >, Bempp::PiecewisePolynomialContinuousScalarSpace< BasisFunctionType >, Bempp::PiecewiseConstantDiscontinuousScalarSpaceBarycentric< BasisFunctionType >, Bempp::PiecewiseConstantScalarSpaceBarycentric< BasisFunctionType >, Bempp::PiecewiseConstantScalarSpace< BasisFunctionType >, Bempp::PiecewiseLinearDiscontinuousScalarSpace< BasisFunctionType >, Bempp::PiecewiseConstantDualGridScalarSpace< BasisFunctionType >, Bempp::PiecewiseLinearContinuousScalarSpace< BasisFunctionType >, Bempp::PiecewiseConstantDualGridDiscontinuousScalarSpace< BasisFunctionType >, and Bempp::UnitScalarSpace< BasisFunctionType >.
|
inlinevirtual |
Retrieve bounding boxes of global degrees of freedom.
[out] | boundingBoxes | Vector whose ith element contains the bounding box of ith global degree of freedom. |
Reimplemented in Bempp::RaviartThomas0VectorSpace< BasisFunctionType >, Bempp::PiecewisePolynomialDiscontinuousScalarSpace< BasisFunctionType >, Bempp::PiecewiseLinearContinuousScalarSpaceBarycentric< BasisFunctionType >, Bempp::PiecewiseLinearDiscontinuousScalarSpaceBarycentric< BasisFunctionType >, Bempp::PiecewisePolynomialContinuousScalarSpace< BasisFunctionType >, Bempp::PiecewiseConstantDiscontinuousScalarSpaceBarycentric< BasisFunctionType >, Bempp::PiecewiseConstantScalarSpaceBarycentric< BasisFunctionType >, Bempp::PiecewiseConstantScalarSpace< BasisFunctionType >, Bempp::PiecewiseLinearDiscontinuousScalarSpace< BasisFunctionType >, Bempp::PiecewiseConstantDualGridScalarSpace< BasisFunctionType >, Bempp::PiecewiseLinearContinuousScalarSpace< BasisFunctionType >, Bempp::PiecewiseConstantDualGridDiscontinuousScalarSpace< BasisFunctionType >, and Bempp::UnitScalarSpace< BasisFunctionType >.
|
inlinevirtual |
Retrieve the interpolation directions of the global degrees of freedom.
This function fills the 2D array points
whose (i, j)th element contains the ith component of the vector defined in the documentation of getGlobalDofInterpolationPoints().
Reimplemented in Bempp::ScalarSpace< BasisFunctionType >.
|
inlinevirtual |
Retrieve the interpolation points of the global degrees of freedom.
This function, along with getNormalsAtGlobalDofInterpolationPoints() and getGlobalDofInterpolationDirections(), can be used in the interpolation of functions in finite-dimensional function spaces represented with classes derived from Space. Let be a function space defined on grid
with a basis
of functions
(or
. We say that this basis is interpolatory if there exist points
and
-dimensional vectors
(
such that
For any appropriate function defined on
the numbers
can then be taken as the expansion coefficients in the basis
of its interpolation. ("Appropriate" means that if, for example, the space
is a space of functions tangential to the grid, then
should also be tangential to the grid.)
This function fills the 2D array points
whose (i, j)th element contains the ith coordinate of the interpolation point .
Reimplemented in Bempp::PiecewiseConstantDiscontinuousScalarSpaceBarycentric< BasisFunctionType >, Bempp::PiecewiseConstantScalarSpaceBarycentric< BasisFunctionType >, Bempp::PiecewiseConstantScalarSpace< BasisFunctionType >, and Bempp::PiecewiseLinearScalarSpace< BasisFunctionType >.
|
inlinevirtual |
Retrieve the unit vectors normal to the grid at the positions of global degrees of freedom.
[out] | normals | Vector whose ith element contains the unit vector normal to the grid at the reference position of ith global degree of freedom. |
Reimplemented in Bempp::RaviartThomas0VectorSpace< BasisFunctionType >, Bempp::PiecewisePolynomialDiscontinuousScalarSpace< BasisFunctionType >, Bempp::PiecewiseLinearContinuousScalarSpaceBarycentric< BasisFunctionType >, Bempp::PiecewiseLinearDiscontinuousScalarSpaceBarycentric< BasisFunctionType >, Bempp::PiecewisePolynomialContinuousScalarSpace< BasisFunctionType >, Bempp::PiecewiseConstantDiscontinuousScalarSpaceBarycentric< BasisFunctionType >, Bempp::PiecewiseConstantScalarSpaceBarycentric< BasisFunctionType >, Bempp::PiecewiseConstantScalarSpace< BasisFunctionType >, Bempp::PiecewiseLinearDiscontinuousScalarSpace< BasisFunctionType >, Bempp::PiecewiseConstantDualGridScalarSpace< BasisFunctionType >, Bempp::PiecewiseLinearContinuousScalarSpace< BasisFunctionType >, and Bempp::PiecewiseConstantDualGridDiscontinuousScalarSpace< BasisFunctionType >.
|
pure virtual |
Retrieve the reference positions of global degrees of freedom.
[out] | positions | Vector whose ith element contains the coordinates of the point taken to be the "reference position" (in some sense) of ith global degree of freedom. |
Implemented in Bempp::RaviartThomas0VectorSpace< BasisFunctionType >, Bempp::PiecewisePolynomialDiscontinuousScalarSpace< BasisFunctionType >, Bempp::PiecewiseLinearContinuousScalarSpaceBarycentric< BasisFunctionType >, Bempp::PiecewiseLinearDiscontinuousScalarSpaceBarycentric< BasisFunctionType >, Bempp::PiecewisePolynomialContinuousScalarSpace< BasisFunctionType >, Bempp::PiecewiseConstantDiscontinuousScalarSpaceBarycentric< BasisFunctionType >, Bempp::PiecewiseConstantScalarSpaceBarycentric< BasisFunctionType >, Bempp::PiecewiseConstantScalarSpace< BasisFunctionType >, Bempp::PiecewiseLinearDiscontinuousScalarSpace< BasisFunctionType >, Bempp::PiecewiseConstantDualGridScalarSpace< BasisFunctionType >, Bempp::PiecewiseLinearContinuousScalarSpace< BasisFunctionType >, Bempp::PiecewiseConstantDualGridDiscontinuousScalarSpace< BasisFunctionType >, and Bempp::UnitScalarSpace< BasisFunctionType >.
|
virtual |
Map local degrees of freedom residing on an element to global degrees of freedom.
[in] | element | An element of the grid grid(). |
[out] | dofs | Vector whose ith element is the index of the global degrees of freedom to which the ith local degree of freedom residing on element contributes. A negative number means that a given local degree of freedom does not contribute to any global one. |
localDofWeights
. Reimplemented in Bempp::PiecewisePolynomialDiscontinuousScalarSpace< BasisFunctionType >, Bempp::PiecewiseLinearContinuousScalarSpaceBarycentric< BasisFunctionType >, Bempp::PiecewiseLinearDiscontinuousScalarSpaceBarycentric< BasisFunctionType >, Bempp::PiecewisePolynomialContinuousScalarSpace< BasisFunctionType >, Bempp::PiecewiseConstantDiscontinuousScalarSpaceBarycentric< BasisFunctionType >, Bempp::PiecewiseConstantScalarSpaceBarycentric< BasisFunctionType >, Bempp::PiecewiseConstantScalarSpace< BasisFunctionType >, Bempp::PiecewiseLinearDiscontinuousScalarSpace< BasisFunctionType >, Bempp::PiecewiseConstantDualGridScalarSpace< BasisFunctionType >, Bempp::PiecewiseLinearContinuousScalarSpace< BasisFunctionType >, Bempp::PiecewiseConstantDualGridDiscontinuousScalarSpace< BasisFunctionType >, and Bempp::UnitScalarSpace< BasisFunctionType >.
|
virtual |
Map local degrees of freedom residing on an element to global degrees of freedom.
[in] | element | An element of the grid grid(). |
[out] | dofs | Vector whose ith element is the index of the global degrees of freedom to which the ith local degree of freedom residing on element contributes. A negative number means that a given local degree of freedom does not contribute to any global one. |
[out] | localDofWeights | Vector whose ith element is the weight with which the ith local degree of freedom residing on element contributes to "its" global degree of freedom. |
Reimplemented in Bempp::RaviartThomas0VectorSpace< BasisFunctionType >.
|
inlinevirtual |
Retrieve the unit vectors normal to the grid at the interpolation points of the global degrees of freedom.
This function fills the 2D array normals
whose (i, j)th element contains the ith component of the unit vector normal to the grid at the interpolation point defined in the documentation of getGlobalDofInterpolationPoints().
Reimplemented in Bempp::PiecewiseConstantDiscontinuousScalarSpaceBarycentric< BasisFunctionType >, Bempp::PiecewiseConstantScalarSpaceBarycentric< BasisFunctionType >, Bempp::PiecewiseConstantScalarSpace< BasisFunctionType >, and Bempp::PiecewiseLinearScalarSpace< BasisFunctionType >.
|
virtual |
Map global degrees of freedom to local degrees of freedom.
[in] | globalDofs | Vector containing indices of global degrees of freedom. |
[out] | localDofs | Vector whose i th element is the vector containing all the local degrees of freedom that are mapped to the global degree of freedom globalDofs[i] . |
Note that a local degree of freedom (LocalDof) is a combination of an EntityIndex and LocalDofIndex, as explained in its documentation.
Reimplemented in Bempp::PiecewisePolynomialDiscontinuousScalarSpace< BasisFunctionType >, Bempp::PiecewiseLinearContinuousScalarSpaceBarycentric< BasisFunctionType >, Bempp::PiecewiseLinearDiscontinuousScalarSpaceBarycentric< BasisFunctionType >, Bempp::PiecewisePolynomialContinuousScalarSpace< BasisFunctionType >, Bempp::PiecewiseConstantDiscontinuousScalarSpaceBarycentric< BasisFunctionType >, Bempp::PiecewiseConstantScalarSpaceBarycentric< BasisFunctionType >, Bempp::PiecewiseConstantScalarSpace< BasisFunctionType >, Bempp::PiecewiseLinearDiscontinuousScalarSpace< BasisFunctionType >, Bempp::PiecewiseConstantDualGridScalarSpace< BasisFunctionType >, Bempp::PiecewiseLinearContinuousScalarSpace< BasisFunctionType >, Bempp::PiecewiseConstantDualGridDiscontinuousScalarSpace< BasisFunctionType >, and Bempp::UnitScalarSpace< BasisFunctionType >.
|
pure virtual |
Set the variant of element element
to variant
.
The element variant determines the set of basis functions defined on the element (e.g. maximum polynomial order). Different subclasses of Space interpret the variant
argument in different ways; for more information, see the documentation of these subclasses.
Implemented in Bempp::RaviartThomas0VectorSpace< BasisFunctionType >, Bempp::PiecewisePolynomialDiscontinuousScalarSpace< BasisFunctionType >, Bempp::PiecewiseLinearDiscontinuousScalarSpaceBarycentric< BasisFunctionType >, Bempp::PiecewisePolynomialContinuousScalarSpace< BasisFunctionType >, Bempp::PiecewiseLinearContinuousScalarSpaceBarycentric< BasisFunctionType >, Bempp::PiecewiseConstantDiscontinuousScalarSpaceBarycentric< BasisFunctionType >, Bempp::PiecewiseConstantDualGridScalarSpace< BasisFunctionType >, Bempp::PiecewiseConstantScalarSpaceBarycentric< BasisFunctionType >, Bempp::PiecewiseConstantDualGridDiscontinuousScalarSpace< BasisFunctionType >, Bempp::PiecewiseConstantScalarSpace< BasisFunctionType >, Bempp::UnitScalarSpace< BasisFunctionType >, and Bempp::PiecewiseLinearScalarSpace< BasisFunctionType >.
|
inlinevirtual |
Transformation mapping shape functions to basis functions.
References Bempp::Space< BasisFunctionType >::basisFunctionValue().
|
related |
Get pointers to Basis objects corresponding to all elements of the grid on which a function space is defined.
|
related |
Get pointers to Basis objects corresponding to all elements of the grid on which a function space is defined.
[in] | space | A Space object. |
[out] | bases | Vector whose ith element is a pointer to the Basis object representing the local degrees of freedom residing on the ith element of the grid on which space is defined. |
An exception is raised if space.assignDofs()
has not been called prior to calling this function.
References Bempp::Mapper::entityIndex(), Bempp::Space< BasisFunctionType >::grid(), and Bempp::Space< BasisFunctionType >::shapeset().