Regina 7.3 Calculation Engine
Classes | Macros | Typedefs | Enumerations | Functions
Census of Triangulations

Census lookup and enumeration for triangulations of various dimensions. More...

Classes

class  regina::CensusDB
 Stores the location and description of one of Regina's in-built census databases. More...
 
class  regina::CensusHit
 Stores a single "hit" indicating that some given triangulation has been located in one of Regina's in-built census databases. More...
 
class  regina::Census
 A utility class used to search for triangulations across one or more 3-manifold census databases. More...
 
class  regina::GluingPerms< dim >
 Represents a specific set of gluing permutations to complement a particular pairwise matching of simplex facets. More...
 
class  regina::GluingPermSearcher< dim >
 A utility class used to build a census of triangulations, by searching through all possible sets of gluing permutations to match a given facet pairing. More...
 
class  regina::GluingPermSearcher< 2 >
 A utility class for searching through all possible gluing permutation sets that correspond to a given triangle edge pairing. More...
 
class  regina::GluingPermSearcher< 3 >
 A utility class for searching through all possible gluing permutation sets that correspond to a given tetrahedron face pairing. More...
 
class  regina::EulerSearcher
 A gluing permutation search class that offers a specialised search algorithm for when all vertex links must all have a given fixed Euler characteristic. More...
 
class  regina::CompactSearcher
 A gluing permutation search class that offers a specialised search algorithm for when only compact (finite) 3-manifold triangulations are required. More...
 
class  regina::ClosedPrimeMinSearcher
 A gluing permutation search class that offers a specialised search algorithm for when (i) only closed prime minimal P2-irreducible triangulations are required, and (ii) the given face pairing has order at least three. More...
 
class  regina::HyperbolicMinSearcher
 A gluing permutation search class that offers a specialised search algorithm for when only minimal ideal triangulations of cusped finite-volume hyperbolic 3-manifolds are required. More...
 
class  regina::GluingPermSearcher< 4 >
 A utility class for searching through all possible gluing permutation sets that correspond to a given pentachoron facet pairing. More...
 

Macros

#define PRUNE_HIGH_DEG_EDGE_SET   1
 Specifies whether the ClosedPrimeMinSearcher census generation code should prune on high-degree edges. More...
 

Typedefs

using regina::CensusPurge = regina::Flags< CensusPurgeFlags >
 A combination of flags for census generation. More...
 

Enumerations

enum  regina::CensusPurgeFlags {
  regina::PURGE_NONE = 0x00 , regina::PURGE_NON_MINIMAL = 0x01 , regina::PURGE_NON_PRIME = 0x02 , regina::PURGE_NON_MINIMAL_PRIME = 0x03 ,
  regina::PURGE_NON_MINIMAL_HYP = 0x09 , regina::PURGE_P2_REDUCIBLE = 0x04
}
 Represents different classes of triangulations that may be ignored by census generation algorithms. More...
 

Functions

void regina::swap (CensusDB &a, CensusDB &b) noexcept
 Swaps the contents of the given database references. More...
 
void regina::swap (CensusHit &a, CensusHit &b) noexcept
 Swaps the contents of the given census hits. More...
 
template<int dim>
void regina::swap (GluingPerms< dim > &a, GluingPerms< dim > &b) noexcept
 Swaps the contents of the given gluing permutation sets. More...
 
CensusPurge regina::operator| (CensusPurgeFlags lhs, CensusPurgeFlags rhs)
 Returns the bitwise OR of the two given flags. More...
 

Detailed Description

Census lookup and enumeration for triangulations of various dimensions.

Macro Definition Documentation

◆ PRUNE_HIGH_DEG_EDGE_SET

#define PRUNE_HIGH_DEG_EDGE_SET   1

Specifies whether the ClosedPrimeMinSearcher census generation code should prune on high-degree edges.

It is well known that a closed prime minimal P²-irreducible triangulation formed from at least three tetrahedra can never have an edge of degree one or two. Combining this with the fact that such a triangulation must always have one vertex, a simple Euler characteristic calculation shows that there must be precisely n+1 edges, where n is the number of tetrahedra.

A little arithmetic then shows that, for any k edges, the sum of their edge degrees can be no more than 3(n+k-1); otherwise one of the remaining edges will be forced to have degree one or two. This observation is the basis behind the high-degree edge pruning that this option controls.

To enable pruning on high-degree edges, set this macro to 1 (the default for Regina's main source distribution); to disable it, set it to 0.

Typedef Documentation

◆ CensusPurge

A combination of flags for census generation.

If a function requires a CensusPurge object as an argument, you can pass a single CensusPurgeFlags constant, or a combination of such constants using the bitwise OR operator, or empty braces {} to indicate no flags at all.

Enumeration Type Documentation

◆ CensusPurgeFlags

Represents different classes of triangulations that may be ignored by census generation algorithms.

Excluding a triangulation from a census is not a promise: for example, a census that uses the flag PURGE_NON_MINIMAL might include some non-minimal triangulations and exclude others.

However, including a triangulation is a promise: for example, a census that uses the flag PURGE_NON_MINIMAL will promise to include every minimal triangulations.

These flags can be combined using the bitwise OR operator. See (for example) the GluingPermSearcher<3> constructor documentation for further details on how these flags are used.

Enumerator
PURGE_NONE 

Indicates that no triangulations should be ignored.

PURGE_NON_MINIMAL 

Indicates that non-minimal triangulations may be ignored.

PURGE_NON_PRIME 

Indicates that any triangulation that is not prime (i.e., can be written as a non-trivial connected sum) and any bounded triangulation that is reducible over a disc may be ignored.

PURGE_NON_MINIMAL_PRIME 

Indicates that any triangulation that is not prime (i.e., can be written as a non-trivial connected sum), any bounded triangulation that is reducible over a disc and any triangulation that is non-minimal may be ignored.

Note that this is simply a combination of the constants PURGE_NON_MINIMAL and PURGE_NON_PRIME.

PURGE_NON_MINIMAL_HYP 

Indicates that any triangulation that is not a minimal ideal triangulation of a cusped finite-volume hyperbolic 3-manifold may be ignored.

PURGE_P2_REDUCIBLE 

Indicates that any triangulation containing an embedded two-sided projective plane may be ignored.

Function Documentation

◆ operator|()

CensusPurge regina::operator| ( CensusPurgeFlags  lhs,
CensusPurgeFlags  rhs 
)
inline

Returns the bitwise OR of the two given flags.

Parameters
lhsthe first flag to combine.
rhsthe second flag to combine.
Returns
the combination of both flags.

◆ swap() [1/3]

void regina::swap ( CensusDB a,
CensusDB b 
)
inlinenoexcept

Swaps the contents of the given database references.

This global routine simply calls CensusDB::swap(); it is provided so that CensusDB meets the C++ Swappable requirements.

Parameters
athe first database reference whose contents should be swapped.
bthe second database reference whose contents should be swapped.

◆ swap() [2/3]

void regina::swap ( CensusHit a,
CensusHit b 
)
inlinenoexcept

Swaps the contents of the given census hits.

This global routine simply calls CensusHit::swap(); it is provided so that CensusHit meets the C++ Swappable requirements.

Parameters
athe first census hit whose contents should be swapped.
bthe second census hit whose contents should be swapped.

◆ swap() [3/3]

template<int dim>
void regina::swap ( GluingPerms< dim > &  a,
GluingPerms< dim > &  b 
)
inlinenoexcept

Swaps the contents of the given gluing permutation sets.

This global routine simply calls GluingPerms<dim>::swap(); it is provided so that GluingPerms<dim> meets the C++ Swappable requirements.

Parameters
athe first matrix whose contents should be swapped.
bthe second matrix whose contents should be swapped.

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