BMI Description

Basic Model Interface (BMI)

Version 1.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 paper 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.


  • A description of the BMI specification: Go here for a detailed description of the latest version of BMI.
  • BMI on GitHub: Go here to contribute to BMI, ask a BMI-related question, or submit an issue.
  • The original BMI article in Computers & Geosciences
  • A template for a Python BMI. This provides a simple way for a modeler to add a BMI to their model. Each BMI method is stubbed out with documentation; all the modeler needs to do is fill in the methods with hooks into their model code.