astrodynx.twobody.nmax_by_periapsis

astrodynx.twobody.nmax_by_periapsis#

astrodynx.twobody.nmax_by_periapsis(rp_min=0.97, r1=1.0, r2=1.0, tof=3.141592653589793, mu=1)[source]#

Returns the maximum number of revolutions that can occur between two points in an orbit, given the minimum periapsis radius.

Parameters:
  • rp_min (DTypeLike) – The minimum periapsis radius.

  • r1 (DTypeLike) – The radius at the first point.

  • r2 (DTypeLike) – The radius at the second point.

  • tof (DTypeLike) – The time of flight between the two points.

  • mu (DTypeLike) – The gravitational parameter.

Return type:

Array

Returns:

The maximum number of revolutions that can occur between the two points.

Notes

The maximum number of revolutions is calculated using the formula:

\[ N_{max} = \left\lfloor \frac{T}{2\pi} \sqrt{\frac{\mu}{a_{min}^3}} \right\rfloor \]
where \(N_{max}\) is the maximum number of revolutions, \(T\) is the time of flight, \(\mu\) is the gravitational parameter, and \(a_{min}\) is the minimum semimajor axis:
\[ a_{min} = \frac{1}{2} \left( \max(r_1, r_2) + r_{p_{min}} \right) \]
where \(r_1\) and \(r_2\) are the radii at the two points, and \(r_{p_{min}}\) is the minimum periapsis radius.

References

Battin, 1999, pp.184.

Examples

A simple example:

>>> import jax.numpy as jnp
>>> import astrodynx as adx
>>> rp_min = 0.97
>>> r1 = 1.0
>>> r2 = 1.0
>>> tof = jnp.pi
>>> mu = 1.0
>>> adx.twobody.nmax_by_periapsis(rp_min, r1, r2, tof, mu)
Array(0., dtype=float32, weak_type=True)