What’s New#

v1.0.0#

New features#

Breaking changes#

Deprecations#

Performance#

Bug fixes#

  • Mass balance fix in PRMS snow for rain on snow followed by evaporation consuming the entire snow pack. (PR248) By James McCreight.

  • Fix mass balance issue in PRMSSnow is also present in PRMS, snow evap is not taken from freeh2o when there is no pk_ice. (PR236) By James McCreight.

  • Resolve issues with different ways of specifying necdf output options. (PR230) By James McCreight.

  • Resolve issues with different ways of specifiying netcdf output options. (PR230) By James McCreight.

  • PRMSSoilzone remove soil_moist_prev because soil_moist is not prognotic and PRMSRunoff was needing it in the advance and not getting the correct value. PRMSRunoff now depends on soil_lower_prev and soil_rechr_prev instead. (PR244) By James McCreight.

Documentation#

Internal changes#

  • New system for generating test_data, by calling generate_test_data.py from autotest/. The system helps autotest know if test data were generated and if they are up to date. (PR253) By James McCreight.

  • Apply pylint and flake8 everywhere as much as possible. (PR251) By James McCreight.

  • Remove diagnostic variables pkwater_equiv_change, pkwater_ante (PR248) By James McCreight.

  • Use v1 instead of main for fortran-lang/setup-fortran. (PR242, PR243) By Wes Bonelli.

  • Refactor test data generation to solve race condition for dependent tests. (PR237) By Wes Bonelli.

  • Refactor tests against PRMS for consistency, flexibility, and thoroughness. (PR244) By James McCreight.

v0.2.1 (19 July 2023)#

Bug fixes#

v0.2.0 (18 July 2023)#

New features#

  • New example notebooks. Moved old notebooks to examples/developer. (PR204) By James McCreight.

  • New way to specify Model instantiation either in-memory or from yaml files using a model dictionary. The approach is loosely based on MODFLOW 6 input organization. See Model documentation. Introduced the concept of discretizations for PRMS, defining “dis_hru” and “dis_seg”. These are components of how model dictionaries are specified. (PR188) By James McCreight.

  • New Control.from_yaml() method. (PR188) By James McCreight.

  • What’s new workflow (behold!) per GH180 and PR181 By James McCreight.

  • Add automatic release workflow to PyPi as per GH178. Associated implementation of gitflow and semver conventions. Overhauled CONTRIBUTING.md, DEVELOPER.md, README.md, and .github/RELEASE.md to document adopted practices. Adoption of git-cliff to generate change logs by filtering comitt messages, see cliff.toml. Clean up of environment files and streamlining against pyproject.toml. Symlink gfortran dylibs to /usr/local/lib on macOS CI so PRMS binaries included in this repo can find them. (PR179) By Wes Bonelli.

Breaking changes#

  • Move Control attribute “config” to “options” for handling global options. (PR188) By James McCreight.

  • Remove arguments from Model initialization. Options pass via control, new set_options() method on Process and ConservativeProcess (PR188) By James McCreight.

  • Control no longer takes a Parameter object as an initialization argument. Process subclasses now require arguments discretization and parameters. The firstargument of Model not a indefinite number of processes, it is now either a list of Process subclasses or a model dictionary (see Model documentation. (PR188) By James McCreight.

Deprecations#

Performance#

  • Introduce ASV performance benchmarks for import and various NHM configurations in pywatershed. (GH170 and PR184) By James McCreight.

Bug fixes#

Documentation#

Internal changes#

  • Introduce precommit hooks: nbstripout, blackdoc, and doctoc. (PR197) By James McCreight.

  • Rename StorageUnit to ConservativeProcess that subclasses from a new Process class that contains most of the StorageUnit functionality. (PR188) By James McCreight.

  • New set_options() method on Process and ConservativeProcess to set their initialization options as ‘_` atrributes. (PR188) By James McCreight.

  • Clean up of how the calc_method option assigns function names to reduce the total amount of code and do it upon initialization. (PR188) By James McCreight.

  • Rename many modules to use lower-snake-case names including those in base/, atmoshpere/, and hydrology/ (PR188) By James McCreight.

  • NHM “self-driving” tests (PR160) By James McCreight.

  • Refactor dependencies for standard pypi installation. (PR164, GH178) By Joseph Hughes.

v0.1.1 (27 April 2023)#

Initial release.