Fortran Astrodynamics Toolkit
A Modern Fortran Library for Astrodynamics 🚀
Install / Use
npx skills add jacobwilliams/Fortran-Astrodynamics-ToolkitInstalls into whichever agent you are using.
README

Overview
The goal of the Fortran Astrodynamics Toolkit is to produce a comprehensive library, written in modern Fortran (Fortran 2008+), of all the standard orbital mechanics algorithms. This is a work in progress. Currently-implemented and proposed capabilities include:
- Lambert solvers
- [x] Gooding
- [x] Izzo
- [x] Arora
- Kepler propagators
- [x] Gooding
- [x] Shepperd
- [x] Goodyear
- ODE solvers (with event-finding)
- [x] Runge-Kutta
- [ ] Nystrom
- [ ] Adams
- Force models
- [ ] point mass gravity field
- [x] geopotential gravity
- [x] solar radiation pressure
- [ ] atmospheric drag
- [ ] relativistic effects
- Reference frames
- [x] IAU_EARTH
- [x] IAU_MOON
- Celestial Body Ephemerides
- [x] JPLEPH
- [x] SPICE
- [x] Analytical Moon w.r.t Earth
- [x] Analytical solar system primary bodies
- Alternate equations of motion
- [x] Circular restricted three-body problem
- [x] Clohessy-Wiltshire
- [x] Modified equinoctial elements
- Misc
- [x] orbital element conversions
- [x] halo orbits
- [x] solar eclipsing
- [ ] targeting and optimization
- [ ] spacecraft engine models
Examples
<a href="https://github.com/jacobwilliams/Fortran-Astrodynamics-Toolkit/tree/master/tests/crtbp"><img src="https://github.com/jacobwilliams/Fortran-Astrodynamics-Toolkit/blob/master/tests/crtbp/crtbp_test.png" align="center" height="300"></a> <a href="https://github.com/jacobwilliams/Fortran-Astrodynamics-Toolkit/tree/master/tests/gravity"><img src="https://github.com/jacobwilliams/Fortran-Astrodynamics-Toolkit/blob/master/tests/gravity/trajectory.png" align="center" height="400"></a> <a href="https://github.com/jacobwilliams/Fortran-Astrodynamics-Toolkit/tree/master/tests/dro"><img src="https://github.com/jacobwilliams/Fortran-Astrodynamics-Toolkit/blob/master/tests/dro/dros.png" align="center" height="400"></a>
Building
The Fortran Astrodynamics Toolkit and the test programs will build with any modern Fortran compiler. A Fortran Package Manager manifest file (fpm.toml) is included, so that the library and tests cases can be compiled with FPM. For example:
fpm build --profile release
fpm test --profile release
To use Fortran-Astrodynamics-Toolkit within your fpm project, add the following to your fpm.toml file:
[dependencies]
fortran-astrodynamics-toolkit = { git="https://github.com/jacobwilliams/Fortran-Astrodynamics-Toolkit.git" }
or, to use a specific version:
[dependencies]
fortran-astrodynamics-toolkit = { git="https://github.com/jacobwilliams/Fortran-Astrodynamics-Toolkit.git", tag = "0.3" }
To generate the documentation using ford, run: ford ford.md
Third-Party Requirements
A script get_third_party.sh is included to download and build the third-party dependencies on unix-like operating systems.
Pyplot-Fortran
The plots generated by the examples are done using the pyplot-fortran module. When compiling with FPM, this will automatically be downloaded and compiled.
Ephemeris files
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
Geopotential files
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 http://download.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
Documentation
The documentation for the latest code in master can be found here.
See also
Related Skills
node-connect
385.6kDiagnose OpenClaw Android, iOS, or macOS node pairing, QR/setup code, route, auth, and connection failures.
blender-python-addon
40.5kBlender Python add-on rules for operators, panels, properties, registration, testing, and API-safe scripting
flutter-development-guidelines-cursorrules-prompt-file
40.5kCursor rules for Flutter development with MVVM architecture, Riverpod state management, Material widgets, and Dart style guidelines.
commit-push-pr
140.7kCommit, push, and open a PR

