Speaker
Description
ESM-Tools is a modular infrastructure software that enables the seamless building, configuration and execution of Earth System Models (ESM) on various High Performance Computing (HPC) platforms. The software is developed at the Alfred Wegener Institute for Polar and Marine Research in Bremerhaven, jointly with the GEOMAR Helmholtz-Zentrum für Ozeanforschung in Kiel. The software is open-source and distributed through GitHub.
The aim of ESM-Tools is to provide an infrastructure tool that includes different ESM components and facilitates the use of these ESMs on different HPC systems. The software must therefore be able to handle many different possible contingencies that these models and HPC systems require. Another demand of the software is to be easily expandable in order to include future ESMs and HPCs and thus also increase the modularity of the ESMs. One of the main requirements is that all of these adaptations to the extensibility and to the functionality of the software should be customizable by the user/researcher of the software and not necessarily by an experienced software engineer. To fulfil these requirements, it must be possible to expand the functionality without changing the source code.
In order to address the above stated software requirements we applied the following design choices: (i) use of a modular software architecture, (ii) following the separation-of-concerns principle: separate source-code (consists of an HPC- and model-agnostic Python back-end) and configuration, (iii) a modular and hierarchical configuration: modular easy-to-read/write YAML files defining the configuration of each specific component of the setup (HPC- and model configuration), (iv) enable an extended functionality to the configuration files by applying a special configuration file syntax (esm-parser), (v) provide an adaptable workflow and plugin manager that is configurable by the advanced user to extend and add new functionality.
In this contribution we will introduce ESM-Tools and the design choices behind its architecture. Additionally, we will discuss the advantages of such a modular system, and address the challenges associated with its usability and maintainability resulting from these design choices and our mitigation strategies.