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

Mesh(const Mesh &mesh)

Copy constructor.

Arguments
mesh (Mesh)
Object to be copied.
explicit Mesh(std::string filename)

Create mesh from data file.

Arguments
filename (std::string)
Name of file to load.
Mesh(MPI_Comm comm, std::string filename)

Create mesh from data file.

Arguments
comm (MPI_Comm)
The MPI communicator
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.

Arguments
comm (MPI_Comm)
MPI communicator for the mesh.
local_mesh_data (LocalMeshData)
Data from which to build the mesh.
const Mesh &operator=(const Mesh &mesh)

Assignment operator

Arguments
mesh (Mesh)
Another Mesh object.
std::size_t num_vertices() const

Get number of vertices in mesh.

Returns
std::size_t
Number of vertices.
Example

Note

No example code available for this function.

std::size_t num_edges() const

Get number of edges in mesh.

Returns
std::size_t
Number of edges.
Example

Note

No example code available for this function.

std::size_t num_faces() const

Get number of faces in mesh.

Returns
std::size_t
Number of faces.
Example

Note

No example code available for this function.

std::size_t num_facets() const

Get number of facets in mesh.

Returns
std::size_t
Number of facets.
Example

Note

No example code available for this function.

std::size_t num_cells() const

Get number of cells in mesh.

Returns
std::size_t
Number of cells.
Example

Note

No example code available for this function.

std::size_t num_entities(std::size_t d) const

Get number of entities of given topological dimension.

Arguments
d (std::size_t)
Topological dimension.
Returns
std::size_t
Number of entities of topological dimension d.
Example

Note

No example code available for this function.

std::vector<double> &coordinates()

Get vertex coordinates.

Returns
std::vector<double>&
Coordinates of all vertices.
Example

Note

No example code available for this function.

const std::vector<double> &coordinates() const

Return coordinates of all vertices (const version).

const std::vector<unsigned int> &cells() const

Get cell connectivity.

Returns
std::vector<std::size_t>
Connectivity for all cells.
Example

Note

No example code available for this function.

std::size_t size(std::size_t dim) const

Get number of local entities of given topological dimension.

Arguments
dim (std::size_t)
Topological dimension.
Returns
std::size_t
Number of local entities of topological dimension d.
Example

Note

No example code available for this function.

std::size_t size_global(std::size_t dim) const

Get global number of entities of given topological dimension.

Arguments
dim (std::size_t)
Topological dimension.
Returns
std::size_t
Global number of entities of topological dimension d.
Example

Note

No example code available for this function.

MeshTopology &topology()

Get mesh topology.

Returns
MeshTopology
The topology object associated with the mesh.
const MeshTopology &topology() const

Get mesh topology (const version).

MeshGeometry &geometry()

Get mesh geometry.

Returns
MeshGeometry
The geometry object associated with the mesh.
const MeshGeometry &geometry() const

Get mesh geometry (const version).

MeshDomains &domains()

Get mesh (sub)domains.

Returns
MeshDomains
The (sub)domains associated with the mesh.
const MeshDomains &domains() const

Get mesh (sub)domains.

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.

MeshData &data()

Get mesh data.

Returns
MeshData
The mesh data object associated with the mesh.
const MeshData &data() const

Get mesh data (const version).

CellType &type()

Get mesh cell type.

Returns
CellType
The cell type object associated with the mesh.
const CellType &type() const

Get mesh cell type (const version).

std::size_t init(std::size_t dim) const

Compute entities of given topological dimension.

Arguments
dim (std::size_t)
Topological dimension.
Returns
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.

Arguments
d0 (std::size_t)
Topological dimension.
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.

Returns
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.

void translate(const Point &point)

Translate mesh according to a given vector.

Arguments
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

Arguments
angle (double)
The number of degrees (0-360) of rotation.
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

Arguments
angle (double)
The number of degrees (0-360) of rotation.
axis (std::size_t)
The coordinate axis around which to rotate the mesh.
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.

Arguments
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.

Arguments
num_iterations (std::size_t)
Number of iterations to perform smoothing, default value is 1.
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.

Arguments
sub_domain (SubDomain)
A SubDomain object.
harmonic_smoothing (bool)
Flag to turn on harmonics smoothing, default value is true.
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 CellFunction<std::size_t> named “cell colors” as mesh data which holds the colors of the mesh.

Arguments
coloring_type (std::string)
Coloring type, specifying what relation makes two cells neighbors, can be one of “vertex”, “edge” or “facet”.
Returns
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 CellFunction<std::size_t> named “cell colors” as mesh data which holds the colors of the mesh.

Arguments
coloring_type (std::vector<std::size_t>)
Coloring type given as list of topological dimensions, specifying what relation makes two mesh entities neighbors.
Returns
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.

Returns
double
The minimum cell size. The size is computed using Cell::h()
Example

Note

No example code available for this function.

double hmax() const

Compute maximum cell size in mesh, measured greatest distance between any two vertices of a cell.

Returns
double
The maximum cell size. The size is computed using Cell::h()
Example

Note

No example code available for this function.

double rmin() const

Compute minimum cell inradius.

Returns
double
The minimum of cells’ inscribed sphere radii
Example

Note

No example code available for this function.

double rmax() const

Compute maximum cell inradius.

Returns
double
The maximum of cells’ inscribed sphere radii
Example

Note

No example code available for this function.

std::size_t hash() const

Compute hash of mesh, currently based on the has of the mesh geometry and mesh topology.

Returns
std::size_t
A tree-hashed value of the coordinates over all MPI processes
std::string str(bool verbose) const

Informal string representation.

Arguments
verbose (bool)
Flag to turn on additional output.
Returns
std::string
An informal representation of the mesh.
Example

Note

No example code available for this function.

const std::vector<int> &cell_orientations() const

Return cell_orientations (const version)

Returns
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.

Arguments
global_normal (Expression)
A global normal direction to the mesh
MPI_Comm mpi_comm() const

Mesh MPI communicator