Skip to content

v2.3.0

Choose a tag to compare

@awickert awickert released this 11 May 12:38
· 218 commits to master since this release

What's new in v2.3.0

Physics and correctness

  • Rain-on-snow sensible heat melt (McCabe et al. 2007; Würzer et al. 2016): precipitation arriving at T > 0 °C contributes (c_p/L_f)·T·P mm SWE of melt energy
  • Frozen ground index (Molnau & Bissell 1983): accumulates freezing degree-days; when it exceeds a user-set threshold, shallow-to-deep infiltration is blocked (all drainage becomes direct runoff)
  • Leftover melt energy after snowpack exhaustion is credited to frozen-soil thawing rather than discarded
  • Nash-cascade channel routing in run_and_score() (routing_N, routing_K parameters)

Bug fixes

  • check_mass_balance(): now subtracts initial storage so the discrepancy is ~0 for a mass-conserving run
  • run(): resets internal time counter at the start, so calling it more than once (e.g. spin-up + main run) no longer crashes
  • compute_ET_multiplier(): warns when annual discharge exceeds precipitation (ET multiplier ≤ 0 would make ET water-generating)
  • compute_ET(): uses .to_numpy() for the ET scaling product to prevent silent row misalignment after the water-year merge
  • _update_fgi(): raises a clear ValueError when FGI is enabled but temperature data is absent, instead of an opaque KeyError
  • calibration.run_and_score(): _fgi (frozen ground index) is now included in final_states and restored from initial_states so frozen-ground state is physically continuous when chaining decade runs
  • calibration.run_and_score(): b.melt_factor kept in sync with b.snowpack.melt_factor when overriding

Naming and clarity

  • YAML keys water_reservoir_effective_depths__m, maximum_effective_depths__m, and snowpack__m_SWE renamed to __mm variants to match the actual unit used throughout
  • Buckets.H_deficit renamed to H_deficit_carry to accurately describe it as a timestep carry-over debt, not a cumulative accumulation
  • CalibResult extended with bfi_obs, bfi_mod (Eckhardt baseflow index), fdc_obs, fdc_mod (flow duration curves), and final_states for decade chaining

Breaking changes

  • YAML config files must use the new __mm key names (water_reservoir_effective_depths__mm, maximum_effective_depths__mm, snowpack__mm_SWE)