Skip to content

Conversation

@gartavanis
Copy link
Owner

No description provided.

smithsg84 and others added 5 commits January 22, 2026 13:33
…691)

Fixes Pandas read_csv delim_whitespace API change and peg the version of Python Black style checker.

Fixes #692 
Fixes #690
q_overlnd_x and q_overlnd_y were not being initialized if surface_predictor == True but are used in the surface predictor
calculation even if they are not output. This was causing PF to throw an error for this case.

---------

Co-authored-by: Steven Smith <[email protected]>
### Summary

This PR standardizes CMake variable naming and updates GPU
documentation. It addresses a breaking configuration change where
`RMM_ROOT`, originally defined in uppercase, was later changed to
mixed-case (`rmm_ROOT`), which silently broke existing user build
scripts when upgrading ParFlow. This PR restores the original uppercase
convention and enforces consistent naming across all third-party
dependencies to prevent similar regressions.

### Changes

- **CMake variable consistency:**
  - All third-party CMake variables are now uppercase, including:
    - `RMM_ROOT` (restored from mixed-case `rmm_ROOT`)
    - `UMPIRE_ROOT` (updated from `umpire_ROOT`)
- This aligns with existing variables such as `KOKKOS_ROOT`,
`SILO_ROOT`, `HYPER_ROOT`, and `SUNDIALS_ROOT`.
- **Workflow files** updated to reflect the uppercase RMM_ROOT and
UMPIRE_ROOT variables.
- **Backward compatibility fix:**
- `RMM_ROOT` was originally uppercase; changing it to lowercase silently
broke existing user scripts when upgrading to newer ParFlow versions.
This PR restores the original convention to avoid unexpected build
failures.
- **Documentation updates (README-GPU.md):**
- Removed obsolete references to RMM v0.10 and the previous upgrade
work-in-progress note
  - Ensured consistent use of `RMM_ROOT`
  - Updated the RMM link to the official repository
## Summary
Add configurable snow parameterization options for CLM.
## New Features
- **Rain-snow partitioning:** CLM, WetbulbThreshold, WetbulbLinear
methods
- **Thin snow damping:** Prevents spurious early-season melt from warm
ground
- **Albedo schemes:** CLM, VIC, Tarboton temperature-dependent aging
## New Keys (12 total)
- `Solver.CLM.SnowPartition`, `WetbulbThreshold`
- `Solver.CLM.ThinSnowDamping`, `ThinSnowThreshold`
- `Solver.CLM.AlbedoScheme`, `AlbedoVisNew`, `AlbedoNirNew`, `AlbedoMin`
- `Solver.CLM.AlbedoDecayVis`, `AlbedoDecayNir`, `AlbedoAccumA`,
`AlbedoThawA`
## Changes
- YAML schema with types, defaults, and bounds
- RST documentation with physics background
- 3 bibliography references
- 3 Python tests with reference outputs
## References
- Wang et al. (2019) GRL, doi:10.1029/2019GL085722
- Tarboton & Luce (1996) WRR, doi:10.1029/96WR01049
- Andreadis et al. (2009) JHM
## Test Plan
- [x] `clm_snow_defaults` - backward compatibility
- [x] `clm_snow_partition` - WetbulbThreshold method
- [x] `clm_snow_albedo` - Tarboton scheme
  All pass via `ctest -R clm_snow`

---------

Co-authored-by: Reed <[email protected]>
Co-authored-by: Claude <[email protected]>
Co-authored-by: Steven Smith <[email protected]>
## Summary
Extends CLM snow parameterizations with new rain-snow partitioning
methods, SZA-based melt damping, and configurable fractional snow cover.
**New Features:**
- **Dai (2008) rain-snow partitioning**: Hyperbolic tangent function
fitted to 30 years of global observations
- **Jennings (2018) rain-snow partitioning**: Bivariate logistic
regression using temperature and relative humidity
- **SZA-based snow melt damping**: Reduces melt energy at high solar
zenith angles where CLM underestimates albedo
- **Configurable fractional snow cover**: Adjustable roughness parameter
for frac_sno calculation
- **Configurable temperature thresholds**: SnowTCrit, SnowTLow,
SnowTHigh, SnowTransitionWidth for existing methods
**New Keys (16 total):**
- `Solver.CLM.SnowTCrit`, `SnowTLow`, `SnowTHigh`, `SnowTransitionWidth`
- `Solver.CLM.DaiCoeffA`, `DaiCoeffB`, `DaiCoeffC`, `DaiCoeffD`
- `Solver.CLM.JenningsCoeffA`, `JenningsCoeffB`, `JenningsCoeffG`
- `Solver.CLM.SZASnowDamping`, `SZADampingCoszenRef`,
`SZADampingCoszenMin`
- `Solver.CLM.FracSnoScheme`, `FracSnoRoughness`
**References:**
- Dai (2008) GRL doi:10.1029/2008GL033295
- Jennings et al. (2018) Nature Communications
doi:10.1038/s41467-018-03629-7
- Dang et al. (2019) The Cryosphere doi:10.5194/tc-13-2325-2019
## Test plan
- [x] `clm_snow_dai` - Dai sigmoidal partitioning method
- [x] `clm_snow_jennings` - Jennings bivariate logistic method
- [x] `clm_snow_sza_damping` - SZA-based melt reduction
- [x] All existing CLM snow tests pass
Run tests with: `ctest -R clm_snow`
  🤖 Generated with [Claude Code](https://claude.ai/code)

---------

Co-authored-by: Reed <[email protected]>
Co-authored-by: Claude <[email protected]>
@gartavanis gartavanis merged commit 793f9a5 into gartavanis:hypre_logging Feb 4, 2026
23 of 26 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants