(Redirected from BMI Description)
Basic Model Interface (BMI)

Version 2.0

Development of scientific modeling software increasingly requires the coupling of multiple, independently developed models. Component-based software engineering enables the integration of plug-and-play components, but significant additional challenges must be addressed in any specific domain in order to produce a usable development and simulation environment that also encourages contributions and adoption by entire communities. In the documents linked below, we describe the challenges in creating a coupling environment for Earth-surface process modeling and the innovative approach that we have developed to address them within CSDMS.

BMI is an element of the CSDMS Workbench, an integrated system of software tools, technologies, and standards for building and coupling models.


  • The latest BMI documentation. Check it out! Last updated February 2020 for BMI 2.0.
  • The central BMI repository on GitHub: Go here to contribute to BMI, ask a BMI-related question, or submit an issue.
  • The BMI 2.0 language specifications for C, C++, Fortran, and Python. If you have a model in one of these supported languages, implement the corresponding spec to create a BMI.
  • Sample implementations in C, C++, Fortran, and Python. These examples demonstrate how to implement a BMI for a simple model.
  • The Peckham et al. (2013) article in Computers & Geosciences where the concept of BMI was proposed.
  • The Hutton et al. (2020) article in Journal of Open Source Software describing BMI 2.0.
  • The latest materials for the BMI Live instructional clinic.