Common astrodynamics calculations, with hooks into the SciML ecosystem.
Check out GeneralAstrodynamics in action at JuliaCon 2021! The talk Going to Jupiter with Julia walks through a simple Jupiter mission design while gently introducing astrodynamics, Julia, and GeneralAstrodynamics.
- Structures for Cartesian and Keplerian states, and R2BP systems
- Functions which implement common R2BP equations
- Kepler and Lambert solvers
- Orbit propagation and plotting
- Structures for dimensioned and normalized Cartesian states, and dimensioned and normalized CR3BP systems
- Functions which implement common CR3BP equations
- Analytical and iterative (numerical) Halo orbit solvers
- Unstable and stable Halo orbit manifold computation
- Orbit propagation and plotting
- Zero-velocity curve computation and plotting
- This was implemented in a previous package version, and is currently being refactored
using GeneralAstrodynamics
orbit = rand(R2BPOrbit)
trajectory = propagate(orbit, orbital_period(orbit))
furnsh(
de440s(), # position and velocity data for nearby planets
latest_leapseconds_tls(), # timekeeping, parsing epochs
gm_de440(), # mass parameters for major solar system bodies
pck00011(), # physical properties of major solar system bodies
)
μ = reduced_mass(
gm("earth"),
gm("moon"),
)
orbit, T = let
u, T = halo(μ, 2; amplitude=1e-2)
CR3BPOrbit(CartesianState(u), CR3BParameters(μ)), T
end
trajectory = propagate(orbit, T)Run all tests from top-level of monorepo:
> j --proj
(GeneralAstrodynamics) pkg> testRun all tests for <subpackage> from top-level of monorepo:
> j --proj
ENV["GROUP"] = <subpackage>
(GeneralAstrodynamics) pkg> testor navigate to top-level of <subpackage> and run tests as usual:
> j --proj
(GeneralAstrodynamics/lib/AstrodynamicalCalculations) pkg> testList available tests for a given :
> julia --proj
julia> using Pkg
julia> Pkg.test("<subpackage>"; test_args = `--list`)Run specific tests for a given :
> julia --proj
julia> using Pkg
julia> Pkg.test("<subpackage>"; test_args = `--verbose <filename>`)for a given filename listed in the previous usage example. Partial matches for the start of the filename are also accepted.
See the documentation for ExplicitImports.jl for standard usage. For non-package files at path <fpath> relative to the top-level of <subpackage>, run the following:
julia> using ExplicitImports, <subpackage>
julia> include(<fpath>)
julia> print_explicit_imports(Main.<subpackage>Tests, <fpath>)