COSIPY v2.0
COSIPY 2.0
This update is not backwards-compatible with previous versions of COSIPY.
TL;DR
- New configuration system - convert your old config files using
convert_config.py
. - Critical bug fixes - surface temperature, refreezing, snowfall, radiation.
- Performance - up to 30% faster for some simulations.
- Expanded support for WRF.
- Pip package support - install once, run anywhere.
- Documentation update - API, tutorial.
- CI workflow.
Please read the updated tutorial on cosipy.readthedocs.io to learn how to use the new configuration system.
Features
- Configuration system now uses .toml files. You can now run multiple simulations from the same root directory.
- Configuration for utilities is now centralised to a single file.
- .py configuration files for COSIPY 1.4 can be converted to the new .toml system with a utility script.
- Expanded support for WRF.
- Packaging support for pip - installing with pip provides shortcuts for common COSIPY commands.
- Updated tutorial, API, and documentation.
Breaking changes
- Drops support for Python 3.8 and lower.
- Replaces the entire configuration system.
- Centralises the source directory structure.
- Removes the
output
andoutput.full
files. Output variable selection is now in the config file. - Some arguments have been renamed to avoid namespace collision.
-c
,-x
,-u
,-s
are now reserved for handling configuration files. - Some output attributes and variable names have been corrected.
Critical Bug Fixes
- The surface temperature solver no longer terminates prematurely.
- Refreezing now conserves mass and uses the correct units. Thanks to @MarcusGastaldello for providing both these fixes.
- Snowfall is now in metres water equivalent instead of ice equivalent. Thanks to @Richteny for spotting this.
- Date comparisons now compare times instead of string lengths.
- Incorrect conversion to radians in radiation module.
- Fixed typos in output variable names.
Optimisations
- Simulations run up to 30% faster.
- Significant optimisations across all modules - with thanks to @MarcusGastaldello and @Richteny.
- "Secant" is now the default minimisation algorithm.
- Optimisations for saving data to disk.
- Optimisations for preprocessing scripts.