Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Namespace Members | Class Members | File Members | Related Pages

regina::NSFS Class Reference
[Standard 3-Manifolds]

Represents a general orientable Seifert fibred space. More...

#include <nsfs.h>

Inheritance diagram for regina::NSFS:

regina::NManifold regina::ShareableObject regina::boost::noncopyable List of all members.

Public Member Functions

 NSFS ()
 Creates a new orientable Seifert fibred space with orbit manifold the sphere and no exceptional fibres.

 NSFS (unsigned long newOrbitGenus, bool newOrbitOrientable, unsigned long newOrbitPunctures=0)
 Creates a new orientable Seifert fibred space with the given orbit manifold and no exceptional fibres.

 NSFS (const NSFS &cloneMe)
 Creates a new orientable Seifert fibred space that is a clone of the given space.

virtual ~NSFS ()
 Destroys this Seifert fibred space.

void operator= (const NSFS &cloneMe)
 Modifies this Seifert fibred space to be a clone of the given space.

unsigned long getOrbitGenus () const
 Returns the genus of the orbit manifold.

bool isOrbitOrientable () const
 Returns whether or not the orbit manifold is orientable.

unsigned long getOrbitPunctures () const
 Returns the number of boundary components of the orbit manifold.

unsigned long getFibreCount () const
 Returns the number of exceptional fibres required to describe this Seifert fibred space.

NExceptionalFibre getFibre (unsigned long which) const
 Returns the requested exceptional fibre.

void insertFibre (const NExceptionalFibre &fibre)
 Adds the given fibre to this Seifert fibred space.

void insertFibre (long alpha, long beta)
 Adds the given fibre to this Seifert fibred space.

void reduce ()
 Reduces the parameters of this Seifert fibred space to a simpler form if possible, without changing the orbit manifold or the fibres.

NLensSpaceisLensSpace () const
 Determines if this Seifert fibred space is a Lens space.

NTriangulationconstruct () const
 Returns a triangulation of this 3-manifold, if such a construction has been implemented.

NAbelianGroupgetHomologyH1 () const
 Returns the first homology group of this 3-manifold, if such a routine has been implemented.

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.

std::ostream & writeTeXName (std::ostream &out) const
 Writes the common name of this 3-manifold in TeX format to the given output stream.

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.


Detailed Description

Represents a general orientable Seifert fibred space.

When queried, this class will return the list of exceptional fibres in standard form. This is a form similar to that used by Matveev and satisfies the following properties.

There will be no fibres of index 1; these will instead be merged with other exceptional fibres. If there are no exceptional fibres, all fibres of index 1 will be merged into a single (1,k) fibre which will be presented if it is non-trivial (i.e., k is non-zero).

The exceptional fibres will be sorted as described by NExceptionalFibre::operator<. All fibres except for the last will have NExceptionalFibre::beta between 0 and NExceptionalFibre::alpha-1 inclusive.

The NManifold routine getHomologyH1() is implemented for all instances of this class, whereas the NManifold routine construct() is only implemented for a restricted class of Seifert fibred spaces.

Todo:
Implement recognition of more common names.

Implement triangulation construction for more Seifert fibred spaces.


Constructor & Destructor Documentation

regina::NSFS::NSFS  )  [inline]
 

Creates a new orientable Seifert fibred space with orbit manifold the sphere and no exceptional fibres.

regina::NSFS::NSFS unsigned long  newOrbitGenus,
bool  newOrbitOrientable,
unsigned long  newOrbitPunctures = 0
[inline]
 

Creates a new orientable Seifert fibred space with the given orbit manifold and no exceptional fibres.

Parameters:
newOrbitGenus the genus of the orbit manifold (the number of tori or projective planes that it contains).
newOrbitOrientable true if and only if the orbit manifold is orientable.
newOrbitPunctures the number of boundary components of the orbit manifold.

regina::NSFS::NSFS const NSFS cloneMe  )  [inline]
 

Creates a new orientable Seifert fibred space that is a clone of the given space.

Parameters:
cloneMe the Seifert fibred space to clone.

regina::NSFS::~NSFS  )  [inline, virtual]
 

Destroys this Seifert fibred space.


Member Function Documentation

NTriangulation* regina::NSFS::construct  )  const [virtual]
 

Returns a triangulation of this 3-manifold, if such a construction has been implemented.

If no construction routine has yet been implemented for this 3-manifold (for instance, if this 3-manifold is a Seifert fibred space with sufficiently many exceptional fibres) then this routine will return 0.

The details of which 3-manifolds have construction routines can be found in the notes for the corresponding subclasses of NManifold. The default implemention of this routine returns 0.

Returns:
a triangulation of this 3-manifold, or 0 if the appropriate construction routine has not yet been implemented.

Reimplemented from regina::NManifold.

NExceptionalFibre regina::NSFS::getFibre unsigned long  which  )  const
 

Returns the requested exceptional fibre.

Note that all fibres will be in standard form, as described in the general class notes.

Parameters:
which determines which fibre to return; this must be between 0 and getFibreCount()-1 inclusive.
Returns:
the requested fibre.

unsigned long regina::NSFS::getFibreCount  )  const
 

Returns the number of exceptional fibres required to describe this Seifert fibred space.

Note that (1,k) fibres are not included in this count, with the following exception. If there are no exceptional fibres but there is a single (1,k) fibre with k non-zero, then this routine will return 1 to include this (1,k) fibre.

See the general class notes for further details.

Returns:
the number of exceptional fibres.

NAbelianGroup* regina::NSFS::getHomologyH1  )  const [virtual]
 

Returns the first homology group of this 3-manifold, if such a routine has been implemented.

If the calculation of homology has not yet been implemented for this 3-manifold then this routine will return 0.

The details of which 3-manifolds have homology calculation routines can be found in the notes for the corresponding subclasses of NManifold. The default implemention of this routine returns 0.

The homology group will be newly allocated and must be destroyed by the caller of this routine.

Returns:
the first homology group of this 3-manifold, or 0 if the appropriate calculation routine has not yet been implemented.

Reimplemented from regina::NManifold.

unsigned long regina::NSFS::getOrbitGenus  )  const [inline]
 

Returns the genus of the orbit manifold.

This is the number of tori or projective planes that it contains (once all its boundary components are filled in with discs).

Returns:
the genus of the orbit manifold.

unsigned long regina::NSFS::getOrbitPunctures  )  const [inline]
 

Returns the number of boundary components of the orbit manifold.

Returns:
the number of boundary components of the orbit manifold.

void regina::NSFS::insertFibre long  alpha,
long  beta
 

Adds the given fibre to this Seifert fibred space.

Note that there is no restriction on the range of the second parameter of the fibre. The index of this fibre may be 1.

Once this fibre is added, the fibres of this space will be converted to standard form as described in the NSFS class notes.

Parameters:
alpha the first parameter (i.e., the index) of the fibre to insert; this must be strictly positive.
beta the second parameter of the fibre to insert; this must have no common factors with the first parameter alpha.

void regina::NSFS::insertFibre const NExceptionalFibre fibre  )  [inline]
 

Adds the given fibre to this Seifert fibred space.

Note that there is no restriction on the range of the second parameter of the fibre. The index of this fibre may be 1.

Once this fibre is added, the fibres of this space will be converted to standard form as described in the NSFS class notes.

Parameters:
fibre the fibre to insert. The first parameter of this fibre (i.e., its index) must be strictly positive, and the two parameters of this fibre must be coprime.

NLensSpace* regina::NSFS::isLensSpace  )  const
 

Determines if this Seifert fibred space is a Lens space.

If this is a Lens space, the NLensSpace returned will be newly created and it will be up to the caller of this routine to destroy it.

Returns:
a structure containing the details of this Lens space, or null if this is not a Lens space.

bool regina::NSFS::isOrbitOrientable  )  const [inline]
 

Returns whether or not the orbit manifold is orientable.

Returns:
true if and only if the orbit manifold is orientable.

void regina::NSFS::operator= const NSFS cloneMe  ) 
 

Modifies this Seifert fibred space to be a clone of the given space.

Parameters:
cloneMe the Seifert fibred space to clone.

void regina::NSFS::reduce  ) 
 

Reduces the parameters of this Seifert fibred space to a simpler form if possible, without changing the orbit manifold or the fibres.

Currently only one operation is performed. If the final fibre has negative NExceptionalFibre::beta, consider the integer division (-beta)/alpha. If this quotient can be reduced by negating every fibre in the entire space, this will be done.

Note that this operation essentially reflects the 3-manifold, so inserting additional fibres after performing this operation may give unexpected results.

std::ostream& regina::NSFS::writeName std::ostream &  out  )  const [virtual]
 

Writes the common name of this 3-manifold as a human-readable string to the given output stream.

Python:
The parameter out does not exist; standard output will be used.
Parameters:
out the output stream to which to write.
Returns:
a reference to the given output stream.

Implements regina::NManifold.

std::ostream& regina::NSFS::writeStructure std::ostream &  out  )  const [virtual]
 

Writes details of the structure of this 3-manifold that might not be evident from its common name to the given output stream.

For instance, for an orbit space S^3/G this routine might write the full Seifert structure.

This routine may write nothing if no additional details are deemed necessary. The default implementation of this routine behaves in this way.

Python:
The parameter out does not exist; standard output will be used.
Parameters:
out the output stream to which to write.
Returns:
a reference to the given output stream.

Reimplemented from regina::NManifold.

std::ostream& regina::NSFS::writeTeXName std::ostream &  out  )  const [virtual]
 

Writes the common name of this 3-manifold in TeX format to the given output stream.

Leading and trailing dollar signs will be included.

Python:
The parameter out does not exist; standard output will be used.
Parameters:
out the output stream to which to write.
Returns:
a reference to the given output stream.

Implements regina::NManifold.


The documentation for this class was generated from the following file:
Copyright © 1999-2004, Ben Burton
This software is released under the GNU General Public License.
For further information, or to submit a bug or other problem, please contact Ben Burton (bab@debian.org).