Mesh.h¶
Note
The documentation on this page was automatically extracted from the DOLFIN C++ code and may need to be edited or expanded.
-
class
Mesh
¶ Parent class(es)
A
Mesh
consists of a set of connected and numbered mesh entities.Both the representation and the interface are dimension-independent, but a concrete interface is also provided for standard named mesh entities:
Entity | Dimension | Codimension |—— | ——— | ———— |Vertex | 0 | |Edge | 1 | |Face | 2 | |Facet | | 1 |Cell | | 0 |When working with mesh iterators, all entities and connectivity are precomputed automatically the first time an iterator is created over any given topological dimension or connectivity.
Note that for efficiency, only entities of dimension zero (vertices) and entities of the maximal dimension (cells) exist when creating a
Mesh
. Other entities must be explicitly created by calling init(). For example, all edges in a mesh may be created by a call to mesh.init(1). Similarly, connectivities such as all edges connected to a given vertex must also be explicitly created (in this case by a call to mesh.init(0, 1)).-
Mesh
()¶ Create empty mesh
-
Mesh
(MPI_Comm comm)¶ Create empty mesh
-
explicit
Mesh
(std::string filename)¶ Create mesh from data file.
- @param filename (std::string)
- Name of file to load.
-
Mesh
(MPI_Comm comm, std::string filename)¶ Create mesh from data file.
- @param comm (MPI_Comm)
- The MPI communicator
- @param filename (std::string)
- Name of file to load.
-
Mesh
(MPI_Comm comm, LocalMeshData &local_mesh_data)¶ Create a distributed mesh from local (per process) data.
- @param comm (MPI_Comm)
- MPI communicator for the mesh.
- @param local_mesh_data (LocalMeshData)
- Data from which to build the mesh.
-
const Mesh &
operator=
(const Mesh &mesh)¶ Assignment operator
- @param mesh (Mesh)
- Another Mesh object.
-
std::size_t
num_vertices
() const¶ Get number of vertices in mesh.
- @return std::size_t
- Number of vertices.
-
std::size_t
num_edges
() const¶ Get number of edges in mesh.
- @return std::size_t
- Number of edges.
-
std::size_t
num_faces
() const¶ Get number of faces in mesh.
- @return std::size_t
- Number of faces.
-
std::size_t
num_facets
() const¶ Get number of facets in mesh.
- @return std::size_t
- Number of facets.
-
std::size_t
num_cells
() const¶ Get number of cells in mesh.
- @return std::size_t
- Number of cells.
-
std::size_t
num_entities
(std::size_t d) const¶ Get number of entities of given topological dimension.
- @param d (std::size_t)
- Topological dimension.
- @return std::size_t
- Number of entities of topological dimension d.
-
std::vector<double> &
coordinates
()¶ Get vertex coordinates.
- @return std::vector<double>&
- Coordinates of all vertices.
-
const std::vector<double> &
coordinates
() const¶ Return coordinates of all vertices (const version).
- @return std::vector<double>&
- Coordinates of all vertices.
-
const std::vector<unsigned int> &
cells
() const¶ Get cell connectivity.
- @return std::vector<unsigned int>&
- Connectivity for all cells.
-
std::size_t
num_entities_global
(std::size_t dim) const¶ Get global number of entities of given topological dimension.
- @param dim (std::size_t)
- Topological dimension.
- @return std::size_t
- Global number of entities of topological dimension d.
-
MeshTopology &
topology
()¶ Get mesh topology.
- @return MeshTopology
- The topology object associated with the mesh.
-
const MeshTopology &
topology
() const¶ Get mesh topology (const version).
- @return MeshTopology
- The topology object associated with the mesh.
-
MeshGeometry &
geometry
()¶ Get mesh geometry.
- @return MeshGeometry
- The geometry object associated with the mesh.
-
const MeshGeometry &
geometry
() const¶ Get mesh geometry (const version).
- @return MeshGeometry
- The geometry object associated with the mesh.
-
MeshDomains &
domains
()¶ Get mesh (sub)domains.
- @return MeshDomains
- The (sub)domains associated with the mesh.
-
const MeshDomains &
domains
() const¶ Get mesh (sub)domains (const).
- @return MeshDomains
- The (sub)domains associated with the mesh.
-
std::shared_ptr<BoundingBoxTree>
bounding_box_tree
() const¶ Get bounding box tree for mesh. The bounding box tree is initialized and built upon the first call to this function. The bounding box tree can be used to compute collisions between the mesh and other objects. It is the responsibility of the caller to use (and possibly rebuild) the tree. It is stored as a (mutable) member of the mesh to enable sharing of the bounding box tree data structure.
@return std::shared_ptr<BoundingBoxTree>
-
const MeshData &
data
() const¶ Get mesh data (const version). @return MeshData&
The mesh data object associated with the mesh.
-
CellType &
type
()¶ Get mesh cell type.
- @return CellType&
- The cell type object associated with the mesh.
-
std::size_t
init
(std::size_t dim) const¶ Compute entities of given topological dimension.
- @param dim (std::size_t)
- Topological dimension.
- @return std::size_t
- Number of created entities.
-
void
init
(std::size_t d0, std::size_t d1) const¶ Compute connectivity between given pair of dimensions.
- @param d0 (std::size_t)
- Topological dimension.
- @param d1 (std::size_t)
- Topological dimension.
-
void
init
() const¶ Compute all entities and connectivity.
-
void
init_global
(std::size_t dim) const¶ Compute global indices for entity dimension dim
-
void
clean
()¶ Clean out all auxiliary topology data. This clears all topological data, except the connectivity between cells and vertices.
-
void
order
()¶ Order all mesh entities.
See also: UFC documentation (put link here!)
-
bool
ordered
() const¶ Check if mesh is ordered according to the UFC numbering convention.
- @return bool
- The return values is true iff the mesh is ordered.
-
Mesh
renumber_by_color
() const¶ Renumber mesh entities by coloring. This function is currently restricted to renumbering by cell coloring. The cells (cell-vertex connectivity) and the coordinates of the mesh are renumbered to improve the locality within each color. It is assumed that the mesh has already been colored and that only cell-vertex connectivity exists as part of the mesh. @return Mesh
-
void
scale
(double factor)¶ Scale mesh coordinates with given factor.
- Arguments
- factor (double)
- The factor defining the scaling.
-
void
translate
(const Point &point)¶ Translate mesh according to a given vector.
- @param point (Point)
- The vector defining the translation.
-
void
rotate
(double angle, std::size_t axis = 2)¶ Rotate mesh around a coordinate axis through center of mass of all mesh vertices
- @param angle (double)
- The number of degrees (0-360) of rotation.
- @param axis (std::size_t)
- The coordinate axis around which to rotate the mesh.
-
void
rotate
(double angle, std::size_t axis, const Point &point)¶ Rotate mesh around a coordinate axis through a given point
- @param angle (double)
- The number of degrees (0-360) of rotation.
- @param axis (std::size_t)
- The coordinate axis around which to rotate the mesh.
- @param point (
Point
) - The point around which to rotate the mesh.
-
void
smooth
(std::size_t num_iterations = 1)¶ Smooth internal vertices of mesh by local averaging.
- @param num_iterations (std::size_t)
- Number of iterations to perform smoothing, default value is 1.
-
void
smooth_boundary
(std::size_t num_iterations = 1, bool harmonic_smoothing = true)¶ Smooth boundary vertices of mesh by local averaging.
- @param num_iterations (std::size_t)
- Number of iterations to perform smoothing, default value is 1.
- @param harmonic_smoothing (bool)
- Flag to turn on harmonics smoothing, default value is true.
-
void
snap_boundary
(const SubDomain &sub_domain, bool harmonic_smoothing = true)¶ Snap boundary vertices of mesh to match given sub domain.
-
const std::vector<std::size_t> &
color
(std::string coloring_type) const¶ Color the cells of the mesh such that no two neighboring cells share the same color. A colored mesh keeps a MeshFunction<std::size_t> named “cell colors” as mesh data which holds the colors of the mesh.
- @param coloring_type (std::string)
- Coloring type, specifying what relation makes two cells neighbors, can be one of “vertex”, “edge” or “facet”.
- @return std::vector<std::size_t>&
- The colors as a mesh function over the cells of the mesh.
-
const std::vector<std::size_t> &
color
(std::vector<std::size_t> coloring_type) const¶ Color the cells of the mesh such that no two neighboring cells share the same color. A colored mesh keeps a MeshFunction<std::size_t> named “cell colors” as mesh data which holds the colors of the mesh.
- @param coloring_type (std::vector<std::size_t>&)
- Coloring type given as list of topological dimensions, specifying what relation makes two mesh entities neighbors.
- @return std::vector<std::size_t>&
- The colors as a mesh function over entities of the mesh.
-
double
hmin
() const¶ Compute minimum cell size in mesh, measured greatest distance between any two vertices of a cell.
- @return double
- The minimum cell size. The size is computed using Cell::h()
-
double
hmax
() const¶ Compute maximum cell size in mesh, measured greatest distance between any two vertices of a cell.
- @return double
- The maximum cell size. The size is computed using Cell::h()
-
double
rmin
() const¶ Compute minimum cell inradius.
- @return double
- The minimum of cells’ inscribed sphere radii
-
double
rmax
() const¶ Compute maximum cell inradius.
- @return double
- The maximum of cells’ inscribed sphere radii
-
std::size_t
hash
() const¶ Compute hash of mesh, currently based on the has of the mesh geometry and mesh topology.
- @return std::size_t
- A tree-hashed value of the coordinates over all MPI processes
-
std::string
str
(bool verbose) const¶ Informal string representation.
- @param verbose (bool)
- Flag to turn on additional output.
- @return std::string
- An informal representation of the mesh.
-
const std::vector<int> &
cell_orientations
() const¶ Return cell_orientations (const version)
@return std::vector<int>
Map from cell index to orientation of cell. Is empty if cell orientations have not been computed.
-
void
init_cell_orientations
(const Expression &global_normal)¶ Compute and initialize cell_orientations relative to a given global outward direction/normal/orientation. Only defined if mesh is orientable.
- @param global_normal (Expression)
- A global normal direction to the mesh
-
MPI_Comm
mpi_comm
() const¶ Mesh MPI communicator @return MPI_Comm
-
std::string
ghost_mode
() const¶ Ghost mode used for partitioning. Possible values are same as parameters[“ghost_mode”]. WARNING: the interface may change in future without deprecation; the method is now intended for internal library use.
-