boinor.twobody.elements

module handling orbital elements for sub-package twobody

Attributes

u_kms

u_km3s2

Functions

circular_velocity(k, a)

Circular velocity for a given body (k) and semimajor axis (a).

mean_motion(k, a)

Mean motion given body (k) and semimajor axis (a).

period(k, a)

Period given body (k) and semimajor axis (a).

energy(k, r, v)

Specific energy.

eccentricity_vector(k, r, v)

Eccentricity vector.

t_p(nu, ecc, k, r_p)

Elapsed time since latest perifocal passage.

heliosynchronous(k, R, J2, n_sunsync[, a, ecc, inc])

check whether Sun-synchronous orbit can be calculated and try to do it

hyp_nu_limit(ecc[, r_max_ratio])

Limit true anomaly for hyperbolic orbits.

get_eccentricity_critical_argp(R, J2, J3, a, inc)

Cccentricity for frozen orbits when the argument of perigee is critical.

get_inclination_critical_argp(R, J2, J3, a, ecc)

Inclination for frozen orbits

get_eccentricity_critical_inc([ecc])

Eccentricity for frozen orbits when the inclination is critical.

coe2rv(k, p, ecc, inc, raan, argp, nu)

Converts from classical orbital to state vectors.

coe2rv_many(k_arr, p_arr, ecc_arr, inc_arr, raan_arr, ...)

Parallel version of coe2rv

Module Contents

boinor.twobody.elements.u_kms
boinor.twobody.elements.u_km3s2
boinor.twobody.elements.circular_velocity(k, a)

Circular velocity for a given body (k) and semimajor axis (a).

boinor.twobody.elements.mean_motion(k, a)

Mean motion given body (k) and semimajor axis (a).

boinor.twobody.elements.period(k, a)

Period given body (k) and semimajor axis (a).

boinor.twobody.elements.energy(k, r, v)

Specific energy.

boinor.twobody.elements.eccentricity_vector(k, r, v)

Eccentricity vector.

boinor.twobody.elements.t_p(nu, ecc, k, r_p)

Elapsed time since latest perifocal passage.

boinor.twobody.elements.heliosynchronous(k, R, J2, n_sunsync, a=None, ecc=None, inc=None)

check whether Sun-synchronous orbit can be calculated and try to do it

boinor.twobody.elements.hyp_nu_limit(ecc, r_max_ratio=np.inf)

Limit true anomaly for hyperbolic orbits.

Parameters:
  • ecc (Quantity) – Eccentricity, should be larger than 1.

  • r_max_ratio (float, optional) – Value of \(r_{\text{max}} / p\) for this angle, default to infinity.

boinor.twobody.elements.get_eccentricity_critical_argp(R, J2, J3, a, inc)

Cccentricity for frozen orbits when the argument of perigee is critical.

Parameters:
boinor.twobody.elements.get_inclination_critical_argp(R, J2, J3, a, ecc)

Inclination for frozen orbits when the argument of perigee is critical and the eccentricity is given.

Parameters:
boinor.twobody.elements.get_eccentricity_critical_inc(ecc=None)

Eccentricity for frozen orbits when the inclination is critical.

If ecc is None we set an arbitrary value which is the Moon eccentricity because it seems reasonable.

Parameters:

ecc (Quantity, optional) – Eccentricity, default to None.

boinor.twobody.elements.coe2rv(k, p, ecc, inc, raan, argp, nu)

Converts from classical orbital to state vectors.

Classical orbital elements are converted into position and velocity vectors by rv_pqw algorithm. A rotation matrix is applied to position and velocity vectors to get them expressed in terms of an IJK basis.

Parameters:
  • k (float) – Standard gravitational parameter (km^3 / s^2).

  • p (float) – Semi-latus rectum or parameter (km).

  • ecc (float) – Eccentricity.

  • inc (float) – Inclination (rad).

  • raan (float) – Longitude of ascending node, omega (rad).

  • argp (float) – Argument of perigee (rad).

  • nu (float) – True anomaly (rad).

Returns:

  • rr (numpy.ndarray) – Position vector in basis ijk.

  • vv (numpy.ndarray) – Velocity vector in basis ijk.

  • For more information about the math, see explanation in corresponding core function

boinor.twobody.elements.coe2rv_many(k_arr, p_arr, ecc_arr, inc_arr, raan_arr, argp_arr, nu_arr)

Parallel version of coe2rv