Skip to content

Commit 19d9b8a

Browse files
authored
Merge pull request #3683 from swensosc/oversaturation
ctsm5.4.008: Oversaturation
2 parents 99c8612 + 09eec1f commit 19d9b8a

File tree

4 files changed

+95
-10
lines changed

4 files changed

+95
-10
lines changed

doc/.ChangeLog_template

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -146,13 +146,12 @@ Changes answers relative to baseline:
146146
only by roundoff level (because order of operation changes for example). Roundoff
147147
changes to state fields usually grow to greater than roundoff as the simulation progresses.
148148

149-
If this tag changes climate describe the run(s) done to evaluate the new
150-
climate (put details of the simulations in the experiment database)
151-
- casename:
152-
153-
URL for LMWG diagnostics output used to validate new climate:
154-
149+
If this tag changes climate list the run(s) done to evaluate the new
150+
climate (from https://github.com/NCAR/LMWG_dev)
151+
- issue number:
155152

153+
URL for LDF diagnostics output used to validate new climate:
154+
-
156155
Other details
157156
-------------
158157
[Remove any lines that don't apply. Remove entire section if nothing applies.]

doc/ChangeLog

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,84 @@
11
===============================================================
2+
Tag name: ctsm5.4.008
3+
Originator(s): swensosc (Sean Swenson)
4+
Date: Mon Jan 12 11:19:38 PM MST 2026
5+
One-line Summary: Add a correction for oversaturated soil layers in SoilWaterMovement
6+
7+
Purpose and description of changes
8+
----------------------------------
9+
10+
Add a correction for oversaturated soil layers immediately after the soil water flux calculation in SoilWaterMovementMod.
11+
12+
Significant changes to scientifically-supported configurations
13+
--------------------------------------------------------------
14+
15+
Does this tag change answers significantly for any of the following physics configurations?
16+
(Details of any changes will be given in the "Answer changes" section below.)
17+
18+
[Put an [X] in the box for any configuration with significant answer changes.]
19+
20+
[ ] clm6_0
21+
22+
[ ] clm5_0
23+
24+
[ ] ctsm5_0-nwp
25+
26+
[ ] clm4_5
27+
28+
29+
Bugs fixed
30+
----------
31+
32+
List of CTSM issues fixed (include CTSM Issue # and description) [one per line]:
33+
Second checkbox in #3879 -- placeholder issue soil water movement
34+
35+
Notes of particular relevance for users
36+
---------------------------------------
37+
38+
Notes of particular relevance for developers:
39+
---------------------------------------------
40+
41+
Caveats for developers (e.g., code that is duplicated that requires double maintenance):
42+
43+
44+
Testing summary: regular
45+
----------------
46+
[PASS means all tests PASS; OK means tests PASS other than expected fails.]
47+
48+
regular tests (aux_clm: https://github.com/ESCOMP/CTSM/wiki/System-Testing-Guide#pre-merge-system-testing):
49+
50+
derecho ----- OK
51+
izumi ------- OK
52+
53+
If the tag used for baseline comparisons was NOT the previous tag, note that here:
54+
55+
Answer changes
56+
--------------
57+
58+
Changes answers relative to baseline: Yes! Changes in most fields
59+
60+
Summarize any changes to answers, i.e.,
61+
- what code configurations: All
62+
- what platforms/compilers: All
63+
- nature of change (larger than roundoff/same climate)
64+
65+
If this tag changes climate list the run(s) done to evaluate the new
66+
climate (from https://github.com/NCAR/LMWG_dev)
67+
- issue number: 132
68+
69+
URL for LMWG diagnostics output used to validate new climate:
70+
- https://webext.cgd.ucar.edu/I20TR/ctsm5.4.004_bgc_f09_131_HIST/lnd/ctsm5.4.004_bgc_f09_Oversaturation_131b_HIST_1994_2023_vs_ctsm5.4.004_bgc_f09_131_HIST_1994_2023/website/
71+
72+
73+
Other details
74+
-------------
75+
76+
Pull Requests that document the changes (include PR ids):
77+
(https://github.com/ESCOMP/ctsm/pull)
78+
#3683 -- Oversaturation
79+
80+
===============================================================
81+
===============================================================
282
Tag name: ctsm5.4.007
383
Originator(s): samrabin (Sam Rabin, UCAR/TSS)
484
Date: Fri Jan 9 11:53:19 MST 2026

doc/ChangeSum

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
Tag Who Date Summary
22
============================================================================================================================
3+
ctsm5.4.008 swensosc 01/12/2026 Add a correction for oversaturated soil layers in SoilWaterMovement (erik)
34
ctsm5.4.007 samrabin 01/09/2026 Update (irrigated_)rice grnfill and lfemerg
45
ctsm5.4.006 erik 01/07/2026 Merge b4b-dev to master
56
ctsm5.4.005 rgknox 12/19/2025 FATES JSON parameter files

src/biogeophys/SoilWaterMovementMod.F90

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1147,8 +1147,7 @@ subroutine soilwater_moisture_form(bounds, num_hydrologyc, &
11471147
real(r8) :: vLiqIter(bounds%begc:bounds%endc,1:nlevsoi) ! iteration increment for the volumetric liquid water content (v/v)
11481148
real(r8) :: vLiqRes(bounds%begc:bounds%endc,1:nlevsoi) ! residual for the volumetric liquid water content (v/v)
11491149

1150-
real(r8) :: dwat_temp
1151-
real(r8) :: over_saturation
1150+
real(r8) :: over_saturation ! Amount of water that over saturates this soil layer [kg/m2]
11521151
!-----------------------------------------------------------------------
11531152

11541153
associate(&
@@ -1163,6 +1162,7 @@ subroutine soilwater_moisture_form(bounds, num_hydrologyc, &
11631162
zwt => soilhydrology_inst%zwt_col , & ! Input: [real(r8) (:) ] water table depth (m)
11641163
qout_col => soilhydrology_inst%qout_col , & ! Output: [real(r8) (:,:) ] soil water out of the bottom, mm h2o/s
11651164
qin_col => soilhydrology_inst%qin_col , & ! Output: [real(r8) (:,:) ] soil water into the bottom, mm h2o/s
1165+
eff_porosity => soilstate_inst%eff_porosity_col , & ! Input: [real(r8) (:,:) ] effective porosity = porosity - vol_ice
11661166
watsat => soilstate_inst%watsat_col , & ! Input: [real(r8) (:,:) ] volumetric soil water at saturation (porosity)
11671167
smp_l => soilstate_inst%smp_l_col , & ! Input: [real(r8) (:,:) ] soil matrix potential [mm]
11681168
hk_l => soilstate_inst%hk_l_col , & ! Input: [real(r8) (:,:) ] hydraulic conductivity (mm/s)
@@ -1183,8 +1183,6 @@ subroutine soilwater_moisture_form(bounds, num_hydrologyc, &
11831183
! set number of layers over which to solve soilwater movement
11841184
nlayers = nbedrock(c)
11851185

1186-
dwat_temp = 0.
1187-
11881186
! initialize the number of substeps
11891187
nsubstep=0
11901188

@@ -1403,6 +1401,13 @@ subroutine soilwater_moisture_form(bounds, num_hydrologyc, &
14031401
! save number of adaptive substeps used during time step
14041402
nsubsteps(c) = nsubstep
14051403

1404+
! check for over-saturated layers and move excess upward
1405+
do j = nlayers,2,-1
1406+
over_saturation = max(h2osoi_liq(c,j)-(eff_porosity(c,j)*m_to_mm*dz(c,j)),0._r8)
1407+
h2osoi_liq(c,j) = min(eff_porosity(c,j)*m_to_mm*dz(c,j), h2osoi_liq(c,j))
1408+
h2osoi_liq(c,j-1) = h2osoi_liq(c,j-1) + over_saturation
1409+
end do
1410+
14061411
! check for negative moisture values
14071412
do j = 2, nlayers
14081413
if(h2osoi_liq(c,j) < -1e-6_r8) then

0 commit comments

Comments
 (0)