RingedSystem#
A subclass of OblateSystem() for planets that host an opaque, flat, circular
ring, bounded by an inner and an outer radius and (by default) lying in the planet’s
equatorial plane. The blocked flux is computed with an exact inclusion-exclusion
decomposition into intersections of convex regions, each evaluated with the same
Green’s-theorem boundary integrals as the planet-only model; see
engine.ringed_transit for the details.
- class ringed_system.RingedSystem(ring_inner_r: float | None = None, ring_outer_r: float | None = None, ring_obliq: float | None = None, ring_prec: float | None = None, **kwargs: object)[source]#
Bases:
OblateSystemA
OblateSystemwhose planet hosts an opaque, flat, circular ring.The ring is assumed to be perfectly flat, perfectly circular, perfectly opaque, concentric with the planet, and bounded by an inner and an outer radius. By default it lies in the planet’s equatorial plane (its 3D orientation set by the planet’s
obliqandprec, including the tidally-locked time dependence); passingring_obliqandring_precexplicitly decouples the ring’s orientation from the planet’s.All other arguments, defaults, and methods match
OblateSystem, except that rings require the full 3D parameterization (parameterize_with_projected_ellipsemust remainFalse).- Parameters:
ring_inner_r (float, [Rstar], default=None) – The inner radius of the ring. Must be larger than the planet’s equatorial radius
r. A required parameter, will raise an error if not provided.ring_outer_r (float, [Rstar], default=None) – The outer radius of the ring. Must be larger than
ring_inner_r; note that we ignore the physics of ring formation and stability, so it is not capped at anything like the Roche radius. A required parameter, will raise an error if not provided.ring_obliq (float, [Radian], default=None) – The obliquity of the ring plane, defined identically to the planet’s
obliq. Provide bothring_obliqandring_precor neither; if neither, the ring tracks the planet’s equatorial plane.ring_prec (float, [Radian], default=None) – The precession angle of the ring plane, defined identically to the planet’s
prec.**kwargs – All
OblateSystemarguments.
- illustrate(times: Array | None = None, true_anomalies: Array | None = None, ring_fill: bool = True, **kwargs: object) None[source]#
Visualize the layout of the system, including the ring, at one or more times.
Identical to
OblateSystem.illustrate()but overlays the projected outlines of both ring edges and (optionally) fills the annulus between them. Note that the layering is cosmetic: the filled annulus is drawn on top of the planet even though half of the physical ring passes behind it.- Parameters:
times (array-like, [Days], default=None) – See
OblateSystem.illustrate().true_anomalies (array-like, [Radian], default=None) – See
OblateSystem.illustrate().ring_fill (bool, default=True) – Whether to fill the annulus between the ring edges, in addition to drawing their outlines.
**kwargs – All other
OblateSystem.illustrate()arguments.
- Returns:
This method is used for its side effects of displaying a plot, not for its return value.
- Return type:
None