DOLFINx 0.9.0
DOLFINx C++ interface
Loading...
Searching...
No Matches
FunctionSpace< T > Class Template Reference

This class represents a finite element function space defined by a mesh, a finite element, and a local-to-global map of the degrees-of-freedom. More...

#include <FunctionSpace.h>

Public Types

using geometry_type = T
 Geometry type of the Mesh that the FunctionSpace is defined on.
 

Public Member Functions

 FunctionSpace (std::shared_ptr< const mesh::Mesh< geometry_type > > mesh, std::shared_ptr< const FiniteElement< geometry_type > > element, std::shared_ptr< const DofMap > dofmap, std::vector< std::size_t > value_shape)
 Create function space for given mesh, element and dofmap.
 
 FunctionSpace (const FunctionSpace &V)=delete
 
 FunctionSpace (FunctionSpace &&V)=default
 Move constructor.
 
virtual ~FunctionSpace ()=default
 Destructor.
 
FunctionSpaceoperator= (const FunctionSpace &V)=delete
 
FunctionSpaceoperator= (FunctionSpace &&V)=default
 Move assignment operator.
 
FunctionSpace sub (const std::vector< int > &component) const
 Create a subspace (view) for a specific component.
 
bool contains (const FunctionSpace &V) const
 Check whether V is subspace of this, or this itself.
 
std::pair< FunctionSpace, std::vector< std::int32_t > > collapse () const
 
std::vector< int > component () const
 Get the component with respect to the root superspace.
 
bool symmetric () const
 Indicate whether this function space represents a symmetric 2-tensor.
 
std::vector< geometry_typetabulate_dof_coordinates (bool transpose) const
 Tabulate the physical coordinates of all dofs on this process.
 
std::shared_ptr< const mesh::Mesh< geometry_type > > mesh () const
 The mesh.
 
std::shared_ptr< const FiniteElement< geometry_type > > element () const
 The finite element.
 
std::shared_ptr< const DofMapdofmap () const
 The dofmap.
 
std::span< const std::size_t > value_shape () const noexcept
 The shape of the value space.
 
int value_size () const
 

Detailed Description

template<std::floating_point T>
class dolfinx::fem::FunctionSpace< T >

This class represents a finite element function space defined by a mesh, a finite element, and a local-to-global map of the degrees-of-freedom.

Template Parameters
TThe floating point (real) type of the mesh geometry and the finite element basis.

Constructor & Destructor Documentation

◆ FunctionSpace()

template<std::floating_point T>
FunctionSpace ( std::shared_ptr< const mesh::Mesh< geometry_type > > mesh,
std::shared_ptr< const FiniteElement< geometry_type > > element,
std::shared_ptr< const DofMap > dofmap,
std::vector< std::size_t > value_shape )
inline

Create function space for given mesh, element and dofmap.

Parameters
[in]meshMesh that the space is defined on.
[in]elementFinite element for the space.
[in]dofmapDegree-of-freedom map for the space.
[in]value_shapeThe shape of the value space on the physical cell

Member Function Documentation

◆ collapse()

template<std::floating_point T>
std::pair< FunctionSpace, std::vector< std::int32_t > > collapse ( ) const
inline

Collapse a subspace and return a new function space and a map from new to old dofs

Returns
The new function space and a map from new to old dofs

◆ component()

template<std::floating_point T>
std::vector< int > component ( ) const
inline

Get the component with respect to the root superspace.

Returns
The component with respect to the root superspace, i.e. W.sub(1).sub(0) == [1, 0].

◆ contains()

template<std::floating_point T>
bool contains ( const FunctionSpace< T > & V) const
inline

Check whether V is subspace of this, or this itself.

Parameters
[in]VThe space to be tested for inclusion
Returns
True if V is contained in or is equal to this FunctionSpace

◆ sub()

template<std::floating_point T>
FunctionSpace sub ( const std::vector< int > & component) const
inline

Create a subspace (view) for a specific component.

Note
If the subspace is re-used, for performance reasons the returned subspace should be stored by the caller to avoid repeated re-computation of the subspace.
Parameters
[in]componentSubspace component.
Returns
A subspace.

◆ tabulate_dof_coordinates()

template<std::floating_point T>
std::vector< geometry_type > tabulate_dof_coordinates ( bool transpose) const
inline

Tabulate the physical coordinates of all dofs on this process.

Todo
Remove - see function in interpolate.h
Parameters
[in]transposeIf false the returned data has shape (num_points, 3), otherwise it is transposed and has shape (3, / num_points).
Returns
The dof coordinates [([x0, y0, z0], [x1, y1, z1], ...) if transpose is false, and otherwise the returned data is transposed. Storage is row-major.

◆ value_size()

template<std::floating_point T>
int value_size ( ) const
inline

The value size, e.g. 1 for a scalar-valued function, 2 for a 2D vector, 9 for a second-order tensor in 3D.

Note
The return value of this function is equivalent to std::accumulate(value_shape().begin(), value_shape().end(), 1, / std::multiplies{}).

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