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

A base class for additional linear constraints that we can add to the tableaux of normal surface or angle structure matching equations. More...

#include <enumerate/ntreeconstraint.h>

Inheritance diagram for regina::LPConstraintBase:
regina::LPConstraintEuler regina::LPConstraintSubspace regina::LPConstraintNone regina::LPConstraintNonSpun

Classes

struct  Coefficients
 Stores the extra coefficients in a single column for the nConstraints additional rows that we add to the tableaux to describe the nConstraints additional linear equations or inequalities. More...
 

Public Types

enum  { nConstraints }
 

Static Public Member Functions

static bool addRows (LPInitialTableaux< LPConstraintBase >::Col *col, const int *columnPerm, const NTriangulation *tri)
 Explicitly constructs equations for the linear function(s) constrained by this class. More...
 
template<typename Integer >
static void constrain (LPData< LPConstraintNone, Integer > &lp, unsigned numCols)
 Explicitly constraints each of these linear functions to an equality or inequality in the underlying tableaux. More...
 
static bool verify (const NNormalSurface *s)
 Ensures that the given normal surface satisfies the extra constraints described by this class. More...
 
static bool verify (const NAngleStructure *s)
 Ensures that the given angle structure satisfies the extra constraints described by this class. More...
 
static bool supported (NormalCoords coords)
 Indicates whether the given coordinate system is supported by this constraint class. More...
 

Detailed Description

A base class for additional linear constraints that we can add to the tableaux of normal surface or angle structure matching equations.

This is used with NTreeEnumeration, NTreeSingleSoln and related algorithms for enumerating and locating normal surfaces or angle structures in a 3-manifold triangulation. See the LPInitialTableaux class notes for details on how these constraints interact with the tableaux of matching equations.

The linear constraints may be equalities or inequalities, and there may be more than one such constraint. If all constraints are homogeneous equalities, the class should derive from LPConstraintSubspace instead (not this base class).

In angle structure coordinates, these linear constraints must not involve the scaling coordinate (the final coordinate that is used to convert the angle structure polytope into a polyhedral cone). The coefficient for the final scaling coordinate in each additional linear constraint will be assumed to be zero.

This base class provides no functionality. For documentation's sake only, the notes here describe the functionality that any subclass must implement. We note again that LPConstraintBase does not provide any implementations at all, and subclasses are completely responsible for their own implementations.

Warning
The API for this class has not yet been finalised. This means that the class interface may change in new versions of Regina, without maintaining backward compatibility. If you use this class directly in your own code, please watch the detailed changelogs upon new releases to see if you need to make changes to your code.
Python:
Not present.

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

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