jaxoplanet.starry.orbit
=======================

.. py:module:: jaxoplanet.starry.orbit


Classes
-------

.. autoapisummary::

   jaxoplanet.starry.orbit.SurfaceBody
   jaxoplanet.starry.orbit.SurfaceSystem


Module Contents
---------------

.. py:class:: SurfaceBody

   Bases: :py:obj:`jaxoplanet.orbits.keplerian.Body`


   Initialize an orbiting body (e.g. a planet) using orbital parameters

   See https://docs.exoplanet.codes/en/latest/tutorials/data-and-models/ for a
   description of the orbital geometry.

   :param central: The Central object that this Body orbits
                   [Central].
   :type central: Optional[Central]
   :param time_transit: The epoch of a reference transit
                        [time unit].
   :type time_transit: Optional[Scalar]
   :param time_peri: The epoch of a reference periastron passage
                     [time unit].
   :type time_peri: Optional[Scalar]
   :param period: Orbital period [time unit].
   :type period: Optional[Scalar]
   :param semimajor: Semi-major axis in [length unit].
   :type semimajor: Optional[Scalar]
   :param inclination: Inclination of orbital plane in
                       [angular unit].
   :type inclination: Optional[Scalar]
   :param impact_param: Impact parameter.
   :type impact_param: Optional
   :param eccentricity: Eccentricity, must be ``0 <= eccentricity < 1``
                        where 0 = circular orbit.
   :type eccentricity: Optional
   :param omega_peri: Argument of periastron [angular unit].
   :type omega_peri: Optional[Scalar]
   :param sin_omega_peri: sin(argument of periastron).
   :type sin_omega_peri: Optional
   :param cos_omega_peri: cos(argument of periastron).
   :type cos_omega_peri: Optional
   :param asc_node: Longitude of ascending node [angular unit].
   :type asc_node: Optional[Scalar]
   :param sin_asc_node: sin(longitude of ascending node).
   :type sin_asc_node: Optional
   :param cos_asc_node: cos(longitude of ascending node).
   :type cos_asc_node: Optional
   :param mass: Mass of orbiting body [mass unit].
   :type mass: Optional[Scalar]
   :param radius: Radius of orbiting body [length unit].
   :type radius: Optional[Scalar]
   :param central_radius: Radius of central body [length unit].
   :type central_radius: Optional[Scalar]
   :param radial_velocity_semiamplitude: The radial velocity
                                         semi-amplitude [length/time unit].
   :type radial_velocity_semiamplitude: Optional[Scalar]
   :param parallax: Parallax (to convert position/velocity into
                    arcsec). [length unit].
   :type parallax: Optional[Scalar]


   .. py:attribute:: surface
      :type:  jaxoplanet.starry.surface.Surface | None
      :value: None



.. py:class:: SurfaceSystem(central: jaxoplanet.orbits.keplerian.Central | None = None, central_surface: jaxoplanet.starry.surface.Surface | None = None, *, bodies: collections.abc.Iterable[tuple[jaxoplanet.orbits.keplerian.Body | jaxoplanet.orbits.keplerian.OrbitalBody | SurfaceBody, jaxoplanet.starry.surface.Surface | None]] = ())

   Bases: :py:obj:`jaxoplanet.orbits.keplerian.System`


   A Keplerian orbital system


   .. py:attribute:: central_surface
      :type:  jaxoplanet.starry.surface.Surface | None


   .. py:attribute:: central


   .. py:property:: body_surfaces
      :type: tuple[jaxoplanet.starry.surface.Surface, Ellipsis]



   .. py:method:: add_body(body: jaxoplanet.orbits.keplerian.Body | SurfaceBody | None = None, surface: jaxoplanet.starry.surface.Surface | None = None, **kwargs: Any) -> SurfaceSystem

      Add a body to the system and return a new system

      :param body: body to add. Defaults to None.
      :type body: Body | None, optional
      :param central: TODO. Defaults to None.
      :type central: Central | None, optional

      :returns: :py:class:`~jaxoplanet.orbits.keplerian.System` with the added body
      :rtype: System



   .. py:method:: surface_vmap(func: collections.abc.Callable, in_axes: int | None | collections.abc.Sequence[Any] = 0, out_axes: Any = 0) -> collections.abc.Callable


