Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Make Component compliant with BMI #26

Open
ThibHlln opened this issue Mar 4, 2021 · 0 comments
Open

Make Component compliant with BMI #26

ThibHlln opened this issue Mar 4, 2021 · 0 comments
Labels
functionality New feature or request

Comments

@ThibHlln
Copy link
Member

ThibHlln commented Mar 4, 2021

The Basic Model Interface (BMI) is a set of functions that standardizes how numerical models can be queried, modified, and run. A model with a BMI exposes the same set of functions, no matter which language the model is written in. While a BMI can be specified for any language, CSDMS currently supports C, C++, Fortran, and Python. https://csdms.colorado.edu/wiki/Workbench

More information available here: https://bmi.readthedocs.io/en/latest/

Making the framework's Component BMI-compliant would have several benefits:

  • Fortran/C/C++ components can be turned into a Python package using babelizer (https://babelizer.readthedocs.io/en/latest/), this would allow us to lift our dependency on numpy.f2py which is not maintained anymore, and harmonise the way Fortran source code on one side and C/C++ source code on the other side are packaged (at the moment the former with f2py, and the latter with cython)
  • component contributions made to cm4twc can be reused in other BMI-compliant frameworks, this would make the contributions even more worth the effort

Making a Component BMI-compliant would not increase the effort involved in making a component contribution as the set of functions making up the BMI will be given to the contributors "for free" (i.e. by class inheritance), they will only need to implement the initialise-run-finalise methods, as before.

There may be some issues with juggling between CSDMS standard names and CF-conventions standard names.

@ThibHlln ThibHlln added the functionality New feature or request label Mar 4, 2021
@mattjbr123 mattjbr123 moved this to To do in v1.1.0 Jun 25, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
functionality New feature or request
Projects
Status: To do
Development

No branches or pull requests

1 participant