SkillAgentSearch skills...

Fortran Astrodynamics Toolkit

A Modern Fortran Library for Astrodynamics 🚀

Install / Use

npx skills add jacobwilliams/Fortran-Astrodynamics-Toolkit

Installs into whichever agent you are using.

README

Fortran Astrodynamics Toolkit

GitHub release Build Status codecov DOI

Image

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

View on GitHub
GitHub Stars208
CategoryDevelopment
Updated2mo ago
Forks60

Languages

Fortran

Security Score

85/100

Audited on May 16, 2026

No findings