From 8e93bbbcf392e39b3af7d60ce4d3e274556047bb Mon Sep 17 00:00:00 2001 From: Rich Fiorella Date: Wed, 15 May 2024 16:57:39 -0600 Subject: [PATCH] Add variable calculation of microtopographic parameters Adds linear scaling of various microtopographic parameters in polygonal tundra (depression depth, excluded volume, relief) --- .../elm/src/biogeophys/ActiveLayerMod.F90 | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/components/elm/src/biogeophys/ActiveLayerMod.F90 b/components/elm/src/biogeophys/ActiveLayerMod.F90 index 3ff4d2f098c0..1526b6ecb342 100644 --- a/components/elm/src/biogeophys/ActiveLayerMod.F90 +++ b/components/elm/src/biogeophys/ActiveLayerMod.F90 @@ -188,18 +188,21 @@ subroutine alt_calc(num_soilc, filter_soilc, & ! subsidence is integral of melt profile: subsidence(c) = subsidence(c) + sum(melt_profile) + ! limit subsidence to 0.4 m + subsidence(c) = min(0.4_r8, subsidence(c)) + ! update ice wedge polygon microtopographic parameters if in polygonal ground - ! TODO: need to retrieve landunit this column is on. - if (lun_pp%ispolygon(c)) then - if (lun_pp%polygontype(c) .eq. ilowcenpoly) then + !rf - min/max logic may be redunant w/ subsidence limiter above + if (lun_pp%ispolygon(col_pp%landunit(c))) then + if (lun_pp%polygontype(col_pp%landunit(c)) .eq. ilowcenpoly) then rmax(c) = 0.4_r8 vexc(c) = 0.2_r8 - ddep(c) = 0.15_r8 ! TODO - update based on subsidence calcs. - elseif (lun_pp%polygontype(c) .eq. iflatcenpoly) then - rmax(c) = 0.1_r8 ! TODO - update based on subsidence calcs. - vexc(c) = 0.05_r8 ! TODO - update based on subsidence calcs. - ddep(c) = 0.01_r8 ! TODO - update based on subsidence calcs. - elseif (lun_pp%polygontype(c) .eq. ihighcenpoly) then + ddep(c) = min(0.05_r8, max(0.15_r8 - 0.25_r8*subsidence(c), 0.15_r8)) + elseif (lun_pp%polygontype(col_pp%landunit(c)) .eq. iflatcenpoly) then + rmax(c) = min(0.1_r8, max(0.4_r8, 0.1_r8 + 0.75_r8*subsidence(c))) + vexc(c) = min(0.05_r8, max(0.2_r8, 0.05_r8 + 0.375_r8*subsidence(c))) + ddep(c) = min(0.01_r8, max(0.05_r8, 0.01_r8 + 0.1_r8*subsidence(c))) + elseif (lun_pp%polygontype(col_pp%landunit(c)) .eq. ihighcenpoly) then rmax(c) = 0.4_r8 vexc(c) = 0.2_r8 ddep(c) = 0.05_r8