Regina Calculation Engine
Public Types | Public Member Functions | List of all members
regina::SFSpace Class Reference

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

#include <manifold/sfs.h>

Inheritance diagram for regina::SFSpace:
regina::Manifold regina::Output< Manifold >

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)=default
 Creates a new Seifert fibred space that is a clone of the given space. More...
 
virtual ~SFSpace ()
 Destroys this Seifert fibred space. More...
 
SFSpaceoperator= (const SFSpace &cloneMe)=default
 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...
 
LensSpaceisLensSpace () 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 override
 Returns a triangulation of this 3-manifold, if such a construction has been implemented. More...
 
AbelianGrouphomology () const override
 Returns the first homology group of this 3-manifold, if such a routine has been implemented. More...
 
bool isHyperbolic () const override
 Returns whether or not this is a finite-volume hyperbolic manifold. More...
 
std::ostream & writeName (std::ostream &out) const override
 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 override
 Writes the common name of this 3-manifold in TeX format to the given output stream. More...
 
std::ostream & writeStructure (std::ostream &out) const override
 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...
 
AbelianGrouphomologyH1 () 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
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:

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