gala.dynamics.surface_of_section(orbit, plane_ix, interpolate=False)[source]

Generate and return a surface of section from the given orbit.


This is an experimental function and the API may change.

orbit : Orbit
plane_ix : int

Integer that represents the coordinate to record crossings in. For example, for a 2D Hamiltonian where you want to make a SoS in \(y-p_y\), you would specify plane_ix=0 (crossing the \(x\) axis), and this will only record crossings for which \(p_x>0\).

interpolate : bool (optional)

Whether or not to interpolate on to the plane of interest. This makes it much slower, but will work for orbits with a coarser sampling.


If your orbit of interest is a tube orbit, it probably conserves (at least approximately) some equivalent to angular momentum in the direction of the circulation axis. Therefore, a surface of section in R-z should be instructive for classifying these orbits. TODO…show how to convert an orbit to Cylindrical..etc…