Software Engineering and Interoperabilty

Software plays several critical roles in environmental system science, from the tools that comprise complicated workflows for model data integration and analysis to the underlying computational engine that provides the physics-based simulations. Increasingly we think of this collection of tools and codes as a software ecosystem (shown schematically below) of flexible and interoperable components that supports the ModEx cycle, and can readily leverage advances in AI/ML. However, realizing this scientific capacity for the community requires that we avoid ad hoc and one off solutions and support the underlying software as a fundamental community resource, following best practices in software development methodologies and providing education and training. To this end, the SEI working group explores

  • integration of legacy and new capabilities across projects
  • best practices for software development and release
  • rigorous – but rapid – testing and validation of model-data integration capabilities
  • changing architectures and programming models
  • deployments of workflows and simulation codes in containers and using cloud resources.
  • complex multiscale models (coupling, interoperability)
  • performing quantitative and formalized UQ
  • supporting AI/ML enhanced workflows
  • diverse interdisciplinary teams, and training
  • increased scientific productivity
The IDEAS-Watersheds Software Ecosystem includes primary codes that are used and developed by that project, as well as third party codes that it uses but doesn't contribute to. Similarly it includes both primary and third party workflow tools. To promote reuse and code sharing they are also developing common interfaces, such as the Alquimia interface to different biogechemistry engines (i.e., PFLOTRAN and CrunchFlow).

SEI Working Group Leads:

David Moulton David Moulton
Los Alamos National Laboratory
Ethan Coon Ethan Coon
Oak Ridge National Laboratory

Want to contribute? Ask the leads to join the Google Group: