My Current Software Projects
Most everything I work on is open source on github -- see my profile. Below are the main projects I'm working on right now.
LIVVkit
LIVVkit, the land ice verification & validation toolkit, is a python based V&V toolkit for computational ice sheet models, in both a stand-alone or coupled (to an Earth system model) configuration. It is intended to be a comprehensive testing suite that covers:
Model V&V
- Numerical verification -- "Are we solving the equations correctly?"
- Physical validation -- "Are we using the right physics?"
Software V&V
- Code verification -- "did we build what we intended?"
- Performance validation -- "did we build what the users wanted?"
By integrating LIVVkit into a model’s development workflow, LIVVkit will help users and developers build confidence in their model results, and easily transmit testing data to the wider scientific community, reviews, and decision/policy makers. Verification tests and small-scale validation tests are included in LIVVkit, but due to the size of the data required for physical validation, the validation test are maintained in a LIVVkit Extensions (LEX) repository (see below). To learn more about LIVVkit:
- Read the docs
- See the source code
- View an example verification output website
- Read the open access journal article describing LIVVkit and its design philosophy: DOI:10.1002/2017MS000916
LEX
LIVVkit is extensible to more in-depth or larger validation analyses. However, because these validation analyses are particularly data intensive, many of the observational and example model output files are much too large to distribute in the LIVVkit package. Therefore, we’ve developed a LIVVkit Extensions repository (LEX) which uses git-lfs (Git Large File Support) in order to distribute the required data. LEX holds a collection of validation and custom analyses of ice sheet models and their associated Earth system models. To learn more about LEX:
- Read the LIVVkit extensions docs
- See the extensions repository
- View an example validation output website
EVV
Requiring model changes to pass stringent tests before being accepted as part of E3SM’s main development branch is critical for quickly and efficiently producing a trustworthy model. Depending on their impacts on model output, code modifications can be classified into three types:
- Technical changes that continue to produce bit-for-bit identical solutions
- Changes that cause the model solution to differ, yet produce a statistically identical climate when averaged over a sufficiently long time
- Changes that lead to a different model climate
Only (3) impacts model climate, and changes of this type should only be implemented within the code after an in-depth demonstration of improvement. However, distinguishing between (2) and (3) requires a comprehensive analysis of both a baseline climate and the currently produced climate.
Through the CMDV Software project, we've provided a set of climate reproducibility tests to determine whether or not non-bit-for-bit (nb4b) model changes are climate changing. Primarily, the statistical analysis of the climates is done through EVV, a python package to perform the statistical tests and will generate a portable test website to describe the results (pass or fail) in detail. To learn more about EVV:
- Read the docs
- See the source code
- See an example of the output website
E3SM
The E3SM project is designed to accelerate the development and application of a fully coupled, state-of-the-science Earth system model (ESM) for scientific and energy mission applications. Scientific development of the system will be dictated by three science drivers that broadly cover the foundational science for advancing Earth system prediction. Notably, water cycle, biogeochemistry, and cryosphere systems govern variability and changes in water availability and storms, air and stream temperature, and coastal flooding and sea level rise that are all critical to the energy sector. We pursue three overarching science questions:
- (Water Cycle) How do the hydrological cycle interact with the rest of the human-Earth system on local to global scales to determine water availability and water cycle extremes?
- (Biogeochemistry) How do the biogeochemical cycle interact with other Earth system components to influence energy-sector decisions?
- (Cryosphere Systems) How do rapid changes in cryospheric systems evolve with the Earth system and contribute to sea level rise and increased coastal vulnerability?
To learn more about E3SM:
- See the E3SM website
- See the source code
CIME
CIME, pronounced “SEAM”, contains the support scripts (configure, build, run, test), data models, essential utility libraries, a “main” and other tools that are needed to build a single-executable coupled Earth System Model. CIME is available in a stand-alone package that can be compiled and tested without active prognostic components but is typically included in the source of a climate model. CIME does not contain: any active components, any intra-component coupling capability (such as atmosphere physics-dynamics coupling). To learn more about CIME:
- Read the docs
- See the source code