18#ifndef __GENERIC_DOF_MAP_H
19#define __GENERIC_DOF_MAP_H
25#include <unordered_map>
26#include <unordered_set>
29#include <dolfin/common/types.h>
30#include <dolfin/common/Variable.h>
31#include <dolfin/la/IndexMap.h>
32#include <dolfin/log/log.h>
106 virtual Eigen::Map<const Eigen::Array<dolfin::la_index, Eigen::Dynamic, 1>>
110 virtual std::vector<dolfin::la_index>
112 const std::vector<std::size_t> & entity_indices)
const = 0;
115 virtual std::vector<dolfin::la_index>
120 virtual std::vector<dolfin::la_index>
122 const std::vector<std::size_t> & entity_indices)
const = 0;
126 virtual std::vector<dolfin::la_index>
131 std::size_t cell_facet_index)
const = 0;
136 std::size_t entity_dim,
137 std::size_t cell_entity_index)
const = 0;
142 std::size_t entity_dim,
143 std::size_t cell_entity_index)
const = 0;
149 virtual std::shared_ptr<GenericDofMap>
copy()
const = 0;
152 virtual std::shared_ptr<GenericDofMap>
156 virtual std::shared_ptr<GenericDofMap>
158 const Mesh& mesh)
const = 0;
161 virtual std::shared_ptr<GenericDofMap>
162 collapse(std::unordered_map<std::size_t, std::size_t>& collapsed_map,
163 const Mesh& mesh)
const = 0;
167 virtual std::vector<dolfin::la_index>
dofs(
const Mesh& mesh,
168 std::size_t dim)
const = 0;
171 virtual std::vector<dolfin::la_index>
dofs()
const = 0;
184 virtual std::shared_ptr<const IndexMap>
index_map()
const = 0;
194 virtual const std::unordered_map<int, std::vector<int>>&
205 virtual std::string
str(
bool verbose)
const = 0;
This class provides a generic interface for dof maps.
Definition: GenericDofMap.h:50
virtual std::size_t num_entity_closure_dofs(std::size_t entity_dim) const =0
Return the number of dofs for closure of entity of given dimension.
virtual std::size_t max_element_dofs() const =0
virtual std::shared_ptr< GenericDofMap > copy() const =0
Create a copy of the dof map.
virtual std::pair< std::size_t, std::size_t > ownership_range() const =0
virtual const std::set< int > & neighbours() const =0
Return set of processes that share dofs with the this process.
virtual bool is_view() const =0
True if dof map is a view into another map (is a sub-dofmap)
virtual std::size_t num_element_dofs(std::size_t index) const =0
std::shared_ptr< const SubDomain > constrained_domain
Definition: GenericDofMap.h:212
virtual std::vector< dolfin::la_index > entity_dofs(const Mesh &mesh, std::size_t entity_dim) const =0
Return the dof indices associated with all entities of given dimension.
virtual void tabulate_entity_dofs(std::vector< std::size_t > &element_dofs, std::size_t entity_dim, std::size_t cell_entity_index) const =0
virtual std::shared_ptr< const IndexMap > index_map() const =0
Index map (const access)
GenericDofMap()
Constructor.
Definition: GenericDofMap.h:54
std::size_t max_cell_dimension() const
Definition: GenericDofMap.h:74
virtual void tabulate_local_to_global_dofs(std::vector< std::size_t > &local_to_global_map) const =0
Tabulate map between local (process) and global dof indices.
virtual std::vector< dolfin::la_index > entity_closure_dofs(const Mesh &mesh, std::size_t entity_dim) const =0
virtual std::shared_ptr< GenericDofMap > collapse(std::unordered_map< std::size_t, std::size_t > &collapsed_map, const Mesh &mesh) const =0
Create a "collapsed" a dofmap (collapses from a sub-dofmap view)
virtual const std::vector< std::size_t > & local_to_global_unowned() const =0
virtual Eigen::Map< const Eigen::Array< dolfin::la_index, Eigen::Dynamic, 1 > > cell_dofs(std::size_t cell_index) const =0
Local-to-global mapping of dofs on a cell.
virtual std::size_t global_dimension() const =0
virtual std::vector< dolfin::la_index > dofs(const Mesh &mesh, std::size_t dim) const =0
virtual std::vector< dolfin::la_index > entity_closure_dofs(const Mesh &mesh, std::size_t entity_dim, const std::vector< std::size_t > &entity_indices) const =0
virtual std::string str(bool verbose) const =0
Return informal string representation (pretty-print)
virtual void clear_sub_map_data()=0
virtual std::vector< dolfin::la_index > dofs() const =0
Return list of global dof indices on this process.
virtual int block_size() const =0
Get block size.
virtual std::shared_ptr< GenericDofMap > extract_sub_dofmap(const std::vector< std::size_t > &component, const Mesh &mesh) const =0
Extract sub dofmap component.
virtual std::size_t num_facet_dofs() const =0
Return number of facet dofs.
virtual std::size_t local_to_global_index(int local_index) const =0
Return global dof index corresponding to a given local index.
virtual void tabulate_facet_dofs(std::vector< std::size_t > &element_dofs, std::size_t cell_facet_index) const =0
Tabulate local-local facet dofs.
virtual void tabulate_global_dofs(std::vector< std::size_t > &dofs) const =0
Tabulate globally supported dofs.
virtual std::vector< dolfin::la_index > entity_dofs(const Mesh &mesh, std::size_t entity_dim, const std::vector< std::size_t > &entity_indices) const =0
Return the dof indices associated with entities of given dimension and entity indices.
virtual const std::unordered_map< int, std::vector< int > > & shared_nodes() const =0
virtual std::shared_ptr< GenericDofMap > create(const Mesh &new_mesh) const =0
Create a new dof map on new mesh.
virtual const std::vector< int > & off_process_owner() const =0
virtual std::size_t num_entity_dofs(std::size_t entity_dim) const =0
Return the number of dofs for a given entity dimension.
virtual void tabulate_entity_closure_dofs(std::vector< std::size_t > &element_dofs, std::size_t entity_dim, std::size_t cell_entity_index) const =0
virtual void set(GenericVector &x, double value) const =0
std::size_t cell_dimension(std::size_t index) const
Definition: GenericDofMap.h:66
This class defines a common interface for vectors.
Definition: GenericVector.h:48
Common base class for DOLFIN variables.
Definition: Variable.h:36