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.