ssapy_toolkit.Orbital_Mechanics.synthetic_orbit_population

ssapy_toolkit.Orbital_Mechanics.synthetic_orbit_population(*, M=40, N=7200, dt=1.0, t_start=0.0, mu=398600441800000.0, a0=7000000.0, e0=0.001, i0=np.float64(0.9599310885968813), raan0=np.float64(0.6981317007977318), pa0=np.float64(0.17453292519943295), nu0=np.float64(0.0), a_sigma=200.0, e_sigma=0.0002, i_sigma=np.float64(0.0017453292519943296), raan_sigma=np.float64(0.003490658503988659), pa_sigma=np.float64(0.003490658503988659), nu_sigma=np.float64(0.005235987755982988), distribution='normal', include_nominal=True, seed=1, propagator=None, e_clip=(0.0, 0.99))[source]

Create a synthetic ensemble (population) of SSAPy Orbit objects and sampled r(t), v(t) time series by perturbing all 6 classical Keplerian elements.

Parameters:
  • M (int) – Number of orbits to generate.

  • N (int) – Number of time samples per orbit.

  • dt (float) – Time step in seconds.

  • t_start (float or astropy.time.Time) – Start epoch passed to SSAPy. If float, interpreted by SSAPy as GPS seconds. The returned t_list is always seconds-from-start (0..(N-1)dt).

  • mu (float) – Gravitational parameter in m^3/s^2. Default EARTH_MU.

  • a0 (float) – Nominal Keplerian elements (SI + radians).

  • e0 (float) – Nominal Keplerian elements (SI + radians).

  • i0 (float) – Nominal Keplerian elements (SI + radians).

  • raan0 (float) – Nominal Keplerian elements (SI + radians).

  • pa0 (float) – Nominal Keplerian elements (SI + radians).

  • nu0 (float) – Nominal Keplerian elements (SI + radians).

  • *_sigma (float) – Perturbation sizes. If distribution=”normal”, these are 1-sigma standard deviations. If “uniform”, these are half-widths.

  • distribution ({"normal","uniform"}) – Perturbation distribution for each element.

  • include_nominal (bool) – If True, orbit 0 is exactly the nominal orbit, and the remaining M-1 are perturbed. If False, all M are perturbed.

  • seed (int) – RNG seed.

  • propagator (ssapy.propagator.Propagator or None) – Propagator used by Orbit.at(). If None, uses KeplerianPropagator().

  • e_clip ((float, float)) – Clip eccentricity into [min, max] to avoid invalid values.

Returns:

  • orbits (list[ssapy.Orbit]) – List of length M of initial Orbit objects at t_start.

  • r_list (list[np.ndarray]) – List of length M; each entry shape (N,3) in meters.

  • v_list (list[np.ndarray]) – List of length M; each entry shape (N,3) in m/s.

  • t_list (list[np.ndarray]) – List of length M; each entry shape (N,) in seconds-from-start.

  • mu (float) – Returned for convenience (m^3/s^2).