Skip to content

Commit de7ede2

Browse files
authored
Merge branch 'develop' into feature/mmanyin/restore_blend_option
2 parents 026f382 + a503827 commit de7ede2

File tree

2 files changed

+27
-14
lines changed

2 files changed

+27
-14
lines changed

GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/ConvPar_GF2020.F90

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3514,9 +3514,9 @@ SUBROUTINE CUP_gf(its,ite,kts,kte ,itf,ktf, mtp, nmp &
35143514
zdo(i,k )*(hcdo(i,k )-heo_cup(i,k ) ) )*g/dp*edto(i)
35153515

35163516
!---meltglac-------------------------------------------------
3517-
dellah(i,k) = dellah(i,k) + xlf*((1.-p_liq_ice(i,k))*0.5*(qrco(i,k+1)+qrco(i,k)) &
3518-
- melting(i,k))*g/dp
3519-
3517+
!dellah(i,k) = dellah(i,k) + xlf*((1.-p_liq_ice(i,k))*0.5*(qrco(i,k+1)+qrco(i,k)) &
3518+
! - melting(i,k))*g/dp
3519+
dellah(i,k) = dellah(i,k) - xlf*melting(i,k)*g/dp
35203520
!-- for output only
35213521
subten_H(i,k) = -(zuo(i,k+1)*(-heo_cup(i,k+1)) - zuo(i,k)*(-heo_cup(i,k)))*g/dp &
35223522
+(zdo(i,k+1)*(-heo_cup(i,k+1)) - zdo(i,k)*(-heo_cup(i,k)))*g/dp*edto(i)
@@ -3678,9 +3678,9 @@ SUBROUTINE CUP_gf(its,ite,kts,kte ,itf,ktf, mtp, nmp &
36783678
+(zdo(i,k+1)*(hcdo(i,k+1)-heo_cup(i,k+1) ) - &
36793679
zdo(i,k )*(hcdo(i,k )-heo_cup(i,k ) ) )*g/dp*edto(i)
36803680

3681-
dellah(i,k) = dellah(i,k) + xlf*((1.-p_liq_ice(i,k))* &
3682-
0.5*(qrco(i,k+1)+qrco(i,k)) - melting(i,k))*g/dp
3683-
3681+
!dellah(i,k) = dellah(i,k) + xlf*((1.-p_liq_ice(i,k))* &
3682+
! 0.5*(qrco(i,k+1)+qrco(i,k)) - melting(i,k))*g/dp
3683+
dellah(i,k) = dellah(i,k) - xlf*melting(i,k)*g/dp
36843684
!--- for output only
36853685
subten_H(i,k) = -(zuo(i,k+1)*(-heo_cup(i,k+1)) - zuo(i,k)*(-heo_cup(i,k)))*g/dp &
36863686
+(zdo(i,k+1)*(-heo_cup(i,k+1)) - zdo(i,k)*(-heo_cup(i,k)))*g/dp*edto(i)
@@ -3707,8 +3707,9 @@ SUBROUTINE CUP_gf(its,ite,kts,kte ,itf,ktf, mtp, nmp &
37073707
dellah(i,k) =-( zuo(i,k+1)*hco (i,k+1) - zuo(i,k)*hco (i,k) )*g/dp &
37083708
+( zdo(i,k+1)*hcdo(i,k+1) - zdo(i,k)*hcdo(i,k) )*g/dp*edto(i)
37093709

3710-
dellah(i,k) = dellah(i,k) + xlf*((1.-p_liq_ice(i,k))* &
3711-
0.5*(qrco(i,k+1)+qrco(i,k)) - melting(i,k))*g/dp
3710+
!dellah(i,k) = dellah(i,k) + xlf*((1.-p_liq_ice(i,k))* &
3711+
! 0.5*(qrco(i,k+1)+qrco(i,k)) - melting(i,k))*g/dp
3712+
dellah(i,k) = dellah(i,k) - xlf*melting(i,k)*g/dp
37123713
!- update with subsidence term from the FCT scheme
37133714
dellah(i,k) = dellah(i,k) + sub_tend(1,k)
37143715
!--- for output only

GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/Process_Library.F90

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,13 @@ module GEOSmoist_Process_Library
3232
module procedure ICE_FRACTION_1D
3333
module procedure ICE_FRACTION_SC
3434
end interface ICE_FRACTION
35+
36+
! SRF_TYPE constants
37+
integer, parameter :: SRF_TYPE_LAND = 1
38+
integer, parameter :: SRF_TYPE_SNOW = 2
39+
integer, parameter :: SRF_TYPE_ICE = 3
40+
integer, parameter :: SRF_TYPE_OCEAN = 0
41+
3542
! ICE_FRACTION constants
3643
! In anvil/convective clouds
3744
real, parameter :: aT_ICE_ALL = 252.16
@@ -403,7 +410,8 @@ function ICE_FRACTION_SC (TEMP,CNV_FRACTION,SRF_TYPE) RESULT(ICEFRCT)
403410
ICEFRCT_C = MAX(ICEFRCT_C,0.00)
404411
ICEFRCT_C = ICEFRCT_C**aICEFRPWR
405412
! Sigmoidal functions like figure 6b/6c of Hu et al 2010, doi:10.1029/2009JD012384
406-
if (SRF_TYPE >= 2.0) then
413+
select case (nint(SRF_TYPE))
414+
case (SRF_TYPE_SNOW, SRF_TYPE_ICE)
407415
! Over snow (SRF_TYPE == 2.0) and ice (SRF_TYPE == 3.0)
408416
if (ICE_RADII_PARAM == 1) then
409417
! Jason formula
@@ -424,8 +432,8 @@ function ICE_FRACTION_SC (TEMP,CNV_FRACTION,SRF_TYPE) RESULT(ICEFRCT)
424432
ICEFRCT_M = MIN(ICEFRCT_M,1.00)
425433
ICEFRCT_M = MAX(ICEFRCT_M,0.00)
426434
ICEFRCT_M = ICEFRCT_M**iICEFRPWR
427-
else if (SRF_TYPE > 1.0) then
428-
! Over Land
435+
case (SRF_TYPE_LAND)
436+
! Over Land (SRF_TYPE == 1)
429437
ICEFRCT_M = 0.00
430438
if ( TEMP <= lT_ICE_ALL ) then
431439
ICEFRCT_M = 1.000
@@ -435,8 +443,8 @@ function ICE_FRACTION_SC (TEMP,CNV_FRACTION,SRF_TYPE) RESULT(ICEFRCT)
435443
ICEFRCT_M = MIN(ICEFRCT_M,1.00)
436444
ICEFRCT_M = MAX(ICEFRCT_M,0.00)
437445
ICEFRCT_M = ICEFRCT_M**lICEFRPWR
438-
else
439-
! Over Oceans
446+
case (SRF_TYPE_OCEAN)
447+
! Over Oceans (SRF_TYPE == 0)
440448
ICEFRCT_M = 0.00
441449
if ( TEMP <= oT_ICE_ALL ) then
442450
ICEFRCT_M = 1.000
@@ -446,7 +454,11 @@ function ICE_FRACTION_SC (TEMP,CNV_FRACTION,SRF_TYPE) RESULT(ICEFRCT)
446454
ICEFRCT_M = MIN(ICEFRCT_M,1.00)
447455
ICEFRCT_M = MAX(ICEFRCT_M,0.00)
448456
ICEFRCT_M = ICEFRCT_M**oICEFRPWR
449-
endif
457+
case default
458+
! You should not be here
459+
print *, 'ICE_FRACTION_SC: Unknown SRF_TYPE = ',SRF_TYPE
460+
error stop
461+
end select
450462
! Combine the Convective and MODIS functions
451463
ICEFRCT = ICEFRCT_M*(1.0-CNV_FRACTION) + ICEFRCT_C*(CNV_FRACTION)
452464
#endif

0 commit comments

Comments
 (0)