19 #ifndef DOFHANDLER_HH_ 20 #define DOFHANDLER_HH_ 118 virtual void get_dof_values(
const CellIterator &cell,
const Vec &values,
119 double local_values[])
const = 0;
124 virtual std::size_t
hash()
const =0;
300 const unsigned int offset = 0);
326 double local_values[])
const override;
333 inline int el_index(
int loc_el)
const {
return el_4_loc[loc_el]; }
352 inline unsigned int n_loc_edges()
const {
return edg_4_loc.size(); }
357 inline unsigned int n_loc_nb()
const {
return nb_4_loc.size(); }
363 bool el_is_local(
int index)
const;
366 template<
unsigned int dim>
372 std::size_t
hash()
const override;
382 void make_elem_partitioning();
IdxInt edge_index(int loc_edg) const
Returns the global index of local edge.
int IdxInt
Define integers that are indices into large arrays (elements, nodes, dofs etc.)
virtual unsigned int get_loc_dof_indices(const CellIterator &cell, std::vector< IdxInt > &indices) const =0
Fill vector of the indices of dofs associated to the cell on the local process.
ElementFullIter CellIterator
Alias for iterator over cells.
const unsigned int lsize() const
Returns the number of dofs on the current process.
virtual unsigned int get_dof_indices(const CellIterator &cell, std::vector< IdxInt > &indices) const =0
Fill vector of the global indices of dofs associated to the cell.
vector< IdxInt > nb_4_loc
Local neighbour index -> global neighbour index.
IdxInt *** object_dofs
Number of dofs associated to geometrical entities.
FiniteElement< 3, 3 > * fe3d_
virtual ~DOFHandlerBase()
Destructor.
FiniteElement< 1, 3 > * fe1d_
Pointer to the finite element class for which the handler distributes dofs.
Distribution * el_ds_
Distribution of elements.
vector< IdxInt > edg_4_loc
Local edge index -> global edge index.
unsigned int global_dof_offset
Index of first global dof.
unsigned int n_loc_nb() const
Returns number of local neighbours.
int el_index(int loc_el) const
Returns the global index of local element.
Mesh * mesh() const
Returns the mesh.
unsigned int lsize_
Number of dofs associated to local process.
IdxInt nb_index(int loc_nb) const
Returns the global index of local neighbour.
const unsigned int loffset() const
Returns the offset of the local part of dofs.
const unsigned int offset() const
Returns the number of the first global dof handled by this DOFHandler.
const unsigned int max_elem_dofs() const
Returns max. number of dofs on one element.
Mesh * mesh_
Pointer to the mesh to which the dof handler is associated.
Provides the numbering of the finite element degrees of freedom on the computational mesh...
unsigned int max_elem_dofs_
Max. number of dofs per element.
ElementFullIter CellIterator
Alias for iterator over cells.
Distribution * ds_
Distribution of dofs associated to local process.
unsigned int n_loc_edges() const
Returns number of local edges.
virtual std::size_t hash() const =0
Compute hash value of DOF handler.
virtual void get_dof_values(const CellIterator &cell, const Vec &values, double local_values[]) const =0
Returns the dof values associated to the cell.
Support classes for parallel programing.
FiniteElement< 2, 3 > * fe2d_
unsigned int loffset_
Index of the first dof on the local process.
IdxInt * row_4_el
Global element index -> index according to partitioning.
unsigned int n_dofs
Number of global dofs assigned by the handler.
Abstract class for the description of a general finite element on a reference simplex in dim dimensio...
Distribution * distr() const
Returns the parallel distribution of dofs.
DOFHandlerBase(Mesh &_mesh)
Constructor.
IdxInt * el_4_loc
Local element index -> global element index.
const unsigned int n_global_dofs() const
Getter for the number of all mesh dofs required by the given finite element.