Skip to content

jacobwilliams/Fortran-Astrodynamics-Toolkit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

1307514 Β· Aug 7, 2022
May 22, 2022
Aug 15, 2021
Aug 7, 2022
May 22, 2022
May 22, 2022
May 22, 2022
May 22, 2022
Mar 21, 2022
Aug 12, 2021
Aug 15, 2021
May 22, 2022
May 22, 2022

Repository files navigation

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

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 fortran-astrodynamics-toolkit.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