Quick links:
pymt is an Open Source Python package, developed by the Community Surface Dynamics Modeling System (CSDMS), that provides the necessary tools used for the coupling of models that expose the Basic Model Interface (BMI). It contains:
- Tools necessary for coupling models of disparate time and space scales (including grid mappers)
- Time-steppers that coordinate the sequencing of coupled models
- Exchange of data between BMI-enabled models
- Wrappers that automatically load BMI-enabled models into the PyMT framework
- Utilities that support open-source interfaces (UGRID, SGRID, CSDMS Standard Names, etc.)
- A collection of community-submitted models, written in a variety of programming languages, from a variety of process domains - but all usable from within the Python programming language
- A plug-in framework for adding additional BMI-enabled models to the framework
What does it look like? Here is an example of a simple pymt program that couples a Waves model with a Coastline Evolution model.
from pymt.models import Cem, Waves
waves = Waves()
cem = Cem()
waves.initialize(*waves.setup())
cem.initialize(*cem.setup())
for time in range(1000):
waves.update()
angle = waves.get_value("wave_angle")
cem.set_value("wave_angle", angle)
cem.update()
pymt is an element of the CSDMS Workbench, an integrated system of software tools, technologies, and standards for building and coupling models.
This work is supported by the National Science Foundation under Grant No. 1831623, Community Facility Support: The Community Surface Dynamics Modeling System (CSDMS).