19 #ifndef DOFHANDLER_HH_ 20 #define DOFHANDLER_HH_ 89 virtual void get_dof_indices(
const CellIterator &cell,
unsigned int indices[])
const = 0;
97 virtual void get_loc_dof_indices(
const CellIterator &cell,
unsigned int indices[])
const =0;
106 virtual void get_dof_values(
const CellIterator &cell,
const Vec &values,
107 double local_values[])
const = 0;
280 const unsigned int offset = 0);
288 void get_dof_indices(
const CellIterator &cell,
unsigned int indices[])
const override;
306 double local_values[])
const override;
313 inline int el_index(
int loc_el)
const {
return el_4_loc[loc_el]; }
320 inline int edge_index(
int loc_edg)
const {
return edg_4_loc[loc_edg]; }
327 inline int nb_index(
int loc_nb)
const {
return nb_4_loc[loc_nb]; }
332 inline unsigned int n_loc_edges()
const {
return edg_4_loc.size(); }
337 inline unsigned int n_loc_nb()
const {
return nb_4_loc.size(); }
343 bool el_is_local(
int index)
const;
346 template<
unsigned int dim>
357 void make_elem_partitioning();
ElementFullIter CellIterator
Alias for iterator over cells.
const unsigned int lsize() const
Returns the number of dofs on the current process.
vector< int > edg_4_loc
Local edge index -> global edge index.
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.
unsigned int global_dof_offset
Index of first global dof.
unsigned int n_loc_nb() const
Returns number of local neighbours.
virtual void get_dof_indices(const CellIterator &cell, unsigned int indices[]) const =0
Returns the global indices of dofs associated to the cell.
int el_index(int loc_el) const
Returns the global index of local element.
unsigned int lsize_
Number of dofs associated to local process.
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.
Mesh * mesh_
Pointer to the mesh to which the dof handler is associated.
int nb_index(int loc_nb) const
Returns the global index of local neighbour.
Provides the numbering of the finite element degrees of freedom on the computational mesh...
virtual void get_loc_dof_indices(const CellIterator &cell, unsigned int indices[]) const =0
Returns the indices of dofs associated to the cell on the local process.
ElementFullIter CellIterator
Alias for iterator over cells.
Distribution * ds_
Distribution of dofs associated to local process.
int *** object_dofs
Number of dofs associated to geometrical entities.
unsigned int n_loc_edges() const
Returns number of local edges.
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.
unsigned int n_dofs
Number of global dofs assigned by the handler.
int * row_4_el
Global element index -> index according to partitioning.
Abstract class for the description of a general finite element on a reference simplex in dim dimensio...
int edge_index(int loc_edg) const
Returns the global index of local edge.
vector< int > nb_4_loc
Local neighbour index -> global neighbour index.
Distribution * distr() const
int * el_4_loc
Local element index -> global element index.
DOFHandlerBase(Mesh &_mesh)
Constructor.
const unsigned int n_global_dofs() const
Getter for the number of all mesh dofs required by the given finite element.