3-manifolds / SnapPy

SnapPy is a package for studying the topology and geometry of 3-manifolds, with a focus on hyperbolic structures. It is based on the SnapPea kernel written by Jeff Weeks.
https://snappy.computop.org/
87 stars 41 forks source link

symplectic basis for triangulated 3-manifolds #113

Closed jchilds0 closed 1 year ago

jchilds0 commented 1 year ago

An algorithm for constructing oscillating curves on triangulated 3-manifolds with tori boundary components. These oscillating curves are used to extend the Neumann Zagier matrix to one which is symplectic up to factors of 2.

See https://arxiv.org/abs/2208.06969

Since the main file (kernel/kernel_code/symplectic_basis.c) is fairly long, I thought I'd make a draft pr before its finalised. Currently the algorithm works for knot exteriors and most link exteriors, with a small percentage producing non symplectic matrices and a smaller fraction exiting early at fatal error breakpoints.

You can test the algorithm on random link exteriors by running dev/symplectic_basis/test.py. There's also a cmake file in that dir if you want to compile and run just the c portion directly with symplectic_basis_test.c or symplectic_basis_main.c.

jchilds0 commented 1 year ago

Some more detail on the failures, a previous version of this alg gave correct outputs for the first 60k links in HTLinkExteriors and all Knot complements, but would fail on later links. The current one seems to maintain this correctness on the first 60k, with roughly 20 % incorrect after 60k and 0.1% crash at a uFatalError.

Also, you guys don't need to wait for me to finish to make other repo changes. I can rebase my branch when I'm done.