Skip to content

Commit 5e7eb2f

Browse files
committed
hand-merge PR #1124
2 parents 826c40d + e047a45 commit 5e7eb2f

File tree

1 file changed

+18
-6
lines changed

1 file changed

+18
-6
lines changed

GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/Process_Library.F90

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,13 @@ module GEOSmoist_Process_Library
3333
module procedure ICE_FRACTION_1D
3434
module procedure ICE_FRACTION_SC
3535
end interface ICE_FRACTION
36+
37+
! SRF_TYPE constants
38+
integer, parameter :: SRF_TYPE_LAND = 1
39+
integer, parameter :: SRF_TYPE_SNOW = 2
40+
integer, parameter :: SRF_TYPE_ICE = 3
41+
integer, parameter :: SRF_TYPE_OCEAN = 0
42+
3643
! ICE_FRACTION constants
3744
! In anvil/convective clouds
3845
real, parameter :: aT_ICE_ALL = 252.16
@@ -525,7 +532,8 @@ function ICE_FRACTION_SC (TEMP,CNV_FRACTION,SRF_TYPE) RESULT(ICEFRCT)
525532
ICEFRCT_C = MAX(ICEFRCT_C,0.00)
526533
ICEFRCT_C = ICEFRCT_C**aICEFRPWR
527534
! Sigmoidal functions like figure 6b/6c of Hu et al 2010, doi:10.1029/2009JD012384
528-
if (SRF_TYPE >= 2.0) then
535+
select case (nint(SRF_TYPE))
536+
case (SRF_TYPE_SNOW, SRF_TYPE_ICE)
529537
! Over snow (SRF_TYPE == 2.0) and ice (SRF_TYPE == 3.0)
530538
ICEFRCT_M = 0.00
531539
if ( TEMP <= iT_ICE_ALL ) then
@@ -536,8 +544,8 @@ function ICE_FRACTION_SC (TEMP,CNV_FRACTION,SRF_TYPE) RESULT(ICEFRCT)
536544
ICEFRCT_M = MIN(ICEFRCT_M,1.00)
537545
ICEFRCT_M = MAX(ICEFRCT_M,0.00)
538546
ICEFRCT_M = ICEFRCT_M**iICEFRPWR
539-
else if (SRF_TYPE == 1.0) then
540-
! Over Land
547+
case (SRF_TYPE_LAND)
548+
! Over Land (SRF_TYPE == 1)
541549
ICEFRCT_M = 0.00
542550
if ( TEMP <= lT_ICE_ALL ) then
543551
ICEFRCT_M = 1.000
@@ -547,8 +555,8 @@ function ICE_FRACTION_SC (TEMP,CNV_FRACTION,SRF_TYPE) RESULT(ICEFRCT)
547555
ICEFRCT_M = MIN(ICEFRCT_M,1.00)
548556
ICEFRCT_M = MAX(ICEFRCT_M,0.00)
549557
ICEFRCT_M = ICEFRCT_M**lICEFRPWR
550-
else
551-
! Over Oceans
558+
case (SRF_TYPE_OCEAN)
559+
! Over Oceans (SRF_TYPE == 0)
552560
ICEFRCT_M = 0.00
553561
if ( TEMP <= oT_ICE_ALL ) then
554562
ICEFRCT_M = 1.000
@@ -558,7 +566,11 @@ function ICE_FRACTION_SC (TEMP,CNV_FRACTION,SRF_TYPE) RESULT(ICEFRCT)
558566
ICEFRCT_M = MIN(ICEFRCT_M,1.00)
559567
ICEFRCT_M = MAX(ICEFRCT_M,0.00)
560568
ICEFRCT_M = ICEFRCT_M**oICEFRPWR
561-
endif
569+
case default
570+
! You should not be here
571+
print *, 'ICE_FRACTION_SC: Unknown SRF_TYPE = ',SRF_TYPE
572+
error stop
573+
end select
562574
! Combine the Convective and MODIS functions
563575
ICEFRCT = ICEFRCT_M*(1.0-CNV_FRACTION) + ICEFRCT_C*(CNV_FRACTION)
564576
#endif

0 commit comments

Comments
 (0)