From b642b2260532a74a7ec1d8511eb460e93457d5a6 Mon Sep 17 00:00:00 2001 From: tanyasmirnova Date: Thu, 30 Sep 2021 18:12:34 +0000 Subject: [PATCH 1/2] This commit proposes an alternative solution on emissivity computation for different scenarios. It checks of semis_ice(i) has non-zero values (could come from RUC LSM for uncoupled model, or CICE for coupled model), then use it over ice fraction. If not, then compute it using either snow cover fraction (sncovr_ice) or snow depth. --- physics/radiation_surface.f | 32 ++++++++++++++------------------ 1 file changed, 14 insertions(+), 18 deletions(-) diff --git a/physics/radiation_surface.f b/physics/radiation_surface.f index 69b8abd85..3d4af8b11 100644 --- a/physics/radiation_surface.f +++ b/physics/radiation_surface.f @@ -956,26 +956,22 @@ subroutine setemis & if ( icy(i) ) then !-- ice emissivity !-- complete or fractional ice - if (lsm == lsm_noahmp) then - if (.not. cplice .or. lakefrac(i) > f_zero) then - if (sncovr_ice(i) > f_zero) then - sfcemis_ice = emsref(7) * (f_one-sncovr_ice(i)) & + if (semis_ice(i) > f_zero) then + sfcemis_ice = semis_ice(i) ! output from RUC lsm or CICE (with snow effect) + else + !-- compute ice emissivity with snow effect for uncoupled lake or sea ice + if (sncovr_ice(i) > f_zero) then + sfcemis_ice = emsref(7) * (f_one-sncovr_ice(i)) & & + emsref(8) * sncovr_ice(i) - elseif (snowf(i) > f_zero) then - asnow = 0.02*snowf(i) - argh = min(0.50, max(.025,0.01*zorlf(i))) - hrgh = min(f_one,max(0.20,1.0577-1.1538e-3*hprif(i))) - fsno = asnow / (argh + asnow) * hrgh - fsnoi = min(f_one, fsno / (fraci(i)+fracl(i))) - sfcemis_ice = emsref(7)*(f_one-fsnoi) + emsref(8)*fsnoi - endif - semis_ice(i) = sfcemis_ice - else - sfcemis_ice = semis_ice(i) ! output from CICE + elseif (snowf(i) > f_zero) then + asnow = 0.02*snowf(i) + argh = min(0.50, max(.025,0.01*zorlf(i))) + hrgh = min(f_one,max(0.20,1.0577-1.1538e-3*hprif(i))) + fsno = asnow / (argh + asnow) * hrgh + fsnoi = min(f_one, fsno / (fraci(i)+fracl(i))) + sfcemis_ice = emsref(7)*(f_one-fsnoi) + emsref(8)*fsnoi endif - elseif (lsm == lsm_ruc) then - sfcemis_ice = semis_ice(i) ! output from lsm (with snow effect) - endif ! lsm check + endif endif ! icy !-- land emissivity From 1e35ea7bce89d7a9f95e81a1c94a68d6af1ab018 Mon Sep 17 00:00:00 2001 From: tanyasmirnova Date: Thu, 30 Sep 2021 19:34:10 +0000 Subject: [PATCH 2/2] Changed the "if" statement when semis_ice(i) is used. --- physics/radiation_surface.f | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/physics/radiation_surface.f b/physics/radiation_surface.f index 3d4af8b11..08c1f1b2b 100644 --- a/physics/radiation_surface.f +++ b/physics/radiation_surface.f @@ -956,7 +956,7 @@ subroutine setemis & if ( icy(i) ) then !-- ice emissivity !-- complete or fractional ice - if (semis_ice(i) > f_zero) then + if (cplice .or. lsm == lsm_ruc) then sfcemis_ice = semis_ice(i) ! output from RUC lsm or CICE (with snow effect) else !-- compute ice emissivity with snow effect for uncoupled lake or sea ice @@ -971,6 +971,7 @@ subroutine setemis & fsnoi = min(f_one, fsno / (fraci(i)+fracl(i))) sfcemis_ice = emsref(7)*(f_one-fsnoi) + emsref(8)*fsnoi endif + semis_ice(i) = sfcemis_ice endif endif ! icy