regina::SFSpace Class Reference
Standard 3-Manifolds

Represents a general Seifert fibred space, which may be orientable or non-orientable. More...

`#include <manifold/sfs.h>`

Inheritance diagram for regina::SFSpace:

## Public Types

enum | classType { o1 = 101, o2 = 102, n1 = 201, n2 = 202, n3 = 203, n4 = 204, bo1 = 301, bo2 = 302, bn1 = 401, bn2 = 402, bn3 = 403 }
| Lists the six classes `o1`, `o2`, `n1`, `n2`, `n3`, `n4` for base orbifolds without boundaries, plus five classes `bo1`, `b02`, `bn1`, `bn2`, `bn3` for base orbifolds with boundaries. More...

## Public Member Functions

| SFSpace ()
| Creates a new Seifert fibred space with base orbifold the 2-sphere and no exceptional fibres. More...
| SFSpace (classType useClass, unsigned long genus, unsigned long punctures=0, unsigned long puncturesTwisted=0, unsigned long reflectors=0, unsigned long reflectorsTwisted=0)
| Creates a new Seifert fibred space of the given class with the given base orbifold and no exceptional fibres. More...
| SFSpace (const SFSpace &cloneMe)
| Creates a new Seifert fibred space that is a clone of the given space. More...
virtual | ~SFSpace ()
| Destroys this Seifert fibred space. More...
void | operator= (const SFSpace &cloneMe)
| Modifies this Seifert fibred space to be a clone of the given space. More...
classType | baseClass () const
| Returns which of the eleven predefined classes this space belongs to. More...
unsigned long | baseGenus () const
| Returns the genus of the base orbifold. More...
bool | baseOrientable () const
| Returns whether or not the base surface is orientable. More...
bool | fibreReversing () const
| Returns whether or not this space contains any fibre-reversing paths. More...
bool | fibreNegating () const
| Returns whether or not we can negate an exceptional fibre by passing it around the interior of the base orbifold. More...
unsigned long | punctures () const
| Returns the total number of punctures in the base orbifold. More...
unsigned long | punctures (bool twisted) const
| Returns the number of punctures of the given type in the base orbifold. More...
unsigned long | reflectors () const
| Returns the total number of reflector boundary components of the base orbifold. More...
unsigned long | reflectors (bool twisted) const
| Returns the number of reflector boundary components of the given type in the base orbifold. More...
unsigned long | fibreCount () const
| Returns the number of exceptional fibres in this Seifert fibred space. More...
SFSFibre | fibre (unsigned long which) const
| Returns the requested exceptional fibre. More...
long | obstruction () const
| Returns the obstruction constant b for this Seifert fibred space. More...
void | addHandle (bool fibreReversing=false)
| Inserts a new handle into the base orbifold. More...
void | addCrosscap (bool fibreReversing=false)
| Inserts a new crosscap into the base orbifold. More...
void | addPuncture (bool twisted=false, unsigned long nPunctures=1)
| Inserts one or more new punctures into the base orbifold. More...
void | addReflector (bool twisted=false, unsigned long nReflectors=1)
| Adds one or more new reflector boundary components to the base orbifold. More...
void | insertFibre (const SFSFibre &fibre)
| Adds the given fibre to this Seifert fibred space. More...
void | insertFibre (long alpha, long beta)
| Adds the given fibre to this Seifert fibred space. More...
void | reflect ()
| Replaces this space with its mirror image. More...
void | complementAllFibres ()
| Replaces each exceptional fibre of the form (alpha, beta) with a fibre of the form (alpha, alpha - beta). More...
void | reduce (bool mayReflect=true)
| Reduces the parameters of this Seifert fibred space to a simpler form if possible, without changing the underlying fibration. More...
LensSpace * | isLensSpace () const
| Determines if this Seifert fibred space is a Lens space. More...
bool | operator== (const SFSpace &compare) const
| Determines whether this and the given structure contain precisely the same representations of precisely the same Seifert fibred spaces. More...
bool | operator!= (const SFSpace &compare) const
| Determines whether this and the given structure do not contain precisely the same representations of precisely the same Seifert fibred spaces. More...
bool | operator< (const SFSpace &compare) const
| Determines in a fairly ad-hoc fashion whether this representation of this space is "smaller" than the given representation of the given space. More...
Triangulation< 3 > * | construct () const
| Returns a triangulation of this 3-manifold, if such a construction has been implemented. More...
AbelianGroup * | homology () const
| Returns the first homology group of this 3-manifold, if such a routine has been implemented. More...
bool | isHyperbolic () const
| Returns whether or not this is a finite-volume hyperbolic manifold. More...
std::ostream & | writeName (std::ostream &out) const
| Writes the common name of this 3-manifold as a human-readable string to the given output stream. More...
std::ostream & | writeTeXName (std::ostream &out) const
| Writes the common name of this 3-manifold in TeX format to the given output stream. More...
std::ostream & | writeStructure (std::ostream &out) const
| Writes details of the structure of this 3-manifold that might not be evident from its common name to the given output stream. More...
std::string | name () const
| Returns the common name of this 3-manifold as a human-readable string. More...
std::string | TeXName () const
| Returns the common name of this 3-manifold in TeX format. More...
std::string | structure () const
| Returns details of the structure of this 3-manifold that might not be evident from its common name. More...
AbelianGroup * | homologyH1 () const
| Returns the first homology group of this 3-manifold, if such a routine has been implemented. More...
bool | operator< (const Manifold &compare) const
| Determines in a fairly ad-hoc fashion whether this representation of this 3-manifold is "smaller" than the given representation of the given 3-manifold. More...
void | writeTextShort (std::ostream &out) const
| Writes a short text representation of this object to the given output stream. More...
void | writeTextLong (std::ostream &out) const
| Writes a detailed text representation of this object to the given output stream. More...
std::string | str () const
| Returns a short text representation of this object. More...
std::string | utf8 () const
| Returns a short text representation of this object using unicode characters. More...
std::string | detail () const
| Returns a detailed text representation of this object. More...

## Detailed Description

Represents a general Seifert fibred space, which may be orientable or non-orientable.

Punctures and reflector boundaries in the base orbifold are supported.

A Seifert fibred space whose base orbifold has no punctures or reflector boundaries can be placed into one of the six classes `o1`, `o2`, `n1`, `n2`, `n3` and `n4`, as detailed on page 88 of "Seifert Manifolds", Peter Orlik, Springer-Verlag, 1972. These classes describe whether this base surface is orientable, as well as how many of its generators give fibre-reversing paths in the 3-manifold.

In the case where the base orbifold has punctures and/or reflector boundaries, we use the five simplified classes `bo1`, `bo2`, `bn1`, `bn2` and `bn3`. These classes are not standard terminology (i.e., they have been created explicitly for Regina), and generally they do not provide enough information to uniquely identify the 3-manifold. They do however identify whether or not the base orbifold is orientable, and whether or not it contains any fibre-reversing paths.

When describing punctures and reflector boundaries, a twisted boundary is one that gives a fibre-reversing path, and an untwisted boundary is one around which the direction of fibres is preserved.

Exceptional fibres are sorted first by alpha (the index) and then by beta. The obstruction constant b is stored separately, though in output routines such as name() and structure() it is merged in with the exceptional fibres. Specifically, it is merged in with the beta of the final exceptional fibre (replacing it with `beta + b.alpha`), or if there are no exceptional fibres then it is presented as a single (1,b) fibre.

The Manifold routines homology() and construct() are only implemented in some cases. The homology() routine is implemented if and only if the base orbifold has no punctures. The construct() routine is implemented only for lens spaces and Seifert fibred spaces over the 2-sphere without punctures or reflector boundaries.

Warning
  In Regina 4.2.1 and earlier, this class was named NSFS. As of Regina 4.3, this class was renamed due to significant changes of behaviour (it became more general, and also now keeps the obstruction parameter b separate). Code that was written to work with the old NSFS class should be looked at closely before being adapted to the new SFSpace class (i.e., it may require more than just substituting class names).

Todo:

  Feature (long-term): Implement recognition of more common names.

  Feature (long-term): Implement triangulation construction and homology calculation for more Seifert fibred spaces.

## Member Function Documentation

## detail()

std::string regina::Output< Manifold , false >::detail | ( |  | ) | const

inherited

Returns a detailed text representation of this object.

This text may span many lines, and should provide the user with all the information they could want. It should be human-readable, should not contain extremely long lines (which cause problems for users reading the output in a terminal), and should end with a final newline. There are no restrictions on the underlying character set.

Returns
  a detailed text representation of this object.

## str()

std::string regina::Output< Manifold , false >::str | ( |  | ) | const

inherited

Returns a short text representation of this object.

This text should be human-readable, should fit on a single line, and should not end with a newline. Where possible, it should use plain ASCII characters.

Python:\n In addition to str(), this is also used as the
  Python "stringification" function `__str__()`.

Returns
  a short text representation of this object.

## utf8()

std::string regina::Output< Manifold , false >::utf8 | ( |  | ) | const

inherited

Returns a short text representation of this object using unicode characters.

Like str(), this text should be human-readable, should fit on a single line, and should not end with a newline. In addition, it may use unicode characters to make the output more pleasant to read. This string will be encoded in UTF-8.

Returns
  a short text representation of this object.

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

- manifold/sfs.h

Copyright © 1999-2016, 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).