The goal is to produce a comprehensive library, written in modern Fortran (Fortran 2003/2008), of all the standard orbital mechanics algorithms. This is a work in progress. Currently-implemented and proposed capabilities include:
- Lambert solvers
- Gooding
- Izzo
- Arora
- Kepler propagators
- Gooding
- Shepperd
- Goodyear
- ODE solvers (with event-finding)
- Runge-Kutta
- Nystrom
- Adams
- Force models
- point mass gravity field
- geopotential gravity
- solar radiation pressure
- atmospheric drag
- relativistic effects
- Reference frames
- IAU_EARTH
- IAU_MOON
- Celestial Body Ephemerides
- JPLEPH
- SPICE
- Analytical Moon w.r.t Earth
- Analytical solar system primary bodies
- Alternate equations of motion
- Circular restricted three-body problem
- Clohessy-Wiltshire
- Modified equinoctial elements
- Misc
- orbital element conversions
- halo orbits
- targeting and optimization
- spacecraft engine models
A FoBiS configuration file (fortran-astrodynamics-toolkit.fobis
) is provided that can build the library and examples. Use the mode
flag to indicate what to build. For example:
- To build all the examples using gfortran:
FoBiS.py build -f fortran-astrodynamics-toolkit.fobis -mode tests-gnu
- To build all the examples using ifort:
FoBiS.py build -f fortran-astrodynamics-toolkit.fobis -mode tests-intel
- To build a static library using gfortran:
FoBiS.py build -f fortran-astrodynamics-toolkit.fobis -mode static-gnu
- To build a static library using ifort:
FoBiS.py build -f fortran-astrodynamics-toolkit.fobis -mode static-intel
The full set of modes are:
static-gnu
static-gnu-debug
static-intel
static-intel-debug
shared-gnu
shared-gnu-debug
shared-intel
shared-intel-debug
tests-gnu
tests-gnu-debug
tests-intel
tests-intel-debug
To generate the documentation using ford, run:
FoBis.py rule --execute makedoc -f fortran-astrodynamics-toolkit.fobis
A script get_third_party.sh
is included to download and build the third-party dependencies on unix-like operating systems.
The plots generated by the examples are done using the pyplot-fortran module. The git repo includes pyplot-fortran as a submodule, and it will automatically be included when building with FoBiS.
To use the ephemeris_module, a copy of one of the JPL binary ephemeris files must be present in the eph
directory. This can be built from the instructions at: ftp://ssd.jpl.nasa.gov/pub/eph/planets/fortran/userguide.txt. For example (on Linux):
wget ftp://ssd.jpl.nasa.gov/pub/eph/planets/fortran/*
wget ftp://ssd.jpl.nasa.gov/pub/eph/planets/ascii/de405/*
#edit asc2eph.f file to set NRECL = 4:
sed -i '_original' '/^C.*PARAMETER ( NRECL = 4 )/s/^C//' asc2eph.f
gfortran asc2eph.f -o asc2eph
cat header.405 ascp*.405 | ./asc2eph
mkdir Fortran-Astrodynamics-Toolkit/eph
mv JPLEPH Fortran-Astrodynamics-Toolkit/eph/JPLEPH.405
To use the geopotential_module, you need a geopotential model file (for example GGM03C.GEO
from ftp://ftp.csr.utexas.edu/pub/grace/GGM03/GGM03_Archive.zip). This should be placed in the grav
directory. For example:
wget ftp://ftp.csr.utexas.edu/pub/grace/GGM03/GGM03_Archive.zip
unzip GGM03_Archive.zip
mkdir Fortran-Astrodynamics-Toolkit/grav
cp GGM03_Archive/GGM03C.GEO Fortran-Astrodynamics-Toolkit/grav