Open videlec opened 3 years ago
Is the number of saddle connections that you need to consider finite here? I mean, is there some way to know that a direction can not lead to any such cylinders a priori?
Yes! The circumference of the cylinder is the sum of the length of the saddle connections on one of its boundaries.
Ok. Then this should be easy to do unless I am missing something.
What exactly counts as a duplicate cylinder?
Let us assume that we have a cylinder C
in direction (x,y)
. Proceeding in the way described above, each saddle connection in direction (x,y)
will see the cylinder C
. Hence each cylinder will appear as many times as there are saddle connection of length at most L
in that direction.
So, two cylinders are the same if the saddle connections on their right side are the same as a set (or have one connection in common, which is the same it seems.)
It sounds to me that all of this can be done with sage-flatsurf already. Unless L
gets very big, then we might want to split the search space with flatsurvey.
How do we tell sage-flatsurf
do run the flow decomposition in direction (x,y)
until we are sure that length L
cylinders are discarded?
We could just run it for short increments until all the components are big.
Actually, you can already tell libflatsurf to stop the search once a predicate is satisfied. The default is "all components are cylinder or minimal". (Though that is not terribly convenient to call from Python yet.)
Let me start something close to https://github.com/flatsurf/sage-flatsurf/pull/76 where we document this.
If you don't mind, I'll try to create a sample notebook and build a PR from that. I think that this "predicate" is not obvious to do.
Any particular surface that I should use for the example?
Some L-shaped surfaces would be perfectly fine.
Thank you! There are perhaps three related mathematical issues to keep in mind with this. Perhaps they are accounted for, but I don't know enough about the code. 1) In H(2,2) you can have two pairs of collections of saddle connections that define two cylinders that are parallel. So first, from these collections, can it detect that there are indeed two cylinders. 2) It's rare, but also in H(2,2) you can have a 3 collections of parallel saddle connections. Two collections bounding a cylinder and a third that's just parallel to the other two and has nothing to do with a cylinder. 3) Finally, there is the "Wollmilchsau" that decomposes into two parallel cylinders with the same length in every direction. Perhaps I misunderstand and all of these are accounted for, but these are three phenomena to make sure are incorporated.
Yes, I think it's all accounted for. We iterate over all saddle connections and decompose the surface for their direction. But we ignore a saddle connection if we had already considered its direction before.
As requested by D. Aulicino it would be desirable to iterate through the (finite) list of cylinders of circumference less than L.
An algorithm could be as follows