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

Run through cylinders of circumference at most L #247

Open
videlec opened this issue Feb 12, 2021 · 15 comments
Open

Run through cylinders of circumference at most L #247

videlec opened this issue Feb 12, 2021 · 15 comments

Comments

@videlec
Copy link
Contributor

videlec commented Feb 12, 2021

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

  1. for each possible conical angle, run through saddle connections of length at most L starting from this point
  2. for each saddle connection, run the flow decomposition until it is guaranteed that what remains must have height > L
  3. collect cylinders and take care of duplicates
@saraedum
Copy link
Member

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?

@videlec
Copy link
Contributor Author

videlec commented Feb 12, 2021

Yes! The circumference of the cylinder is the sum of the length of the saddle connections on one of its boundaries.

@saraedum
Copy link
Member

Ok. Then this should be easy to do unless I am missing something.

What exactly counts as a duplicate cylinder?

@videlec
Copy link
Contributor Author

videlec commented Feb 12, 2021

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.

@saraedum
Copy link
Member

saraedum commented Feb 12, 2021

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.)

@saraedum
Copy link
Member

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.

@videlec
Copy link
Contributor Author

videlec commented Feb 12, 2021

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?

@saraedum
Copy link
Member

saraedum commented Feb 12, 2021

We could just run it for short increments until all the components are big.

@saraedum
Copy link
Member

saraedum commented Feb 12, 2021

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.)

@videlec
Copy link
Contributor Author

videlec commented Feb 12, 2021

Let me start something close to flatsurf/sage-flatsurf#76 where we document this.

@saraedum
Copy link
Member

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.

@saraedum
Copy link
Member

Any particular surface that I should use for the example?

@videlec
Copy link
Contributor Author

videlec commented Feb 12, 2021

Some L-shaped surfaces would be perfectly fine.

@davidaulicino
Copy link

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.

@saraedum
Copy link
Member

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Development

No branches or pull requests

3 participants