diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_MoistGridComp.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_MoistGridComp.F90 index a2872de53..09171b586 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_MoistGridComp.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_MoistGridComp.F90 @@ -5321,12 +5321,17 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) call MAPL_GetPointer(IMPORT, FRACI, 'FRACI' , RC=STATUS); VERIFY_(STATUS) call MAPL_GetPointer(IMPORT, SNOMAS, 'SNOMAS' , RC=STATUS); VERIFY_(STATUS) call MAPL_GetPointer(EXPORT, SRF_TYPE, 'SRF_TYPE' , ALLOC=.TRUE., RC=STATUS); VERIFY_(STATUS) - SRF_TYPE = 0.0 ! Ocean - where (FRLAND > 0.1) - SRF_TYPE = 1.0 ! Land - end where - where ( (SNOMAS > 0.1) .OR. (FRLANDICE > 0.5) .OR. (FRACI > 0.5) ) - SRF_TYPE = 2.0 ! Ice/Snow + + where ( (FRLANDICE > 0.5) .OR. (FRACI > 0.5) ) + SRF_TYPE = 3.0 ! Ice + elsewhere ( SNOMAS > 0.1 .AND. SNOMAS /= MAPL_UNDEF ) + ! NOTE: SNOMAS has UNDEFs so we need to make sure we don't + ! allow that to infect this comparison + SRF_TYPE = 2.0 ! Snow + elsewhere (FRLAND > 0.1) + SRF_TYPE = 1.0 ! Land + elsewhere + SRF_TYPE = 0.0 ! Ocean end where ! Allocatables diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/Process_Library.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/Process_Library.F90 index 14859f776..9ec85d331 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/Process_Library.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/Process_Library.F90 @@ -37,7 +37,7 @@ module GEOSmoist_Process_Library real, parameter :: aT_ICE_ALL = 252.16 real, parameter :: aT_ICE_MAX = 268.16 real, parameter :: aICEFRPWR = 2.0 - ! Over snow/ice SRF_TYPE = 2 + ! Over snow SRF_TYPE = 2 and over ice SRF_TYPE = 3 real, parameter :: iT_ICE_ALL = 236.16 real, parameter :: iT_ICE_MAX = 261.16 real, parameter :: iICEFRPWR = 6.0 @@ -403,8 +403,8 @@ function ICE_FRACTION_SC (TEMP,CNV_FRACTION,SRF_TYPE) RESULT(ICEFRCT) ICEFRCT_C = MAX(ICEFRCT_C,0.00) ICEFRCT_C = ICEFRCT_C**aICEFRPWR ! Sigmoidal functions like figure 6b/6c of Hu et al 2010, doi:10.1029/2009JD012384 - if (SRF_TYPE == 2.0) then - ! Over snow/ice + if (SRF_TYPE >= 2.0) then + ! Over snow (SRF_TYPE == 2.0) and ice (SRF_TYPE == 3.0) if (ICE_RADII_PARAM == 1) then ! Jason formula ICEFRCT_M = 0.00 @@ -1708,7 +1708,7 @@ subroutine partition_dblgss( fQi, & ! IN ! corrtest2 = max(-1.0,min(1.0,wqtntrgs/(sqrtw2*sqrtqt))) corrtest2 = max(-1.0,min(1.0,0.5*wqwsec/(sqrtw2*sqrtqt))) - + qw1_1 = - corrtest2 / w1_2 ! A.7 qw1_2 = - corrtest2 / w1_1 ! A.8