Port CLM cryosphere fixes and ELM h2osfc ponding/runoff adjustments onto maint-3.0 - #8643
Port CLM cryosphere fixes and ELM h2osfc ponding/runoff adjustments onto maint-3.0#8643daliwang wants to merge 8 commits into
Conversation
Allow frac_sno_eff and melt-compaction ddz3 fractional forms for all non-urban, non-lake columns when subgrid fluxes are on, matching ctsm5.4.042 behavior for glacier and wetland columns.
Do not scale bedrock volumetric heat capacity by soil porosity (1-watsat). Below nlevbed, use solid-rock heat capacity times layer thickness, consistent with ctsm5.4.042.
Skip inactive subgrid points when updating timeavg, runmean, and runaccum fields; track per-point nsteps for correct averaging and restart, matching the ctsm5.4.042 accumulator redesign.
donghuix
left a comment
There was a problem hiding this comment.
The code looks good to me. I left a comment on the code about fixing the water ponding. I suggest separating that modification into another PR.
czender
left a comment
There was a problem hiding this comment.
I left one comment on code formatting issues.
bishtgautam
left a comment
There was a problem hiding this comment.
The changes in this PR are exactly the same as in #8638 for which I have left a few comments that need to be addressed.
Compute frac_infclust from frac_h2osfc_act unconditionally and document that the k_wet change is an ELM ponding calibration, not a CLM cryosphere port. Co-authored-by: Cursor <cursoragent@cursor.com>
077f1d2 to
2d80081
Compare
Resolved |
| if (use_modified_infil) then | ||
| if (frac_h2osfc_act(c) <= pc .and. frac_h2osfc(c) <= pc) then | ||
| frac_infclust=0.0_r8 | ||
| else | ||
| if (frac_h2osfc(c) <= pc) then | ||
| frac_infclust=(frac_h2osfc_act(c)-pc)**mu | ||
| else | ||
| frac_infclust=(frac_h2osfc(c)-pc)**mu | ||
| endif | ||
| endif | ||
| if (frac_h2osfc_act(c) <= pc) then | ||
| frac_infclust = 0.0_r8 | ||
| else |
There was a problem hiding this comment.
Please don't delete this if (use_modified_infil) block
There was a problem hiding this comment.
Thanks. The if (use_modified_infil) block is kept. The namelist-true path still has the ponding bug-fix and computes frac_infclust from frac_h2osfc_act, so snow-adjusted frac_h2osfc cannot zero ponded runoff. The default (.false.) path stays the original snow-adjusted frac_h2osfc scheme.
This is in b95fd96.
czender
left a comment
There was a problem hiding this comment.
My comments have been addressed, thanks.
There was a problem hiding this comment.
I think you forgot the change the else-block
if (frac_h2osfc_act(c) <= pc) then
frac_infclust=(frac_h2osfc_act(c)-pc)**mu
else
frac_infclust=(frac_h2osfc_act(c)-pc)**mu
endif
Keep the namelist if-block so the default path stays the original snow-adjusted frac_h2osfc scheme. The namelist-true path keeps the ponding bug-fix and computes frac_infclust from frac_h2osfc_act.
e647388 to
b95fd96
Compare
Keep the original use_modified_infil=.true. frac_infclust scheme. Default (.false.) now uses unadjusted frac_h2osfc_act so snow-cover adjustment of frac_h2osfc does not suppress ponded runoff.
donghuix
left a comment
There was a problem hiding this comment.
I don't have further comments.
Summary
maint-3.0: fractional-snow energy and melt compaction (glacier/wetland), bedrock heat capacity, active-element accumulator masking, and glacier snow-balance accounting.SoilHydrologyMod). That is not a CLM cryosphere physics port. It can change hydrology vs themaint-3.0baseline, especially in cold regions.use_modified_infilstays namelist-controlled (default.false.). The if-block is kept. The namelist-true path keeps the ponding bug-fix and computesfrac_infclustfromfrac_h2osfc_act. The default path stays the original snow-adjustedfrac_h2osfcscheme.k_wetuses1.0e-4with a minimum slope.Commits
36deec7f46)a63fb07099)45e8c6e260)1b19ba5e35)3c77ed78f3)use_modified_infilnamelist control; put thefrac_h2osfc_actrunoff fix on the default (
.false.) path (0812b90da7)Testing (Frontier)
e3sm_land_developervs personal gold from parentmaint-3.0@34bd782d18(50 tests),craygnuoverlay (not in this PR).3c77ed78f3— 50/50 RUN PASS; 45 BASELINE DIFF vs gold; 5 MOSART PASS; NLCOMP and ERS restarts PASS2d80081d36— 50/50 RUN PASS; 45 BASELINE DIFF vs gold; 5 MOSART PASS; NLCOMP and ERS restarts PASS; 2 FATES MEMLEAK already on parentNon B4B vs gold. Do not bless new gold until reviewers agree the diffs match the science.
maint-3.0as shipped cannot use the current OLCF GNU stack (PrgEnv-gnu/8.3.3is gone; compiler name is stillgnu; Lmod paths are login-only). Tests used a local overlay (not in this PR) that matches master’s workingcraygnustack (Core/25.03,PrgEnv-gnu,cpe/25.09,gcc-native/14.2) on maint-3.0’s CIME skeleton.This PR is science only. A separate
maint-3.0machines PR (later) should addcraygnu+ cmake macros +/opt/cray/pe/lmodpaths so later land PRs do not need the overlay.