Orbit Dynamics

OrbitDynamics

The OrbitDynamics module provides implementations of various force and orbit perturbation models used in orbit simulation.

Compute the state derivative.

Arguments:

  • epc::Epoch: Current epoch
  • x::Array{<:Real, 1}: Satellite state vector
  • mass::Real: Satellite mass [kg]
  • area_drag: Velocity-facing area affected by drag. [m^2]
  • coef_drag: Coefficient of drag [dimensionless]
  • area_srp: Velocity-facing area affected by drag. [m^2]
  • coef_srp: Coefficient of reflectivity [dimensionless]
  • n_grav::Integer: Gravity model degree (Default: 20)
  • m_grav::Integer: Gravity model order (Default: 20)
  • drag::Bool: Include cannonball atomospheric drag in force model (Default: true)
  • srp::Bool: Include flat-plate solar radiation pressure in force model (Default: true)
  • moon::Bool: Include thridbody lunar gravity in force model (Default: true)
  • sun::Bool: Include thirdbody solar in force model (Default: true)
  • relativity::Bool: Include relativistic effects in force model (Default: true)

Returns:

  • dx::Array{<:Float64, 1}: Satellite state derivative, velocity and accelerations [m; m/s]
source

Computes the acceleration of a satellite caused by a point-mass approximation of the central body. Returns the acceleration vector of the satellite.

Assumes the satellite is much, much less massive than the central body.

Arguments:

  • r_sat::Array{<:Real, 1}: satellite position in a commonn inertial frame [m]
  • r_body::Array{<:Real, 1}: position of body in a commonn inertial frame [m]
  • GM::Array{<:Real, 1}: gravitational coeffient of attracting body [m^3/s^2] Default: SatelliteDynamics.Constants.GM_EARTH)

(Default: SatelliteDynamics.Constants.GM_EARTH

Return:

  • a::Array{<:Real, 1}: Acceleration in X, Y, and Z inertial directions [m/s^2]
source

Computes the acceleration on a satellite caused by a point-mass approximation of a massive body. Returns the acceleration vector of the satellite.

Arguments:

  • r_sat::Array{<:Real, 1}: satellite position in the inertial frame [m]
  • GM::Array{<:Real, 1}: gravitational coeffient of attracting body [m^3/s^2] Default: SatelliteDynamics.Constants.GM_EARTH)

(Default: SatelliteDynamics.Constants.GM_EARTH

Return:

  • a::Array{<:Real, 1}: Acceleration in X, Y, and Z inertial directions [m/s^2]
source

Computes the accleration caused by Earth gravity as modeled by a spherical harmonic gravity field.

Arguments:

  • r_sat::Array{<:Real, 1}: Satellite position in the inertial frame [m]
  • R_eci_ecef::Array{<:Real, 2}: Rotation matrix transforming a vector from the inertial to body-fixed reference frames.
  • n_max::Integer: Maximum degree coefficient to use in expansion
  • m_max::Integer: Maximum order coefficient to use in the expansion. Must be less than the degree.

Return:

  • a::Array{<:Real, 1}: Gravitational acceleration in X, Y, and Z inertial directions [m/s^2]

References:

  1. O. Montenbruck, and E. Gill, Satellite Orbits: Models, Methods and Applications, 2012, p.56-68.
source

Compute the Sun's position in the EME2000 inertial frame through the use of low-precision analytical functions.

Argument:

  • epc::Epoch: Epoch

Returns:

  • r_sun::Array{<:Real, 1}: Position vector of the Sun in the Earth-centered inertial fame.

Notes:

  1. The EME2000 inertial frame is for most purposes equivalent to the GCRF frame.

References:

  1. O. Montenbruck, and E. Gill, Satellite Orbits: Models, Methods and Applications, 2012, p.70-73.
source

Compute the Moon's position in the EME2000 inertial frame through the use of low-precision analytical functions.

Argument:

  • epc::Epoch: Epoch

Returns:

  • r_moon::Array{<:Real, 1}: Position vector of the Moon in the Earth-centered inertial fame.

Notes:

  1. The EME2000 inertial frame is for most purposes equivalent to the GCRF frame.

References:

  1. O. Montenbruck, and E. Gill, Satellite Orbits: Models, Methods and Applications, 2012, p.70-73.
source

Computes the acceleration of a satellite in the inertial frame due to the gravitational attraction of the Sun.

Arguments:

  • x::Array{<:Real, 1}: Satellite Cartesean state in the inertial reference frame [m; m/s]
  • r_sun::Array{<:Real, 1}: Position of sun in inertial frame.

Return:

  • a::Array{<:Real, 1}: Acceleration due to the Sun's gravity in the inertial frame [m/s^2]

References:

  1. O. Montenbruck, and E. Gill, Satellite Orbits: Models, Methods and Applications, 2012, p.69-70.
source

Computes the acceleration of a satellite in the inertial frame due to the gravitational attraction of the Moon.

Arguments:

  • x::Array{<:Real, 1}: Satellite Cartesean state in the inertial reference frame [m; m/s]
  • r_moon::Array{<:Real, 1}: Position of moon in inertial frame.

Returns:

  • a::Array{<:Real, 1}: Acceleration due to the Moon's gravity in the inertial frame [m/s^2]

References:

  1. O. Montenbruck, and E. Gill, Satellite Orbits: Models, Methods and Applications, 2012, p.69-70.
source

Computes the local density using the Harris-Priester density model.

Arguments:

  • x::Array{<:Real, 1}: Satellite Cartesean state in the inertial reference frame [m; m/s]
  • r_sun::Array{<:Real, 1}: Position of sun in inertial frame.

Returns:

  • rho:Float64: Local atmospheric density [kg/m^3]

References:

  1. O. Montenbruck, and E. Gill, Satellite Orbits: Models, Methods and Applications, 2012, p.89-91.
source

Computes the perturbing, non-conservative acceleration caused by atmospheric drag assuming that the ballistic properties of the spacecraft are captured by the coefficient of drag.

Arguments:

  • x::Array{<:Real, 1}: Satellite Cartesean state in the inertial reference frame [m; m/s]
  • rho::Real: atmospheric density [kg/m^3]
  • mass::Real: Spacecraft mass [kg]
  • area::Real: Wind-facing cross-sectional area [m^2]
  • Cd::Real: coefficient of drag [dimensionless]
  • T::Array{<:Real, 2}: Rotation matrix from the inertial to the true-of-date frame

Return:

  • a::Array{<:Real, 1}: Acceleration due to drag in the X, Y, and Z inertial directions. [m/s^2]

References:

  1. O. Montenbruck, and E. Gill, Satellite Orbits: Models, Methods and Applications, 2012, p.83-86.
source

Computes the illumination fraction of a satellite in Earth orbit using a cylindrical Earth shadow model.

Arguments:

  • x::Array{<:Real, 1}: Satellite Cartesean state in the inertial reference frame [m; m/s]
  • r_sun::Array{<:Real, 1}: Position of sun in inertial frame.

Return:

  • nu::Float64: Illumination fraction (0 <= nu <= 1). nu = 0 means spacecraft in complete shadow, nu = 1 mean spacecraft fully illuminated by sun.

References:

  1. O. Montenbruck, and E. Gill, Satellite Orbits: Models, Methods and Applications, 2012, p.80-83.
source

Computes the illumination fraction of a satellite in Earth orbit using a conical Earth shadow model.

Arguments:

  • x::Array{<:Real, 1}: Satellite Cartesean state in the inertial reference frame [m; m/s]
  • r_sun::Array{<:Real, 1}: Position of sun in inertial frame.

Return:

  • nu::Float64: Illumination fraction (0 <= nu <= 1). nu = 0 means spacecraft in complete shadow, nu = 1 mean spacecraft fully illuminated by sun.

References:

  1. O. Montenbruck, and E. Gill, Satellite Orbits: Models, Methods and Applications, 2012, p.80-83.
source

Computes the perturbing acceleration due to direct solar radiation pressure assuming the reflecting surface is a flat plate pointed directly at the Sun.

Arguments:

  • x::Array{<:Real, 1}: Satellite Cartesean state in the inertial reference frame [m; m/s]

Returns:

  • a::Array{<:Real, 1}: Satellite acceleration due to solar radiation pressure [m/s^2]

References:

  1. O. Montenbruck, and E. Gill, Satellite Orbits: Models, Methods and Applications, 2012, p.77-79.
source

Computes perturbation accleration of a satellite in the Inertial frame due to the combined effects of special and general relativity.

Arguments:

  • x::Array{<:Real, 1}: Satellite Cartesean state in the inertial reference frame [m; m/s]

Returns:

  • a::Array{<:Real, 1}: Satellite acceleration due to relativity. [m/s^2]

References:

  1. O. Montenbruck, and E. Gill, Satellite Orbits: Models, Methods and Applications, 2012, p.110-112.
source