Application of Modern Fortran to Spacecraft Trajectory Design and Optimization

In this paper, applications of the modern Fortran programming language to the field of spacecraft trajectory optimization and design are examined. Modern Fortran (the latest standard is Fortran 2008, and the newer Fortran 2018 standard is due to be published next year) is a significant enhancement to the classical Fortran 77 language. Modern object-oriented Fortran has many advantages for scientific programming, although many legacy Fortran aerospace codes have not been upgraded to use the newer standards (or have been rewritten in other languages perceived to be more modern). NASA’s Copernicus spacecraft trajectory optimization program, originally a combination of Fortran 77 and Fortran 95, has attempted to keep up with modern standards and makes significant use of the new language features. Various algorithms and methods are presented from trajectory tools such as Copernicus, as well as modern Fortran open source libraries and other projects.

[1]  Joaquim R. R. A. Martins,et al.  AN AUTOMATED METHOD FOR SENSITIVITY ANALYSIS USING COMPLEX VARIABLES , 2000 .

[2]  John Shalf,et al.  A preliminary evaluation of the hardware acceleration of the cray gemini interconnect for PGAS languages and comparison with MPI , 2011, PMBS '11.

[3]  George Karypis,et al.  Multilevel k-way Partitioning Scheme for Irregular Graphs , 1998, J. Parallel Distributed Comput..

[4]  Jorge J. Moré,et al.  User Guide for Minpack-1 , 1980 .

[5]  Damian Rouson,et al.  Scientific Software Design: The Object-Oriented Way , 2011 .

[6]  J. Oliver,et al.  An algorithm for numerical differentiation of a function of one real variable , 1980 .

[7]  Nitin Arora,et al.  A fast, accurate, and smooth planetary ephemeris retrieval system , 2010 .

[8]  Alan C. Hindmarsh,et al.  Description and use of LSODE, the Livermore Solver for Ordinary Differential Equations , 1993 .

[9]  Bradford L. Chamberlain,et al.  Parallel Programmability and the Chapel Language , 2007, Int. J. High Perform. Comput. Appl..

[10]  James Evans,et al.  MONTE: the next generation of mission design and navigation software , 2018 .

[11]  John W. Backus,et al.  The history of FORTRAN I, II, and III , 1978, SIGP.

[12]  Dan Nagle,et al.  OpenCoarrays: Open-source Transport Layers Supporting Coarray Fortran Compilers , 2014, PGAS.

[13]  Thomas F. Coleman,et al.  Algorithm 618: FORTRAN subroutines for estimating sparse Jacobian Matrices , 1984, TOMS.

[14]  Jacob Williams,et al.  Recent Improvements to the Copernicus Trajectory Design and Optimization System , 2012 .

[15]  Normalization and Implementation of Three Gravitational Acceleration Models , 2016 .

[16]  Lorenz T. Biegler,et al.  On the implementation of an interior-point filter line-search algorithm for large-scale nonlinear programming , 2006, Math. Program..

[17]  Harry R. Lewis,et al.  Data Structures and Their Algorithms , 1991 .

[18]  Jacob Williams A New Architecture for Extending the Capabilities of the Copernicus Trajectory Optimization Program , 2015 .

[19]  Richard W. Powell,et al.  Launch Vehicle Ascent Trajectory Simulation Using the Program to Optimize Simulated Trajectories II (POST2) , 2017 .

[20]  Jack N. Hatfield CATO (Computer Algorithm for Trajectory Optimization): an implementation of Fortran 95 object-based programming , 2003, FORF.

[21]  D. Scheeres,et al.  Exterior gravitation of a polyhedron derived and compared with harmonic and mascon gravitation representations of asteroid 4769 Castalia , 1996 .

[22]  Arjen Markus,et al.  Modern Fortran in Practice , 2012 .

[23]  David E. Smith,et al.  High‒degree gravity models from GRAIL primary mission data , 2013 .

[24]  Gregory J. Whiffen,et al.  Mystic: Implementation of the Static Dynamic Optimal Control Algorithm for High-Fidelity, Low-Thrust Trajectory Design , 2006 .

[25]  Norman Winarsky,et al.  Adaptive numerical differentiation , 1979 .

[26]  Karla Morris,et al.  Using Coarrays to Parallelize Legacy Fortran Applications: Strategy and Case Study , 2015, Sci. Program..

[27]  Robert D. Falck,et al.  Trajectory Optimization: OTIS 4 , 2010 .

[28]  Richard P. Brent,et al.  An Algorithm with Guaranteed Convergence for Finding a Zero of a Function , 1971, Comput. J..

[29]  H. A. Watts,et al.  DEPAC - design of a user oriented package of ODE solvers , 1980 .

[30]  Samuel Pines,et al.  Uniform Representation of the Gravitational Potential and its Derivatives , 1973 .

[31]  John Reid The new features of Fortran 2015 , 2017, FORF.

[32]  Jeffrey P. Gutkowski,et al.  Trajectory Design Considerations for Exploration Mission 1 , 2018 .

[33]  Frank Uhlig,et al.  Numerical Algorithms with Fortran , 1996 .

[34]  Jeffrey Overbey,et al.  Refactorings for Fortran and high-performance computing , 2005, SE-HPCS '05.

[35]  R. Battin An introduction to the mathematics and methods of astrodynamics , 1987 .

[36]  Matthew A. Vavrina,et al.  Implementation of a Low-Thrust Trajectory Optimization Algorithm for Preliminary Design , 2006 .

[37]  Michael A. Saunders,et al.  SNOPT: An SQP Algorithm for Large-Scale Constrained Optimization , 2002, SIAM J. Optim..

[38]  J. L. Spencer Pines nonsingular gravitational potential derivation, description and implementation , 1976 .

[39]  C. Ocampo,et al.  AN ARCHITECTURE FOR A GENERALIZED SPACECRAFT TRAJECTORY DESIGN AND OPTIMIZATION SYSTEM , 2003 .

[40]  J. Reid The new features of Fortran 2003 , 2007, FORF.

[41]  Brian Friesen,et al.  Performance portability of an intermediate-complexity atmospheric research model in coarray Fortran , 2017, PAW@SC.

[42]  Magdy M. Wahbah,et al.  Simulation of Airplane and Rocket Trajectories , 1987 .

[43]  G. D. Byrne,et al.  VODE: a variable-coefficient ODE solver , 1989 .

[44]  Jorge J. Moré,et al.  User guide for MINPACK-1. [In FORTRAN] , 1980 .

[45]  Michael Metcalf The Seven Ages of Fortran , 2011 .

[46]  Robert W. Numrich,et al.  Co-array Fortran for parallel programming , 1998, FORF.

[47]  Rodney L. Anderson,et al.  Low-Energy Lunar Trajectory Design: Parker/Low-Energy , 2014 .

[48]  A preliminary evaluation of the hardware acceleration of the Cray Gemini interconnect for PGAS languages and comparison with MPI , 2012, PERV.

[49]  Dieter Kraft,et al.  Algorithm 733: TOMP–Fortran modules for optimal control calculations , 1994, TOMS.

[50]  Diane C. Davis,et al.  Targeting Cislunar Near Rectilinear Halo Orbits for Human Space Exploration , 2017 .

[51]  Richard J. Hanson,et al.  Numerical Computing with Modern Fortran , 2013 .

[52]  Lee Margetts,et al.  Fortran 2008 coarrays , 2015, FORF.

[53]  Maxwell Blair,et al.  DNAD, a simple tool for automatic differentiation of Fortran codes using dual numbers , 2013, Comput. Phys. Commun..

[54]  Jason R. Blevins A generic linked list implementation in Fortran 95 , 2009, FORF.

[55]  Magne Haveraaen,et al.  High-performance design patterns for modern Fortran , 2013, SE-HPCCSE '13.

[56]  Panagiotis Angelikopoulos,et al.  NDL-v2.0: A new version of the numerical differentiation library for parallel architectures , 2014, Comput. Phys. Commun..

[57]  John Reid The new features of Fortran 2008 , 2014, FORF.

[58]  David H. Bailey,et al.  MPFUN2015: A Thread-Safe Arbitrary Precision Computation Package (Full Documentation) , 2015 .

[59]  Mitsuhisa Sato,et al.  Productivity and Performance of Global-View Programming with XcalableMP PGAS Language , 2012, 2012 12th IEEE/ACM International Symposium on Cluster, Cloud and Grid Computing (ccgrid 2012).