About
My name is Jacob and I sometimes write software for NASA. This is my personal blog. All opinions expressed here are my own.
Contact Info
- Email: jacob [at] degenerateconic [dot] com
Projects
I maintain several open source projects for modern, object-oriented Fortran (i.e., Fortran 2003/2008). All of these have BSD-style licenses, and are hosted on GitHub:
Catagory | Library | Description | Release |
---|---|---|---|
Interpolation | bspline-fortran | 1D-6D B-Spline Interpolation | |
Interpolation | regridpack | 1D-4D linear and cubic interpolation | |
Interpolation | finterp | 1D-6D Linear Interpolation | |
Interpolation | PCHIP | Piecewise Cubic Hermite Interpolation Package | |
Interpolation | splpak | Multidimensional least-squares cubic spline fitting | |
Plotting | pyplot-fortran | Make plots from Fortran using Matplotlib | |
File I/O | json-fortran | Read and write JSON files | |
File I/O | csv-fortran | Read and write CSV Files (formerly named fortran-csv-module ) |
|
Optimization | slsqp | SLSQP Optimizer | |
Optimization | fmin | Derivative free 1D function minimizer | |
Optimization | pikaia | Pikaia Genetic Algorithm | |
Optimization | simulated-annealing | Simulated Annealing Algorithm | |
Optimization | lbfgsb | L-BFGS-B Nonlinear Optimizater | |
One Dimensional Root-Finding | roots-fortran | Roots of continuous scalar functions of a single real variable, using derivative-free methods | |
Polynomial Roots | polyroots-fortran | Root finding for real and complex polynomial equations | |
Nonlinear equations | nlesolver-fortran | Nonlinear Equation Solver | |
Linear Equations | LSQR | Sparse linear systems solver | |
Linear Equations | lusol | LU factors of a square or rectangular sparse matrix | |
Ordinary Differential Equations | dop853 | An explicit Runge-Kutta method of order 8(5,3) | |
Ordinary Differential Equations | ddeabm | DDEABM Adams-Bashforth algorithm | |
Ordinary Differential Equations | rklib | Suite of fixed and variable-step Runge-Kutta solvers | |
Numerical Differentiation | NumDiff | Numerical differentiation with finite differences | |
Numerical integration | quadpack | Modernized QUADPACK Library for 1D numerical quadrature | |
Numerical integration | quadrature-fortran | 1D-6D Adaptive Gaussian Quadrature | |
Random numbers | mersenne-twister-fortran | Mersenne Twister pseudorandom number generator | |
Astrodynamics | Fortran-Astrodynamics-Toolkit | Modern Fortran Library for Astrodynamics | |
Astrodynamics | astro-fortran | Standard models used in fundamental astronomy | |
Geodesy | geodesic-fortran | Geodesic routines | |
Graph Theory | daglib | Directed Acyclic Graphs | |
System | popen-fortran | Simple module for popen |
|
System | fortran-mach | Machine Constants |
Also check out the full list of my GitHub projects.
Publications
Selected conference papers, journal articles, etc.
- J. Williams, T. F. Dawn, A. L. Batcha, "A History of Orion Mission Design, Copernicus Development, and the Artemis I Trajectory", AAS/AIAA Astrodynamics Specialist Conference, August 2023, AAS 23-241.
- Q. Moore, B. Killeen, J. Williams, "A New Architecture for Parallelization of Complex Spacecraft Trajectory Optimization Scans", AAS/AIAA Astrodynamics Specialist Conference, August 9-12, 2023.
- J. Williams, S. L. Smallwood, D. E. Lee, M. V. Widner, "A New Eclipse Algorithm for use in Spacecraft Trajectory Optimization", AAS/AIAA Astrodynamics Specialist Conference, August 2023, AAS 23-243.
- A. L. Batcha, J. Williams, T. F. Dawn, J. P. Gutkowski, M. V. Widner, S. L. Smallwood, B. J. Killeen, E. C. Williams, and R. E. Harpold, "Artemis I Trajectory Design and Optimization", AAS/AIAA Astrodynamics Specialist Conference, August 9-12, 2020, AAS 23-649
- J. Williams, A. Kamath, R. Eckman, G. Condon, R. Mathur, D. Davis, "Copernicus 5.0: Latest Advances in JSC's Spacecraft Trajectory Optimization and Design System", 2019 AAS/AIAA Astrodynamics Specialist Conference, Portland, ME, August 11-15, 2019, AAS 19-719
- D. G. Murri, G. L. Condon, J. Williams, A. H. Kamath, R. A. Eckman, R. Mathur, "Improvements to the Copernicus Trajectory Design and Optimization System for Complex Space Trajectories", NASA/TM 2019-220247, Jan 1, 2019
- J. Williams, R. D. Falck, and I. B. Beekman. "Application of Modern Fortran to Spacecraft Trajectory Design and Optimization", 2018 Space Flight Mechanics Meeting, AIAA SciTech Forum, (AIAA 2018-1451)
- T. F. Dawn, J. Gutkowski, A. Batcha, J. Williams, and S. Pedrotty. "Trajectory Design Considerations for Exploration Mission 1", 2018 Space Flight Mechanics Meeting, AIAA SciTech Forum, (AIAA 2018-0968)
- J. Williams, D. E. Lee, R. J. Whitley, K. A. Bokelmann, D. C. Davis, and C. F. Berry. "Targeting cislunar near rectilinear halo orbits for human space exploration", AAS 17-267
- J. Williams, "A New Plugin Architecture for the Copernicus Spacecraft Trajectory Optimization Program", AAS/AIAA Astrodynamics Specialist Conference, Vail, Colorado, Aug. 2015. AAS 15-606.
- R. Whitley, J. Gutkowski, S. Craig, T. Dawn, J. Williams, W. B. Stein, D. Litton, R. Lugo, M. Qu, "Combining Simulation Tools for End-to-End Trajectory Optimization", AAS/AIAA Astrodynamics Specialist Conference, Vail, Colorado, Aug. 2015. AAS 15-662.
- G. L. Condon, J. Williams, "Asteroid Redirect Crewed Mission Nominal Design and Performance", SpaceOps Conference, 5-9 May 2014, Pasadena, CA. AIAA 2014-1696.
- J. Williams, G. L. Condon, "Contingency Trajectory Planning for the Asteroid Redirect Crewed Mission", SpaceOps Conference, 5-9 May 2014, Pasadena, CA. AIAA 2014-1697.
- H. D. Hinkel, S. P. Cryan, C. D'Souza, D. P. Dannemiller, J. P. Brazzel, G. L. Condon, W. L. Othon, J. Williams, "Rendezvous and Docking Strategy for Crewed Segment of the Asteroid Redirect Mission", SpaceOps Conference, 5-9 May 2014, Pasadena, CA.
- J. Williams, J. S. Senent, D. E. Lee, "Recent Improvements to the Copernicus Trajectory Design and Optimization System", Advances in the Astronautical Sciences, 2012.
- R. J. Whitley, C. A. Ocampo, J. Williams, "Performance of an Autonomous Multi-Maneuver Algorithm for Lunar Trans-Earth Injection", Journal of Spacecraft and Rockets, Vol. 49, No. 1 (2012), pp. 165-174.
- R. J. Whitley, J. Williams. "Implementation of an Autonomous Multi-Maneuver Targeting Sequence for Lunar Trans-Earth Injection", AIAA Guidance Navigation and Control Conference, 2-5 Aug. 2010, Toronto, Ontario, Canada.
- J. Williams, J. S. Senent, C. Ocampo, R. Mathur, E. C. Davis. "Overview and Software Architecture of the Copernicus Trajectory Design and Optimization System", 4th International Conference on Astrodynamics Tools and Techniques, 3-6 May 2010, Madrid, Spain
- C. Ocampo, J. S. Senent, J. Williams. "Theoretical Foundation of Copernicus: A Unified System for Trajectory Design and Optimization", 4th International Conference on Astrodynamics Tools and Techniques, 3-6 May 2010, Madrid, Spain.
- J. Williams, S. M. Stewart, D. E. Lee, E. C. Davis, G. E. Condon, J. S. Senent. "The Mission Assessment Post Processor (MAPP): A New Tool for Performance Evaluation of Human Lunar Missions", 20th AAS/AIAA Space Flight Mechanics Meeting, 14-17 February 2010, San Diego, CA.
- G. Condon, J. Williams, S. M. Stewart. "Mission Design and Performance Assessment for the Constellation Lunar Architecture", 20th AAS/AIAA Space Flight Mechanics Meeting, 14-17 February 2010, San Diego, CA.
- S. M. Stewart, J. S. Senent, J. Williams, G. E. Condon, D. E. Lee. "Evaluation of Dual-Launch Lunar Architectures Using the Mission Assessment Post Processor", 20th AAS/AIAA Space Flight Mechanics Meeting, 14-17 February 2010, San Diego, CA.
- J. Williams, E. C. Davis, D. E. Lee, G. L. Condon, T. Dawn, M. Qu. "Global Performance Characterization of the Three Burn Trans-Earth Injection Maneuver Sequence over the Lunar Nodal Cycle", AAS/AIAA Astrodynamics Specialist Conference, 9-13 Aug. 2009, Pittsburgh, PA.
- O. Montenbruck, M. Garcia-Fernandez, J. Williams. "Performance Comparison of Semi-Codeless GPS Receivers for LEO Satellites". GPS Solutions. Volume 10, Number 4. November, 2006
- O. Montenbruck, J. Williams, T. Wang, G. Lightsey, "Preflight Validation of the IGOR GPS Receiver for TerraSAR-X", DLR-GSOC GTN-TST-0200, Deutsches Zentrum für Luft- und Raumfahrt, Oberpfaffenhofen. May 2, 2005.
- J. Williams, E. G. Lightsey, S. Yoon, R. E. Schutz. "Testing of the ICESat BlackJack GPS Receiver Engineering Model", ION GPS 2002 Conference, September 24-27, 2002, Portland, Oregon.
Technical notes
- LVLH Transformations -- This technical note derives the equations for transformation of state vectors to and from a Local Vertical Local Horizontal (LVLH) frame. An implementation of the algorithms in Fortran is also included.
See also
Copyright and License Info
Unless otherwise indicated, the original sourcecode on Degenerate Conic by Jacob Williams is licensed under the following license:
Copyright © 2014-2023, Jacob Williams All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
- Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
- Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
- The names of its contributors may not be used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
All other website content is Copyright © Jacob Williams.
Fortran Compilers
- Intel Fortran Compiler (ifort) - a commercial product.
- Currently supports all of the current Fortran 2008 standard and some of the upcoming Fortran 2018 standard.
- There are free licenses available for academia and open source contributors.
- GNU Fortran Compiler (gfortran) - opensource.
- Currently supports some of Fortran 2003/2008/2018.
- Binaries of gfortran for MacOS X are available here: http://hpc.sourceforge.net and here: http://coudert.name/.
- Gfortran can also be installed on a Mac using Homebrew (either via gcc, or OpenCoarrays).
- LFortran - Modern interactive LLVM-based Fortran compiler
- Currently in development
Fortran References
Books
- E. Jorgensen, Introduction to Programming using Fortran 95/2003/2008, March 2018, Version 3.0.51
- R. J. Hanson, Numerical Computing With Modern Fortran, SIAM-Society for Industrial and Applied Mathematics, 2013.
- A. Markus, Modern Fortran in Practice, Cambridge University Press, 2012.
- D. Rouson, J. Xia, X. Xu, Scientific Software Design: The Object-Oriented Way, Cambridge University Press, 2011.
- M. Metcalf, J. Reid, M. Cohen, Modern Fortran Explained, Oxford University Press, 2011.
- N. S. Clerman, W. Spector, Modern Fortran: Style and Usage, Cambridge University Press, 2011.
- G. Hager, G. Wellein, Introduction to High Performance Computing for Scientists and Engineers, CRC Press, 2011.
- R. A. Vowels, Algorithms and Data Structures in F and Fortran, Unicomp, 1998.
Articles
- J. Reid, The New Features of Fortran 2018, ISO/IEC JTC1/SC22/WG5 N2161, 2 August 2018.
- J. Williams, R. D. Falck, and I. B. Beekman. "Application of Modern Fortran to Spacecraft Trajectory Design and Optimization", 2018 Space Flight Mechanics Meeting, AIAA SciTech Forum, (AIAA 2018-1451)
- M. Metcalf, "The Seven Ages of Fortran", JCS&T Vol. 11 No. 1, April 2011
- J. Reid, "The New Features of Fortran 2008", ISO/IEC JTC1/SC22/WG5 N1729, May 27, 2008.
- M. Cohen, "Fortran Matters", SD Times, April 15, 2004.
Websites
- An introduction to modern Fortran programming
- Overview about Fortran 90/95 for C/C++ programmers
- Fortran Wiki, an open venue for discussing all aspects of the Fortran programming language.
- Fortran Specialist Group
- Programming in Modern Fortran, A HyperText-based introduction to programming in Fortran 2003, 2008, and 2018 on Unix.
Forums
- Intel Fortran Forum [Windows]
- Intel Fortran Forum [Linux and Mac OS X]
- comp.lang.fortran [Usenet/Google Group]
- COMP-FORTRAN-90
Fortran Standards
- J3 US Fortran Standards Committee (formerly known as ANSI X3J3)
- JTC1/SC22/WG5 The ISO Home of Fortran Standards
Fortran Software
- Alan Miller's Fortran Software
- ARPACK collection of Fortran77 subroutines designed to solve large scale eigenvalue problems (see also arpack-ng)
- BLAS (Basic Linear Algebra Subprograms)
- CERNLIB (CERN Program Library)
- CMLIB (NBS Core Math Library)
- David G. Simpson software
- Derivative-Free Optimization several Fortran codes listed
- EISPACK for computing eigenvalues and eigenvectors of matrices
- Ernst Hairer’s Fortran codes for solving ordinary differential equations
- filterSD a software package for solving Nonlinear Programming Problems and Linearly Constrained Problems in continuous optimization
- FLIBS collection of Fortran modules
- FortranCL OpenCL interface for Fortran 90
- Fortran Wiki software listings
- Fortran Tools from Mining & Exploration Geological Modelling Services
- F90GL public domain implementation of the official Fortran 90 bindings for OpenGL
- F03GL Fortran 2003 Interface to OpenGL
- gnuplotfortran the Fortran 95 interface to Gnuplot
- GnuFor2 Gnuplot/Fortran 90 interface
- GPF General Purpose Fortran Collection
- gtk-fortran aims to offer scientists programming in Fortran a cross-platform library to build Graphical User Interfaces (GUI).
- Harwell Subroutine Library (not free) and HSL Archive (free)
- High-Precision Software by David H. Bailey
- Implicit Filtering (DIRECT and IFFCO) at the Kanpur Genetic Algorithms Laboratory
- John Burkardt's FORTRAN 77 and Fortran 90 software
- json-fortran (A Fortran 2003/2008 JSON API)
- Karin's FORTRAN gems
- LAPACK (Linear Algebra PACKage)
- LINPACK for solving linear equations and linear least-squares problems
- LUSOL A sparse LU factorization for square and rectangular matrices
- MATH77 Fortran library from JPL.
- MESA Modules for Experiments in Stellar Astrophysics
- MINPACK for solving systems of nonlinear equations
- M.J.D. Powell software for derivative-free minimization
- modFileSys modern Fortran wrappers around the file system interface of libc.
- NAG Fortran 90 Software Repository
- NCAR Classic Libraries for Geophysics
- Netlib collection of mathematical software
- NIST Software - various libraries
- NOVAS (Naval Observatory Vector Astrometry Subroutines)
- NSWC (Naval Surface Warfare Center Mathematical Library)
- ODEPACK for solving systems of initial value ordinary differential equations, for stiff and non-stiff problems
- OpenCoarrays an open-source software project for developing, porting and tuning transport layers that support coarray Fortran (CAF) compilers
- Optimization subroutines from Ladislav Luksan
- ORDERPACK for unconditional, unique, and partial ranking, sorting, and permutation
- PROPACK for computing the singular value decomposition of large and sparse or structured matrices
- PSBLAS Parallel Sparse Basic Linear Algebra Subroutines
- SLATEC a library of over 1400 general purpose mathematical and statistical routines (see listing)
- SOFA (Standards of Fundamental Astronomy)
- SPICELIB from JPL
- STARPAC for statistical data analysis
- SWIFT (and Swifter) solar system integration software package
Fortran Build & Documentation Tools
- foraytool (An advanced build tool for Fortran developers)
- FoBiS (Fortran projects building system for poor men)
- FORD (Automatically generates FORtran Documentation from comments within the code)
- The Meson Build system an open source build system meant to be both extremely fast, and, even more importantly, as user friendly as possible
- Fortran Package Manager a package manager and build system for Fortran.
Other Programming Resources
- txt2re - regular expression generator
- regular expressions 101
- JSONLint - the JSON Validator
- Semantic Versioning
- Fortran questions on stackoverflow.com
- NIST Digital Library of Mathematical Functions
General Scientific Software
- NIST Guide to Available Mathematical Software
- Local Optimization Software
- Global Optimization Software
- Freely Available Software for Linear Algebra
- NA-Digest -- collection of articles on topics related to numerical analysis and those who practice it.
Other Interesting Blogs
- Steve Lionel's Dr. Fortran blog
- SciVision
- The Shape of Code
- Coding Horror
- Fortran Dev
- Fortran in a C World
- Jason Blevins Log
- My Corner of the World
- Locklin on science
- SukhbinderSingh
- Gereshes
Other References
- K.M. Borkowski, "Accurate Algorithms to Transform Geocentric to Geodetic Coordinates", Bull. Geod., 63 (1989).
- R.H. Gooding, "A Procedure for the Solution of Lambert’s Orbital Boundary-Value Problem", Celestial Mechanics, Vol. 48, Number 2, 1990.
- S.W. Shepperd, "Universal Keplerian State Transition Matrix", Celestial Mechanics, Vol. 35, Feb. 1985.
- T. Vincenty, "Direct and Inverse Solutions of Geodesics on the Ellipsoid with Application of Nested Equations". Survey Review XXII. 176, April 1975. [sourcecode from the U.S. National Geodetic Survey].
- J. Oliver, "An algorithm for numerical differentiation of a function of one real variable". Journal of Computational and Applied Mathematics, Volume 6, Issue 2, June 1980, Pages 145–160. [Original sourcecode from NIST. Updated version here].
- D. Kraft, "A Software Package for Sequential Quadratic Programming", DFVLR-FB-88-28, 1988.