adam_core.orbit_determination.gauss module

adam_core.orbit_determination.gauss.approxLangrangeCoeffs(r_mag, dt, mu=0.00029591220828411956)[source]
adam_core.orbit_determination.gauss.calcGauss(r1, r2, r3, t1, t2, t3)[source]

Calculates the velocity vector at the location of the second position vector (r2) with Gauss’s original method.

\[f_1 pprox 1 -\]

rac{1}{2} rac{mu}{r_2^3} (t_1 - t_2)^2

f_3 pprox 1 -

rac{1}{2} rac{mu}{r_2^3} (t_3 - t_2)^2

g_1 pprox (t_1 - t_2) -

rac{1}{6} rac{mu}{r_2^3} (t_1 - t_2)^2

g_3 pprox (t_3 - t_2) -

rac{1}{6} rac{mu}{r_2^3} (t_3 - t_2)^2

ec{v}_2 = rac{1}{f_1 g_3 - f_3 g_1} (-f_3 ec{r}_1 + f_1 ec{r}_3)

For more details on theory see Chapter 5 in Howard D. Curtis’ “Orbital Mechanics for Engineering Students”.

r1~numpy.ndarray (3)

Heliocentric position vector at time 1 in cartesian coordinates in units of AU.

r2~numpy.ndarray (3)

Heliocentric position vector at time 2 in cartesian coordinates in units of AU.

r3~numpy.ndarray (3)

Heliocentric position vector at time 3 in cartesian coordinates in units of AU.

t1float

Time at r1. Units of MJD or JD work or any decimal time format (one day is 1.00) as long as all times are given in the same format.

t2float

Time at r2. Units of MJD or JD work or any decimal time format (one day is 1.00) as long as all times are given in the same format.

t3float

Time at r3. Units of MJD or JD work or any decimal time format (one day is 1.00) as long as all times are given in the same format.

v2~numpy.ndarray (3)

Velocity of object at position r2 at time t2 in units of AU per day.

adam_core.orbit_determination.gauss.gaussIOD(coords, observation_times, coords_obs, velocity_method='gibbs', light_time=True, mu=0.00029591220828411956, max_iter=10, tol=1e-15)[source]

Compute up to three intial orbits using three observations in angular equatorial coordinates.

Parameters:
  • coords (~numpy.ndarray (3, 2)) – RA and Dec of three observations in units of degrees.

  • observation_times (~numpy.ndarray (3)) – Times of the three observations in units of decimal days (MJD or JD for example).

  • coords_obs (~numpy.ndarray (3, 2)) – Heliocentric position vector of the observer at times t in units of AU.

  • velocity_method ({'gauss', gibbs', 'herrick+gibbs'}, optional) – Which method to use for calculating the velocity at the second observation. [Default = ‘gibbs’]

  • light_time (bool, optional) – Correct for light travel time. [Default = True]

  • iterate (bool, optional) – Iterate initial orbit using universal anomaly to better approximate the Lagrange coefficients.

  • mu (float, optional) – Gravitational parameter (GM) of the attracting body in units of AU**3 / d**2.

  • max_iter (int, optional) – Maximum number of iterations over which to converge to solution.

  • tol (float, optional) – Numerical tolerance to which to compute chi using the Newtown-Raphson method.

Returns:

  • epochs (~numpy.ndarry (<3)) – Epochs in units of decimal days at which preliminary orbits are defined.

  • orbits (~numpy.ndarray ((<3, 6) or (0))) – Up to three preliminary orbits (as cartesian state vectors).