Note: this is documentation for an old release. View the latest documentation at docs.fenicsproject.org/dolfinx/v0.9.0/cpp/doxygen/d2/d3c/classdolfinx_1_1fem_1_1DofMap.html
DOLFINx  0.5.1
DOLFINx C++ interface
Public Member Functions | Public Attributes | List of all members
DofMap Class Reference

Degree-of-freedom map. More...

#include <DofMap.h>

Public Member Functions

template<typename E , typename U , typename = std::enable_if_t<std::is_same< graph::AdjacencyList<std::int32_t>, std::decay_t<U>>::value>>
 DofMap (E &&element, std::shared_ptr< const common::IndexMap > index_map, int index_map_bs, U &&dofmap, int bs)
 Create a DofMap from the layout of dofs on a reference element, an IndexMap defining the distribution of dofs across processes and a vector of indices. More...
 
 DofMap (const DofMap &dofmap)=delete
 
 DofMap (DofMap &&dofmap)=default
 Move constructor.
 
DofMapoperator= (const DofMap &dofmap)=delete
 
DofMapoperator= (DofMap &&dofmap)=default
 Move assignment.
 
bool operator== (const DofMap &map) const
 Equality operator. More...
 
std::span< const std::int32_t > cell_dofs (int cell) const
 Local-to-global mapping of dofs on a cell. More...
 
int bs () const noexcept
 Return the block size for the dofmap.
 
DofMap extract_sub_dofmap (const std::vector< int > &component) const
 Extract subdofmap component. More...
 
std::pair< DofMap, std::vector< std::int32_t > > collapse (MPI_Comm comm, const mesh::Topology &topology, const std::function< std::vector< int >(const graph::AdjacencyList< std::int32_t > &)> &reorder_fn=[](const graph::AdjacencyList< std::int32_t > &g) { return graph::reorder_gps(g);}) const
 Create a "collapsed" dofmap (collapses a sub-dofmap) More...
 
const graph::AdjacencyList< std::int32_t > & list () const
 Get dofmap data. More...
 
const ElementDofLayoutelement_dof_layout () const
 Layout of dofs on an element.
 
int index_map_bs () const
 Block size associated with the index_map.
 

Public Attributes

std::shared_ptr< const common::IndexMapindex_map
 Index map that describes the parallel distribution of the dofmap.
 

Detailed Description

Degree-of-freedom map.

This class handles the mapping of degrees of freedom. It builds a dof map based on an ElementDofLayout on a specific mesh topology. It will reorder the dofs when running in parallel. Sub-dofmaps, both views and copies, are supported.

Constructor & Destructor Documentation

◆ DofMap()

DofMap ( E &&  element,
std::shared_ptr< const common::IndexMap index_map,
int  index_map_bs,
U &&  dofmap,
int  bs 
)
inline

Create a DofMap from the layout of dofs on a reference element, an IndexMap defining the distribution of dofs across processes and a vector of indices.

Parameters
[in]elementThe layout of the degrees of freedom on an element (fem::ElementDofLayout)
[in]index_mapThe map describing the parallel distribution of the degrees of freedom
[in]index_map_bsThe block size associated with the index_map
[in]dofmapAdjacency list (graph::AdjacencyList<std::int32_t>) with the degrees-of-freedom for each cell
[in]bsThe block size of the dofmap

Member Function Documentation

◆ cell_dofs()

std::span<const std::int32_t> cell_dofs ( int  cell) const
inline

Local-to-global mapping of dofs on a cell.

Parameters
[in]cellThe cell index
Returns
Local-global dof map for the cell (using process-local indices)

◆ collapse()

std::pair< DofMap, std::vector< std::int32_t > > collapse ( MPI_Comm  comm,
const mesh::Topology topology,
const std::function< std::vector< int >(const graph::AdjacencyList< std::int32_t > &)> &  reorder_fn = [](const graph::AdjacencyList<std::int32_t>& g) { return graph::reorder_gps(g); } 
) const

Create a "collapsed" dofmap (collapses a sub-dofmap)

Parameters
[in]commMPI Communicator
[in]topologyThe mesh topology that the dofmap is defined on
[in]reorder_fnThe graph re-ordering function to apply to the dof data
Returns
The collapsed dofmap

◆ extract_sub_dofmap()

DofMap extract_sub_dofmap ( const std::vector< int > &  component) const

Extract subdofmap component.

Parameters
[in]componentThe component indices
Returns
The dofmap for the component

◆ list()

const graph::AdjacencyList< std::int32_t > & list ( ) const

Get dofmap data.

Returns
The adjacency list with dof indices for each cell

◆ operator==()

bool operator== ( const DofMap map) const

Equality operator.

Returns
Returns true if the data for the two dofmaps is equal

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