Home Page For Veering

Veering is a computer program which algorithmically implements the construction of ideal veering triangulations of mapping tori given in the paper Ideal Triangulations of Pseudo-Anosov Mapping Tori by Agol. The program outputs ideal triangulation files which can readily be input into the program SnapPy. Veering is also capable of solving the restricted conjugacy problem for pseudo-Anosov mapping classes in the mapping class group of a surface. See the paper, Non-geometric veering triangulations (preprint) by Hodgson, Issa and Segerman for more information about Veering.

Program and code

To see the Python source code or run Veering download:

Veering August 2014 (This version includes 'verbose' mode which saves the initial train track information to a 'verbose.txt').

Veering July 2013.

See How To Run for usage instructions.

Veering relies on the computer program Trains, written by Hall. Pre-compiled versions of Trains for Linux, Mac and Windows are shipped with the above code for Veering. If these do not work for you then consider compiling Trains 3.3:

Trains 3.3 source code.

Note that this is not the most up to date version of Trains, but is an older command-line version of the program (the newest version of Trains can be found here, but it is a GUI version which is not compatible with Veering). Once compiled, place the file in the same folder as the Veering source code and rename the file to 'trains.out', 'trains', or 'trains.exe' for Linux, Mac and Windows respectively (this can be changed, or other operating systems added, see the sendToTrains() function in general_graph_map.py of the Veering source).

A regina-python script is available, which can be used to find veering structures of ideal triangulations:

Regina-python code to find veering structures.
We used this script as a check to verify that the triangulations produced in the Data section below are veering.


Figure 1. Curves on a genus g >= 0 surface with p > 0 punctures.

The p punctures on the surface have been labelled by integers 1, 2, ..., p. Veering accepts homeomorphisms given by a product of Dehn twists in the curves shown above, as well as half twists in adjacent punctures (punctures i and i+1 for some i in {1,...,p-1}). In Veering a left handed Dehn twist, that is, twisting to the left as you approach the curve from either side, is given by lowercase e.g. a1, and a right Dehn twist is given by uppercase, e.g. A1. A clockwise half twist in punctures i and i+1, supported in a small disk containing the two punctures, is given by pi, e.g. if i=1, then p1. A counter clockwise half twist is given by uppercase e.g. P1. See also the Example section below.

How to run

In order to run Veering, extract Veering and ensure that the 'trains.out', 'trains' and 'trains.exe' files that were extracted are given permission to be executed. Run the main.py file using Python 2. This can be done from the terminal/command prompt by first changing the current directory to the Veering source code directory and typing:

python main.py

Example 1

We construct the veering triangulation associated with the pseudo-Anosov homeomorphism of the once punctured torus given by a left Dehn twist in the curve a1 followed by a right Dehn twist in the curve b1, where the curves are as in Figure 1 above. We save the triangulation to the file 'fig8.tri', to the current directory in terminal.
Veering. July 2013.

Constructs Agol's veering triangulations for punctured orientable
surfaces. Relies on the software Trains by Toby Hall.

Type 'help' for a list of commands
Surface genus:
Number of punctures:
Enter pA map as product of Dehn twists and half twists:
a1 B1
Enter filename of triangulation file to be saved:
written to file: fig8.tri


As described in the paper Non-geometric veering triangulations, we generated a complete list of pseudo-Anosov mapping classes of the once-punctured genus 2 surface, up to conjugation and inversion in the mapping class group, which can be expressed as a product of at most 7 Dehn twists in the curves a1, b1, b2, c1 and c2 (see Figure 1 above for curves). Note that we have not included Dehn twists in e1, which can be expressed in terms of the curves chosen. A spreadsheet of this data is available:

Spreadsheet of once punctured genus 2 surface data

and all triangulation files are available:

Triangulation files for once punctured genus 2 surface.

Non-geometric verification

In Section 7 of Non-geometric veering triangulations we describe a non-geometric veering triangulation produced by Veering. It is a 13 tetrahedron triangulation coming from the pseudo-Anosov homeomorphism of the once-punctured genus 2 surface given by Dehn twists in a1, b1, a1, a1, a1, b2, c1 (that is, a1, followed by b1 and so on), see Conventions. The triangulation file can be downloaded here.

In order to rigorously verify that the triangulation is non-geometric we found a sequence of Pachner moves between the veering triangulation and a geometric triangulation. The intermediate triangulation files and a spreadsheet showing their exact tetrahedron shapes can be found here.

Veering was developed at the University of Melbourne. If you have any questions or comments about Veering, please contact Ahmad Issa.