Preprints
https://doi.org/10.5194/gmd-2024-144
https://doi.org/10.5194/gmd-2024-144
Submitted as: development and technical paper
 | 
20 Aug 2024
Submitted as: development and technical paper |  | 20 Aug 2024
Status: this preprint is currently under review for the journal GMD.

FINAM – is not a model (v1.0): a new Python-based model coupling framework

Sebastian Müller, Martin Lange, Thomas Fischer, Sara König, Matthias Kelbling, Jeisson Javier Leal Rojas, and Stephan Thober

Abstract. In this study, we present a new coupling framework named FINAM (short for "FINAM Is Not A Model"). FINAM is designed to facilitate the coupling of independently developed source codes and enable seamless model extensions by wrapping existing models into components with well-specified interfaces. Positioned between a coupling library and a full-fledged framework, FINAM allows users to couple preexisting wrapped models or to build models from scratch using its components. The primary goal of FINAM is to leverage the power of Python, facilitating rapid prototyping and ease of use for complex workflows while offloading computationally intensive parts to native models. FINAM supports bidirectional coupling of spatial models, enabling fast in-memory data exchange, and provides a consistent interface for flexible coupling. The main assumption for a successful coupling is that every model operates with a time loop at its core. This design of FINAM allows for straightforward model extensions written in Python without altering the original model source code. Python's robust interoperability features further enhance FINAM's capabilities, allowing interfaces with various programming languages including Fortran, C, C++, Rust, and others. This paper describes the main principles and modules of FINAM and presents example workflows to demonstrate its features. These examples range from simple toy models to well-established models like OpenGeoSys and Bodium covering features like bidirectional dependencies, complex model coupling, and spatio-temporal regridding.

Publisher's note: Copernicus Publications remains neutral with regard to jurisdictional claims made in the text, published maps, institutional affiliations, or any other geographical representation in this preprint. The responsibility to include appropriate place names lies with the authors.
Sebastian Müller, Martin Lange, Thomas Fischer, Sara König, Matthias Kelbling, Jeisson Javier Leal Rojas, and Stephan Thober

Status: final response (author comments only)

Comment types: AC – author | RC – referee | CC – community | EC – editor | CEC – chief editor | : Report abuse
  • CC1: 'Comment on gmd-2024-144', Knut Klingbeil, 22 Aug 2024
    • CC3: 'Reply on CC1', Stephan Thober, 17 Sep 2024
  • CC2: 'Comment on gmd-2024-144', Reed Maxwell, 04 Sep 2024
    • CC4: 'Reply on CC2', Stephan Thober, 17 Sep 2024
  • RC1: 'Comment on gmd-2024-144', Moritz Hanke, 25 Sep 2024
  • RC2: 'Comment on gmd-2024-144', Jannes Breier, 16 Oct 2024
Sebastian Müller, Martin Lange, Thomas Fischer, Sara König, Matthias Kelbling, Jeisson Javier Leal Rojas, and Stephan Thober
Sebastian Müller, Martin Lange, Thomas Fischer, Sara König, Matthias Kelbling, Jeisson Javier Leal Rojas, and Stephan Thober

Viewed

Total article views: 554 (including HTML, PDF, and XML)
HTML PDF XML Total BibTeX EndNote
366 85 103 554 5 9
  • HTML: 366
  • PDF: 85
  • XML: 103
  • Total: 554
  • BibTeX: 5
  • EndNote: 9
Views and downloads (calculated since 20 Aug 2024)
Cumulative views and downloads (calculated since 20 Aug 2024)

Viewed (geographical distribution)

Total article views: 517 (including HTML, PDF, and XML) Thereof 517 with geography defined and 0 with unknown origin.
Country # Views %
  • 1
1
 
 
 
 
Latest update: 21 Nov 2024
Download
Short summary
This study presents FINAM ("FINAM Is Not A Model"), a new coupling framework written in Python to dynamically link independently developed models. Python, as the ultimate glue language, enables the use of codes from nearly any programming language like Fortran, C++, Rust, and others. FINAM is designed to simplify the integration of various models with minimal effort, as demonstrated through various examples ranging from simple to complex systems.