Contact

Pasquale Tricarico
Planetary Science Institute
1700 E. Fort Lowell Rd. #106
Tucson, AZ 85719
USA

tel: +1 520 547-3954
email: tricaric@psi.edu

Pasquale Tricarico, Ph.D.

Senior Scientist
Planetary Science Institute

Summer of Code in Space 2011 -- Jul 13, 2011

The European Space Agency has announced the Summer of Code in Space 2011 (SOCIS), a great opportunity for students to get busy during the summer while contributing to a software project related to space. I'm happy to announce that the ORSA open source software for celestial mechanics computations is applying to SOCIS 2011. Here follows a short overview of ORSA, and some project ideas. Do not hesitate to contact me for any question or suggestion you might have, including possible project ideas not listed here.

ORSA Overview
The Orbit Reconstruction, Simulation and Analysis software provides numerical algorithms and a graphical interface to simulate very accurately the dynamics asteroids, comets, artificial satellites, Solar and extra-Solar planetary systems. The project has been around for almost a decade, registered and hosted on SourceForge since 2002, and has been used in several research level papers, including a recent one on the dynamical environment of Dawn at Vesta. A graphical version of ORSA was released in 2004-2005 for all three major OS. An example of the 3D graphical interface is provided by this page where the fly-by of asteroid 2011 MD with the Earth is displayed, and the videos were made with ORSA. During the last few years, the graphical version has been left behind mainly because the main GUI library Qt has switched from v3 to v4 and we did not have the manpower to rewrite all the code for Qt4. But the development on the numerical library has been going strong ever since, as you can see by browsing the ORSA git repository where changes to the ORSA code are committed regularly. So today ORSA has a very powerful and accurate numerical engine, that allows to write specialized, command line research programs, and is in need of an updated graphical interface in order to become more user friendly to a wider audience.

Before You Start
Let's review some common requirements to work at ORSA. The software is written in C++, so any contributor will need to be comfortable reading and writing C++ code, and have some experience in designing object oriented code. ORSA uses git for version control, so it is easier for me if contributors maintain their own git copy from which I can pull to examine the changes before committing to master. Please take some time to review the code structure, you can use the Doxygen tool to automatically generate documentation from the code. ORSA uses many software libraries, most notably: Qt4 by Nokia (formerly by Trolltech) for the GUI, the qmake system, and some handy cross-platform classes, GMP for arbitrary precision numerical manipulation, GSL for some specialized numerical algorithms, OSG for 3D graphics, Qwt for 2D data plotting, SPICE for planetary and spacecraft ephemeris. Depending on the project you choose, you might have to learn how to work with some of these libraries.

SOCIS Project Ideas
Please note that this list is getting updated frequently as more project ideas are proposed, so you are advised to visit this page frequently. Also, the difficulty level indicated is purely notional, as the objective difficulty will depend on the preparation and experience of each student.

  • Migrate to CMake Build System [difficulty level: EASY]
    The current build system used by ORSA is based on Qt's qmake. This has worked well so far, but it is not ideal when multiple developers are working at ORSA, because qmake does not test the local system to find the path of libraries and header files. A better alternative would be CMake, a portable build system that includes support for Qt and most other libraries used by ORSA.
  • Graphical User Interface: Basic Functionality [difficulty level: EASY]
    Rewrite the basic GUI using the Qt4 framework; layout of widgets to represent properties of different types of objects (satellite, asteroid, comet, planet), and properties of numerical simulations (time interval, accuracy, relativistic effects). Write and read user preferences using local configuration file.
  • Graphical User Interface: Threads and Simulations [difficulty level: MEDIUM]
    Use GUI data to setup and run numerical simulations; show real time progress; allow to export parts of the simulation, or to clone a simulation, edit it, and run it again.
  • Graphical User Interface: 2D Plotting [difficulty level: MEDIUM]
    Extract dynamical data from numerical simulations and plot using 2D Qwt widgets. This includes plotting cartesian coordinates, keplerian orbital elements, and other quantities that are important when analyzing resonant dynamics.
  • Graphical User Interface: 3D Graphics [difficulty level: HARD]
    Improve the 3D graphics, based on the OpenSceneGraph library, to allow the visualization of simulations with arbitrary camera characteristics, positions, and rotation. Allow to save single frames to create videos. Allow playback of simulations while they are still being performed. Allow playback of real events in real-time, as they happen. Numerically accurate and yet realistic graphics is one of the strong points of ORSA, and makes celestial mechanics intuitive and interactive.
  • Spacecraft Trajectory Design and Optimization [difficulty level: HARD]
    Improve the current model for spacecraft thrust, in order to simulate impulsive (chemical) and continuous (sails, ion) thrust. Write interface that allows to use a given thrust technology to perform specific orbit transfers; include time constraint and efficient propellant utilization.
  • Implement An Atmospheric Drag Model [difficulty level: HARD]
    The effect of the atmosphere of a planet needs to be modeled, in order to simulate the dynamics of satellites in low (and slowly decaying) Earth orbit, or the aerobraking of a spacecraft reaching another planet, or the passage and possible fall of a meteorite on the Earth surface.
  • ORSA File Type [difficulty level: HARD]
    The simulations generated by ORSA can be saved in a file for later use. This file format needs to be compact and still capture all the details of the simulation. An old solution of this approach is available, but needs substantial rewrite, possibly using a database approach, where all the information is saved in a single SQLite database file. Another possibility is to write SPICE kernels as output files. Also, extended bodies with arbitrary rotational state need to save their rotation on file as well; this is the case for example of two interacting asteroids in a binary system.
  • Parallelize Code [difficulty level: HARD]
    Add parallelization to the key parts of ORSA, to take advantage of multi-core processors; one way is to include localized OpenMP calls, but other methods are also possible. Review ORSA code to make sure it is reentrant and thread safe. Design and test profiling procedures to locate bottlenecks and propose performance improvements to their implementation.
  • Test-Driven Development (TDD) [difficulty level: HARD]
    Facilitate the use of the TDD software development process in ORSA by creating tests for the current code, and by designing the infrastructure for the implementation of TDD in future code. Design an automatic build and reporting system to run automatically on a daily basis to test changes to the code.
  • Command-Line Tools [difficulty level: HARD]
    In the best unix tradition, reorganize the ORSA features into a set of simple command-line tools that allow to import data, process it, perform numerical integrations, and export/save/visualize the results. Commands can be chained in order to create complex processing pipelines, either by using unix pipes or by saving intermediate input/output files.