Improved build / configuration system
The build system is going to evolve to become more user-friendly and self-contained.
OpenGGCM is a complex package with special requirements that make it more difficult to use than the typical downloaded-from-the-internet software package. Actually running a job requires preprocessing of input data like satellite measurements, creating a custom version of the openggcm executable and then running this code.
Of course, postprocessing is necessary as well, but not addressed here at this time, a separate sub-project to deal with output issues is also underway.
Phase 0 -- tools
This part is only necessary once, when downloading a new release. Various tools are necessary to build OpenGGCM, but are not customized depending on the specifics of a particular run. These tools can be built, installed and forgotten about (until future releases may require updated tools).
Phase 1 -- configuration
Configuration data is read from the job description file, traditionally called "runme", and processed together with default options to be used by the following phases.
Phase 2 -- create input data
Necessary input data for OpenGGCM is generated as needed for the run, for example solarwind data from satellite measurements.
Phase 3 -- prepare sources
A customized OpenGGCM is put together to include the various modules chosen, incorporate specific grid data etc. All of this needs to happen at a source code level, because phases 0 to 3 may run on a different machine than the one which is finally executing the simulation.
Phase 4 -- compile on target
All necessary parts to build and run OpenGGCM (input data, grid data, source code, build tools) are transferred to the target machine and OpenGGCM is built there. This executable will now finally be run -- or rather submitted into a batch system, because parallel computers do not typically allow the user to run codes at their leisure.
The user-visible interface to running OpenGGCM will be maintained in its current way, ie the users supplies a runme file listing the configuration options, and additional files (e.g. satellite measurements) as needed.
Building the tools (phase 0) moves to using the GNU autotools, which makes it easy to build and install the tools an varying architectures.
Building the final OpenGGCM executable will also be using a GNU autotools generated configure script and Makefile. This will take care of putting the various modules together which may include F77, F90 and C at this time. MPI compilers etc will have to be specified, as it is not possible to automatically determine sensible defaults.
We are trying to limit the tools required on the target machine. Only the following should be needed:
- MPI compilers