CSDMS3.0 - Bridging Boundaries

BMI Live!

Mark Piper

CSDMS IF, University of Colorado, Boulder, United States

In software engineering, an interface is a group of functions with prescribed names, argument types, and return types. When a developer implements an interface for a piece of software, they fill out the details for each function while keeping the signatures intact. CSDMS has developed the Basic Model Interface (BMI) for facilitating the conversion of a model written in C, C++, Fortran, Python, or Java into a reusable, plug-and-play component. By design, BMI functions are simple. However, when trying to implement them, the devil is often in the details.

In this hands-on clinic, we'll take a simple model of the two-dimensional heat equation, written in Python, and together we'll write the BMI functions to wrap it, preparing it for transformation into a component. As we develop, we’ll explore how to use the wrapped model with a Jupyter Notebook.

To get the most out of this clinic, come prepared to code! We'll have a lot to write in the time allotted for the clinic. We recommend that clinic attendees have a laptop with the Anaconda Python distribution installed. We also request that you review the

before the start of the clinic.

Please acknowledge the original contributors when you are using this material. If there are any copyright issues, please let us know ( and we will respond as soon as possible.

Of interest for:
  • Terrestrial Working Group
  • Coastal Working Group
  • Marine Working Group
  • Education and Knowledge Transfer (EKT) Working Group
  • Cyberinformatics and Numerics Working Group
  • Hydrology Focus Research Group
  • Chesapeake Focus Research Group
  • Critical Zone Focus Research Group
  • Human Dimensions Focus Research Group
  • Geodynamics Focus Research Group
  • Ecosystem Dynamics Focus Research Group
  • Coastal Vulnerability Initiative
  • Continental Margin Initiative
  • Artificial Intelligence & Machine Learning Initiative