25 #ifndef __FUNCTION_SPACE_H 26 #define __FUNCTION_SPACE_H 33 #include <unordered_map> 34 #include <dolfin/common/Array.h> 35 #include <dolfin/common/Variable.h> 36 #include <dolfin/common/Hierarchical.h> 37 #include <dolfin/fem/FiniteElement.h> 38 #include <dolfin/mesh/Cell.h> 45 class GenericFunction;
68 std::shared_ptr<const FiniteElement>
element,
69 std::shared_ptr<const GenericDofMap>
dofmap);
105 void attach(std::shared_ptr<const FiniteElement> element,
106 std::shared_ptr<const GenericDofMap> dofmap);
136 std::shared_ptr<const Mesh>
mesh()
const;
143 std::shared_ptr<const FiniteElement>
element()
const;
150 std::shared_ptr<const GenericDofMap>
dofmap()
const;
158 std::size_t
dim()
const;
179 std::shared_ptr<FunctionSpace>
operator[] (std::size_t i)
const;
200 std::shared_ptr<FunctionSpace>
213 std::shared_ptr<FunctionSpace>
232 std::shared_ptr<FunctionSpace>
collapse()
const;
244 std::shared_ptr<FunctionSpace>
245 collapse(std::unordered_map<std::size_t, std::size_t>& collapsed_dofs)
const;
257 {
return &cell.
mesh() == &(*_mesh); }
269 {
return element.
hash() == _element->hash(); }
277 std::vector<std::size_t>
component()
const;
319 std::string
str(
bool verbose)
const;
327 void interpolate_from_any(
GenericVector& expansion_coefficients,
332 void interpolate_from_parent(
GenericVector& expansion_coefficients,
336 std::shared_ptr<const Mesh> _mesh;
339 std::shared_ptr<const FiniteElement> _element;
342 std::shared_ptr<const GenericDofMap> _dofmap;
345 std::vector<std::size_t> _component;
348 std::size_t _root_space_id;
351 mutable std::map<std::vector<std::size_t>,
352 std::shared_ptr<FunctionSpace> > _subspaces;
std::shared_ptr< FunctionSpace > sub(std::size_t component) const
Definition: FunctionSpace.h:189
const Mesh & mesh() const
Definition: MeshEntity.h:99
Common base class for DOLFIN variables.
Definition: Variable.h:35
void print_dofmap() const
Print dofmap (useful for debugging)
Definition: FunctionSpace.cpp:447
std::shared_ptr< const GenericDofMap > dofmap() const
Definition: FunctionSpace.cpp:114
Definition: Hierarchical.h:43
virtual ~FunctionSpace()
Destructor.
Definition: FunctionSpace.cpp:63
const FunctionSpace & operator=(const FunctionSpace &V)
Definition: FunctionSpace.cpp:75
FunctionSpace(std::shared_ptr< const Mesh > mesh, std::shared_ptr< const FiniteElement > element, std::shared_ptr< const GenericDofMap > dofmap)
Definition: FunctionSpace.cpp:41
Definition: FunctionSpace.h:53
std::size_t dim() const
Definition: FunctionSpace.cpp:119
bool contains(const FunctionSpace &V) const
Definition: FunctionSpace.cpp:462
std::shared_ptr< FunctionSpace > operator[](std::size_t i) const
Definition: FunctionSpace.cpp:259
bool has_cell(const Cell &cell) const
Definition: FunctionSpace.h:256
std::size_t hash() const
Return simple hash of the signature string.
Definition: FiniteElement.h:216
void interpolate(GenericVector &expansion_coefficients, const GenericFunction &v) const
Definition: FunctionSpace.cpp:205
A Cell is a MeshEntity of topological codimension 0.
Definition: Cell.h:42
std::string str(bool verbose) const
Definition: FunctionSpace.cpp:431
std::shared_ptr< const Mesh > mesh() const
Definition: FunctionSpace.cpp:104
bool operator==(const FunctionSpace &V) const
Definition: FunctionSpace.cpp:90
bool operator!=(const FunctionSpace &V) const
Definition: FunctionSpace.cpp:98
std::shared_ptr< const FiniteElement > element() const
Definition: FunctionSpace.cpp:109
bool has_element(const FiniteElement &element) const
Definition: FunctionSpace.h:268
std::shared_ptr< FunctionSpace > extract_sub_space(const std::vector< std::size_t > &component) const
Definition: FunctionSpace.cpp:267
Definition: GenericFunction.h:53
void attach(std::shared_ptr< const FiniteElement > element, std::shared_ptr< const GenericDofMap > dofmap)
Definition: FunctionSpace.cpp:68
std::shared_ptr< FunctionSpace > collapse() const
Definition: FunctionSpace.cpp:309
void set_x(GenericVector &x, double value, std::size_t component) const
Definition: FunctionSpace.cpp:398
std::vector< double > tabulate_dof_coordinates() const
Definition: FunctionSpace.cpp:342
This class defines a common interface for vectors.
Definition: GenericVector.h:47
This is a wrapper for a UFC finite element (ufc::finite_element).
Definition: FiniteElement.h:35
std::vector< std::size_t > component() const
Definition: FunctionSpace.cpp:337
std::shared_ptr< FunctionSpace > sub(const std::vector< std::size_t > &component) const
Definition: FunctionSpace.h:201