Regina 7.3 Calculation Engine
Public Member Functions | Public Attributes | List of all members
regina::GluingPermSearcher< 4 >::PentEdgeState Struct Reference

A structure used to track equivalence classes of pentachoron edges as the gluing permutation set is constructed. More...

#include <census/gluingpermsearcher4.h>

Public Member Functions

 PentEdgeState ()
 Constructor for a standalone pentachoron edge in an equivalence class all of its own. More...
 
void dumpData (std::ostream &out) const
 Dumps all internal data in a plain text format to the given output stream. More...
 
bool readData (std::istream &in, size_t nStates)
 Fills this state with data read from the given input stream. More...
 
 PentEdgeState (const PentEdgeState &)=delete
 
PentEdgeStateoperator= (const PentEdgeState &)=delete
 

Public Attributes

ssize_t parent
 The index of the parent object in the current tree, or -1 if this object is the root of the tree. More...
 
size_t rank
 The depth of the subtree beneath this object (where a leaf node has depth zero). More...
 
size_t bdry
 The number of boundary triangle edges in the link for this equivalence class of pentachoron edges. More...
 
char twistUpEdge
 Each pentachoron edge can be assigned an orientation pointing from the lower numbered pentachoron vertex to the higher. More...
 
char twistUpTriangle
 The identification of this object and its parent in the tree corresponds to a gluing of two triangles in the edge link. More...
 
bool hadEqualRank
 Did this tree have rank equal to its parent immediately before it was grafted beneath its parent? This information is used to maintain the ranks correctly when grafting operations are undone. More...
 
uint8_t bdryEdges
 The number of edges of the triangular piece of 4-manifold edge link that are in fact boundary edges of this link. More...
 
size_t bdryNext [2]
 If the corresponding triangular piece of 4-manifold edge link has any boundary edges, bdryNext stores the indices of the pentachoron edges that provide the boundary edges following on from either end of this boundary segment. More...
 
char bdryTwist [2]
 Describes whether the orientation of this boundary segment of the 4-manifold edge link is consistent with the orientation of the adjacent segments on either side. More...
 
ssize_t bdryNextOld [2]
 Stores a snapshot of the values in the bdryNext array from the last point in the search when bdryEdges was precisely two. More...
 
char bdryTwistOld [2]
 Stores a snapshot of the values in the bdryTwist array from the last point in the search when bdryEdges was precisely two. More...
 

Detailed Description

A structure used to track equivalence classes of pentachoron edges as the gluing permutation set is constructed.

Two edges are considered equivalent if they are identified within the triangulation.

Pentachoron edges are indexed linearly by pentachoron and then edge number. Specifically, edge e (0..9) of pentachoron p (0..nPents-1) has index 10p+e.

Each equivalence class of edges corresponds to a tree of PentEdgeState objects, arranged to form a modified union-find structure.

Note that a single pentachoron edge (as described by this structure) provides a single triangular piece of the overall edge link. This triangle piece is referred to in several of the data members below.

Constructor & Destructor Documentation

◆ PentEdgeState()

regina::GluingPermSearcher< 4 >::PentEdgeState::PentEdgeState ( )
inline

Constructor for a standalone pentachoron edge in an equivalence class all of its own.

Note that the edge link will be a single triangle with three boundary edges.

Member Function Documentation

◆ dumpData()

void regina::GluingPermSearcher< 4 >::PentEdgeState::dumpData ( std::ostream &  out) const

Dumps all internal data in a plain text format to the given output stream.

This state can be recreated from this text data by calling readData().

This routine may be useful for transferring objects from one processor to another.

Warning
The data format is liable to change between Regina releases. Data in this format should be used on a short-term temporary basis only.
Parameters
outthe output stream to which the data should be written.

◆ readData()

bool regina::GluingPermSearcher< 4 >::PentEdgeState::readData ( std::istream &  in,
size_t  nStates 
)

Fills this state with data read from the given input stream.

This routine reads data in the format written by dumpData().

Warning
The data format is liable to change between Regina releases. Data in this format should be used on a short-term temporary basis only.

This routine does test for bad input data, but it does not test for end-of-file.

Parameters
inthe input stream from which to read.
nStatesthe total number of edge states under consideration (this must be ten times the number of tetrahedra).
Returns
false if any errors were encountered during reading, or true otherwise.

Member Data Documentation

◆ bdry

size_t regina::GluingPermSearcher< 4 >::PentEdgeState::bdry

The number of boundary triangle edges in the link for this equivalence class of pentachoron edges.

Any pentachoron facet whose gluing permutation has not yet been decided is treated as a boundary facet. This value is only maintained correctly for the root of the corresponding object tree; other objects in the tree will have older values to facilitate backtracking.

◆ bdryEdges

uint8_t regina::GluingPermSearcher< 4 >::PentEdgeState::bdryEdges

The number of edges of the triangular piece of 4-manifold edge link that are in fact boundary edges of this link.

Equivalently, this measures the number of facets of this pentachoron meeting this pentachoron edge that are not yet joined to their partner facets. This always takes the value 0, 1, 2 or 3.

◆ bdryNext

size_t regina::GluingPermSearcher< 4 >::PentEdgeState::bdryNext[2]

If the corresponding triangular piece of 4-manifold edge link has any boundary edges, bdryNext stores the indices of the pentachoron edges that provide the boundary edges following on from either end of this boundary segment.

Note that in most cases (see below) this is not the present pentachoron edge. For instance, if this pentachoron edge provides two boundary edges for the edge link, then this array describes the boundary before the first edge and after the second.

The boundary segment described by bdryNext[1] follows on from this segment in the direction described by the edgeLinkNextFacet array. The boundary segment in the other direction is described by bdryNext[0].

If the 4-manifold edge link is just this one triangle (i.e., all three facets of this pentachoron surrounding this edge are boundary facets, or one is a boundary and the other two are joined together), then both elements of bdryNext refer to this pentachoron edge itself. These are the only situations in which bdryNext refers back to this pentachoron edge.

If the triangle is internal to the 4-manifold edge link (i.e., bdryEdges is zero), then this array maintains the last values it had when there was at least one boundary edge earlier in the search.

Each element of this array lies between 0 and 10p-1 inclusive, where p is the total number of pentachora.

◆ bdryNextOld

ssize_t regina::GluingPermSearcher< 4 >::PentEdgeState::bdryNextOld[2]

Stores a snapshot of the values in the bdryNext array from the last point in the search when bdryEdges was precisely two.

If bdryEdges is still two or three, then this array is undefined.

◆ bdryTwist

char regina::GluingPermSearcher< 4 >::PentEdgeState::bdryTwist[2]

Describes whether the orientation of this boundary segment of the 4-manifold edge link is consistent with the orientation of the adjacent segments on either side.

See bdryNext for further discussion of boundary segments. The bdryNext array defines an orientation for this section of 4-manifold edge link, pointing from the end described by bdryNext[0] to the end described by bdryNext[1].

For each i, the value bdryTwist[i] is 0 if the orientation of the adjacent segment described by bdryNext[i] is the same as this segment (as defined by the bdryNext values stored with the adjacent pentachoron edge), or 1 if the orientations differ.

If the triangle supplied by this pentachoron edge is internal to the edge link, this array maintains the last values it had when there was at least one boundary edge earlier in the search (just like the bdryNext array).

◆ bdryTwistOld

char regina::GluingPermSearcher< 4 >::PentEdgeState::bdryTwistOld[2]

Stores a snapshot of the values in the bdryTwist array from the last point in the search when bdryEdges was precisely two.

If bdryEdges is still two or three, then this array is undefined.

◆ hadEqualRank

bool regina::GluingPermSearcher< 4 >::PentEdgeState::hadEqualRank

Did this tree have rank equal to its parent immediately before it was grafted beneath its parent? This information is used to maintain the ranks correctly when grafting operations are undone.

If this object is still the root of its tree, this value is set to false.

◆ parent

ssize_t regina::GluingPermSearcher< 4 >::PentEdgeState::parent

The index of the parent object in the current tree, or -1 if this object is the root of the tree.

◆ rank

size_t regina::GluingPermSearcher< 4 >::PentEdgeState::rank

The depth of the subtree beneath this object (where a leaf node has depth zero).

◆ twistUpEdge

char regina::GluingPermSearcher< 4 >::PentEdgeState::twistUpEdge

Each pentachoron edge can be assigned an orientation pointing from the lower numbered pentachoron vertex to the higher.

The parameter twistUpEdge is 0 if the identification of this object and its parent in the tree preserves this orientation, or 1 if it does not. If this object has no parent, the value of twistUpEdge is undefined.

◆ twistUpTriangle

char regina::GluingPermSearcher< 4 >::PentEdgeState::twistUpTriangle

The identification of this object and its parent in the tree corresponds to a gluing of two triangles in the edge link.

Each of these triangles in the edge link can be labelled with its own vertices 0, 1 and 2 and thereby be assigned a clockwise or anticlockwise orientation.

The parameter twistUpTriangle is 0 if these two triangles in the edge link are joined in a way that preserves orientation, or 1 if the gluing does not preserve orientation.

If this object has no parent, the value of twistUpTriangle is undefined.


The documentation for this struct was generated from the following file:

Copyright © 1999-2023, The Regina development team
This software is released under the GNU General Public License, with some additional permissions; see the source code for details.
For further information, or to submit a bug or other problem, please contact Ben Burton (bab@maths.uq.edu.au).