Skip to content

bmi-forum/bmi-builder

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

bmi-builder

Autogenerate BMI code in C, C++, and Python.

Installation

Clone and install with setuptools.

$ git clone https://github.com/bmi-forum/bmi-builder.git
$ cd bmi-builder
$ python setup.py install

Test the install.

$ bmi-build --help
usage: bmi-build [-h] [--language {c,cxx,python}] [--clobber] file

positional arguments:
  file                  YAML file
  
optional arguments:
  -h, --help            show this help message and exit
  --language {c,cxx,python}
                        BMI language
  --clobber             Overwrite any existing files.

Use

Create a YAML file with name, language, grids, time, and exchange_items attributes, following this template:

name: <str>
long_name: <str>
language: {c, c++, python}
grids:
    - id: <int>
      type: <str>
      rank: <int>
time:
    units: <str>
    start: <float>
    end: <float>
exchange_items:
    - name: <str>
      grid: <id>
      type: <str>
      units: <str>
      intent: {in, out, inout}

and provide this file as the argument to bmi-build.

An example of building a Python BMI is given in the examples directory. Run the example with

$ cd examples
$ bmi-build --language=python --clobber bmi_python.yaml

The result, bmi_model.py, implements all the BMI methods for the model. Some methods, such as initialize, update_frac, and finalize, are stubbed, and require the developer to fill out the implementation details.