eCLM-ParFlow: account for soil ice when receiving ParFlow water content (#126, #123) - #127
Open
s-poll wants to merge 3 commits into
Open
eCLM-ParFlow: account for soil ice when receiving ParFlow water content (#126, #123)#127s-poll wants to merge 3 commits into
s-poll wants to merge 3 commits into
Conversation
avoid spamming in log file, thereby improve performance
- ParFlow has no ice phase, thus pfl_h2osoi_liq is the total soil water. Cap the diagnosed ice content and take the remaining as liquid.
This reverts commit b9d7307.
kvrigor
reviewed
Aug 18, 2026
This was referenced Aug 18, 2026
Member
kvrigor
approved these changes
Aug 19, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Text revised with AI
Problem
Two symptoms in eCLM-ParFlow coupled runs trace back to the same defect:
H2OSOI_ICEvalues on urban columns #126: restart files from coupled spin-ups carry non-physicalH2OSOI_ICE(1.4e30 – 2.15e34 kg/m²) on all 404 urban columns (ltype=9) of EUR-12. Reusing such
a restart as initial condition for ICON-eCLM yields
ICOSHFLX~1e35 W/m² and crashes ICON.up to ~20x nominal, predominantly in winter.
Root Cause
soilwater_parflow(SoilWaterMovementMod.F90) received the ParFlow water content andassigned it wholesale to the liquid phase:
ParFlow has no ice phase, so
pfl_h2osoi_liqis the total soil water of the column.The ice content diagnosed by
PhaseChangeearlier in the same time step was left untouched,so total column water seen by eCLM became
pfl_h2osoi_liq + h2osoi_ice. Whenever ice was present (i.e. winter), eCLM saturation was correspondingly overestimated (#123).With nothing bounding ice against the water actually present in the column, the
liquid/ice split fed back into the next time step's phase change and diverged over the
course of a multi-year spin-up, leaving the out-of-range
H2OSOI_ICEthat ends up in therestart file (#126).
Solution
Treat the ParFlow field as the total water content and split it into ice and liquid, instead
of overwriting liquid alone:
grow without bound -> fixes eCLM-ParFlow: Corrupted
H2OSOI_ICEvalues on urban columns #126.h2osoi_liq + h2osoi_icenow equalspfl_h2osoi_liq, i.e. eCLM and ParFlow agree on totalcolumn water -> removes the winter saturation overshoot in eCLM-ParFlow: Soil moisture disagreements in real case Parflow-coupled runs #123.
bit-identical to
master.COUP_OAS_PFL; standalone eCLM and ICON-eCLM code paths untouched.Known limitation: water balance closure
The passing of the ParFlow H2OSOI_liq could be done before the phase changes, to better account for water balance. Would require a relocation of the variable passing.
This change makes the two components agree on the total soil water of a column, but it does
not make the coupled system water-conserving, and the eCLM water balance check can still show
a non-zero residual in freezing periods. The soil moisture state remains a one-way exchange:
eCLM receives the total water from ParFlow and partitions it into ice and liquid, but that
partition is never communicated back. ParFlow continues to treat the entire column water as
mobile liquid and transports it accordingly, so the two models re-diverge within the very next
time step. On top of that, the
min()cap silently drops ice mass whenever the ice diagnosed byPhaseChangeexceeds the water ParFlow reports for that layer (e.g. after ParFlow has drained a layer that eCLM hadfrozen); that mass is discarded rather than being routed back into the coupled system, and the
associated latent heat of fusion is not accounted for either.
Closing the balance properly requires either a two-way coupling of the soil moisture state — eCLM returning its liquid/ice partition so that ParFlow updates its own storage consistently or, as a minimum step, passing
the ice fraction to ParFlow so that ParFlow can reduce the available pore space and apply an ice
impedance to hydraulic conductivity instead of moving frozen water.
Related issues
Closes #126
Addresses the winter high-water-content part of #123 (the remaining saturation
disagreement is not covered here; keep #123 open).