The Basic Model Interface 2.0

The Basic Model Interface 2.0: A standard interface for coupling numerical models in the geosciences - Published in JOSS (2020)

https://github.com/csdms/bmi

Science Score: 100.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 9 DOI reference(s) in README and JOSS metadata
  • Academic publication links
    Links to: joss.theoj.org, zenodo.org
  • Committers with academic emails
    5 of 14 committers (35.7%) from academic institutions
  • Institutional organization owner
    Organization csdms has institutional domain (csdms.colorado.edu)
  • JOSS paper metadata
    Published in Journal of Open Source Software

Keywords

bmi c csdms cxx fortran geosciences interface java javascript julia numerical-modeling python

Scientific Fields

Engineering Computer Science - 31% confidence
Last synced: 4 months ago · JSON representation ·

Repository

The Basic Model Interface is a set of functions for coupling models to models and models to data

Basic Info
  • Host: GitHub
  • Owner: csdms
  • License: mit
  • Language: TeX
  • Default Branch: develop
  • Homepage: https://bmi.csdms.io
  • Size: 845 KB
Statistics
  • Stars: 54
  • Watchers: 18
  • Forks: 18
  • Open Issues: 46
  • Releases: 1
Topics
bmi c csdms cxx fortran geosciences interface java javascript julia numerical-modeling python
Created over 11 years ago · Last pushed 4 months ago
Metadata Files
Readme Contributing License Code of conduct Citation Authors

README.md

[License: MIT][license-link] [DOI][doi-link] [Documentation][rtd-link] [JOSS Article][joss-link]

The Basic Model Interface


The Basic Model Interface (BMI) is a standardized set of functions that allows coupling of models to models and models to data.


The Basic Model Interface (BMI), developed by the Community Surface Dynamics Modeling System, is a standardized set of control and query functions that, when added to a software element such as a model or a dataset, makes that software easier to couple with other software that also exposes a BMI.

A BMI makes a model self-describing and fully controllable by a modeling framework or application. By design, the BMI functions are straightforward to implement in any language, using basic data types from standard language libraries. Also by design, the BMI functions are noninvasive. This means that a model's BMI does not make calls to other components or tools and is not modified to use any framework-specific data structures. A BMI, therefore, introduces no dependencies into a model, so the model can still be used in a stand-alone manner.

The BMI is expressed in the Scientific Interface Definition Language. From bmi.sidl, CSDMS has derived BMI specifications for five languages--C, C++, Fortran, Java, and Python. For each language, links to the specification and an example implementation are listed in the table below.

| Language | Specification | Example implementation | | -------- | ------------- | ---------------------- | | C | bmi-c | bmi-example-c | | C++ | bmi-cxx | bmi-example-cxx | | Fortran | bmi-fortran | bmi-example-fortran | | Java | bmi-java | bmi-example-java | | Python | bmi-python | bmi-example-python |

Detailed instructions for building the specifications and examples are given at each link above. Alternatively, the specifications can be installed through conda (C, C++, Fortran, Python) or Maven (Java). See the links above for details.

While CSDMS currently supports the languages listed above, a BMI specification can be written for any language. BMI is a community-driven standard; contributions that follow the contributor code of conduct are welcomed, and are acknowledged.

The table below lists community-contributed language specifications and examples for two languages, Javascript and Julia.

| Language | Specification | Example implementation | | ---------- | ------------- | ---------------------- | | Javascript | bmi-js | bmi-example-js | | Julia | bmi-julia | bmi-example-julia |

The default branch of this repository reflects the current state of development for the BMI. When implementing a BMI, please use the latest release listed in the right sidebar; currently this is Basic Model Interface 2.0. For more information on implementing a BMI, see the documentation.

BMI is open source software released under the MIT License. BMI is an element of the CSDMS Workbench, an integrated system of software tools, technologies, and standards for building and coupling models.

The Community Surface Dynamics Modeling System is supported by the National Science Foundation.

Owner

  • Name: Community Surface Dynamics Modeling System
  • Login: csdms
  • Kind: organization
  • Email: csdms@colorado.edu

Cyberinfrastructure for the quantitative modeling of earth and planetary surface processes

JOSS Publication

The Basic Model Interface 2.0: A standard interface for coupling numerical models in the geosciences
Published
July 23, 2020
Volume 5, Issue 51, Page 2317
Authors
Eric W.h. Hutton ORCID
Community Surface Dynamics Modeling System, University of Colorado Boulder, USA
Mark D. Piper ORCID
Community Surface Dynamics Modeling System, University of Colorado Boulder, USA
Gregory E. Tucker ORCID
Community Surface Dynamics Modeling System, University of Colorado Boulder, USA, Cooperative Institute for Research in Environmental Sciences (CIRES), University of Colorado Boulder, USA, Department of Geological Sciences, University of Colorado Boulder, USA
Editor
Patrick Diehl ORCID
Tags
C C++ Fortran Python geosciences modeling interface

Citation (CITATION.md)

# Citation

If you use the Basic Model Interface for work/research
presented in a publication, we ask that you please cite:

::::{tab-set}

:::{tab-item} APA
Peckham, S.D., Hutton, E.W., and Norris, B., 2013. **A component-based
approach to integrated modeling in the geosciences: The design of CSDMS**.
*Computers & Geosciences*, 53, pp.3-12,
https://doi.org/10.1016/j.cageo.2012.04.002.

Hutton, E.W.H., Piper, M.D., and Tucker, G.E., 2020. **The Basic Model
Interface 2.0: A standard interface for coupling numerical models in the
geosciences**. *Journal of Open Source Software*, 5(51), 2317,
https://doi.org/10.21105/joss.02317.
:::

:::{tab-item} BibTeX
```bibtex
@article{peckham2013component,
    title={
        A component-based approach to integrated modeling in the
        geosciences: The design of CSDMS
    },
    author={Peckham, Scott D and Hutton, Eric WH and Norris, Boyana},
    journal={Computers \& Geosciences},
    volume={53},
    pages={3--12},
    year={2013},
    publisher={Elsevier}
}

@article{hutton2020basic,
    doi={10.21105/joss.02317},
    url={https://doi.org/10.21105/joss.02317},
    year={2020},
    publisher={The Open Journal},
    volume={5},
    number={51},
    pages={2317},
    author={Eric W.H. Hutton and Mark D. Piper and Gregory E. Tucker},
    title={
        The Basic Model Interface 2.0: A standard interface for coupling
        numerical models in the geosciences
    },
    journal={Journal of Open Source Software}
}
```
:::
::::

GitHub Events

Total
  • Issues event: 2
  • Watch event: 5
  • Delete event: 29
  • Issue comment event: 18
  • Push event: 63
  • Pull request review comment event: 11
  • Pull request review event: 28
  • Pull request event: 61
  • Fork event: 1
  • Create event: 36
Last Year
  • Issues event: 2
  • Watch event: 5
  • Delete event: 29
  • Issue comment event: 18
  • Push event: 63
  • Pull request review comment event: 11
  • Pull request review event: 28
  • Pull request event: 61
  • Fork event: 1
  • Create event: 36

Committers

Last synced: 5 months ago

All Time
  • Total Commits: 341
  • Total Committers: 14
  • Avg Commits per committer: 24.357
  • Development Distribution Score (DDS): 0.478
Past Year
  • Commits: 82
  • Committers: 2
  • Avg Commits per committer: 41.0
  • Development Distribution Score (DDS): 0.024
Top Committers
Name Email Commits
mcflugen m****n@g****m 178
Mark Piper m****r@c****u 117
huttone h****e@4****4 32
pre-commit-ci[bot] 6****] 2
Mike Taves m****s@g****m 2
Julian Hofer J****r@d****l 2
Rolf Hut r****t@t****l 1
Richard Barnes r****s@u****u 1
Greg Tucker g****r@c****u 1
root r****t@4****4 1
kallumad k****d@4****4 1
Phil Miller p****r@n****v 1
Julian Hofer j****r@d****l 1
(no author) (****)@4****4 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 4 months ago

All Time
  • Total issues: 52
  • Total pull requests: 121
  • Average time to close issues: 6 months
  • Average time to close pull requests: 8 days
  • Total issue authors: 12
  • Total pull request authors: 10
  • Average comments per issue: 2.6
  • Average comments per pull request: 0.62
  • Merged pull requests: 98
  • Bot issues: 0
  • Bot pull requests: 1
Past Year
  • Issues: 3
  • Pull requests: 60
  • Average time to close issues: 26 minutes
  • Average time to close pull requests: about 13 hours
  • Issue authors: 2
  • Pull request authors: 4
  • Average comments per issue: 0.67
  • Average comments per pull request: 0.32
  • Merged pull requests: 44
  • Bot issues: 0
  • Bot pull requests: 1
Top Authors
Issue Authors
  • mdpiper (22)
  • hrajagers (6)
  • MartineDeVos (4)
  • mcflugen (4)
  • kbarnhart (3)
  • teuben (3)
  • hellkite500 (3)
  • BSchilperoort (2)
  • gregtucker (2)
  • aaraney (1)
  • goord (1)
  • PhilMiller (1)
Pull Request Authors
  • mcflugen (65)
  • mdpiper (38)
  • PhilMiller (6)
  • RolfHut (2)
  • gregtucker (2)
  • pre-commit-ci[bot] (2)
  • mwtoews (2)
  • scrasmussen (2)
  • ghost (2)
  • mgalloy (1)
Top Labels
Issue Labels
enhancement (9) requirement (7) documentation (7) bug (1)
Pull Request Labels
lazy-consensus (9) request-for-comment (2) documentation (1)

Dependencies

docs/requirements.txt pypi
  • readthedocs-sphinx-search *
  • sphinx >=4
  • sphinx_rtd_theme *