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

Broaden paper introduction #74

Merged
merged 7 commits into from
Jul 21, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions paper/paper.bib
Original file line number Diff line number Diff line change
@@ -1,3 +1,14 @@
@article{collins:2005,
title={Design and implementation of components in the Earth System Modeling Framework},
author={Collins, Nancy and Theurich, Gerhard and Deluca, Cecelia and Suarez, Max and Trayanov, Atanas and Balaji, Venkatramani and Li, Peggy and Yang, Weiyu and Hill, Chris and Da Silva, Arlindo},
journal={The International Journal of High Performance Computing Applications},
volume={19},
number={3},
pages={341--350},
year={2005},
publisher={Sage Publications Sage CA: Thousand Oaks, CA}
}

@article{epperly:2012,
title={High-performance language interoperability for scientific
computing through Babel},
Expand Down
53 changes: 37 additions & 16 deletions paper/paper.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,23 +32,43 @@ bibliography: paper.bib

# Summary

Component modeling,
in which a new model is created by coupling the inputs and outputs
of existing numerical models,
is a research technique gaining adoption in Earth-surface process research.
For example,
@ratliff:2018
show that a river model transporting sediment
can feed a delta model, which distributes the sediment,
while @hoch:2019 show that coupling hydrologic and hydrodynamic models
Component modeling is a research technique
in which new models are constructed by coupling the inputs and outputs
of simpler existing models.
Component modeling traces its roots
to component-based software engineering,
where a software system is constructed from a number
of independent, reusable software components,
each encapsulating a unit of functionality
and exposing inputs and outputs through an interface.
A tangible analogy is a bicycle.
A bicycle is a system of reusable, replaceable components.
Tires are one of the components.
You can easily swap in a studded tire for icy winter streets,
then swap it out again in the summer.

While there is a longer history of component modeling
in fields such as climate modeling,
with, for example, the Earth System Modeling Framework [@collins:2005],
component modeling is relatively new
to the earth surface processes community.
Some recent examples include
@ratliff:2018, who show that a river model transporting sediment
can feed a delta model that distributes the sediment,
and @hoch:2019, who show that coupling hydrologic and hydrodynamic models
may sharpen inundation estimates in flood modeling.

In software engineering,
an interface is a named set of functions
with prescribed arguments and return values.
In component-based software engineering,
components communicate through interfaces:
named sets of functions with prescribed arguments and return values.
The bicycle analogy above benefits from a standard interface
for tire diameter and width.
Likewise,
component modeling can benefit from an interface
for describing the inputs, outputs, and behaviors of a model.
The *Basic Model Interface* (BMI)
provides a standard set of functions
for querying, modifying, and running a model or tool.
for querying, modifying, and running a model.
Equipping a model with a BMI
allows the model to be coupled with other models that expose a BMI.
The BMI concept was introduced by @peckham:2013
Expand All @@ -73,6 +93,10 @@ been derived from the SIDL specification.
For each language,
links to the GitHub repositories supplying the specification
and an example implementation are listed in Table 1 below.
Detailed instructions for building the language specification and example
are given within each repository.

\

**Table 1:**
Repositories containing BMI language specifications and examples.
Expand All @@ -95,9 +119,6 @@ repository name to obtain the full repository URL.
[bmi-example-fortran]: https://github.com/csdms/bmi-example-fortran
[bmi-example-python]: https://github.com/csdms/bmi-example-python

Detailed instructions for building the language specification and example
are given within each repository.

While CSDMS currently supports the four languages listed in Table 1,
a BMI can be created for any language.
BMI is a community-driven standard;
Expand Down