diff --git a/dev/symplectic_basis/CuspedCensusData/1.tri b/dev/symplectic_basis/CuspedCensusData/1.tri deleted file mode 100644 index bfdc30a06..000000000 --- a/dev/symplectic_basis/CuspedCensusData/1.tri +++ /dev/null @@ -1,28 +0,0 @@ -% Triangulation -K3a1 -flat_solution 0.00000000 -oriented_manifold -CS_unknown - -1 0 - torus 0.000000000000 0.000000000000 - -2 - 1 1 1 1 - 0132 3201 2031 2031 - 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 1 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 1 0 -1 1 0 0 -1 0 1 0 -1 1 -4 3 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - -1.000000000000 0.000000000000 - - 0 0 0 0 - 0132 1302 2310 1302 - 0 0 0 0 - 0 0 0 0 0 0 1 -1 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 1 -1 0 -1 0 4 -3 -1 1 0 0 0 1 -1 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 2.000000000000 0.000000000000 - diff --git a/dev/symplectic_basis/CuspedCensusData/12442.tri b/dev/symplectic_basis/CuspedCensusData/12442.tri deleted file mode 100644 index ba7f489b4..000000000 --- a/dev/symplectic_basis/CuspedCensusData/12442.tri +++ /dev/null @@ -1,82 +0,0 @@ -% Triangulation -K13n4587 -degenerate_solution 0.00008491 -oriented_manifold -CS_unknown - -1 0 - torus 0.000000000000 0.000000000000 - -8 - 1 2 3 4 - 0132 0132 0132 0132 - 0 0 0 0 - 0 0 0 0 0 0 0 0 0 -1 0 1 0 -1 1 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 1 -1 0 0 0 0 0 0 14 0 -14 0 14 -14 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - -2.000000146921 0.000000797764 - - 0 5 1 1 - 0132 0132 2031 1302 - 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 -1 0 1 0 0 -1 1 0 0 0 0 0 1 -1 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0.250000071013 0.000000032874 - - 5 0 6 6 - 0132 0132 2310 0132 - 0 0 0 0 - 0 0 -1 1 0 0 0 0 -1 1 0 0 0 1 -1 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 -1 15 -14 0 0 0 0 14 -14 0 0 0 -14 14 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 1.000000088898 0.000003616777 - - 6 5 6 0 - 3120 2310 1302 0132 - 0 0 0 0 - 0 0 0 0 0 0 0 0 1 0 0 -1 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 -1 0 1 0 0 0 0 -14 0 0 14 0 1 -1 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -171694455710.780639648438 8445629333.018504142761 - - 7 7 0 7 - 0132 3201 0132 3201 - 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 1 -1 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 -14 14 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 1.999999910712 0.000000676712 - - 2 1 7 3 - 0132 0132 2031 3201 - 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 1 0 -1 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 1 0 -1 0 0 0 0 0 -1 0 1 -14 0 14 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - -2.000000146384 0.000001023196 - - 3 2 2 3 - 2031 3201 0132 3120 - 0 0 0 0 - 0 1 -1 0 0 0 0 0 0 1 0 -1 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 -14 14 0 0 0 0 0 1 -15 0 14 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --10187.720266394899 414483.480544749706 - - 4 4 4 5 - 0132 2310 2310 1302 - 0 0 0 0 - 0 0 0 0 0 0 -1 1 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 14 -14 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0.499999834028 0.000000008131 - diff --git a/dev/symplectic_basis/CuspedCensusData/31116.tri b/dev/symplectic_basis/CuspedCensusData/31116.tri deleted file mode 100644 index 756406325..000000000 --- a/dev/symplectic_basis/CuspedCensusData/31116.tri +++ /dev/null @@ -1,262 +0,0 @@ -% Triangulation -K14a18151 -geometric_solution 26.27569041 -oriented_manifold -CS_unknown - -1 0 - torus 0.000000000000 0.000000000000 - -28 - 1 2 3 4 - 0132 0132 0132 0132 - 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 1 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 1 -1 1 0 -1 0 0 0 0 0 0 3 -3 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - -0.204098929392 0.904049237127 - - 0 5 7 6 - 0132 0132 0132 0132 - 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 1 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 -1 0 0 1 0 0 0 0 0 4 -4 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0.244879452978 1.111668196141 - - 8 0 9 3 - 0132 0132 0132 0132 - 0 0 0 0 - 0 0 0 0 0 0 0 0 0 1 0 -1 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 -1 0 0 1 0 -3 0 3 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0.235632724802 0.574149406485 - - 4 7 2 0 - 0132 3120 0132 0132 - 0 0 0 0 - 0 0 0 0 0 0 0 0 1 0 0 -1 -1 0 1 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 1 0 -1 0 0 -1 1 -3 0 0 3 3 0 -3 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0.373892770090 1.657791310088 - - 3 5 0 9 - 0132 1302 0132 0132 - 0 0 0 0 - 0 0 0 0 0 0 0 0 1 0 0 -1 -1 1 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 -1 1 0 0 0 0 0 -3 0 0 3 3 -3 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0.602705234332 1.052626541086 - - 8 1 10 4 - 1023 0132 0132 2031 - 0 0 0 0 - 0 0 0 0 0 0 0 0 0 1 0 -1 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 -1 1 1 -4 0 3 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0.937473929675 1.537390797191 - - 7 11 1 12 - 0132 0132 0132 0132 - 0 0 0 0 - 0 1 0 -1 0 0 0 0 0 0 0 0 -1 1 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 -4 0 4 0 0 -1 1 -1 0 0 1 4 -4 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0.465326568811 0.530428193239 - - 6 3 11 1 - 0132 3120 2103 0132 - 0 0 0 0 - 0 0 0 0 0 0 0 0 1 0 0 -1 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 -4 0 0 4 1 -1 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0.950956889036 1.580865444083 - - 2 5 13 14 - 0132 1023 0132 0132 - 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 1 0 0 -1 0 -1 0 1 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0.505842832110 0.680830307401 - - 13 14 4 2 - 0132 0132 0132 0132 - 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 1 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 3 -3 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0.518143756688 0.665476042247 - - 15 16 14 5 - 0132 0132 2031 0132 - 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 -1 0 0 1 0 0 0 0 0 -1 1 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0.029409092585 0.627040491083 - - 7 6 18 17 - 2103 0132 0132 0132 - 0 0 0 0 - 0 -1 1 0 0 0 0 0 0 -1 0 1 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 4 -4 0 0 0 0 0 0 4 0 -4 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0.691589250916 0.569746660360 - - 18 19 6 17 - 0132 0132 0132 3120 - 0 0 0 0 - 0 0 1 -1 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 -4 4 1 0 -1 0 0 0 0 0 0 1 -1 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0.853413698255 0.920765308395 - - 9 15 20 8 - 0132 1230 0132 0132 - 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0.667053293718 0.902932765113 - - 20 9 8 10 - 0132 0132 0132 1302 - 0 0 0 0 - 0 0 0 0 0 0 0 0 -1 1 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 1 -1 3 -3 0 0 1 0 -1 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0.680167487401 0.924952178741 - - 10 21 13 22 - 0132 0132 3012 0132 - 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 1 0 0 -1 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0.581610510501 1.159855787875 - - 23 10 17 22 - 0132 0132 0213 2031 - 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 -1 1 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0.838587508768 1.224737952977 - - 12 16 11 24 - 3120 0213 0132 0132 - 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 1 0 -1 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 -4 0 4 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0.110370063502 1.008804478681 - - 12 25 26 11 - 0132 0132 0132 0132 - 0 0 0 0 - 0 0 1 -1 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 -4 4 -1 0 1 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0.704218539689 1.248213722315 - - 26 12 23 25 - 0132 0132 2031 0132 - 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 -1 0 0 1 1 -1 0 0 1 0 -1 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0.276324763323 0.806395484563 - - 14 27 22 13 - 0132 0132 1302 0132 - 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 1 0 -1 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 -1 1 0 0 -3 0 3 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0.682413132403 1.518716197180 - - 23 15 24 27 - 1023 0132 3012 3120 - 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 1 -1 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - -0.076098918926 0.686485923849 - - 20 16 15 27 - 2031 1302 0132 3012 - 0 0 0 0 - 0 0 0 0 0 0 0 0 1 0 0 -1 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 1 -1 -3 0 0 3 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0.125678772084 1.215004826658 - - 16 21 24 19 - 0132 1023 1302 1302 - 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 -1 1 0 0 0 0 1 0 -1 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0.645379638232 1.008801417262 - - 23 21 17 26 - 2031 1230 0132 0132 - 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 1 0 0 -1 1 -1 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0.066896867934 0.696326097319 - - 26 18 19 27 - 1023 0132 0132 2103 - 0 0 0 0 - 0 0 0 0 -1 0 0 1 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 4 0 -1 -3 -1 0 0 1 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0.005270470558 0.594377652563 - - 19 25 24 18 - 0132 1023 0132 0132 - 0 0 0 0 - 0 1 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 -4 0 4 1 0 0 -1 -1 1 0 0 -1 0 1 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - -0.032153922338 1.096443200603 - - 21 20 22 25 - 3120 0132 1230 2103 - 0 0 0 0 - 0 0 0 0 0 0 1 -1 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 1 -1 0 0 -3 3 0 0 0 0 1 -1 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0.416251013891 0.614400925108 - diff --git a/dev/symplectic_basis/CuspedCensusData/35.tri b/dev/symplectic_basis/CuspedCensusData/35.tri deleted file mode 100644 index d3b1fe3bb..000000000 --- a/dev/symplectic_basis/CuspedCensusData/35.tri +++ /dev/null @@ -1,37 +0,0 @@ -% Triangulation -K8n3 -flat_solution 0.00000000 -oriented_manifold -CS_unknown - -1 0 - torus 0.000000000000 0.000000000000 - -3 - 1 1 2 1 - 0132 0321 0132 0321 - 0 0 0 0 - 0 0 0 0 1 0 -1 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 1 -1 -12 0 12 0 0 0 0 0 0 -1 1 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 2.414213562373 0.000000000000 - - 0 0 2 0 - 0132 0321 2103 0321 - 0 0 0 0 - 0 0 0 0 -1 0 1 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 1 -1 0 12 0 -13 1 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 1.707106781187 0.000000000000 - - 1 2 2 0 - 2103 3201 2310 0132 - 0 0 0 0 - 0 0 0 0 -1 0 0 1 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 1 0 -1 13 0 -1 -12 1 0 0 -1 0 1 -1 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - -1.000000000000 0.000000000000 - diff --git a/dev/symplectic_basis/CuspedCensusData/4.tri b/dev/symplectic_basis/CuspedCensusData/4.tri deleted file mode 100644 index 3a995760f..000000000 --- a/dev/symplectic_basis/CuspedCensusData/4.tri +++ /dev/null @@ -1,37 +0,0 @@ -% Triangulation -K5a2 -flat_solution 0.00000000 -oriented_manifold -CS_unknown - -1 0 - torus 0.000000000000 0.000000000000 - -3 - 1 1 2 2 - 0132 1302 0132 2310 - 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 1 -1 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 -1 0 1 1 0 -1 0 0 0 0 0 -8 9 -1 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - -0.618033988750 0.000000000000 - - 0 2 2 0 - 0132 0213 0213 2031 - 0 0 0 0 - 0 0 0 0 0 0 0 0 -1 0 0 1 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 -1 0 0 1 8 1 0 -9 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0.618033988750 0.000000000000 - - 0 1 1 0 - 3201 0213 0213 0132 - 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 -1 1 -1 0 0 1 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0.381966011250 0.000000000000 - diff --git a/dev/symplectic_basis/CuspedCensusData/76.tri b/dev/symplectic_basis/CuspedCensusData/76.tri deleted file mode 100644 index 9bedd9741..000000000 --- a/dev/symplectic_basis/CuspedCensusData/76.tri +++ /dev/null @@ -1,55 +0,0 @@ -% Triangulation -K9a41 -flat_solution 0.00000000 -oriented_manifold -CS_unknown - -1 0 - torus 0.000000000000 0.000000000000 - -5 - 1 2 3 3 - 0132 0132 0132 3201 - 0 0 0 0 - 0 -1 0 1 1 0 -1 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 18 1 -19 -19 0 19 0 1 0 0 -1 1 -1 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 3.532088886238 0.000000000000 - - 0 2 2 2 - 0132 3012 0132 0132 - 0 0 0 0 - 0 -1 0 1 -1 0 1 0 0 -1 0 1 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 18 0 -18 19 0 -19 0 -1 19 0 -18 -1 0 1 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - -1.000000000000 0.000000000000 - - 1 0 1 1 - 1230 0132 0132 0132 - 0 0 0 0 - 0 1 -1 0 1 0 0 -1 0 0 0 0 1 0 -1 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 -18 18 0 -19 0 0 19 0 1 0 -1 -18 0 18 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - -1.000000000000 0.000000000000 - - 4 0 4 0 - 0132 2310 2310 0132 - 0 0 0 0 - 0 0 0 0 -1 0 0 1 0 0 0 0 0 -1 1 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 1 0 -1 19 0 0 -19 0 0 0 0 0 19 -19 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - -0.815207469096 0.000000000000 - - 3 3 4 4 - 0132 3201 2031 1302 - 0 0 0 0 - 0 -1 0 1 1 0 -1 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 19 0 -19 -19 0 19 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0.426022047760 0.000000000000 - diff --git a/dev/symplectic_basis/CuspedCensusData/7703.tri b/dev/symplectic_basis/CuspedCensusData/7703.tri deleted file mode 100644 index c252041b8..000000000 --- a/dev/symplectic_basis/CuspedCensusData/7703.tri +++ /dev/null @@ -1,226 +0,0 @@ -% Triangulation -K13a4726 -geometric_solution 22.55575168 -oriented_manifold -CS_unknown - -1 0 - torus 0.000000000000 0.000000000000 - -24 - 1 2 3 4 - 0132 0132 0132 0132 - 0 0 0 0 - 0 0 0 0 1 0 0 -1 1 -1 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 1 -1 -7 0 0 7 -6 6 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0.494278846279 0.600917950757 - - 0 5 7 6 - 0132 0132 0132 0132 - 0 0 0 0 - 0 0 0 0 -1 0 0 1 0 0 0 0 -1 0 1 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 7 0 0 -7 0 0 0 0 6 0 -6 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0.843242262648 0.948011052018 - - 8 0 10 9 - 0132 0132 0132 0132 - 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 1 -1 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 -6 6 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0.535993721929 0.773674899302 - - 11 12 13 0 - 0132 0132 0132 0132 - 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 1 0 -1 0 0 0 0 0 0 0 0 0 -1 1 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 1.023854955126 0.613480108631 - - 14 8 0 10 - 0132 0132 0132 0132 - 0 0 0 0 - 0 0 0 0 0 0 1 -1 0 0 0 0 -1 1 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 -1 1 0 0 0 -7 7 0 0 0 0 7 -7 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0.548698494359 0.877104848758 - - 14 1 15 11 - 1023 0132 0132 1302 - 0 0 0 0 - 0 0 -1 1 0 0 0 0 1 0 0 -1 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 6 -6 0 0 0 0 -7 0 0 7 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0.368916060178 0.487462714278 - - 15 15 1 7 - 2031 0132 0132 2031 - 0 0 0 0 - 0 1 0 -1 0 0 -1 1 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 -6 0 6 0 0 7 -7 1 0 0 -1 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0.569837055652 0.453469046746 - - 13 6 11 1 - 0132 1302 0132 0132 - 0 0 0 0 - 0 -1 1 0 1 0 -1 0 0 1 0 -1 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 7 -7 0 -6 0 6 0 0 -6 0 6 -1 1 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0.940711825341 1.080645168912 - - 2 4 16 17 - 0132 0132 0132 0132 - 0 0 0 0 - 0 0 0 0 0 0 0 0 0 -1 0 1 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 1 -1 0 0 0 0 0 0 7 0 -7 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0.760155350032 1.041941779339 - - 18 12 2 14 - 0132 0213 0132 0132 - 0 0 0 0 - 0 0 0 0 1 0 0 -1 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 -6 0 0 6 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0.801482239029 0.582499454224 - - 18 17 4 2 - 2103 0132 0132 0132 - 0 0 0 0 - 0 0 0 0 -1 0 1 0 -1 0 0 1 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 7 0 -7 0 6 0 0 -6 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0.631840424531 0.996107275263 - - 3 13 5 7 - 0132 3120 2031 0132 - 0 0 0 0 - 0 0 1 -1 0 0 -1 1 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 -7 7 0 0 6 -6 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0.569315902472 0.645658763234 - - 19 3 9 19 - 0132 0132 0213 2031 - 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 -1 0 1 1 0 0 -1 0 1 0 -1 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0.636793388294 0.916826808097 - - 7 11 14 3 - 0132 3120 0132 0132 - 0 0 0 0 - 0 0 0 0 -1 0 1 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 6 0 -6 0 1 0 0 -1 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0.617482197099 0.364666142518 - - 4 5 9 13 - 0132 1023 0132 0132 - 0 0 0 0 - 0 0 0 0 0 0 1 -1 1 -1 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 -6 6 -7 7 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0.994720683697 0.866709620683 - - 20 6 6 5 - 0132 0132 1302 0132 - 0 0 0 0 - 0 -1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 6 0 -6 0 0 0 0 0 0 0 0 1 0 -1 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 1.101078073881 1.160734161592 - - 18 21 22 8 - 3120 0132 0132 0132 - 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 -1 1 -1 0 1 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0.474524731138 0.678293840841 - - 22 10 8 21 - 0132 0132 0132 0132 - 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 1 0 -1 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 -7 0 7 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0.556441935814 1.433530058477 - - 9 23 10 16 - 0132 0132 2103 3120 - 0 0 0 0 - 0 -1 1 0 -1 0 1 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 6 -6 0 6 0 -7 1 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0.764893714162 0.598877258782 - - 12 12 21 20 - 0132 1302 3201 3012 - 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 1 0 -1 -1 0 0 1 0 -1 0 1 0 1 -1 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0.488961534315 0.735770461694 - - 15 23 19 23 - 0132 0213 1230 2310 - 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 1 -1 0 0 0 -1 1 -1 1 0 0 0 -1 1 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0.267314525714 0.968974383262 - - 19 16 17 22 - 2310 0132 0132 0132 - 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 1 0 0 -1 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0.156082139129 0.581758373464 - - 17 23 21 16 - 0132 1302 0132 0132 - 0 0 0 0 - 0 0 0 0 0 0 0 0 -1 1 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 -1 0 1 0 0 1 -1 7 -7 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - -0.301077427317 0.965360986005 - - 20 18 20 22 - 3201 0132 0213 2031 - 0 0 0 0 - 0 1 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 -6 -1 7 0 0 -1 1 0 0 0 0 -1 0 1 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0.267314525714 0.968974383262 - diff --git a/dev/symplectic_basis/CuspedCensusData/7855.tri b/dev/symplectic_basis/CuspedCensusData/7855.tri deleted file mode 100644 index 750b71463..000000000 --- a/dev/symplectic_basis/CuspedCensusData/7855.tri +++ /dev/null @@ -1,73 +0,0 @@ -% Triangulation -K13a4878 -flat_solution 0.00000000 -oriented_manifold -CS_unknown - -1 0 - torus 0.000000000000 0.000000000000 - -7 - 0 1 1 0 - 3012 0132 1023 1230 - 0 0 0 0 - 0 0 1 -1 1 0 0 -1 1 0 0 -1 1 -1 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 -26 26 -26 0 0 26 -26 0 0 26 -26 26 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 1.468136413574 0.000000000000 - - 2 0 0 2 - 0132 0132 1023 1023 - 0 0 0 0 - 0 0 0 0 0 0 -1 1 -1 1 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 26 -26 26 -26 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 1.280658486668 0.000000000000 - - 1 3 3 1 - 0132 0132 1023 1023 - 0 0 0 0 - 0 0 1 -1 0 0 0 0 0 0 0 0 1 -1 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 -26 26 0 0 0 0 0 0 0 0 -26 26 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 1.328074808426 0.000000000000 - - 4 2 2 4 - 0132 0132 1023 1023 - 0 0 0 0 - 0 0 0 0 0 0 -1 1 -1 1 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 26 -26 26 -26 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 1.965157909917 0.000000000000 - - 3 5 6 3 - 0132 0132 0132 1023 - 0 0 0 0 - 0 0 1 -1 0 0 0 0 0 0 0 0 1 -1 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 1 -27 26 0 0 0 0 0 0 0 0 -26 27 -1 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - -0.360892002880 0.000000000000 - - 6 4 6 6 - 2103 0132 2103 2031 - 0 0 0 0 - 0 0 0 0 0 0 0 0 -1 1 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 -1 1 0 0 0 0 0 27 -27 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 2.000000000000 0.000000000000 - - 5 5 5 4 - 2103 1302 2103 0132 - 0 0 0 0 - 0 0 1 -1 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 -27 27 0 0 0 0 -1 0 0 1 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 2.000000000000 0.000000000000 - diff --git a/dev/symplectic_basis/CuspedCensusData/link-159285.tri b/dev/symplectic_basis/CuspedCensusData/link-159285.tri new file mode 100644 index 000000000..5774b22cc --- /dev/null +++ b/dev/symplectic_basis/CuspedCensusData/link-159285.tri @@ -0,0 +1,192 @@ +% Triangulation +L14n42956 +geometric_solution 18.25970800 +oriented_manifold +CS_unknown + +3 0 + torus 0.000000000000 -0.000000000000 + torus 0.000000000000 0.000000000000 + torus 0.000000000000 0.000000000000 + +20 + 1 2 3 1 + 0132 0132 0132 2031 + 2 1 2 2 + 0 0 0 0 0 0 0 0 -1 0 0 1 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 1 -1 0 0 0 1 -1 8 1 0 -9 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0.705368508073 1.171726294204 + + 0 0 5 4 + 0132 1302 0132 0132 + 1 1 2 2 + 0 0 0 0 0 0 0 0 0 0 0 0 1 -1 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 1 -1 0 0 0 0 0 0 0 0 0 -8 9 -1 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0.622895846215 0.626428381174 + + 6 0 7 7 + 0132 0132 3012 0132 + 2 2 2 2 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 -1 1 0 0 0 0 0 0 0 0 0 1 -1 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 1.694685736634 0.486681260924 + + 8 9 5 0 + 0132 0132 3120 0132 + 2 1 2 1 + 0 0 0 0 0 0 0 0 0 0 0 0 -1 1 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 -1 1 1 0 0 -1 0 0 0 0 -2 1 1 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0.128646140530 0.638436086734 + + 8 10 1 11 + 2103 0132 0132 0132 + 1 1 2 2 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0.660202269667 1.430778619092 + + 10 10 3 1 + 3012 0213 3120 0132 + 1 1 2 2 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 -1 1 0 0 0 0 -1 0 0 1 0 -1 1 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0.510620486470 0.947304537420 + + 2 12 13 9 + 0132 0132 0132 2310 + 1 2 2 2 + 0 1 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 1 0 -1 0 0 0 0 -1 1 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0.918930097848 0.766306551735 + + 14 2 2 9 + 0132 1230 0132 3012 + 2 2 2 2 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 1 -1 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 1.106732683556 0.480626622205 + + 3 15 4 11 + 0132 0132 2103 2103 + 2 1 1 2 + 0 0 0 0 0 0 0 0 1 -1 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 -1 0 0 1 2 -2 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0.690991527809 0.708169099933 + + 6 3 7 11 + 3201 0132 1230 3201 + 2 2 1 2 + 0 0 0 0 0 0 0 0 1 -1 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 1 -1 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0.143869478929 1.282734924791 + + 16 4 5 5 + 0132 0132 0213 1230 + 1 2 2 2 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 -1 0 0 1 0 0 0 0 -1 0 1 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0.510620486470 0.947304537420 + + 17 9 4 8 + 0132 2310 0132 2103 + 1 1 2 2 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 1 0 0 -1 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0.099195055614 0.918045142025 + + 14 6 15 18 + 1023 0132 3120 0132 + 1 0 2 2 + 0 -1 1 0 1 0 0 -1 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 -1 2 -1 -1 0 1 0 -1 0 0 1 0 -1 1 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0.738105094830 0.671649578296 + + 14 19 15 6 + 3120 0132 3201 0132 + 1 2 2 0 + 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 1 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 1 0 -1 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0.488722745851 0.732579580286 + + 7 12 17 13 + 0132 1023 0213 3120 + 0 2 2 2 + 0 -1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 1 0 -1 0 0 0 0 -1 1 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0.632457062681 0.519237203464 + + 13 8 12 16 + 2310 0132 3120 2031 + 2 0 2 1 + 0 0 0 0 -1 0 0 1 0 0 0 0 0 1 -1 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 -1 1 1 0 -1 0 0 0 0 0 0 2 -2 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0.638504213098 0.945619994576 + + 10 15 18 19 + 0132 1302 1302 2310 + 0 2 2 2 + 0 -1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 1 0 -1 0 1 -1 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + -0.081851067914 0.760097950381 + + 11 14 19 18 + 0132 0213 2031 1023 + 0 1 2 2 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 -1 0 0 1 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0.140048385967 1.300538818126 + + 16 19 12 17 + 2031 0213 0132 1023 + 1 0 2 2 + 0 0 0 0 -1 0 1 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 1 -1 0 0 0 0 0 0 0 0 1 0 -1 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0.459074466043 0.380048975191 + + 16 13 18 17 + 3201 0132 0213 1302 + 1 2 0 2 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0.570024192983 0.650269409063 + diff --git a/dev/symplectic_basis/symplectic_basis_main.c b/dev/symplectic_basis/symplectic_basis_main.c index 84ea2230e..50b05794d 100644 --- a/dev/symplectic_basis/symplectic_basis_main.c +++ b/dev/symplectic_basis/symplectic_basis_main.c @@ -23,7 +23,7 @@ int main(void) { int numTet[] = {}; int index[] = {}; - char *error[] = {"CuspedCensusData/link-70k.tri"}; + char *error[] = {"CuspedCensusData/link-159285.tri"}; char *link[] = { "CuspedCensusData/link-1.tri", diff --git a/dev/symplectic_basis/symplectic_basis_old.h b/dev/symplectic_basis/symplectic_basis_old.h index 80b2094f9..7120b9c5e 100644 --- a/dev/symplectic_basis/symplectic_basis_old.h +++ b/dev/symplectic_basis/symplectic_basis_old.h @@ -80,20 +80,20 @@ struct PathEndPoint { struct CuspRegion *region; /** pointer to the region the endpoint lies in */ }; -struct DualCurves { +struct CurveComponent { int edgeClass[2]; struct EdgeNode curves_begin; /** header node of doubbly linked list */ struct EdgeNode curves_end; /** tailer node of doubbly linked list */ struct PathEndPoint endpoints[2]; /** path end points */ - struct DualCurves *next; /** next dual curve in doubly linked list */ - struct DualCurves *prev; /** prev dual curve in doubly linked list */ + struct CurveComponent *next; /** next dual curve in doubly linked list */ + struct CurveComponent *prev; /** prev dual curve in doubly linked list */ }; struct OscillatingCurves { int numCurves; int *edgeClass; - struct DualCurves *dual_curve_begin; /** array of doubly linked lists of dual curves */ - struct DualCurves *dual_curve_end; /** array of doubly linkek lists of dual curves */ + struct CurveComponent *curve_begin; /** array of doubly linked lists of dual curves */ + struct CurveComponent *curve_end; /** array of doubly linkek lists of dual curves */ }; /** @@ -138,7 +138,7 @@ struct CuspRegion { struct CuspRegion *prev; /** prev cusp region in doubly linked list */ }; -struct ManifoldBoundary { +struct CuspStructure { int intersectTetIndex; /** index of the intersection triangle */ int intersectTetVertex; /** vertex of the intersection triangle */ int numEdgeClasses; /** number of edge classes in the boundary */ @@ -165,39 +165,39 @@ int edge_exists(struct Graph *, int, int); int *gluing_equations_for_edge_class(Triangulation *, int); int **get_symplectic_equations(Triangulation *, int *, int *, int); -struct ManifoldBoundary *init_boundary(Triangulation *, Cusp *); -void free_boundary(struct ManifoldBoundary **, int); -void init_cusp_triangulation(Triangulation *, struct ManifoldBoundary *); +struct CuspStructure *init_cusp_structure(Triangulation *, Cusp *); +void free_boundary(struct CuspStructure **, int); +void init_cusp_triangulation(Triangulation *, struct CuspStructure *); int flow(struct CuspTriangle *, int); void label_triangulation_edges(Triangulation *); struct CuspTriangle *find_cusp_triangle(struct CuspTriangle *, struct CuspTriangle *, struct CuspTriangle *, int); void label_cusp_vertex_indices(struct CuspTriangle *, struct CuspTriangle *, int); void walk_around_cusp_vertex(struct CuspTriangle *, int, int); -void init_cusp_region(struct ManifoldBoundary *); -int init_intersect_cusp_region(struct ManifoldBoundary *, struct CuspTriangle *, int); -int init_normal_cusp_region(struct ManifoldBoundary *, struct CuspTriangle *, int); +void init_cusp_region(struct CuspStructure *); +int init_intersect_cusp_region(struct CuspStructure *, struct CuspTriangle *, int); +int init_normal_cusp_region(struct CuspStructure *, struct CuspTriangle *, int); void set_cusp_region_data(struct CuspRegion *, struct CuspTriangle *, int [4], int [4], int); void update_adj_region_data(struct CuspRegion *, struct CuspRegion *); struct CuspRegion *find_adj_region(struct CuspRegion *, struct CuspRegion *, struct CuspRegion *, int); struct OscillatingCurves*init_oscillating_curves(Triangulation *, int *); void free_oscillating_curves(struct OscillatingCurves *); -void find_intersection_triangle(Triangulation *, struct ManifoldBoundary *); +void find_intersection_triangle(Triangulation *, struct CuspStructure *); /** * Construct Oscillating Curves and calculate holonomy */ -void do_oscillating_curves(struct ManifoldBoundary **, struct OscillatingCurves *, struct EndMultiGraph *); -void do_one_dual_curve(struct ManifoldBoundary **, struct DualCurves *, struct DualCurves *, struct EndMultiGraph *, int); -void do_one_cusp(struct ManifoldBoundary *, struct DualCurves *, int); -struct Graph * construct_cusp_region_dual_graph(struct ManifoldBoundary *); -void print_debug_info(Triangulation *, struct ManifoldBoundary **, struct OscillatingCurves *, int); -struct DualCurves *init_dual_curve(struct DualCurves *, int, int); -void find_path_endpoints(struct Graph *, struct DualCurves *, struct DualCurves *, int, int); +void do_oscillating_curves(struct CuspStructure **, struct OscillatingCurves *, struct EndMultiGraph *); +void do_one_dual_curve(struct CuspStructure **, struct CurveComponent *, struct CurveComponent *, struct EndMultiGraph *, int); +void do_one_cusp(struct CuspStructure *, struct CurveComponent *, int); +struct Graph * construct_cusp_region_dual_graph(struct CuspStructure *); +void print_debug_info(Triangulation *, struct CuspStructure **, struct OscillatingCurves *, int); +struct CurveComponent *init_dual_curve(struct CurveComponent *, int, int); +void find_path_endpoints(struct Graph *, struct CurveComponent *, struct CurveComponent *, int, int); void find_single_endpoints(struct Graph *, struct PathEndPoint *, struct PathEndPoint *, int, int, bool); -void update_path_info(struct Graph *g, struct DualCurves *, int); +void update_path_info(struct Graph *g, struct CurveComponent *, int); void update_path_endpoint_info(struct CuspRegion *, struct EdgeNode *, struct PathEndPoint *, int, int); -void split_cusp_regions_along_path(struct ManifoldBoundary *, struct DualCurves *); +void split_cusp_regions_along_path(struct CuspStructure *, struct CurveComponent *); struct CuspRegion *update_cusp_region(struct CuspRegion *region, struct EdgeNode *, struct PathEndPoint *, int, int); void update_cusp_triangle(struct CuspRegion *, struct CuspRegion *, struct CuspRegion *, struct EdgeNode *); void update_cusp_triangle_endpoints(struct CuspRegion *, struct CuspRegion *, struct CuspRegion *, struct PathEndPoint *, struct EdgeNode *, int); diff --git a/dev/symplectic_basis/test.py b/dev/symplectic_basis/test.py index e9c901c5d..3c0a859f7 100644 --- a/dev/symplectic_basis/test.py +++ b/dev/symplectic_basis/test.py @@ -8,10 +8,6 @@ from multiprocessing import Pool -# Names "3_1(0,0)", "5_1(0,0)", "8_19(0,0)", "9_1(0,0)", "K13a4726(0,0)", "K13a4878(0,0)" -# ERROR_MANIFOLDS = [1, 4, 35, 76, 7703, 7855, 12442] - - def is_symplectic(M): """ Test if the matrix M is symplectic @@ -38,24 +34,27 @@ def symplectic_form(u, v): def process_manifold(i: int): - M = snappy.HTLinkExteriors[i] - label = M.identify() - - if i in ERROR_MANIFOLDS: + index = random.randint(1, 200000) + M = snappy.HTLinkExteriors[index] + if len(M.identify()) > 0: + label = M.identify()[0] + else: + label = "" + + if i == 0: return True with open("logs/links-" + str(i // 1000) + ".log", "a") as file: - test = "Testing: " + str(i) + ' ' + str(label) - file.write(test) - + print(index) basis = M.symplectic_basis() - result = is_symplectic(basis.data) + result = is_symplectic(basis) if result: - string = "Passed\n" + string = "Passed" else: - string = "Failed\n" - file.write((60 - len(test)) * " " + str(string)) + string = "Failed" + + file.write(f"Testing: {str(index)} {(20 - len(str(index))) * ' '} {str(label)} {(40 - len(str(label))) * ' '} {string}\n") return result @@ -80,25 +79,21 @@ def random_link_exteriors(n: int, n_tet: int, n_cusps: int): def test_link_complements_pool(start: int, end: int): scale = 1000 for i in range(start, end): - passed = True + passed = 'Passed' with open("logs/total.log", "a") as file: - file.write("[" + datetime.now().strftime("%d-%m-%y %H:%M:%S") + "] " + "Testing: " + str(scale * i) + " - " + str(scale * (i + 1) - 1) + "\n") + file.write(f"[{datetime.now().strftime('%d-%m-%y %H:%M:%S')}] Testing: {str(scale * i)} - {str(scale * (i + 1) - 1)}\n") with Pool() as pool: result = pool.imap(process_manifold, range(scale * i, scale * (i + 1))) for j, res in enumerate(result): if not res: - passed = False + passed = 'Failed' break with open("logs/total.log", "a") as file: - time = "[" + datetime.now().strftime("%d-%m-%y %H:%M:%S") + "] " - if passed: - file.write(time + "Passed\n") - else: - file.write(time + "Failed\n") + file.write(f"[{datetime.now().strftime('%d-%m-%y %H:%M:%S')}] {passed}\n") class TestSymplecticBasis(unittest.TestCase): @@ -114,7 +109,7 @@ def test_knot_complements(self): @unittest.skip def test_link_complements(self): i = 0 - for M in tqdm(snappy.HTLinkExteriors[1:1000], desc="Links...", ncols=120): + for M in tqdm(snappy.HTLinkExteriors[1:5000], desc="Links...", ncols=120): with self.subTest(i=i): # print(M.identify()[0]) basis = M.symplectic_basis() @@ -134,4 +129,7 @@ def test_random_links(self): if __name__ == "__main__": - unittest.main() + # test_link_complements_pool(0, 1) + # unittest.main() + M = snappy.HTLinkExteriors[159285] + M.symplectic_basis() diff --git a/kernel/kernel_code/symplectic_basis.c b/kernel/kernel_code/symplectic_basis.c index d0f59f54d..14eba5ae2 100644 --- a/kernel/kernel_code/symplectic_basis.c +++ b/kernel/kernel_code/symplectic_basis.c @@ -1,4 +1,4 @@ -/* +/** * Symplectic Basis * * Computes the symplectic basis of a cusped 3-manifold @@ -11,18 +11,20 @@ #define at_least_two(a, b, c) ((a) && (b)) || ((a) && (c)) || ((b) && (c)) -#define START 0 -#define FINISH 1 +enum pos { + START, + FINISH +}; /** * Queue */ typedef struct Queue { - int front; // First element of queue - int rear; // Last element of queue - int len; // num of elements - int size; // array size + int front; /** First element of queue */ + int rear; /** Last element of queue */ + int len; /** num of elements */ + int size; /** array size */ int *array; } Queue ; @@ -76,7 +78,9 @@ struct extra { int curve[4][4]; /** oscillating curve holonomy for a cusp triangle */ }; -/* +/** + * Path End Points + * * Path endpoints can have different states of initialisation. As a convention * if the pointers tri and region are NULL then endpoint is not initialised. * If tri is not NULL and region is NULL then the endpoint is initialised but @@ -106,21 +110,21 @@ typedef struct PathNode { struct PathNode *prev; } PathNode; -typedef struct DualCurves { - int edge_class[2]; +typedef struct CurveComponent { + int edge_class[2]; /** edge classes at path end points */ int cusp_index; /** which cusp does the curve lie in */ PathNode curves_begin; /** header node of doubbly linked list */ PathNode curves_end; /** tailer node of ... */ PathEndPoint endpoints[2]; /** path end points */ - struct DualCurves *next; /** next dual curve in doubly linked list */ - struct DualCurves *prev; /** prev dual curve in doubly linked list */ -} DualCurves; + struct CurveComponent *next; /** next curve component in doubly linked list */ + struct CurveComponent *prev; /** prev ... */ +} CurveComponent; typedef struct OscillatingCurves { int num_curves; int *edge_class; - DualCurves *dual_curve_begin; /** array of doubly linked lists of dual curves */ - DualCurves *dual_curve_end; /** array of doubly linkek lists of dual curves */ + CurveComponent *curve_begin; /** array of doubly linked lists of dual curves */ + CurveComponent *curve_end; /** array of doubly linkek lists of dual curves */ } OscillatingCurves; /** @@ -167,7 +171,7 @@ typedef struct CuspRegion { struct CuspRegion *prev; /** prev cusp region in doubly linked list */ } CuspRegion; -typedef struct ManifoldBoundary { +typedef struct CuspStructure { int intersect_tet_index; /** index of the intersection triangle */ VertexIndex intersect_tet_vertex; /** vertex of the intersection triangle */ int num_edge_classes; /** number of edge classes in the boundary */ @@ -184,7 +188,7 @@ typedef struct ManifoldBoundary { PathNode train_line_path_end; /** tailer node of ... */ PathEndPoint *train_line_endpoint; /** train line endpoints indexed by edge class */ PathEndPoint extra_endpoint_e0; /** extra endpoint in case E_0 lies in one cusp */ -} ManifoldBoundary; +} CuspStructure; /** * Queue Data Structure @@ -222,45 +226,45 @@ void find_path(int, int, int *, EdgeNode *); int *gluing_equations_for_edge_class(Triangulation *, int); int **get_symplectic_equations(Triangulation *, Boolean *, int *, int); -ManifoldBoundary *init_boundary(Triangulation *, Cusp *); -void free_boundary(ManifoldBoundary **, int, int); -void init_cusp_triangulation(Triangulation *, ManifoldBoundary *); +CuspStructure *init_cusp_structure(Triangulation *, Cusp *); +void free_cusp_structure(CuspStructure **, int, int); +void init_cusp_triangulation(Triangulation *, CuspStructure *); int net_flow_around_vertex(CuspTriangle *, int); void label_triangulation_edges(Triangulation *); CuspTriangle *find_cusp_triangle(CuspTriangle *, CuspTriangle *, CuspTriangle *, int); void label_cusp_vertex_indices(CuspTriangle *, CuspTriangle *, int); void walk_around_cusp_vertex(CuspTriangle *, int, int); -void init_cusp_region(ManifoldBoundary *); -int init_intersect_cusp_region(ManifoldBoundary *, CuspTriangle *, int); -int init_intersect_vertex_two_zero_flows(ManifoldBoundary *, CuspTriangle *, int); -int init_normal_cusp_region(ManifoldBoundary *, CuspTriangle *, int); +void init_cusp_region(CuspStructure *); +int init_intersect_cusp_region(CuspStructure *, CuspTriangle *, int); +int init_intersect_vertex_two_zero_flows(CuspStructure *, CuspTriangle *, int); +int init_normal_cusp_region(CuspStructure *, CuspTriangle *, int); void set_cusp_region_data(CuspRegion *, CuspTriangle *, const int [4], const Boolean [4], int); void update_adj_region_data(CuspRegion *, CuspRegion *); CuspRegion *find_adj_region(CuspRegion *, CuspRegion *, CuspRegion *, int); -void init_train_line(ManifoldBoundary *); -DualCurves *init_dual_curve(int, int); +void init_train_line(CuspStructure *); +CurveComponent *init_curve_component(int, int); OscillatingCurves *init_oscillating_curves(Triangulation *, const Boolean *); void free_oscillating_curves(OscillatingCurves *); -void find_intersection_triangle(Triangulation *, ManifoldBoundary *); +void find_intersection_triangle(Triangulation *, CuspStructure *); /** * Train lines */ -void do_manifold_train_lines(ManifoldBoundary **, EndMultiGraph *); +void do_manifold_train_lines(CuspStructure **, EndMultiGraph *); int *find_tet_index_for_edge_classes(Triangulation *); Boolean set_edge_class_for_tet(Triangulation *, Tetrahedron *, int *); -void find_edge_class_edges(ManifoldBoundary **, EndMultiGraph *); -void find_edge_class_edges_on_cusp(ManifoldBoundary *, EndMultiGraph *, const Boolean *, const int *); -void find_e0_edges_on_cusp(ManifoldBoundary **, EndMultiGraph *, const int *); -Boolean *update_edge_classes_on_cusp(ManifoldBoundary **, Boolean **, int, int, int); -void find_primary_train_line(ManifoldBoundary *, EndMultiGraph *); -void do_initial_train_line_segment_on_cusp(ManifoldBoundary *, PathEndPoint *, PathEndPoint *); -void do_train_line_segment_on_cusp(ManifoldBoundary *, PathEndPoint *, PathEndPoint *); +void find_edge_class_edges(CuspStructure **, EndMultiGraph *); +void find_edge_class_edges_on_cusp(CuspStructure *, EndMultiGraph *, const Boolean *, const int *); +void find_e0_edges_on_cusp(CuspStructure **, EndMultiGraph *, const int *); +Boolean *update_edge_classes_on_cusp(CuspStructure **, Boolean **, int, int, int); +void find_primary_train_line(CuspStructure *, EndMultiGraph *); +void do_initial_train_line_segment_on_cusp(CuspStructure *, PathEndPoint *, PathEndPoint *); +void do_train_line_segment_on_cusp(CuspStructure *, PathEndPoint *, PathEndPoint *); int next_valid_endpoint_index(PathEndPoint *, int, int); -void tri_endpoint_to_region_endpoint(ManifoldBoundary *, PathEndPoint *); +void tri_endpoint_to_region_endpoint(CuspStructure *, PathEndPoint *); void graph_path_to_path_node(Graph *, EdgeNode *, EdgeNode *, PathNode *, PathNode *, PathEndPoint *, PathEndPoint *); -void split_cusp_regions_along_train_line_segment(ManifoldBoundary *, PathEndPoint *, PathEndPoint *); +void split_cusp_regions_along_train_line_segment(CuspStructure *, PathEndPoint *, PathEndPoint *); void update_cusp_triangle_train_line_endpoints(CuspRegion *, CuspRegion *, CuspRegion *, PathNode *, PathEndPoint *, int); void split_cusp_region_train_line_endpoint(CuspRegion *, CuspRegion *, PathNode *, PathEndPoint *, int, int); @@ -268,31 +272,31 @@ void split_cusp_region_train_line_endpoint(CuspRegion *, Cusp * Construct Oscillating Curves and calculate holonomy */ -void do_oscillating_curves(ManifoldBoundary **, OscillatingCurves *, EndMultiGraph *); -void do_one_dual_curve(ManifoldBoundary **, OscillatingCurves *, DualCurves *, DualCurves *, EndMultiGraph *, int, int); +void do_oscillating_curves(CuspStructure **, OscillatingCurves *, EndMultiGraph *); +void do_one_oscillating_curve(CuspStructure **, OscillatingCurves *, EndMultiGraph *, int, int); void copy_path_endpoint(PathEndPoint *, PathEndPoint *); -void do_one_cusp_on_train_line(ManifoldBoundary *, DualCurves *); +void do_curve_component_on_train_line(CuspStructure *, CurveComponent *); PathNode *copy_path_node(PathNode *); -void do_one_cusp_to_new_edge_class(ManifoldBoundary *, DualCurves *); -void construct_cusp_region_dual_graph(ManifoldBoundary *); -void print_debug_info(Triangulation *, ManifoldBoundary **, OscillatingCurves *, int); -void find_path_endpoints(ManifoldBoundary *, DualCurves *, DualCurves *, int, Boolean, Boolean); +void do_curve_component_to_new_edge_class(CuspStructure *, CurveComponent *); +void construct_cusp_region_dual_graph(CuspStructure *); +void print_debug_info(Triangulation *, CuspStructure **, OscillatingCurves *, int); +void find_path_endpoints(CuspStructure *, CurveComponent *, CurveComponent *, int, Boolean, Boolean); PathEndPoint *find_single_endpoint(Graph *, PathEndPoint *, int, int); PathEndPoint *find_single_matching_endpoint(Graph *, PathEndPoint *, PathEndPoint *, int, int); -PathEndPoint *find_train_line_endpoint(ManifoldBoundary *, PathEndPoint *, int, int, int, Boolean); +PathEndPoint *find_train_line_endpoint(CuspStructure *, PathEndPoint *, int, int, int, Boolean); void graph_path_to_dual_curve(Graph *g, EdgeNode *, EdgeNode *, PathNode *, PathNode *, PathEndPoint *, PathEndPoint *); void endpoint_edge_node_to_path_node(CuspRegion *, PathNode *, EdgeNode *, PathEndPoint *, int); void interior_edge_node_to_path_node(CuspRegion *, PathNode *, EdgeNode *); -void split_cusp_regions_along_path(ManifoldBoundary *, PathNode *, PathNode *, PathEndPoint *, PathEndPoint *); +void split_cusp_regions_along_path(CuspStructure *, PathNode *, PathNode *, PathEndPoint *, PathEndPoint *); void split_cusp_region_path_interior(CuspRegion *, CuspRegion *, PathNode *, int); void split_cusp_region_path_endpoint(CuspRegion *, CuspRegion *, PathNode *, PathEndPoint *, int, int); void update_cusp_triangle_path_interior(CuspRegion *, CuspRegion *, CuspRegion *, PathNode *); void update_cusp_triangle_endpoints(CuspRegion *, CuspRegion *, CuspRegion *, PathEndPoint *, PathNode *, int); void copy_region(CuspRegion *, CuspRegion *); -void update_adj_curve_along_path(ManifoldBoundary **, OscillatingCurves *, int); -void update_adj_curve_at_endpoint(PathEndPoint *, DualCurves *, int); -void update_adj_curve_on_cusp(ManifoldBoundary *); -void update_path_holonomy(DualCurves *, int); +void update_adj_curve_along_path(CuspStructure **, OscillatingCurves *, int); +void update_adj_curve_at_endpoint(PathEndPoint *, CurveComponent *, int); +void update_adj_curve_on_cusp(CuspStructure *); +void update_path_holonomy(CurveComponent *, int); void calculate_holonomy(Triangulation *, int **, int); @@ -313,7 +317,6 @@ CuspEndPoint *find_multi_graph_path(EndMultiGraph *, Triangulation *, CuspEndPoint *graph_path_to_cusp_path(EndMultiGraph *, EdgeNode *, EdgeNode *, int); void find_edge_ends(Graph *, Triangulation *, int, int *, int *); Boolean *edge_classes_on_cusp(EndMultiGraph *, int); -void print_graph(Graph *); int edgesThreeToFour[4][3] = {{1, 2, 3}, {0, 2, 3}, @@ -332,7 +335,7 @@ Queue *init_queue(int size) { q->front = 0; q->rear = -1; q->len = 0; - q->size = MIN(size, 256); + q->size = MAX(size, 256); q->array = NEW_ARRAY(q->size, int); return q; @@ -730,7 +733,7 @@ int **get_symplectic_equations(Triangulation *manifold, Boolean *edge_classes, i int i, j, k; label_triangulation_edges(manifold); - ManifoldBoundary **cusps = NEW_ARRAY(manifold->num_cusps, ManifoldBoundary *); + CuspStructure **cusps = NEW_ARRAY(manifold->num_cusps, CuspStructure *); Cusp *cusp = manifold->cusp_list_begin.next; EndMultiGraph *end_multi_graph = init_end_multi_graph(manifold); @@ -739,10 +742,10 @@ int **get_symplectic_equations(Triangulation *manifold, Boolean *edge_classes, i edge_classes[end_multi_graph->e0] = FALSE; - OscillatingCurves *oscillating_curves = init_oscillating_curves(manifold, edge_classes); + OscillatingCurves *dual_curves = init_oscillating_curves(manifold, edge_classes); for (i = 0; i < manifold->num_cusps; i++) { - cusps[i] = init_boundary(manifold, cusp); + cusps[i] = init_cusp_structure(manifold, cusp); cusp = cusp->next; } @@ -759,14 +762,14 @@ int **get_symplectic_equations(Triangulation *manifold, Boolean *edge_classes, i tet->extra[i].curve[j][k] = 0; } - print_debug_info(manifold, cusps, oscillating_curves, 0); // Gluing - print_debug_info(manifold, cusps, oscillating_curves, 3); // Homology - print_debug_info(manifold, cusps, oscillating_curves, 4); // Edge classes - print_debug_info(manifold, cusps, oscillating_curves, 6); // Inside Edge - print_debug_info(manifold, cusps, oscillating_curves, 2); // Regions + print_debug_info(manifold, cusps, dual_curves, 0); // Gluing + print_debug_info(manifold, cusps, dual_curves, 3); // Homology + print_debug_info(manifold, cusps, dual_curves, 4); // Edge classes + print_debug_info(manifold, cusps, dual_curves, 6); // Inside Edge + print_debug_info(manifold, cusps, dual_curves, 2); // Regions // Allocate Symplectic Equations Array - *num_rows = oscillating_curves->num_curves; + *num_rows = dual_curves->num_curves; int **symp_eqns = NEW_ARRAY(manifold->num_tetrahedra, int *); for (i = 0; i < manifold->num_tetrahedra; i ++) { @@ -777,12 +780,12 @@ int **get_symplectic_equations(Triangulation *manifold, Boolean *edge_classes, i } do_manifold_train_lines(cusps, end_multi_graph); - do_oscillating_curves(cusps, oscillating_curves, end_multi_graph); + do_oscillating_curves(cusps, dual_curves, end_multi_graph); calculate_holonomy(manifold, symp_eqns, manifold->num_tetrahedra); free_end_multi_graph(end_multi_graph); - free_oscillating_curves(oscillating_curves); - free_boundary(cusps, manifold->num_cusps, manifold->num_tetrahedra); + free_oscillating_curves(dual_curves); + free_cusp_structure(cusps, manifold->num_cusps, manifold->num_tetrahedra); for (tet = manifold->tet_list_begin.next; tet != &manifold->tet_list_end; tet = tet->next) { my_free(tet->extra); @@ -800,12 +803,12 @@ void free_symplectic_basis(int **eqns, int num_rows) { my_free(eqns); } -ManifoldBoundary *init_boundary(Triangulation *manifold, Cusp *cusp) { - ManifoldBoundary *boundary = NEW_STRUCT(ManifoldBoundary); +CuspStructure *init_cusp_structure(Triangulation *manifold, Cusp *cusp) { + CuspStructure *boundary = NEW_STRUCT(CuspStructure); // Invalid cusp topology if (cusp->topology == Klein_cusp) - uFatalError("init_boundary", "symplectic_basis"); + uFatalError("init_cusp_structure", "symplectic_basis"); boundary->manifold = manifold; boundary->cusp = cusp; @@ -824,12 +827,12 @@ ManifoldBoundary *init_boundary(Triangulation *manifold, Cusp *cusp) { return boundary; } -void free_boundary(ManifoldBoundary **cusps, int num_cusps, int num_edge_classes) { +void free_cusp_structure(CuspStructure **cusps, int num_cusps, int num_edge_classes) { int cusp_index; CuspTriangle *tri; CuspRegion *region; PathNode *path_node; - ManifoldBoundary *boundary; + CuspStructure *boundary; for (cusp_index = 0; cusp_index < num_cusps; cusp_index++) { boundary = cusps[cusp_index]; @@ -876,7 +879,7 @@ void free_boundary(ManifoldBoundary **cusps, int num_cusps, int num_edge_classes * to construct the cusp regions. */ -void find_intersection_triangle(Triangulation *manifold, ManifoldBoundary *boundary) { +void find_intersection_triangle(Triangulation *manifold, CuspStructure *boundary) { FaceIndex face; Cusp *cusp = boundary->cusp; int n; @@ -930,7 +933,7 @@ void find_intersection_triangle(Triangulation *manifold, ManifoldBoundary *bound * triangles in the cusp triangulation */ -void init_cusp_triangulation(Triangulation *manifold, ManifoldBoundary *boundary) { +void init_cusp_triangulation(Triangulation *manifold, CuspStructure *boundary) { int index = 0; VertexIndex vertex; FaceIndex face; @@ -1067,7 +1070,7 @@ void walk_around_cusp_vertex(CuspTriangle *tri, int cusp_vertex, int index) { * by the meridian and longitude curves. */ -void init_cusp_region(ManifoldBoundary *boundary) { +void init_cusp_region(CuspStructure *boundary) { int index = 0; CuspTriangle *tri; @@ -1097,7 +1100,7 @@ void init_cusp_region(ManifoldBoundary *boundary) { * valid intersection. */ -int init_intersect_cusp_region(ManifoldBoundary *boundary, CuspTriangle *tri, int index) { +int init_intersect_cusp_region(CuspStructure *boundary, CuspTriangle *tri, int index) { int i, curve_index, vertex, v1, v2, v3; int distance[4]; Boolean adj_triangle[4]; @@ -1185,7 +1188,7 @@ int init_intersect_cusp_region(ManifoldBoundary *boundary, CuspTriangle *tri, in return index; } -int init_intersect_vertex_two_zero_flows(ManifoldBoundary *boundary, CuspTriangle *tri, int index) { +int init_intersect_vertex_two_zero_flows(CuspStructure *boundary, CuspTriangle *tri, int index) { int vertex, v1, v2, v3, distance[4]; Boolean adj_triangle[4]; @@ -1233,7 +1236,7 @@ int init_intersect_vertex_two_zero_flows(ManifoldBoundary *boundary, CuspTriangl return index + 1; } -int init_normal_cusp_region(ManifoldBoundary *boundary, CuspTriangle *tri, int index) { +int init_normal_cusp_region(CuspStructure *boundary, CuspTriangle *tri, int index) { int i, vertex, v1, v2; int distance[4]; Boolean adj_triangle[4]; @@ -1404,7 +1407,7 @@ CuspRegion *find_adj_region(CuspRegion *cusp_region_begin, CuspRegion *cusp_regi return NULL; } -void init_train_line(ManifoldBoundary *cusp) { +void init_train_line(CuspStructure *cusp) { int f, v, edge_class; cusp->train_line_path_begin.next = &cusp->train_line_path_end; @@ -1436,10 +1439,10 @@ void init_train_line(ManifoldBoundary *cusp) { } } -DualCurves *init_dual_curve(int edge_class_start, int edge_class_finish) { +CurveComponent *init_curve_component(int edge_class_start, int edge_class_finish) { int i, v, f; - DualCurves *path = NEW_STRUCT( DualCurves ); + CurveComponent *path = NEW_STRUCT(CurveComponent ); path->curves_begin.next = &path->curves_end; path->curves_begin.prev = NULL; @@ -1477,8 +1480,8 @@ OscillatingCurves *init_oscillating_curves(Triangulation *manifold, const Boolea if (edge_classes[i]) curves->num_curves++; - curves->dual_curve_begin = NEW_ARRAY(curves->num_curves, DualCurves ); - curves->dual_curve_end = NEW_ARRAY(curves->num_curves, DualCurves ); + curves->curve_begin = NEW_ARRAY(curves->num_curves, CurveComponent ); + curves->curve_end = NEW_ARRAY(curves->num_curves, CurveComponent ); curves->edge_class = NEW_ARRAY(curves->num_curves, int); j = 0; @@ -1492,10 +1495,10 @@ OscillatingCurves *init_oscillating_curves(Triangulation *manifold, const Boolea // which curve for (i = 0; i < curves->num_curves; i++) { - curves->dual_curve_begin[i].next = &curves->dual_curve_end[i]; - curves->dual_curve_begin[i].prev = NULL; - curves->dual_curve_end[i].next = NULL; - curves->dual_curve_end[i].prev = &curves->dual_curve_begin[i]; + curves->curve_begin[i].next = &curves->curve_end[i]; + curves->curve_begin[i].prev = NULL; + curves->curve_end[i].next = NULL; + curves->curve_end[i].prev = &curves->curve_begin[i]; } return curves; @@ -1503,12 +1506,12 @@ OscillatingCurves *init_oscillating_curves(Triangulation *manifold, const Boolea void free_oscillating_curves(OscillatingCurves *curves) { int i; - DualCurves *path; + CurveComponent *path; PathNode *path_node; for (i = 0; i < curves->num_curves; i++) { - while (curves->dual_curve_begin[i].next != &curves->dual_curve_end[i]) { - path = curves->dual_curve_begin[i].next; + while (curves->curve_begin[i].next != &curves->curve_end[i]) { + path = curves->curve_begin[i].next; REMOVE_NODE(path); while (path->curves_begin.next != &path->curves_end) { @@ -1521,8 +1524,8 @@ void free_oscillating_curves(OscillatingCurves *curves) { } } - my_free(curves->dual_curve_begin); - my_free(curves->dual_curve_end); + my_free(curves->curve_begin); + my_free(curves->curve_end); my_free(curves->edge_class); my_free(curves); } @@ -1532,7 +1535,7 @@ void free_oscillating_curves(OscillatingCurves *curves) { * each vertex, and adding edges using region->adj_cusp_regions[]. */ -void construct_cusp_region_dual_graph(ManifoldBoundary *boundary) { +void construct_cusp_region_dual_graph(CuspStructure *boundary) { int i, face; CuspRegion *region; @@ -1582,16 +1585,16 @@ void construct_cusp_region_dual_graph(ManifoldBoundary *boundary) { * - 8: End points */ -void print_debug_info(Triangulation *manifold, ManifoldBoundary **cusps, OscillatingCurves *curves, int flag) { +void print_debug_info(Triangulation *manifold, CuspStructure **cusps, OscillatingCurves *curves, int flag) { int i, j, k, x_vertex1, x_vertex2, y_vertex1, y_vertex2, v1, v2, v3; CuspTriangle *tri; CuspRegion *region; EdgeNode *edge_node; PathNode *path_node; - DualCurves *path; + CurveComponent *path; Graph *g; - ManifoldBoundary *boundary; + CuspStructure *boundary; PathEndPoint *endpoint; if (!debug) @@ -1765,7 +1768,7 @@ void print_debug_info(Triangulation *manifold, ManifoldBoundary **cusps, Oscilla printf("Dual Curve %d\n", i); // which curve component - for (path = curves->dual_curve_begin[i].next; path != &curves->dual_curve_end[i]; path = path->next) { + for (path = curves->curve_begin[i].next; path != &curves->curve_end[i]; path = path->next) { printf(" Part %d: ", j); for (path_node = path->curves_begin.next; @@ -1830,7 +1833,7 @@ void print_debug_info(Triangulation *manifold, ManifoldBoundary **cusps, Oscilla j = 0; // which component - for (path = curves->dual_curve_begin[i].next; path != &curves->dual_curve_end[i]; path = path->next) { + for (path = curves->curve_begin[i].next; path != &curves->curve_end[i]; path = path->next) { printf(" Part %d Cusp %d\n", j, path->endpoints[0].tri->tet->cusp[path->endpoints[0].tri->tet_vertex]->index); for (k = 0; k < 2; k++) { if (k == 0) @@ -1930,7 +1933,7 @@ CuspTriangle *find_cusp_triangle(CuspTriangle *cusp_triangle_begin, CuspTriangle * */ -void do_manifold_train_lines(ManifoldBoundary **cusps, EndMultiGraph *multi_graph) { +void do_manifold_train_lines(CuspStructure **cusps, EndMultiGraph *multi_graph) { int cusp_index; find_edge_class_edges(cusps, multi_graph); @@ -2003,7 +2006,7 @@ Boolean set_edge_class_for_tet(Triangulation *manifold, Tetrahedron *tet, int *e * classes in the end multi graph connect two disctint cusps. */ -void find_edge_class_edges(ManifoldBoundary **cusps, EndMultiGraph *multi_graph) { +void find_edge_class_edges(CuspStructure **cusps, EndMultiGraph *multi_graph) { int edge_class, cusp_index, other_cusp_index; int *edge_class_to_tet_index = find_tet_index_for_edge_classes(cusps[0]->manifold); Boolean found_edge_class; @@ -2057,7 +2060,7 @@ void find_edge_class_edges(ManifoldBoundary **cusps, EndMultiGraph *multi_graph) } -void find_edge_class_edges_on_cusp(ManifoldBoundary *cusp, EndMultiGraph *multi_graph, +void find_edge_class_edges_on_cusp(CuspStructure *cusp, EndMultiGraph *multi_graph, const Boolean *edge_classes, const int *edge_class_to_tet_index) { int edge_class; VertexIndex v1, v2; @@ -2105,7 +2108,7 @@ void find_edge_class_edges_on_cusp(ManifoldBoundary *cusp, EndMultiGraph *multi_ } } -void find_e0_edges_on_cusp(ManifoldBoundary **cusps, EndMultiGraph *multi_graph, const int *edge_class_to_tet_index) { +void find_e0_edges_on_cusp(CuspStructure **cusps, EndMultiGraph *multi_graph, const int *edge_class_to_tet_index) { int cusp1, cusp2; VertexIndex vertex; CuspTriangle *tri; @@ -2168,11 +2171,11 @@ void find_e0_edges_on_cusp(ManifoldBoundary **cusps, EndMultiGraph *multi_graph, * edge_begin and edges_end arrays, so the final train lines are consistent. */ -Boolean *update_edge_classes_on_cusp(ManifoldBoundary **cusps, Boolean **edge_classes, - int num_cusps, int num_edge_classes, int current_cusp_index) { +Boolean *update_edge_classes_on_cusp(CuspStructure **cusps, Boolean **edge_classes, + int num_cusps, int num_edge_classes, int current_cusp_index) { int cusp_index, other_cusp_index, edge_class; VertexIndex v1, v2, vertex; - ManifoldBoundary *cusp = cusps[current_cusp_index]; + CuspStructure *cusp = cusps[current_cusp_index]; Boolean *visited_cusp = NEW_ARRAY(num_edge_classes, Boolean); PathEndPoint *endpoint; CuspTriangle *tri, *adj_tri; @@ -2233,7 +2236,7 @@ Boolean *update_edge_classes_on_cusp(ManifoldBoundary **cusps, Boolean **edge_cl * through a cusp which passes along each target edge. */ -void find_primary_train_line(ManifoldBoundary *cusp, EndMultiGraph *multi_graph) { +void find_primary_train_line(CuspStructure *cusp, EndMultiGraph *multi_graph) { int endpoint_start_index, endpoint_finish_index; PathEndPoint *start, *finish; @@ -2277,11 +2280,11 @@ void find_primary_train_line(ManifoldBoundary *cusp, EndMultiGraph *multi_graph) /* * Construct the first segment of a train line. Essentially the same process - * as do_one_cusp_to_new_edge_class but stores the result in the cusp train + * as do_curve_component_to_new_edge_class but stores the result in the cusp train * line. */ -void do_initial_train_line_segment_on_cusp(ManifoldBoundary *cusp, PathEndPoint *start_endpoint, PathEndPoint *finish_endpoint) { +void do_initial_train_line_segment_on_cusp(CuspStructure *cusp, PathEndPoint *start_endpoint, PathEndPoint *finish_endpoint) { EdgeNode *node_begin, *node_end, *edge_node; Boolean *processed; Boolean *discovered; @@ -2336,7 +2339,7 @@ void do_initial_train_line_segment_on_cusp(ManifoldBoundary *cusp, PathEndPoint * adjacent across the face of the cusp triangle we dive along. */ -void do_train_line_segment_on_cusp(ManifoldBoundary *cusp, PathEndPoint *start_endpoint, PathEndPoint *finish_endpoint) { +void do_train_line_segment_on_cusp(CuspStructure *cusp, PathEndPoint *start_endpoint, PathEndPoint *finish_endpoint) { EdgeNode *node_begin = NEW_STRUCT( EdgeNode ); EdgeNode *node_end = NEW_STRUCT( EdgeNode ); EdgeNode *edge_node; @@ -2428,7 +2431,7 @@ int next_valid_endpoint_index(PathEndPoint *endpoints, int num_endpoints, int cu * Find a valid region for a path endpoint */ -void tri_endpoint_to_region_endpoint(ManifoldBoundary *cusp, PathEndPoint *endpoint) { +void tri_endpoint_to_region_endpoint(CuspStructure *cusp, PathEndPoint *endpoint) { CuspRegion *region; for (region = cusp->cusp_region_begin.next; region != &cusp->cusp_region_end; region = region->next) { @@ -2510,7 +2513,7 @@ void graph_path_to_path_node(Graph *g, EdgeNode *node_begin, EdgeNode *node_end, endpoint_edge_node_to_path_node(g->regions[edge_node->y], path_end, edge_node, finish_endpoint, FINISH); } -void split_cusp_regions_along_train_line_segment(ManifoldBoundary *cusp, PathEndPoint *start_endpoint, PathEndPoint *finish_endpoint) { +void split_cusp_regions_along_train_line_segment(CuspStructure *cusp, PathEndPoint *start_endpoint, PathEndPoint *finish_endpoint) { int index = cusp->num_cusp_regions, split_type; PathNode *node, *path_begin = &cusp->train_line_path_begin, @@ -2662,14 +2665,11 @@ void split_cusp_region_train_line_endpoint(CuspRegion *region_end, CuspRegion *r // ------------------------------------ -void do_oscillating_curves(ManifoldBoundary **cusps, OscillatingCurves *curves, EndMultiGraph *multi_graph) { +void do_oscillating_curves(CuspStructure **cusps, OscillatingCurves *curves, EndMultiGraph *multi_graph) { int i; for (i = 0; i < curves->num_curves; i++) { - do_one_dual_curve(cusps, curves, - &curves->dual_curve_begin[i], - &curves->dual_curve_end[i], - multi_graph, curves->edge_class[i], i); + do_one_oscillating_curve(cusps, curves, multi_graph, curves->edge_class[i], i); print_debug_info(cusps[0]->manifold, cusps, curves, 5); print_debug_info(cusps[0]->manifold, cusps, curves, 8); @@ -2684,27 +2684,25 @@ void do_oscillating_curves(ManifoldBoundary **cusps, OscillatingCurves *curves, * in the end multi graph and thus is a segment of the train line. */ -void do_one_dual_curve(ManifoldBoundary **cusps, OscillatingCurves *curves, DualCurves *dual_curve_begin, - DualCurves *dual_curve_end, EndMultiGraph *multi_graph, int edge_class, int curve_index) { - int path_length; +void do_one_oscillating_curve(CuspStructure **cusps, OscillatingCurves *curves, EndMultiGraph *multi_graph, + int edge_class, int curve_index) { + int path_length, orientation = START; CuspEndPoint *cusp_end_point, *endpoint; - DualCurves *path; - int orientation = START; + CurveComponent *path, + *curve_begin = &curves->curve_begin[curve_index], + *curve_end = &curves->curve_end[curve_index]; - // find paths through cusps cusp_end_point = find_multi_graph_path(multi_graph, cusps[0]->manifold, edge_class, &path_length); - - // find paths inside each cusp - dual_curve_begin->edge_class[FINISH] = edge_class; - dual_curve_end->edge_class[START] = edge_class; + curve_begin->edge_class[FINISH] = edge_class; + curve_end->edge_class[START] = edge_class; - path = init_dual_curve(cusp_end_point->edge_class[START], cusp_end_point->edge_class[FINISH]); - INSERT_BEFORE(path, dual_curve_end); + path = init_curve_component(cusp_end_point->edge_class[START], cusp_end_point->edge_class[FINISH]); + INSERT_BEFORE(path, curve_end); path->cusp_index = cusp_end_point->cusp_index; construct_cusp_region_dual_graph(cusps[path->cusp_index]); - find_path_endpoints(cusps[path->cusp_index], dual_curve_begin, path, multi_graph->e0, TRUE, + find_path_endpoints(cusps[path->cusp_index], curve_begin, path, multi_graph->e0, TRUE, (Boolean) (cusp_end_point->next->next != NULL)); - do_one_cusp_to_new_edge_class(cusps[path->cusp_index], path); + do_curve_component_to_new_edge_class(cusps[path->cusp_index], path); update_path_holonomy(path, edge_class); print_debug_info(cusps[0]->manifold, cusps, NULL, 2); @@ -2715,10 +2713,10 @@ void do_one_dual_curve(ManifoldBoundary **cusps, OscillatingCurves *curves, Dual // use train lines if (orientation == START) - path = init_dual_curve(endpoint->edge_class[START], endpoint->edge_class[FINISH]); + path = init_curve_component(endpoint->edge_class[START], endpoint->edge_class[FINISH]); else - path = init_dual_curve(endpoint->edge_class[FINISH], endpoint->edge_class[START]); - INSERT_BEFORE(path, dual_curve_end); + path = init_curve_component(endpoint->edge_class[FINISH], endpoint->edge_class[START]); + INSERT_BEFORE(path, curve_end); path->cusp_index = endpoint->cusp_index; if (path->edge_class[START] == multi_graph->e0 && orientation == START && cusps[path->cusp_index]->extra_endpoint_e0.tri != NULL) { @@ -2728,18 +2726,18 @@ void do_one_dual_curve(ManifoldBoundary **cusps, OscillatingCurves *curves, Dual } copy_path_endpoint(&path->endpoints[FINISH], &cusps[path->cusp_index]->train_line_endpoint[path->edge_class[FINISH]]); - do_one_cusp_on_train_line(cusps[path->cusp_index], path); + do_curve_component_on_train_line(cusps[path->cusp_index], path); update_path_holonomy(path, edge_class); } - path = init_dual_curve(endpoint->edge_class[START], endpoint->edge_class[FINISH]); - INSERT_BEFORE(path, dual_curve_end); + path = init_curve_component(endpoint->edge_class[START], endpoint->edge_class[FINISH]); + INSERT_BEFORE(path, curve_end); path->cusp_index = endpoint->cusp_index; construct_cusp_region_dual_graph(cusps[path->cusp_index]); - find_path_endpoints(cusps[path->cusp_index], dual_curve_begin, path, multi_graph->e0, FALSE, + find_path_endpoints(cusps[path->cusp_index], curve_begin, path, multi_graph->e0, FALSE, (Boolean) (cusp_end_point->next->next != NULL)); - do_one_cusp_to_new_edge_class(cusps[path->cusp_index], path); + do_curve_component_to_new_edge_class(cusps[path->cusp_index], path); update_path_holonomy(path, edge_class); update_adj_curve_along_path(cusps, curves, curve_index); @@ -2765,16 +2763,16 @@ void copy_path_endpoint(PathEndPoint *endpoint1, PathEndPoint *endpoint2) { } /* - * Find a path along the train line and copy it to 'path' + * Find a curve along the train line and copy it to 'curve' */ -void do_one_cusp_on_train_line(ManifoldBoundary *cusp, DualCurves *path) { +void do_curve_component_on_train_line(CuspStructure *cusp, CurveComponent *curve) { int orientation = 0; PathNode *node, *new_node, *start_node, *finish_node; FaceIndex temp_face; - start_node = path->endpoints[START].node; - finish_node = path->endpoints[FINISH].node; + start_node = curve->endpoints[START].node; + finish_node = curve->endpoints[FINISH].node; for (node = cusp->train_line_path_begin.next; node != &cusp->train_line_path_end; node = node->next) { if (node == start_node) { @@ -2787,16 +2785,16 @@ void do_one_cusp_on_train_line(ManifoldBoundary *cusp, DualCurves *path) { } if (orientation == 1) { - // copy the train line into the path + // copy the train line into the curve for (node = start_node; node != finish_node->next; node = node->next) { new_node = copy_path_node(node); - INSERT_BEFORE(new_node, &path->curves_end); + INSERT_BEFORE(new_node, &curve->curves_end); } } else if (orientation == -1) { - // copy the train line into the path + // copy the train line into the curve for (node = start_node; node != finish_node->prev; node = node->prev) { new_node = copy_path_node(node); - INSERT_BEFORE(new_node, &path->curves_end); + INSERT_BEFORE(new_node, &curve->curves_end); // reverse direction of faces temp_face = new_node->next_face; @@ -2804,11 +2802,11 @@ void do_one_cusp_on_train_line(ManifoldBoundary *cusp, DualCurves *path) { new_node->prev_face = temp_face; } } else - uFatalError("do_one_cusp_on_train_line", "symplectic_basis"); + uFatalError("do_curve_component_on_train_line", "symplectic_basis"); // correct endpoint inside vertices - path->curves_begin.next->prev_face = path->endpoints[START].face; - path->curves_end.prev->next_face = path->endpoints[FINISH].face; + curve->curves_begin.next->prev_face = curve->endpoints[START].face; + curve->curves_end.prev->next_face = curve->endpoints[FINISH].face; } PathNode *copy_path_node(PathNode *node) { @@ -2829,7 +2827,7 @@ PathNode *copy_path_node(PathNode *node) { * Construct oscillating curves on the boundary components */ -void do_one_cusp_to_new_edge_class(ManifoldBoundary *cusp, DualCurves *path) { +void do_curve_component_to_new_edge_class(CuspStructure *cusp, CurveComponent *curve) { int *parent; Boolean *processed, *discovered; EdgeNode *node_begin, *node_end, *edge_node; @@ -2846,25 +2844,25 @@ void do_one_cusp_to_new_edge_class(ManifoldBoundary *cusp, DualCurves *path) { node_end->next = NULL; node_end->prev = node_begin; - // Find path using bfs + // Find curve using bfs init_search(cusp->dual_graph, processed, discovered, parent); - bfs(cusp->dual_graph, path->endpoints[START].region_index, processed, discovered, parent); - find_path(path->endpoints[START].region_index, path->endpoints[FINISH].region_index, + bfs(cusp->dual_graph, curve->endpoints[START].region_index, processed, discovered, parent); + find_path(curve->endpoints[START].region_index, curve->endpoints[FINISH].region_index, parent, node_begin); - graph_path_to_dual_curve(cusp->dual_graph, node_begin, node_end, &path->curves_begin, - &path->curves_end, &path->endpoints[START], &path->endpoints[FINISH]); + graph_path_to_dual_curve(cusp->dual_graph, node_begin, node_end, &curve->curves_begin, + &curve->curves_end, &curve->endpoints[START], &curve->endpoints[FINISH]); // Reallocate memory my_free(processed); my_free(discovered); my_free(parent); - // Split the regions along the path + // Split the regions along the curve split_cusp_regions_along_path(cusp, - &path->curves_begin, - &path->curves_end, - &path->endpoints[START], - &path->endpoints[FINISH]); + &curve->curves_begin, + &curve->curves_end, + &curve->endpoints[START], + &curve->endpoints[FINISH]); while (node_begin->next != node_end) { edge_node = node_begin->next; @@ -2878,13 +2876,13 @@ void do_one_cusp_to_new_edge_class(ManifoldBoundary *cusp, DualCurves *path) { /* - * Find the indicies of the cusp triangles which dive through the manifold - * along the given edgeclass. If copy is true, find the path end point + * Find the indices of the cusp triangles which dive through the manifold + * along the given edge class. If copy is true, find the path end point * corresponding to path1 and store it in path2. Else find a valid path end * point and store in path2 */ -void find_path_endpoints(ManifoldBoundary *cusp, DualCurves *path_start, DualCurves *path, int e0, +void find_path_endpoints(CuspStructure *cusp, CurveComponent *path_start, CurveComponent *path, int e0, Boolean is_first_endpoint, Boolean is_train_line) { int endpoint1_edge_class, endpoint1_edge_index, endpoint2_edge_class, endpoint2_edge_index; PathEndPoint *endpoint1_path1, *endpoint1_path2, *endpoint2_path1, *endpoint2_path2; @@ -2898,7 +2896,6 @@ void find_path_endpoints(ManifoldBoundary *cusp, DualCurves *path_start, DualCur endpoint2_path2 = &path->endpoints[FINISH]; endpoint2_edge_class = path->edge_class[FINISH]; endpoint2_edge_index = START; -// find_single_endpoint(cusp->dual_graph, endpoint2_path2, endpoint2_edge_class, endpoint2_edge_index); find_train_line_endpoint(cusp, endpoint2_path2, endpoint2_edge_class, endpoint2_edge_index, e0, is_train_line); } else { endpoint1_path1 = &path_start->next->endpoints[START]; @@ -2912,7 +2909,6 @@ void find_path_endpoints(ManifoldBoundary *cusp, DualCurves *path_start, DualCur endpoint2_edge_class = path->prev->edge_class[FINISH]; endpoint2_edge_index = FINISH; find_single_matching_endpoint(cusp->dual_graph, endpoint2_path1, endpoint2_path2, endpoint2_edge_class, endpoint2_edge_index); -// find_train_line_endpoint(cusp, endpoint2_path2, endpoint2_edge_class, endpoint2_edge_index, e0, is_train_line); } } @@ -3007,7 +3003,7 @@ PathEndPoint *find_single_matching_endpoint(Graph *g, PathEndPoint *path_endpoin return NULL; } -PathEndPoint *find_train_line_endpoint(ManifoldBoundary *cusp, PathEndPoint *endpoint, int edge_class, int edge_index, +PathEndPoint *find_train_line_endpoint(CuspStructure *cusp, PathEndPoint *endpoint, int edge_class, int edge_index, int e0, Boolean is_train_line) { int i, j, k; Boolean region_index, region_vertex, region_dive, region_curve; @@ -3183,7 +3179,7 @@ void interior_edge_node_to_path_node(CuspRegion *region, PathNode *path_end, Edg * Split each region in two and update attributes */ -void split_cusp_regions_along_path(ManifoldBoundary *cusp, PathNode *path_begin, PathNode *path_end, +void split_cusp_regions_along_path(CuspStructure *cusp, PathNode *path_begin, PathNode *path_end, PathEndPoint *start_endpoint, PathEndPoint *finish_endpoint) { int index = cusp->num_cusp_regions; FaceIndex face; @@ -3431,7 +3427,6 @@ void update_cusp_triangle_path_interior(CuspRegion *cusp_region_start, CuspRegio if (current_region->curve[face1][node->inside_vertex] > region->curve[face1][node->inside_vertex]) { current_region->curve[face1][node->inside_vertex]++; -// current_region->dive[face1][node->inside_vertex] = FALSE; } else if (current_region->curve[face1][node->inside_vertex] < region->curve[face1][node->inside_vertex]) { current_region->curve[face1][face2]++; @@ -3439,7 +3434,6 @@ void update_cusp_triangle_path_interior(CuspRegion *cusp_region_start, CuspRegio if (current_region->curve[face2][node->inside_vertex] > region->curve[face2][node->inside_vertex]) { current_region->curve[face2][node->inside_vertex]++; -// current_region->dive[face2][node->inside_vertex] = FALSE; } else if (current_region->curve[face2][node->inside_vertex] < region->curve[face2][node->inside_vertex]) { current_region->curve[face2][face1]++; @@ -3491,12 +3485,10 @@ void update_cusp_triangle_endpoints(CuspRegion *cusp_region_start, CuspRegion *c if (current_region->curve[path_endpoint->vertex][face1] > region->curve[path_endpoint->vertex][face1]) { current_region->curve[face][face1]++; -// current_region->dive[face][face1] = FALSE; current_region->temp_adj_curves[face2][path_endpoint->vertex]++; } else if (current_region->curve[path_endpoint->vertex][face1] < region->curve[path_endpoint->vertex][face1]) { current_region->curve[face][face2]++; -// current_region->dive[face][face2] = FALSE; current_region->temp_adj_curves[face1][path_endpoint->vertex]++; } @@ -3512,23 +3504,21 @@ void update_cusp_triangle_endpoints(CuspRegion *cusp_region_start, CuspRegion *c // Curve goes around the vertex or passes through the face that carries it if (current_region->curve[face][path_endpoint->vertex] > region->curve[face][path_endpoint->vertex]) { current_region->curve[face][path_endpoint->vertex]++; -// current_region->dive[face][path_endpoint->vertex] = FALSE; current_region->temp_adj_curves[face][path_endpoint->vertex]++; } else if (current_region->curve[face][path_endpoint->vertex] < region->curve[face][path_endpoint->vertex]) { current_region->curve[face][face == face1 ? face2 : face1]++; -// current_region->dive[face][face == face1 ? face2 : face1] = FALSE; current_region->temp_adj_curves[face == face1 ? face2 : face1][path_endpoint->vertex]++; } } } -void update_adj_curve_along_path(ManifoldBoundary **cusps, OscillatingCurves *curves, int curve_index) { +void update_adj_curve_along_path(CuspStructure **cusps, OscillatingCurves *curves, int curve_index) { int i, j; - DualCurves *curve, *path, - *dual_curve_begin = &curves->dual_curve_begin[curve_index], - *dual_curve_end = &curves->dual_curve_end[curve_index]; - ManifoldBoundary *cusp; + CurveComponent *curve, + *dual_curve_begin = &curves->curve_begin[curve_index], + *dual_curve_end = &curves->curve_end[curve_index]; + CuspStructure *cusp; Triangulation *manifold = cusps[0]->manifold; // Update regions curve data @@ -3539,7 +3529,7 @@ void update_adj_curve_along_path(ManifoldBoundary **cusps, OscillatingCurves *cu for (i = 0; i < curve_index; i++) { // which oscillating curve - for (curve = curves->dual_curve_begin[i].next; curve != &curves->dual_curve_end[i]; curve = curve->next) { + for (curve = curves->curve_begin[i].next; curve != &curves->curve_end[i]; curve = curve->next) { // which component of the curve for (j = 0; j < 2; j++) { @@ -3547,8 +3537,6 @@ void update_adj_curve_along_path(ManifoldBoundary **cusps, OscillatingCurves *cu update_adj_curve_at_endpoint(&curve->endpoints[j], dual_curve_begin->next, 0); update_adj_curve_at_endpoint(&curve->endpoints[j], dual_curve_end->prev, 0); -// for (path = dual_curve_begin->next; path != dual_curve_end; path = path->next) -// update_adj_curve_at_endpoint(&curve->endpoints[j], path, 0); } } } @@ -3573,12 +3561,12 @@ void update_adj_curve_along_path(ManifoldBoundary **cusps, OscillatingCurves *cu } /* - * dual_curve_begin and dual_curve_end are header and tailer nodes of a doubly linked list of path + * curve_begin and curve_end are header and tailer nodes of a doubly linked list of path * components for a new path. Update the path_endpoint->num_adj_curves attribute to account for this * new curve. */ -void update_adj_curve_at_endpoint(PathEndPoint *path_endpoint, DualCurves *path, int pos) { +void update_adj_curve_at_endpoint(PathEndPoint *path_endpoint, CurveComponent *path, int pos) { int i, face1, face2; PathEndPoint *curve_end_point; @@ -3627,7 +3615,7 @@ void update_adj_curve_at_endpoint(PathEndPoint *path_endpoint, DualCurves *path, * Move the temp adj curves into the current num of adj curves. */ -void update_adj_curve_on_cusp(ManifoldBoundary *cusp) { +void update_adj_curve_on_cusp(CuspStructure *cusp) { int i, j; CuspRegion *region; @@ -3642,7 +3630,7 @@ void update_adj_curve_on_cusp(ManifoldBoundary *cusp) { } } -void update_path_holonomy(DualCurves *path, int edge_class) { +void update_path_holonomy(CurveComponent *path, int edge_class) { PathNode *path_node; for (path_node = path->curves_begin.next; path_node != &path->curves_end; path_node = path_node->next) { @@ -3701,8 +3689,6 @@ EndMultiGraph *init_end_multi_graph(Triangulation *manifold) { Graph *g = init_graph(multi_graph->num_cusps, FALSE); cusp_graph(manifold, g); -// printf("Cusp Graph\n"); -// print_graph(g); parent = NEW_ARRAY(g->num_vertices, int); @@ -4062,20 +4048,4 @@ Boolean *edge_classes_on_cusp(EndMultiGraph *multi_graph, int cusp_index) { } return edge_classes; -} - -void print_graph(Graph *g) { - int i; - EdgeNode *edge; - - for (i = 0; i < g->num_vertices; i++) { - printf("(Vertex: %d) ", i); - edge = &g->edge_list_begin[i]; - while ((edge = edge->next)->next != NULL) { - printf("%d ", edge->y); - } - printf("\n"); - } - - printf("--------------------------\n"); -} +} \ No newline at end of file