Skip to content

Port CLM cryosphere fixes and ELM h2osfc ponding/runoff adjustments onto maint-3.0 - #8643

Open
daliwang wants to merge 8 commits into
E3SM-Project:maint-3.0from
daliwang:lnd/port-clm-cryosphere-fixes-maint-3.0
Open

Port CLM cryosphere fixes and ELM h2osfc ponding/runoff adjustments onto maint-3.0#8643
daliwang wants to merge 8 commits into
E3SM-Project:maint-3.0from
daliwang:lnd/port-clm-cryosphere-fixes-maint-3.0

Conversation

@daliwang

@daliwang daliwang commented Aug 18, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Port CLM cryosphere bug fixes into ELM on maint-3.0: fractional-snow energy and melt compaction (glacier/wetland), bedrock heat capacity, active-element accumulator masking, and glacier snow-balance accounting.
  • Also includes Dan Ricciuto's ELM h2osfc ponding/runoff adjustment (SoilHydrologyMod). That is not a CLM cryosphere physics port. It can change hydrology vs the maint-3.0 baseline, especially in cold regions.
  • Review follow-up: use_modified_infil stays namelist-controlled (default .false.). The if-block is kept. The namelist-true path keeps the ponding bug-fix and computes frac_infclust from frac_h2osfc_act. The default path stays the original snow-adjusted frac_h2osfc scheme. k_wet uses 1.0e-4 with a minimum slope.

Commits

  • Port CLM fractional-snow energy and melt-compaction fixes (36deec7f46)
  • Port CLM bedrock heat capacity fix in SoilTemperatureMod (a63fb07099)
  • Port CLM active-element masking for ELM accumulators (45e8c6e260)
  • Bug fixes for surface water runoff calculation (1b19ba5e35)
  • Fix snow balance accounting issue (3c77ed78f3)
  • Review: keep use_modified_infil namelist control; put the frac_h2osfc_act
    runoff fix on the default (.false.) path (0812b90da7)

Testing (Frontier)

e3sm_land_developer vs personal gold from parent maint-3.0 @ 34bd782d18 (50 tests), craygnu overlay (not in this PR).

  • Previous PR SHA: 3c77ed78f3 — 50/50 RUN PASS; 45 BASELINE DIFF vs gold; 5 MOSART PASS; NLCOMP and ERS restarts PASS
  • Review-cleanup SHA: 2d80081d36 — 50/50 RUN PASS; 45 BASELINE DIFF vs gold; 5 MOSART PASS; NLCOMP and ERS restarts PASS; 2 FATES MEMLEAK already on parent
    Non B4B vs gold. Do not bless new gold until reviewers agree the diffs match the science.

maint-3.0 as shipped cannot use the current OLCF GNU stack (PrgEnv-gnu/8.3.3 is gone; compiler name is still gnu; Lmod paths are login-only). Tests used a local overlay (not in this PR) that matches master’s working craygnu stack (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.0 machines PR (later) should add craygnu + cmake macros + /opt/cray/pe/lmod paths so later land PRs do not need the overlay.

daliwang and others added 5 commits August 17, 2026 15:09
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.
@daliwang
daliwang requested review from czender and donghuix August 18, 2026 13:43

@donghuix donghuix left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Comment thread components/elm/src/biogeophys/SoilHydrologyMod.F90
Comment thread components/elm/src/biogeophys/SoilHydrologyMod.F90

@czender czender left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I left one comment on code formatting issues.

@bishtgautam
bishtgautam self-requested a review August 19, 2026 18:48

@bishtgautam bishtgautam left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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>
@daliwang
daliwang force-pushed the lnd/port-clm-cryosphere-fixes-maint-3.0 branch from 077f1d2 to 2d80081 Compare August 21, 2026 03:56
@daliwang daliwang changed the title Lnd/port clm cryosphere fixes onto maint 3.0 Port CLM cryosphere fixes and ELM h2osfc ponding/runoff adjustments onto maint-3.0 Aug 21, 2026
@daliwang

Copy link
Copy Markdown
Contributor Author

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.

Resolved

Comment on lines -498 to 508
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

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please don't delete this if (use_modified_infil) block

@daliwang daliwang Aug 21, 2026

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 czender left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

My comments have been addressed, thanks.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.
@daliwang
daliwang force-pushed the lnd/port-clm-cryosphere-fixes-maint-3.0 branch from e647388 to b95fd96 Compare August 22, 2026 03:37
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.

@bishtgautam bishtgautam left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good.

@donghuix donghuix left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't have further comments.

@bishtgautam bishtgautam added the non-BFB PR makes roundoff changes to answers. label Aug 28, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ELM land model maint-3.0 non-BFB PR makes roundoff changes to answers.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants