regina::NSatLST Class Reference
Standard Triangulations and Subcomplexes

A saturated block that is a layered solid torus. More...

`#include <subcomplex/nsatblocktypes.h>`

Inheritance diagram for regina::NSatLST:

## Public Member Functions

| NSatLST (const NSatLST &cloneMe)
| Constructs a clone of the given block structure. More...
| ~NSatLST ()
| Destroys this structure and its internal components. More...
const NLayeredSolidTorus * | lst () const
| Returns details of the layered solid torus that this block represents. More...
NPerm4 | roles () const
| Describes how the layered solid torus is attached to the boundary annulus. More...
virtual NSatBlock * | clone () const
| Returns a newly created clone of this saturated block structure. More...
virtual void | adjustSFS (NSFSpace &sfs, bool reflect) const
| Adjusts the given Seifert fibred space to insert the contents of this saturated block. More...
virtual void | transform (const NTriangulation *originalTri, const NIsomorphism *iso, NTriangulation *newTri)
| Adjusts the structure of this block according to the given isomorphism between triangulations. More...
virtual void | writeTextShort (std::ostream &out) const
| Writes this object in short text format to the given output stream. More...
virtual void | writeAbbr (std::ostream &out, bool tex=false) const
| Writes an abbreviated name or symbol for this block to the given output stream. More...
Public Member Functions inherited from regina::NSatBlock
| NSatBlock (const NSatBlock &cloneMe)
| Creates a new clone of the given block. More...
| ~NSatBlock ()
| Destroys all internal arrays. More...
unsigned | nAnnuli () const
| Returns the number of annuli on the boundary of this saturated block. More...
const NSatAnnulus & | annulus (unsigned which) const
| Returns details of the requested annulus on the boundary of this saturated block. More...
bool | twistedBoundary () const
| Is the ring of boundary annuli twisted to form a long Mobius strip? More...
bool | hasAdjacentBlock (unsigned whichAnnulus) const
| Returns whether there is another saturated block listed as being adjacent to the given boundary annulus of this block. More...
NSatBlock * | adjacentBlock (unsigned whichAnnulus) const
| Returns the saturated block listed as being adjacent to the given boundary annulus of this block. More...
unsigned | adjacentAnnulus (unsigned whichAnnulus) const
| Returns which specific annulus of the adjacent block is listed as being adjacent to the given boundary annulus of this block. More...
bool | adjacentReflected (unsigned whichAnnulus) const
| Returns whether the adjacency along the given boundary annulus of this block is reflected. More...
bool | adjacentBackwards (unsigned whichAnnulus) const
| Returns whether the adjacency along the given boundary annulus of this block is backwards. More...
void | setAdjacent (unsigned whichAnnulus, NSatBlock *adjBlock, unsigned adjAnnulus, bool adjReflected, bool adjBackwards)
| Lists the given saturated block as being adjacent to the given boundary annulus of this block. More...
void | nextBoundaryAnnulus (unsigned thisAnnulus, NSatBlock *&nextBlock, unsigned &nextAnnulus, bool &refVert, bool &refHoriz, bool followPrev)
| Finds the next (or previous) boundary annulus around from this, treating all adjacent blocks as part of a single large saturated region. More...
std::string | getAbbr (bool tex=false) const
| Returns an abbreviated name or symbol for this block. More...
bool | operator< (const NSatBlock &compare) const
| Implements a consistent ordering of saturated blocks. More...
Public Member Functions inherited from regina::ShareableObject
| ShareableObject ()
| Default constructor that does nothing. More...
virtual | ~ShareableObject ()
| Default destructor that does nothing. More...
virtual void | writeTextLong (std::ostream &out) const
| Writes this object in long text format to the given output stream. More...
std::string | str () const
| Returns the output from writeTextShort() as a string. More...
std::string | toString () const
| A deprecated alias for str(), which returns the output from writeTextShort() as a string. More...
std::string | detail () const
| Returns the output from writeTextLong() as a string. More...
std::string | toStringLong () const
| A deprecated alias for detail(), which returns the output from writeTextLong() as a string. More...

## Static Public Member Functions

static NSatLST * | isBlockLST (const NSatAnnulus &annulus, TetList &avoidTets)
| Determines whether the given annulus is a boundary annulus for a block of this type (layered solid torus). More...
Static Public Member Functions inherited from regina::NSatBlock
static NSatBlock * | isBlock (const NSatAnnulus &annulus, TetList &avoidTets)
| Determines whether the given annulus is in fact a boundary annulus for a recognised type of saturated block. More...

## Additional Inherited Members

Public Types inherited from regina::NSatBlock
typedef std::set< NTetrahedron * > | TetList
| The data structure used to store a list of tetrahedra that should not be examined by isBlock(). More...
Protected Member Functions inherited from regina::NSatBlock
| NSatBlock (unsigned nAnnuli, bool twistedBoundary=false)
| Constructor for a block with the given number of annuli on the boundary. More...
Protected Member Functions inherited from regina::boost::noncopyable
| noncopyable ()
| A constructor which does nothing. More...
| ~noncopyable ()
| A destructor which does nothing. More...
Static Protected Member Functions inherited from regina::NSatBlock
static bool | isBad (NTetrahedron *t, const TetList &list)
| Determines whether the given tetrahedron is contained within the given list. More...
template<class List >
static bool | isBad (NTetrahedron *t, const List &list)
| Determines whether the given tetrahedron is contained within the given list. More...
static bool | notUnique (NTetrahedron *test)
| Determines whether the given tetrahedron pointer is null. More...
static bool | notUnique (NTetrahedron *test, NTetrahedron *other1)
| Determines whether the given tetrahedron pointer is null or equal to another from the given list. More...
static bool | notUnique (NTetrahedron *test, NTetrahedron *other1, NTetrahedron *other2)
| Determines whether the given tetrahedron pointer is null or equal to another from the given list. More...
static bool | notUnique (NTetrahedron *test, NTetrahedron *other1, NTetrahedron *other2, NTetrahedron *other3)
| Determines whether the given tetrahedron pointer is null or equal to another from the given list. More...
static bool | notUnique (NTetrahedron *test, NTetrahedron *other1, NTetrahedron *other2, NTetrahedron *other3, NTetrahedron *other4)
| Determines whether the given tetrahedron pointer is null or equal to another from the given list. More...
Protected Attributes inherited from regina::NSatBlock
unsigned | nAnnuli_
| The number of boundary annuli. More...
NSatAnnulus * | annulus_
| Details of each boundary annulus, as seen from the inside of this saturated block. More...
bool | twistedBoundary_
| Is the ring of boundary annuli twisted to form a Mobius band? More...
NSatBlock ** | adjBlock_
| The saturated block joined to each boundary annulus; this may be null if there is no adjacency or if this information is not known. More...
unsigned * | adjAnnulus_
| Describes which specific annulus of the adjacent saturated block is joined to each boundary annulus of this block. More...
bool * | adjReflected_
| Describes whether the adjacency for each boundary annulus is reflected (see the class notes above). More...
bool * | adjBackwards_
| Describes whether the adjacency for each boundary annulus is backwards (see the class notes above). More...

## Detailed Description

A saturated block that is a layered solid torus.

See the NLayeredSolidTorus class for details.

The three boundary edges of the layered solid torus are attached to the vertical, horizontal and diagonal edges of the boundary annulus; see the NSatAnnulus class notes for details on precisely what vertical, horizontal and diagonal mean.

## Constructor & Destructor Documentation

regina::NSatLST::NSatLST | ( | const NSatLST & | cloneMe | ) |

Constructs a clone of the given block structure.

Parameters

  cloneMe | the block structure to clone.

regina::NSatLST::~NSatLST | ( |  | ) |

Destroys this structure and its internal components.

## Member Function Documentation

virtual void regina::NSatLST::adjustSFS | ( | NSFSpace & | sfs,
|  | bool | reflect
| ) |  | const

virtual

Adjusts the given Seifert fibred space to insert the contents of this saturated block.

In particular, the space should be adjusted as though an ordinary solid torus (base orbifold a disc, no twists or exceptional fibres) had been replaced by this block. This description does not make sense for blocks with twisted boundary; the twisted case is discussed below.

If the argument reflect is `true`, it should be assumed that this saturated block is being reflected before being inserted into the larger Seifert fibred space. That is, any twists or exceptional fibres should be negated before being added.

Regarding the signs of exceptional fibres: Consider a saturated block containing a solid torus whose meridinal curve runs p times horizontally around the boundary in order through annuli 0,1,... and follows the fibres q times from bottom to top (as depicted in the diagram in the NSatBlock class notes). Then this saturated block adds a positive (p, q) fibre to the underlying Seifert fibred space.

If the ring of saturated annuli bounding this block is twisted then the situation becomes more complex. It can be proven that such a block must contain a twisted reflector boundary in the base orbifold (use Z_2 homology with fibre-reversing paths to show that the base orbifold must contain another twisted boundary component, and then recall that real boundaries are not allowed inside blocks).

In this twisted boundary case, it should be assumed that the twisted reflector boundary is already stored in the given Seifert fibred space. This routine should make any further changes that are required (there may well be none). That is, the space should be adjusted as though a trivial Seifert fibred space over the annulus with one twisted reflector boundary (and one twisted puncture corresponding to the block boundary) had been replaced by this block. In particular, this routine should not add the reflector boundary itself.

Parameters

  sfs | the Seifert fibred space to adjust.
  reflect | `true` if this block is to be reflected, or `false` if it should be inserted directly.

Implements regina::NSatBlock.

NSatBlock * regina::NSatLST::clone | ( |  | ) | const

inline virtual

Returns a newly created clone of this saturated block structure.

A clone of the correct subclass of NSatBlock will be returned. For this reason, each subclass of NSatBlock must implement this routine.

Returns
  a new clone of this block.

Implements regina::NSatBlock.

static NSatLST* regina::NSatLST::isBlockLST | ( | const NSatAnnulus & | annulus,
|  | TetList & | avoidTets
| ) |  |

static

Determines whether the given annulus is a boundary annulus for a block of this type (layered solid torus).

This routine is a specific case of NSatBlock::isBlock(); see that routine for further details.

Parameters

  annulus | the proposed boundary annulus that should form part of the new saturated block.
  avoidTets | the list of tetrahedra that should not be considered, and to which any new tetrahedra will be added.

Returns
  details of the saturated block if one was found, or `null` if none was found.

const NLayeredSolidTorus * regina::NSatLST::lst | ( |  | ) | const

inline

Returns details of the layered solid torus that this block represents.

Returns
  details of the layered solid torus.

NPerm4 regina::NSatLST::roles | ( |  | ) | const

inline

Describes how the layered solid torus is attached to the boundary annulus.

The NLayeredSolidTorus class notes describe top-level edge groups 0, 1 and 2 for a layered solid torus. On the other hand, the NSatAnnulus class notes define vertical, horizontal and diagonal edges on the boundary annulus.

Suppose that the permutation returned by this routine is r. This indicates that:

- edge group r[0] is attached to the vertical annulus edges;
- edge group r[1] is attached to the horizontal annulus edges;
- edge group r[2] is attached to the diagonal annulus edges.

The image r[3] will always be 3.

Returns
  a description of how the layered solid torus is attached to the boundary annulus.

virtual void regina::NSatLST::transform | ( | const NTriangulation * | originalTri,
|  | const NIsomorphism * | iso,
|  | NTriangulation * | newTri
| ) |  |

virtual

Adjusts the structure of this block according to the given isomorphism between triangulations.

Any triangulation-specific information will be transformed accordingly (for instance, the routine NSatAnnulus::transform() will be called for each boundary annulus).

Information regarding adjacent blocks will not be changed. Only structural information for this particular block will be updated.

The given isomorphism must describe a mapping from originalTri to newTri, and this block must currently refer to tetrahedra in originalTri. After this routine is called the block will instead refer to the corresponding tetrahedra in newTri (with changes in vertex/face numbering also accounted for).

Precondition
  This block currently refers to tetrahedra in originalTri, and iso describes a mapping from originalTri to newTri.

Warning
  Any subclasses of NSatBlock that store additional triangulation-specific information will need to override this routine. When doing so, be sure to call NSatBlock::transform() so that the generic changes defined here will still take place.

Parameters

  originalTri | the triangulation currently used by this saturated block.
  iso | the mapping from originalTri to newTri.
  newTri | the triangulation to be used by the updated block structure.

Reimplemented from regina::NSatBlock.

virtual void regina::NSatLST::writeAbbr | ( | std::ostream & | out,
|  | bool | tex = `false`
| ) |  | const

virtual

Writes an abbreviated name or symbol for this block to the given output stream.

This name should reflect the particular block type, but need not provide thorough details.

The output should be no more than a handful of characters long, and no newline should be written. In TeX mode, no leading or trailing dollar signs should be written.

Python:
  The parameter out does not exist; standard output will be used.

Parameters

  out | the output stream to which to write.
  tex | `true` if the output should be formatted for TeX, or `false` if it should be in plain text format.

Implements regina::NSatBlock.

virtual void regina::NSatLST::writeTextShort | ( | std::ostream & | out | ) | const

virtual

Writes this object in short text format to the given output stream.

The output should be human-readable, should fit on a single line, and should not end with a newline.

Python:
  The parameter out does not exist; standard output will be used.

Parameters

  out | the output stream to which to write.

Implements regina::ShareableObject.

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

- subcomplex/nsatblocktypes.h

Copyright © 1999-2013, 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@debian.org).