Skip to content

Commit

Permalink
Broaden paper introduction (#74) (#75)
Browse files Browse the repository at this point in the history
* Expand paper intro for broader audience

* Try to shift table caption after page break

* Remove style formatting from table caption

* Minor edits

* minor edits to paper.md (#73)

Just a couple of minor tweaks

* Minor updates to text

* Add line break for table header

Co-authored-by: Greg Tucker <gtucker@colorado.edu>

Co-authored-by: Greg Tucker <gtucker@colorado.edu>
  • Loading branch information
mdpiper and gregtucker authored Jul 21, 2020
1 parent faf21d7 commit 774b7c7
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 16 deletions.
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

0 comments on commit 774b7c7

Please sign in to comment.