Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

functions for conversion from sage-flatsurf/pyflatsurf #46

Merged
merged 16 commits into from
Sep 20, 2024

Conversation

videlec
Copy link
Contributor

@videlec videlec commented Jan 18, 2024

@videlec
Copy link
Contributor Author

videlec commented Jan 18, 2024

@saraedum The rank2 orbit closures from [EMMW] can be built with the following code

def rank2_quadrilateral_orbit_closure(angles, lengths):
    from flatsurf import similarity_surfaces, Polygon, GL2ROrbitClosure
    p = Polygon(angles=angles, lengths=lengths)
    S = similarity_surfaces.billiard(p).minimal_cover('translation').erase_marked_points().l_infinity_delaunay_triangulation()
    orbit_closure = GL2ROrbitClosure(S)
    for d in orbit_closure.decompositions(2):
        orbit_closure.update_tangent_space_from_flow_decomposition(d)
        if orbit_closure.dimension() == 4:
            break
    assert orbit_closure.dimension() == orbit_closure.absolute_dimension() == 4
    return orbit_closure
    
O0 = rank2_quadrilateral_orbit_closure((1, 1, 1, 7), (3, 2))
O1 = rank2_quadrilateral_orbit_closure((1, 1, 1, 9), (3, 2))
O2 = rank2_quadrilateral_orbit_closure((1, 1, 2, 8), (1, 1))
O3 = rank2_quadrilateral_orbit_closure((1, 1, 2, 12), (1, 1))
O4 = rank2_quadrilateral_orbit_closure((1, 2, 2, 11), (1, 1))
O5 = rank2_quadrilateral_orbit_closure((1, 2, 2, 15), (1, 1))
O = [O0, O1, O2, O3, O4, O5]

Then the added functions allow to create VeeringTriangulationLinearFamily from them and then

from veerer.flatsurf_conversion import sage_flatsurf_orbit_closure_to_veerer_linear_family
F = [sage_flatsurf_orbit_closure_to_veerer_linear_family(orbit_closure) for orbit_closure in O]
assert all(linear_family.is_geometric() for linear_family in F)
A = [f.geometric_automaton(run=False) for f in F]

and the code that takes forever and SEGFAULT because of Normaliz is

A[0].run()
A[1].run()
A[2].run()
A[3].run()
A[4].run()
A[5].run()

@saraedum
Copy link
Member

I think we need a version of SageMath that works with FLINT 3 for this. Or rebuild the whole stack for FLINT 2.

@videlec
Copy link
Contributor Author

videlec commented Mar 29, 2024

I think we need a version of SageMath that works with FLINT 3 for this. Or rebuild the whole stack for FLINT 2.

We do now have a SageMath versions including flint3 (namely 10.3 and 10.4). Do you know if normaliz and pynormaliz work with flint3?

@saraedum
Copy link
Member

The release from March 1st support FLINT 3, i.e., 3.10.2. It's waiting for me to package it here: conda-forge/normaliz-feedstock#53, conda-forge/pynormaliz-feedstock#11

@videlec videlec merged commit 739dd00 into flatsurf:master Sep 20, 2024
2 checks passed
@videlec videlec mentioned this pull request Sep 23, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

Successfully merging this pull request may close these issues.

Add function to convert sage-flatsurf surfaces and linear families to veerer
2 participants