BMI: Difference between revisions

From CSDMS
mNo edit summary
m (Update version and links)
Line 3: Line 3:
<div class=AutoScaleImage>[[ File:Bmi-logo-below-lowercase.png | 325 px | right ]]<div>
<div class=AutoScaleImage>[[ File:Bmi-logo-below-lowercase.png | 325 px | right ]]<div>


'''Version 1.0'''
'''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.
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.
Line 9: Line 9:
== Links ==
== Links ==


* A description of the [http://bmi.readthedocs.io/en/latest/ BMI specification]: Go here for a detailed description of the latest version of BMI.
* The latest [http://bmi.readthedocs.io/ BMI documentation]. Check it out! Last updated February 2020 for BMI 2.0.
* BMI on [https://github.com/csdms/bmi GitHub]: Go here to contribute to BMI, ask a BMI-related question, or submit an issue.
* The central BMI repository 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 BMI 2.0 language specifications for [https://github.com/csdms/bmi-c C], [https://github.com/csdms/bmi-cxx C++], [https://github.com/csdms/bmi-fortran Fortran], and [https://github.com/csdms/bmi-python Python]. If you have a model in one of these supported languages, implement the corresponding spec to create a BMI.
* 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.
* Sample implementations in [https://github.com/csdms/bmi-example-c C], [https://github.com/csdms/bmi-example-cxx C++], [https://github.com/csdms/bmi-example-fortran Fortran], and [https://github.com/csdms/bmi-example-python Python]. These examples demonstrate how to implement a BMI for a simple model.
* The latest materials for the [https://github.com/csdms/bmi-live-2018 BMI Live] instructional clinic.
* The [http://www.sciencedirect.com/science/article/pii/S0098300412001252 Peckham et al. (2013) article] in Computers & Geosciences where the concept of BMI was proposed.
* The latest materials for the [https://github.com/csdms/bmi-live BMI Live] instructional clinic.

Revision as of 10:37, 9 March 2020

Basic Model Interface (BMI)
Bmi-logo-below-lowercase.png

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.

Links

  • 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 latest materials for the BMI Live instructional clinic.