BEM++  2.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Groups Pages
Public Types | Public Member Functions | Private Member Functions | Private Attributes | List of all members
Bempp::PiecewiseConstantDiscontinuousScalarSpaceBarycentric< BasisFunctionType > Class Template Reference

Space of piecewise constant scalar functions. More...

#include </home/wojtek/Projects/BEM/bempp-sven/bempp/lib/space/piecewise_constant_discontinuous_scalar_space_barycentric.hpp>

Inheritance diagram for Bempp::PiecewiseConstantDiscontinuousScalarSpaceBarycentric< BasisFunctionType >:
Bempp::ScalarSpace< BasisFunctionType > Bempp::Space< BasisFunctionType >

Public Types

typedef ScalarSpace
< BasisFunctionType >
::CoordinateType 
CoordinateType
 
- Public Types inherited from Bempp::ScalarSpace< BasisFunctionType >
typedef Base::CoordinateType CoordinateType
 
typedef
Base::CollectionOfShapesetTransformations 
CollectionOfShapesetTransformations
 
typedef
Base::CollectionOfBasisTransformations 
CollectionOfBasisTransformations
 
- Public Types inherited from Bempp::Space< BasisFunctionType >
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

 PiecewiseConstantDiscontinuousScalarSpaceBarycentric (const shared_ptr< const Grid > &grid)
 Constructor. More...
 
 PiecewiseConstantDiscontinuousScalarSpaceBarycentric (const shared_ptr< const Grid > &grid, const GridSegment &segment)
 Constructor. More...
 
virtual shared_ptr< const
Space< BasisFunctionType > > 
discontinuousSpace (const shared_ptr< const Space< BasisFunctionType > > &self) const
 Return a shared pointer to an appropriate counterpart to this space, with basis functions extending only over single elements. More...
 
virtual bool isDiscontinuous () const
 Return true if each basis function of this space extends over only a single element, false otherwise.
 
virtual bool isBarycentric () const
 Return true if space is based on a barycentric refinement.
 
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.
 
virtual int domainDimension () const
 Dimension of the grid on which functions from this space are defined.
 
virtual int codomainDimension () const
 Dimension of the codomain of the functions. More...
 
virtual ElementVariant elementVariant (const Entity< 0 > &element) const
 Return the variant of element element. More...
 
virtual void setElementVariant (const Entity< 0 > &element, ElementVariant variant)
 Set the variant of element element to variant. More...
 
virtual const Fiber::Shapeset
< BasisFunctionType > & 
shapeset (const Entity< 0 > &element) const
 Reference to the shapeset attached to the specified element.
 
virtual bool spaceIsCompatible (const Space< BasisFunctionType > &other) const
 Return true if other is compatible to this space, i.e. the global dofs of the two spaces agree with each other.
 
virtual SpaceIdentifier spaceIdentifier () const
 Return the identifier of the space.
 
virtual size_t globalDofCount () const
 Number of global degrees of freedom.
 
virtual size_t flatLocalDofCount () const
 Total number of local degrees of freedom on all elements.
 
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 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 flatLocal2localDofs (const std::vector< FlatLocalDofIndex > &globalDofs, std::vector< LocalDof > &localDofs) const
 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 getGlobalDofPositions (std::vector< Point3D< CoordinateType > > &positions) const
 Retrieve the reference positions of global degrees of freedom. More...
 
virtual void getFlatLocalDofPositions (std::vector< Point3D< CoordinateType > > &positions) const
 Retrieve the reference positions of local degrees of freedom ordered by their flat index. More...
 
virtual void getGlobalDofBoundingBoxes (std::vector< BoundingBox< CoordinateType > > &bboxes) const
 Retrieve bounding boxes of global degrees of freedom. More...
 
virtual void getFlatLocalDofBoundingBoxes (std::vector< BoundingBox< CoordinateType > > &bboxes) const
 Retrieve bounding boxes 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 void dumpClusterIds (const char *fileName, const std::vector< unsigned int > &clusterIdsOfGlobalDofs) const
 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...
 
- Public Member Functions inherited from Bempp::ScalarSpace< BasisFunctionType >
 ScalarSpace (const shared_ptr< const Grid > &grid)
 
 ScalarSpace (const ScalarSpace &other)
 Copy constructor.
 
ScalarSpaceoperator= (const ScalarSpace &other)
 Assignment operator.
 
virtual const
CollectionOfShapesetTransformations
basisFunctionValue () const
 Transformation mapping shape functions to basis functions. More...
 
virtual void getGlobalDofInterpolationDirections (arma::Mat< CoordinateType > &directions) const
 Retrieve the interpolation directions of the global degrees of freedom. More...
 
- Public Member Functions inherited from Bempp::Space< BasisFunctionType >
 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.
 
shared_ptr< GeometryFactoryelementGeometryFactory () 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 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 void global2localDofs (const std::vector< GlobalDofIndex > &globalDofs, std::vector< std::vector< LocalDof > > &localDofs, std::vector< std::vector< BasisFunctionType > > &localDofWeights) const
 
shared_ptr< const Gridgrid () 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 BEMPP_DEPRECATED const
CollectionOfBasisTransformations
shapeFunctionValue () const
 Transformation mapping shape functions to basis functions. More...
 
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 GridViewgridView () const
 Return the grid view of the current space.
 

Private Member Functions

void assignDofsImpl (const GridSegment &segment)
 

Private Attributes

Fiber::ConstantScalarShapeset
< BasisFunctionType > 
m_shapeset
 
std::vector< std::vector
< GlobalDofIndex > > 
m_local2globalDofs
 
std::vector< std::vector
< LocalDof > > 
m_global2localDofs
 
std::vector< LocalDofm_flatLocal2localDofs
 
GridSegment m_segment
 

Additional Inherited Members

Detailed Description

template<typename BasisFunctionType>
class Bempp::PiecewiseConstantDiscontinuousScalarSpaceBarycentric< BasisFunctionType >

Space of piecewise constant scalar functions.

Constructor & Destructor Documentation

template<typename BasisFunctionType >
Bempp::PiecewiseConstantDiscontinuousScalarSpaceBarycentric< BasisFunctionType >::PiecewiseConstantDiscontinuousScalarSpaceBarycentric ( const shared_ptr< const Grid > &  grid)
explicit

Constructor.

Construct a space of piecewise constant scalar functions defined on the barycentric refinement of the grid grid. This is the discontinuous version of PiecewiseConstantScalarSpaceBarycentric. Please note that discontinuous here refers to global and local degrees of freedom being identical.

An exception is thrown if grid is a null pointer.

template<typename BasisFunctionType >
Bempp::PiecewiseConstantDiscontinuousScalarSpaceBarycentric< BasisFunctionType >::PiecewiseConstantDiscontinuousScalarSpaceBarycentric ( const shared_ptr< const Grid > &  grid,
const GridSegment segment 
)

Constructor.

Construct a space of piecewise constant scalar functions defined on the elements of the grid grid belonging to the segment segment.

An exception is thrown if grid is a null pointer.

Member Function Documentation

template<typename BasisFunctionType >
int Bempp::PiecewiseConstantDiscontinuousScalarSpaceBarycentric< BasisFunctionType >::codomainDimension ( ) const
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).

Implements Bempp::Space< BasisFunctionType >.

template<typename BasisFunctionType >
shared_ptr< const Space< BasisFunctionType > > Bempp::PiecewiseConstantDiscontinuousScalarSpaceBarycentric< BasisFunctionType >::discontinuousSpace ( const shared_ptr< const Space< BasisFunctionType > > &  self) const
virtual

Return a shared pointer to an appropriate counterpart to this space, with basis functions extending only over single elements.

Let $S = span_{n=1}^N f_n$ denote the function space represented by this object, with $f_n$ its basis functions.

If the functions $f_n$ are scalar-valued, discontinuousSpace() should return a shared pointer to an object representing a space $T = span_{m=1}^M g_m$ with basis functions $g_m$ such that:

  1. $T = S$.
  2. The support of each basis function $g_m$ is a single element.
  3. Each function $f_n$ has a unique representation in the basis of $\{g_m\}_{m=1}^M$ and each function $g_m$ contributes to exactly one function $f_n$.

If the values of functions $f_n$ are vectors with $d$ components, discontinuousSpace() should return a shared pointer to an object representing a space $T = span_{m=1}^M g_m$ of with scalar-valued basis functions $g_m$ such that

  1. For each $i = 1, 2, \cdots, d$ it holds that $T \supset span_{n=1}^N (f_n)_i$, where $(f_n)_i$ denotes the $i$th component of $f_n$.
  2. The support of each basis function $g_m$ is a single element.
Parameters
[in]selfThis must be a shared pointer to *this.

Implements Bempp::Space< BasisFunctionType >.

template<typename BasisFunctionType >
void Bempp::PiecewiseConstantDiscontinuousScalarSpaceBarycentric< BasisFunctionType >::dumpClusterIds ( const char *  fileName,
const std::vector< unsigned int > &  clusterIdsOfGlobalDofs 
) const
virtual

Write a VTK file showing the distribution of global or flat local degrees of freedom into clusters.

Parameters
[in]fileNameName of the VTK file to be created (without extension).
[in]clusterIdsOfGlobalDofsVector 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.

Deprecated:
This function is deprecated. Use dumpClusterIdEx() instead, which supports dumping of cluster identifiers of flat local degrees of freedom in addition to the global ones.

Implements Bempp::Space< BasisFunctionType >.

template<typename BasisFunctionType >
void Bempp::PiecewiseConstantDiscontinuousScalarSpaceBarycentric< BasisFunctionType >::dumpClusterIdsEx ( const char *  fileName,
const std::vector< unsigned int > &  clusterIdsOfGlobalDofs,
DofType  dofType 
) const
virtual

Write a VTK file showing the distribution of global or flat local degrees of freedom into clusters.

Parameters
[in]fileNameName of the VTK file to be created (without extension).
[in]clusterIdsOfGlobalDofsVector whose ith element contains the identifier of the cluster to which ith degree of freedom has been assigned.
[in]dofTypeType 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 from Bempp::Space< BasisFunctionType >.

References Bempp::GridView::vtkWriter().

template<typename BasisFunctionType >
ElementVariant Bempp::PiecewiseConstantDiscontinuousScalarSpaceBarycentric< BasisFunctionType >::elementVariant ( const Entity< 0 > &  element) const
virtual

Return the variant of element element.

Possible return values:

  • 2: one-dimensional segment,
  • 3: triangular element,
  • 4: quadrilateral element.

Implements Bempp::Space< BasisFunctionType >.

References Bempp::Entity< 0 >::type().

template<typename BasisFunctionType >
void Bempp::PiecewiseConstantDiscontinuousScalarSpaceBarycentric< BasisFunctionType >::flatLocal2localDofs ( const std::vector< FlatLocalDofIndex > &  flatLocalDofs,
std::vector< LocalDof > &  localDofs 
) const
virtual

Map flat indices of local degrees of freedom to local degrees of freedom.

Parameters
[in]flatLocalDofsVector containing flat indices of local degrees of freedom.
[out]localDofsVector whose ith element is the local degree of freedom with flat index given by flatLocalDofs[i].

Implements Bempp::Space< BasisFunctionType >.

template<typename BasisFunctionType >
void Bempp::PiecewiseConstantDiscontinuousScalarSpaceBarycentric< BasisFunctionType >::getFlatLocalDofBoundingBoxes ( std::vector< BoundingBox< CoordinateType > > &  boundingBoxes) const
virtual

Retrieve bounding boxes of local degrees of freedom ordered by their flat index.

Parameters
[out]boundingBoxesVector whose ith element contains the bounding box the local degree of freedom with flat index i.
Note
This function is intended as a helper for clustering algorithms used in matrix compression algorithms such as adaptive cross approximation.

Reimplemented from Bempp::Space< BasisFunctionType >.

template<typename BasisFunctionType >
void Bempp::PiecewiseConstantDiscontinuousScalarSpaceBarycentric< BasisFunctionType >::getFlatLocalDofNormals ( std::vector< Point3D< CoordinateType > > &  normals) const
virtual

Retrieve the unit vectors normal to the grid at the positions of global degrees of freedom.

Parameters
[out]normalsVector 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 from Bempp::Space< BasisFunctionType >.

References Bempp::IndexSet::entityIndex(), Bempp::Entity< 0 >::geometry(), and Bempp::Geometry::getNormals().

template<typename BasisFunctionType >
void Bempp::PiecewiseConstantDiscontinuousScalarSpaceBarycentric< BasisFunctionType >::getFlatLocalDofPositions ( std::vector< Point3D< CoordinateType > > &  positions) const
virtual

Retrieve the reference positions of local degrees of freedom ordered by their flat index.

Parameters
[out]positionsVector 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.
Note
This function is intended as a helper for clustering algorithms used in matrix compression algorithms such as adaptive cross approximation.

Implements Bempp::Space< BasisFunctionType >.

template<typename BasisFunctionType >
void Bempp::PiecewiseConstantDiscontinuousScalarSpaceBarycentric< BasisFunctionType >::getGlobalDofBoundingBoxes ( std::vector< BoundingBox< CoordinateType > > &  boundingBoxes) const
virtual

Retrieve bounding boxes of global degrees of freedom.

Parameters
[out]boundingBoxesVector whose ith element contains the bounding box of ith global degree of freedom.
Note
This function is intended as a helper for clustering algorithms used in matrix compression algorithms such as adaptive cross approximation.

Reimplemented from Bempp::Space< BasisFunctionType >.

template<typename BasisFunctionType >
void Bempp::PiecewiseConstantDiscontinuousScalarSpaceBarycentric< BasisFunctionType >::getGlobalDofInterpolationPoints ( arma::Mat< CoordinateType > &  points) const
virtual

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 $V$ be a function space defined on grid $\Gamma$ with a basis $(f_i)_{i=1}^N$ of functions $f_i : \Gamma \to \mathbb{R}^n$ (or $\mathbb{C}^n$. We say that this basis is interpolatory if there exist points $x_j \in \Gamma$ and $n$-dimensional vectors $d_j$ ( $j = 1, 2, \dots, N$ such that

\[ f_i(x_j) \cdot d_j = \begin{cases} 1 &\text{for} i = j,\\ 0 &\text{otherwise}. \end{cases} \]

For any appropriate function $u$ defined on $Gamma$ the numbers $u(x_i) \cdot d_i$ can then be taken as the expansion coefficients in the basis $(f_i)_{i=1}^N$ of its interpolation. ("Appropriate" means that if, for example, the space $V$ is a space of functions tangential to the grid, then $u$ 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 $x_j$.

Reimplemented from Bempp::Space< BasisFunctionType >.

template<typename BasisFunctionType >
void Bempp::PiecewiseConstantDiscontinuousScalarSpaceBarycentric< BasisFunctionType >::getGlobalDofNormals ( std::vector< Point3D< CoordinateType > > &  normals) const
virtual

Retrieve the unit vectors normal to the grid at the positions of global degrees of freedom.

Parameters
[out]normalsVector whose ith element contains the unit vector normal to the grid at the reference position of ith global degree of freedom.

Reimplemented from Bempp::Space< BasisFunctionType >.

template<typename BasisFunctionType >
void Bempp::PiecewiseConstantDiscontinuousScalarSpaceBarycentric< BasisFunctionType >::getGlobalDofPositions ( std::vector< Point3D< CoordinateType > > &  positions) const
virtual

Retrieve the reference positions of global degrees of freedom.

Parameters
[out]positionsVector whose ith element contains the coordinates of the point taken to be the "reference position" (in some sense) of ith global degree of freedom.
Note
This function is intended as a helper for clustering algorithms used in matrix compression algorithms such as adaptive cross approximation.

Implements Bempp::Space< BasisFunctionType >.

template<typename BasisFunctionType >
void Bempp::PiecewiseConstantDiscontinuousScalarSpaceBarycentric< BasisFunctionType >::getGlobalDofs ( const Entity< 0 > &  element,
std::vector< GlobalDofIndex > &  dofs 
) const
virtual

Map local degrees of freedom residing on an element to global degrees of freedom.

Parameters
[in]elementAn element of the grid grid().
[out]dofsVector 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.
Note
This function is deprecated. Use the other overload taking the additional output parameter localDofWeights.

Reimplemented from Bempp::Space< BasisFunctionType >.

References Bempp::Mapper::entityIndex().

template<typename BasisFunctionType >
void Bempp::PiecewiseConstantDiscontinuousScalarSpaceBarycentric< BasisFunctionType >::getNormalsAtGlobalDofInterpolationPoints ( arma::Mat< CoordinateType > &  normals) const
virtual

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 $x_j$ defined in the documentation of getGlobalDofInterpolationPoints().

Reimplemented from Bempp::Space< BasisFunctionType >.

template<typename BasisFunctionType >
void Bempp::PiecewiseConstantDiscontinuousScalarSpaceBarycentric< BasisFunctionType >::global2localDofs ( const std::vector< GlobalDofIndex > &  globalDofs,
std::vector< std::vector< LocalDof > > &  localDofs 
) const
virtual

Map global degrees of freedom to local degrees of freedom.

Parameters
[in]globalDofsVector containing indices of global degrees of freedom.
[out]localDofsVector whose ith 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 from Bempp::Space< BasisFunctionType >.

template<typename BasisFunctionType >
void Bempp::PiecewiseConstantDiscontinuousScalarSpaceBarycentric< BasisFunctionType >::setElementVariant ( const Entity< 0 > &  element,
ElementVariant  variant 
)
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.

Note
Calling this function only makes sense for subclasses implementing adaptive function spaces. Currently there are no such subclasses.

Implements Bempp::Space< BasisFunctionType >.


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