{"id":23831951,"url":"https://github.com/csdms/bmi","last_synced_at":"2025-04-09T13:11:18.768Z","repository":{"id":40263152,"uuid":"20540232","full_name":"csdms/bmi","owner":"csdms","description":"The Basic Model Interface is a set of functions for coupling models to models and models to data","archived":false,"fork":false,"pushed_at":"2025-03-31T19:44:29.000Z","size":847,"stargazers_count":52,"open_issues_count":40,"forks_count":18,"subscribers_count":18,"default_branch":"develop","last_synced_at":"2025-04-02T12:07:23.775Z","etag":null,"topics":["bmi","c","csdms","cxx","fortran","geosciences","interface","java","javascript","julia","numerical-modeling","python"],"latest_commit_sha":null,"homepage":"https://bmi.csdms.io","language":"TeX","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/csdms.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":"CODE-OF-CONDUCT.md","threat_model":null,"audit":null,"citation":"CITATION.md","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS.md","dei":null,"publiccode":null,"codemeta":null}},"created_at":"2014-06-05T20:23:42.000Z","updated_at":"2025-04-02T06:53:43.000Z","dependencies_parsed_at":"2025-01-09T15:46:05.761Z","dependency_job_id":"ed0de75a-5ef6-4e89-be00-25f76e8f0bce","html_url":"https://github.com/csdms/bmi","commit_stats":{"total_commits":259,"total_committers":13,"mean_commits":"19.923076923076923","dds":0.5482625482625483,"last_synced_commit":"2642b7a71a636740b1ca6a87782ceefa451d2a0a"},"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/csdms%2Fbmi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/csdms%2Fbmi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/csdms%2Fbmi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/csdms%2Fbmi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/csdms","download_url":"https://codeload.github.com/csdms/bmi/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248045265,"owners_count":21038555,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bmi","c","csdms","cxx","fortran","geosciences","interface","java","javascript","julia","numerical-modeling","python"],"created_at":"2025-01-02T14:16:42.678Z","updated_at":"2025-04-09T13:11:18.745Z","avatar_url":"https://github.com/csdms.png","language":"TeX","readme":"![[License: MIT][license-link]][license-badge]\n![[DOI][doi-link]][doi-badge]\n![[Documentation][rtd-link]][rtd-badge]\n![[JOSS Article][joss-link]][joss-badge]\n\n[doi-badge]: https://zenodo.org/badge/DOI/10.5281/zenodo.3955010.svg\n[doi-link]: https://doi.org/10.5281/zenodo.3955009\n[license-badge]: https://img.shields.io/badge/License-MIT-yellow.svg\n[license-link]: https://opensource.org/licenses/MIT\n[rtd-badge]: https://readthedocs.org/projects/bmi/badge/?version=stable\n[rtd-link]: https://bmi.readthedocs.io/en/stable\n[joss-badge]: https://joss.theoj.org/papers/10.21105/joss.02317/status.svg\n[joss-link]: https://doi.org/10.21105/joss.02317\n\n# The Basic Model Interface\n\n\n---\n\nThe Basic Model Interface (BMI) is a standardized set of functions\nthat allows coupling of models to models and models to data.\n\n---\n\n\nThe *Basic Model Interface* (BMI),\ndeveloped by the [Community Surface Dynamics Modeling System] (CSDMS),\nis a standardized set of control and query functions that,\nwhen added to a software element such as a model or a dataset,\nmakes that software easier to couple with other software that also exposes a BMI.\n\nA BMI makes a model self-describing and fully controllable\nby a modeling framework or application.\nBy design, the BMI functions are straightforward to implement in\nany language, using basic data types from standard language libraries.\nAlso by design, the BMI functions are noninvasive.\nThis means that a model's BMI does not make calls to other\ncomponents or tools and is not modified to use any\nframework-specific data structures. A BMI, therefore, introduces no\ndependencies into a model, so the model can still be used\nin a stand-alone manner.\n\nThe BMI is expressed\nin the [Scientific Interface Definition Language] (SIDL).\nFrom [bmi.sidl](./bmi.sidl),\nCSDMS has derived BMI specifications\nfor five languages--C, C++, Fortran, Java,\nand Python.\nFor each language,\nlinks to the specification and an example implementation\nare listed in the table below.\n\n| Language | Specification | Example implementation |\n| -------- | ------------- | ---------------------- |\n| C        | [bmi-c]       | [bmi-example-c]        |\n| C++      | [bmi-cxx]     | [bmi-example-cxx]      |\n| Fortran  | [bmi-fortran] | [bmi-example-fortran]  |\n| Java     | [bmi-java]    | [bmi-example-java]     |\n| Python   | [bmi-python]  | [bmi-example-python]   |\n\nDetailed instructions for building the specifications and examples\nare given at each link above.\nAlternatively, the specifications can be installed through conda\n(C, C++, Fortran, Python) or Maven (Java).\nSee the links above for details.\n\nWhile CSDMS currently supports the languages listed above,\na BMI specification can be written for any language.\nBMI is a community-driven standard;\n[contributions](CONTRIBUTING.rst)\nthat follow the [contributor code of conduct](./CODE-OF-CONDUCT.rst)\nare welcomed,\nand are [acknowledged](./AUTHORS.rst).\n\nThe table below lists community-contributed\nlanguage specifications and examples\nfor two languages, Javascript and Julia.\n\n| Language   | Specification | Example implementation |\n| ---------- | ------------- | ---------------------- |\n| Javascript | [bmi-js]      | [bmi-example-js]       |\n| Julia      | [bmi-julia]   | [bmi-example-julia]    |\n\nThe default branch of this repository\nreflects the current state of development for the BMI.\nWhen implementing a BMI,\nplease use the [latest release] listed in the right sidebar;\ncurrently this is [Basic Model Interface 2.0].\nFor more information on implementing a BMI,\nsee the [documentation].\n\nBMI is open source software released under the [MIT License](./LICENSE.md).\nBMI is an element of the [CSDMS Workbench],\nan integrated system of software tools, technologies, and standards\nfor building and coupling models.\n\n*The Community Surface Dynamics Modeling System\nis supported by the National Science Foundation.*\n\n\u003c!-- Links --\u003e\n\n[basic model interface 2.0]: https://github.com/csdms/bmi/releases/tag/v2.0\n[bmi-c]: https://github.com/csdms/bmi-c\n[bmi-cxx]: https://github.com/csdms/bmi-cxx\n[bmi-example-c]: https://github.com/csdms/bmi-example-c\n[bmi-example-cxx]: https://github.com/csdms/bmi-example-cxx\n[bmi-example-fortran]: https://github.com/csdms/bmi-example-fortran\n[bmi-example-java]: https://github.com/csdms/bmi-example-java\n[bmi-example-js]: https://github.com/uihilab/bmi-example-js\n[bmi-example-julia]: https://github.com/csdms/bmi-example-julia\n[bmi-example-python]: https://github.com/csdms/bmi-example-python\n[bmi-fortran]: https://github.com/csdms/bmi-fortran\n[bmi-java]: https://github.com/csdms/bmi-java\n[bmi-js]: https://github.com/uihilab/bmi-js\n[bmi-julia]: https://github.com/Deltares/BasicModelInterface.jl\n[bmi-python]: https://github.com/csdms/bmi-python\n[community surface dynamics modeling system]: https://csdms.colorado.edu\n[csdms workbench]: https://csdms.colorado.edu/wiki/Workbench\n[documentation]: https://bmi.readthedocs.io\n[latest release]: https://github.com/csdms/bmi/releases\n[scientific interface definition language]: https://doi.org/10.1177/1094342011414036\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcsdms%2Fbmi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcsdms%2Fbmi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcsdms%2Fbmi/lists"}