Revision as of 05:04, 6 August 2018 by WikiSysop (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
CSDMS 2018 annual meeting - Geoprocesses, geohazards

BMI Live!

Mark Piper

University of Colorado, Boulder, United States
Eric Hutton University of Colorado, Boulder United States

In software engineering, an interface is a set 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 an existing model written in C, C++, Fortran, Python or Java into a reusable, plug-and-play component. By design, BMI functions are straightforward to implement. However, when trying to match BMI functions to model behaviors, the devil is often in the details.
In this hands-on clinic, we'll take a simple model--an implementation of the two-dimensional heat equation 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 read over:
BMI description (
BMI documentation (
before participating in 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:
  • Cyberinformatics and Numerics Working Group