#include <nsatblocktypes.h>
Public Member Functions | |
NSatLayering (const NSatLayering &cloneMe) | |
Constructs a clone of the given block structure. | |
bool | overHorizontal () const |
Does this describe a layering over the horizontal edge of the boundary annulus, or a layering over the diagonal edge? | |
virtual NSatBlock * | clone () const |
Returns a newly created clone of this saturated block structure. | |
virtual void | adjustSFS (NSFSpace &sfs, bool reflect) const |
Adjusts the given Seifert fibred space to insert the contents of this saturated block. | |
virtual void | writeTextShort (std::ostream &out) const |
Writes this object in short text format to the given output stream. | |
virtual void | writeAbbr (std::ostream &out, bool tex=false) const |
Writes an abbreviated name or symbol for this block to the given output stream. | |
Static Public Member Functions | |
static NSatLayering * | isBlockLayering (const NSatAnnulus &annulus, TetList &avoidTets) |
Determines whether the given annulus is a boundary annulus for a block of this type (single layering). | |
Protected Member Functions | |
NSatLayering (bool overHorizontal) | |
Constructs a partially initialised block. |
This forms a degenerate one-tetrahedron solid torus that is pinched along a single meridinal curve.
The four faces of this tetrahedron form two boundary annuli, and the tetrahedron is effectively layered onto each boundary annulus. See the NLayering class notes for more discussion on layerings in general.
Although this block is degenerate (the fibres are all pinched together where the opposite edges of the tetrahedron meet), it can be used without problems as long as the entire Seifert fibred space is not formed from degenerate blocks. In other words, using such blocks is fine as long as they eventually meet a real (non-degenerate) block, which will give room for the fibres to separate so that they are no longer pinched together.
The NSatAnnulus class notes describe horizontal and diagonal edges of a saturated annulus. This block may be one of two types, according to how the tetrahedron is layered onto the boundary annuli. Either the tetrahedron can be layered over the horizontal edge of each annulus (with the fibres pinched together between the two diagonal edges), or the tetrahedron can be layered over the diagonal edge of each annulus (with the fibres pinched together between the two horizontal edges).
regina::NSatLayering::NSatLayering | ( | const NSatLayering & | cloneMe | ) | [inline] |
Constructs a clone of the given block structure.
cloneMe | the block structure to clone. |
regina::NSatLayering::NSatLayering | ( | bool | overHorizontal | ) | [inline, protected] |
Constructs a partially initialised block.
The boundary annuli will remain uninitialised, and must be initialised before this block can be used.
overHorizontal | true if this block describes a layering over the horizontal edge of the boundary annulus, or false if it describes a layering over the diagonal edge. |
virtual void regina::NSatLayering::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.
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::NSatLayering::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.
Implements regina::NSatBlock.
static NSatLayering* regina::NSatLayering::isBlockLayering | ( | const NSatAnnulus & | annulus, | |
TetList & | avoidTets | |||
) | [static] |
Determines whether the given annulus is a boundary annulus for a block of this type (single layering).
This routine is a specific case of NSatBlock::isBlock(); see that routine for further details.
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. |
null
if none was found. bool regina::NSatLayering::overHorizontal | ( | ) | const [inline] |
Does this describe a layering over the horizontal edge of the boundary annulus, or a layering over the diagonal edge?
See the NSatAnnulus class notes for definitions of horizontal and diagonal in this context.
void regina::NSatLayering::writeAbbr | ( | std::ostream & | out, | |
bool | tex = false | |||
) | const [inline, 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.
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.
void regina::NSatLayering::writeTextShort | ( | std::ostream & | out | ) | const [inline, virtual] |
Writes this object in short text format to the given output stream.
The output should fit on a single line and no newline should be written.
out | the output stream to which to write. |
Implements regina::ShareableObject.