BMI: Difference between revisions
From CSDMS
No edit summary |
(Link to Python BMI template) |
||
Line 10: | Line 10: | ||
* BMI on [https://github.com/csdms/bmi GitHub]: Go here to contribute to BMI, ask a BMI-related question, or submit an issue. | * BMI on [https://github.com/csdms/bmi GitHub]: Go here to contribute to BMI, ask a BMI-related question, or submit an issue. | ||
* The original [http://www.sciencedirect.com/science/article/pii/S0098300412001252 BMI article in Computers & Geosciences] | * The original [http://www.sciencedirect.com/science/article/pii/S0098300412001252 BMI article in Computers & Geosciences] | ||
* A [https://raw.githubusercontent.com/bmi-forum/bmi-python/master/examples/bmi-template.py 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. |
Revision as of 12:07, 28 November 2017
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.
Links
- 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.