Querying JPL CRTBP Periodic Orbit API

CRTBPNaturalMotion.get_jpl_orbitsMethod

Get periodic orbits from the JPL CRTBP Periodic Orbit API. See JPL's web application and API documentation for details.

Arguments

  • query::String: The query string to send to the JPL API. See JPL's API documentation for details on manually constructing an HTTP Request query.

Keyword Arguments

  • ode_solver = Vern9(): The ODE solver to use for computing the orbits. Default is Vern9(). This is only employed for computing the arc-length along the orbit.
  • ode_reltol = 1e-14: Relative tolerance for the ODE solver. Default is 1e-14.
  • ode_abstol = 1e-14: Absolute tolerance for the ODE solver. Default is 1e-14.

Returns

  • OrbitSet: A set of periodic orbits that meet the query criteria.
source
CRTBPNaturalMotion.get_jpl_orbitsMethod
get_jpl_orbits(;
    sys         = "earth-moon",
    family      = "halo",
    libr        = 1,
    branch      = "N",
    periodmin   = nothing,
    periodmax   = nothing,
    periodunits = nothing,
    jacobimin   = nothing,
    jacobimax   = nothing,
    stabmin     = nothing,
    stabmax     = nothing,
    ode_solver  = Vern9(),
    ode_reltol  = 1e-14,
    ode_abstol  = 1e-14,
)

Get periodic orbits from the JPL CRTBP Periodic Orbit API. See JPL's web application and API documentation for details.

Keyword Arguments

  • sys::String = "earth-moon": The system to get orbits for. Options include:
    • "earth-moon"
    • "mars-phobos"
    • "sun-earth"
    • "sun-mars"
    • "jupiter-europa"
    • "saturn-enceladus"
    • "saturn-titan"
  • family::String = "halo": The family of orbits to get. Options include:
    • "halo"
    • "vertical"
    • "axial"
    • "lyapunov"
    • "longp"
    • "short"
    • "butterfly"
    • "dragonfly"
    • "resonant"
    • "dro"
    • "dpo"
    • "lpo"
  • libr::Int = 1: The libration point to get orbits around. Default is 1. Requred for "halo", "lyapunov" (1, 2, or 3), "longp", "short" (4 or 5), and "axial", "vertical" (1, 2, 3, 4, or 5).
  • branch::String = "N": The branch of the family to get. Required for "halo", "dragonfly", "butterfly" ("N" of "S"), "lpo" ("E" or "W"), and "resonant" (e.g., "12" for 1:2 resonant orbits).
  • periodmin::Union{Float64,Nothing} = nothing: Minimum period of orbits to get. Default is nothing.
  • periodmax::Union{Float64,Nothing} = nothing: Maximum period of orbits to get. Default is nothing.
  • periodunits::Union{String,Nothing} = nothing: Units of period. Options include:
    • "s": seconds
    • "h": hours
    • "d": days
    • "TU": dimensionless time units
  • jacobimin::Union{Float64,Nothing} = nothing: Minimum Jacobi constant of orbits to get. Default is nothing.
  • jacobimax::Union{Float64,Nothing} = nothing: Maximum Jacobi constant of orbits to get. Default is nothing.
  • stabmin::Union{Float64,Nothing} = nothing: Minimum stability of orbits to get. Default is nothing.
  • stabmax::Union{Float64,Nothing} = nothing: Maximum stability of orbits to get. Default is nothing.
  • ode_solver = Vern9(): The ODE solver to use for computing the orbits. Default is Vern9(). This is only employed for computing the arc-length along the orbit.
  • ode_reltol = 1e-14: Relative tolerance for the ODE solver. Default is 1e-14.
  • ode_abstol = 1e-14: Absolute tolerance for the ODE solver. Default is 1e-14.

Returns

  • OrbitSet: A set of periodic orbits that meet the query criteria.
source
CRTBPNaturalMotion.filter_orbit_setMethod
filter_orbit_set(
    orbit_set::OrbitSet;
    min_r1      = -Inf,
    max_r1      = Inf,
    min_r2      = orbit_set.system.radius_secondary,
    max_r2      = Inf,
    ode_solver  = Vern9(),
    ode_reltol  = 1e-14,
    ode_abstol  = 1e-14,
)

Filters a given OrbitSet with additional criteria that are more expensive to evaluate than what we'd like to consider in get_jpl_orbits()

Arguments

  • orbit_set::OrbitSet: The orbit set you'd like to filter

Keyword Arguments

  • min_r1::AbstractFloat = nothing: The minimum allowable radius (in km) about the primary body.
  • max_r1::AbstractFloat = nothing: The maximum allowable radius (in km) about the primary body.
  • min_r2::AbstractFloat = orbit_set.system.radius_secondary: The minimum allowable radius (in km) about the secondary body.
  • max_r2::AbstractFloat = nothing: The maximum allowable radius (in km) about the secondary body.
  • ode_solver = Vern9(): The ODE solver to use for checking criteria along a full orbit.
  • ode_reltol = 1e-14: Relative tolerance for the ODE solver. Default is 1e-14.
  • ode_abstol = 1e-14: Absolute tolerance for the ODE solver. Default is 1e-14.
source