CGAL 6.1.2 - 3D Mesh Generation: MeshCellBase_3 Concept Reference

CGAL 6.1.2 - 3D Mesh Generation

Loading...
Searching...
No Matches
List of all members
MeshCellBase_3 Concept Reference
Reference Manual » Secondary Concepts

## Definition

The concept `MeshCellBase_3` describes the requirements for the `Cell` type of the triangulation used in the 3D mesh generation process. The type `MeshCellBase_3` refines the concepts `SimplicialMeshCellBase_3` and `RegularTriangulationCellBaseWithWeightedCircumcenter_3` and must be copy constructible. The concept `MeshCellBase_3` includes a way to store and retrieve if a given cell of the triangulation is inside the domain or not and which subdomain it belongs to in case of a multi-domain.

Moreover, this concept adds four markers per cell to mark the facets of the triangulation that are surface facets, and four additional helper markers used in some operations to mark for instance the facets that have been visited.

This concept also provides storage for the centers of Delaunay surface balls. Each surface facet has a Delaunay surface ball, i. e. a circumscribing ball, centered on an input complex surface patch, and empty of triangulation vertices. In the following we call surface center of a surface facet, the center of its biggest Delaunay surface ball.

The optimizers also need this concept to provide read-write access to two `Cell_handle` called 'intrusive'.

For parallel algorithms, the functions related to facet access/modification must be concurrency-safe when several calls are made in parallel on different facets of the cell (e.g. calling `set_facet_visited(0, true)`, `set_facet_visited(2, true)` and `is_facet_visited(1)` in parallel must be safe)

Moreover, the parallel algorithms require an erase counter in each cell (see below).

Refines
  `SimplicialMeshCellBase_3`
  `RegularTriangulationCellBaseWithWeightedCircumcenter_3`

Has models
  `CGAL::Compact_mesh_cell_base_3<GT,MD,Tds>`
  `CGAL::Mesh_cell_base_3<GT,MD,Cb>`

See also
  `CGAL::make_mesh_3()`
  `MeshDomain_3`
  `MeshComplex_3InTriangulation_3`

## Types
typedef unspecified_type | Point_3
| The bare point type, required to match the `Point_3` type of the 3D triangulation traits in which the mesh is embedded.
typedef unspecified_type | Point
| The point type, required to match the `Point` type of the 3D triangulation in which the mesh is embedded.
typedef unspecified_type | Subdomain_index
| Type of indices for cells of the input complex.
typedef unspecified_type | Surface_patch_index
| Type of indices for surface patches of the input complex.
typedef unspecified_type | Index
| Type of indices to be stored at mesh vertices to characterize the lowest dimensional face of the input complex on which a possible future Steiner vertex lies.

## Operations
Subdomain_index | subdomain_index ()
| Returns the index of the input subdomain that contains the cell `cell` of the triangulation.
void | set_subdomain_index (Subdomain_index index)
| Sets the subdomain index of the cell.
bool | is_facet_on_surface (int i)
| returns `true` iff `facet(i)` is a surface facet.
Surface_patch_index | surface_patch_index (int i)
| returns `Surface_patch_index` of facet `i`.
void | set_surface_patch_index (int i, Surface_patch_index index)
| sets `Surface_patch_index` of facet `i` to `index`.
bool | is_facet_visited (int i)
| Returns `true` iff `facet(i)` has been visited.
void | set_facet_visited (int i)
| Marks `facet(i)` as visited.
void | reset_visited (int i)
| Marks `facet(i)` as non-visited.
const Point_3 & | get_facet_surface_center (int i)
| Returns a const reference to the surface center of `facet(i)`.
void | set_facet_surface_center (int i, Point_3 p)
| Sets the point `p` as the surface center of `facet(i)`.
void | set_facet_surface_center_index (int i, Index index)
| Sets the surface center index of `facet(i)` to `index`.
Index | get_facet_surface_center_index (int i)
| Returns the surface center index of `facet(i)`.
unsigned int | erase_counter () const
| Get the erase counter.
void | set_erase_counter (unsigned int c)
| Sets the erase counter.
void | increment_erase_counter ()
| Increments the erase counter.

## Internal
These functions are used internally by mesh optimizers. The class should provide storage, accessors and modificators for two `Vertex_handle` and two `Cell_handle`, and a cache value for sliverity.
void | set_sliver_value (double value)
double | sliver_value () const
bool | is_cache_valid () const
void | reset_cache_validity () const
Cell_handle | next_intrusive () const
void | set_next_intrusive (Cell_handle)
Cell_handle | previous_intrusive () const
void | set_previous_intrusive (Cell_handle)

## Member Typedef Documentation

## ◆ Index

typedef unspecified_type MeshCellBase_3::Index

Type of indices to be stored at mesh vertices to characterize the lowest dimensional face of the input complex on which a possible future Steiner vertex lies.

Must match the type `MeshDomain_3::Index`.

## ◆ Subdomain_index

typedef unspecified_type MeshCellBase_3::Subdomain_index

Type of indices for cells of the input complex.

Must match the type `MeshDomain_3::Subdomain_index`.

## ◆ Surface_patch_index

typedef unspecified_type MeshCellBase_3::Surface_patch_index

Type of indices for surface patches of the input complex.

Must match the type `MeshDomain_3::Surface_patch_index`.

## Member Function Documentation

## ◆ erase_counter()

unsigned int MeshCellBase_3::erase_counter | ( |  | ) | const

Get the erase counter.

Only required by the parallel algorithms. See `CGAL::Compact_container` for more details.

## ◆ increment_erase_counter()

void MeshCellBase_3::increment_erase_counter | ( |  | ) |

Increments the erase counter.

Only required by the parallel algorithms. See `CGAL::Compact_container` for more details.

## ◆ set_erase_counter()

void MeshCellBase_3::set_erase_counter | ( | unsigned int | c | ) |

Sets the erase counter.

Only required by the parallel algorithms. See `CGAL::Compact_container` for more details.