SourceForge Logo

NTC Home Page

by Roberto De Leo

What is NTC?

The Novikov Torus Conjecture (NTC) is a C++ library built over VTK. Currently it works fine just with version 2.4 of VTK but soon it will be ported to VTK3.12.

What does it do?

NTC has been written to investigate numerically the following topological problem: given an integral direction (l,m,n) and a periodic surface f(x,y,z)=f, do the planes perpendicular to (l,m,n) cut the surface always in closed curves or not?

The importance of the question comes from Solid State Physics, where the (l,m,n) is the magnetic field and the surface is the Fermi Surface of a metal. The presence or absence of open intersections determines the galvanometric behaviour of a metal under strong magnetic fields.
The topological structure underlying the answer to this question is far from being trivial and has been investigated by A. Zorich and I.A. Dynnikov under the direction of S.P. Novikov. It ultimately leads to the construction of beautiful fractals on the sphere.

What NTC is able to do is to find the intersection between the surface and the planes passing through the critical points (i.e. all points in which the planes are tangent to the surface) and to evaluate some topological invariant of the two critical loops of which the intersection is generically made.
The library contains functions able to find the complete intersection between integral planes and periodic surfaces (because the intersection is periodic; this would not be possible if the planes would be perpendicular to irrational vectors such as (1,Pi,e)) and to get the intersection numbers of these loops with the basic cycles of the surface (i.e. their homology class in that base) and finally, using a little algebra of integer matrices, to get from there the topological invariant we were looking for (that is again an integral direction).

When I started working on this problem in 1998, I was very surprised by not being able to find anywhere on the net any library able to perform elementary topological operations as intersecting 2D objects inside a 3-Torus (i.e., getting the complete intersection between two periodic surfaces) or evaluating intersection indices between two loops in a surface or even performing elementary operations with rectangular integer matrices such as finding its rank or a quasi-inverse for the squared ones.
So, even though this library is far from being optimized or elegant, still I decided to put it on the net in the hope that it could be useful to anyone or that it may be used as a starting point for some nice object-oriented topology library that would be for sure useful to many people.

If you want to know more about the Physics and Mathematics of the problem you can give a look to my PhD thesis where you can also find a complete set of references.

What do you need?

To compile succesfully NTC you must have:

How to install NTC?

After you succesfully installed VTK, installing NTC is as easy as typing

make install

If the configure is not able to find your VTK includes and libs, tell him with

configure --with-vtk-includes=<includes dir> --with-vtk-libraries=<libs dir>

To check whether everything is working fine you can try to run the examples included in the demo directory.
In the package is also included a brief description of classes and their methods under the directory src/api, that you can also browse online at the Documentation page.

How to contact me?

In case something does not work or you have suggestions and/or comments, you can send me an email at