Commit e76f8a18 authored by Mike Kremer's avatar Mike Kremer

Adapted documentation to match new bottom-up system.

git-svn-id: http://www.openvolumemesh.org/svnrepo/OpenVolumeMesh/trunk@170 66977474-1d4b-4f09-8fe9-267525286df2
parent d2d3162c
......@@ -65,19 +65,25 @@ following information for the respective entity type in additional caches:
\li \b Half-Edge: An (ordered) list of all incident half-faces.
\li \b Half-Face: The handle to an incident cell or none if it is a boundary half-face.
The computation of this adjacency relations is performed in linear time complexity.
Call function TopologyKernel::update_adjacencies() after the
topology of the mesh is completely initialized.
These adjacency relations are computed automatically for each affected entity
when adding/deleting it. In most cases these adjacencies are needed since many
iterators/circulators rely on them. Storing this additional information consumes
extra memory that scales linearly with the mesh's complexity.
However, in case these adjacency relations are not needed (e.g. in numerical analysis
applications, etc.), they can be disabled by calling TopologyKernel::enable_bottom_up_adjacencies()
and passing false as parameter. Also it is possible to enable bottom-up adjacencies
for single entity types, just call the following functions:
\li TopologyKernel::enable_vertex_bottom_up_adjacencies()
\li TopologyKernel::enable_edge_bottom_up_adjacencies()
\li TopologyKernel::enable_face_bottom_up_adjacencies()
\note Note that each time the topology of the mesh has changed, the bottom-up adjacencies have to be updated.
\note Note also that most of the iterators and circulators rely on these adjacency lists, so, many of them do not work unless TopologyKernel::update_adjacencies() is called.
Bottom-up adjacencies can optionally be computed on a per-entity basis.
This is useful in cases where only a subset of these adjacency relations is required
while at the same time keeping the data structure as compact as possible
allocating only a minimum of storage overhead.
\note Note that most of the iterators and circulators rely on these adjacency lists, so, many of them do not work if bottom-up adjacencies are disabled.
\section modularity Modularity - Take only what you need
There exist numerous applications for volumetric mesh data structures including
......
......@@ -28,9 +28,9 @@ for(OpenVolumeMesh::HalfEdgeIter he_it = myMesh.halfedges_begin();
\endcode
In the next example, we iterate over all incident outgoing half-edges of a given
vertex. Note that this iterator needs bottom-up adjacencies to be computed for
the mesh. Otherwise, the iterator would not be valid. See Section \ref bottom_up
for information on the bottom-up adjacencies.
vertex. Note that this iterator needs bottom-up adjacencies which are
computed automatically per default. Otherwise, the iterator would not be valid.
See Section \ref bottom_up for information on the bottom-up adjacencies.
\code
// Instantiate a polyhedral mesh
......@@ -39,9 +39,6 @@ OpenVolumeMesh::GeometricPolyhedralMeshV3f myMesh;
// Fill mesh with geometry
...
// Compute bottom-up adjacencies
myMesh.update_adjacencies();
typedef OpenVolumeMesh::VertexHandle VertexHandle;
// Get first vertex in mesh
......@@ -79,9 +76,6 @@ OpenVolumeMesh::GeometricHexahedralMeshV3d myMesh;
// Fill mesh with geometry
...
// Compute bottom-up adjacencies
myMesh.update_adjacencies();
// Get handle of first cell
OpenVolumeMesh::CellHandle ch = *(myMesh.cells_begin());
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment