[[CSDMS meeting abstract presentation::In order to simplify conversion of an existing model to a reusable, plug-and-play model component, CSDMS has developed a simple interface called the Basic Model Interface (BMI) that model developers are asked to implement. In this context, an interface is a named set of functions with prescribed function names, argument types and return types. By design, the BMI functions are straightforward to implement in C, C++, Fortran, Java and Python. Also by design, the BMI functions are noninvasive. A BMI-compliant model does not make any calls to CSDMS components or tools and is not modified to use CSDMS data structures. BMI therefore introduces no dependencies into a model and the model can still be used in a stand-alone manner.
Models that provide a BMI can be incorporated into a modeling framework, such as the CSDMS model coupling framework, where they gain new capabilities provided by the framework. The CSDMS framework allows coupling of models even if they differ in:
• programming language,
• variable names,
• variable units,
• time-stepping scheme or
• computational grid is different.
Framework models also gain the ability to write output variables to NetCDF files, a graphical user interface, and the ability to run within the CSDMS Web Tool.
This clinic will explain the key concepts of BMI (and CSDMS Standard Names), and will demonstrate, through example, how to implement a BMI for an existing model. It will also include an overview of the CSDMS Standard Names, which provide a uniform way to map input and output variable names between component models as part of a BMI implementation. Participants are encouraged to read the associated CSDMS wiki pages in advance. See
• BMI Description
• CSDMS Standard Names