Designing a space mission is a computation-heavy task. Software tools that conduct the necessary numerical simulations and optimizations are therefore indispensable. Since the beginning of computational astrodynamics the language of choice has been Fortran and more recently MATLAB. This talk explores how Python's unique strengths and its ecosystem make it a viable alternative for future missions.
Designing a space mission trajectory is a computation-heavy task. Software tools that conduct the necessary numerical simulations and optimizations are therefore indispensable. Due to the high numerical performance requirements Fortran remains the top language of choice. Since no mission or spacecraft is alike the ever-changing requirements and constraints demand high development speed and programmer productivity. Fortran's idiosyncracies and compiled nature on the other hand are not helpful in this regard. This has led to high popularity of the MATLAB programming environment in the astrodynamics community. While it possible to connect Fortran and MATLAB through the MEX interface it is a classical example of the "two-language-problem" with its well known issues and complexities. Another problem is the fact that both MATLAB and most Fortran compilers are propietary and cannot be used easily for educating the next generation of space mission analysts.
This presentation explores how the unique strengths of the Python language and the Scientific Python ecosystem (Cython, Numba, etc.) make it a compelling alternative to the traditional Fortran/MATLAB mix. Pythonic solutions to classical astrodynamics problems like the calculation of the classical orbital elements, the solution of the Kepler problem and the numerical propagation and optimization of trajectories will be demonstrated. These are generated with the speaker's Plyades library which builds on Numpy, SciPy, Matplotlib, AstroPy, and others to enable rapid prototyping of analyses and visualizations. The talk concludes with a comparison of Python to other old and new languages that have been considered to complement or supplant Fortran, e.g. C++, Java, Julia.