Skip to content

bubufatty/Fortran-Astrodynamics-Toolkit

ย 
ย 

Repository files navigation

Fortran Astrodynamics Toolkit

DOI Build Status

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
    • 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

Examples

Building

The Fortran Astrodynamics Toolkit and the test programs will build with any modern Fortran compiler. A Fortran Package Manager manifest file (fmp.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

A FoBiS configuration file (fortran-astrodynamics-toolkit.fobis) is also 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

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. If using FoBiS, you must obtain this manually.

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:https://ssd.jpl.nasa.gov/pub/eph/planets/fortran/userguide.txt. For example (on Linux):

wget ftp:https://ssd.jpl.nasa.gov/pub/eph/planets/fortran/*
wget ftp:https://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:https://ftp.csr.utexas.edu/pub/grace/GGM03/GGM03_Archive.zip). This should be placed in the grav directory. For example:

wget https://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

About

A Modern Fortran Library for Astrodynamics ๐Ÿš€

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Fortran 98.1%
  • Python 1.8%
  • Shell 0.1%