*IF DEF,A03_5A SFREST5A.2
C *****************************COPYRIGHT****************************** SFREST5A.3
C (c) CROWN COPYRIGHT 1996, METEOROLOGICAL OFFICE, All Rights Reserved. SFREST5A.4
C SFREST5A.5
C Use, duplication or disclosure of this code is subject to the SFREST5A.6
C restrictions as set forth in the contract. SFREST5A.7
C SFREST5A.8
C Meteorological Office SFREST5A.9
C London Road SFREST5A.10
C BRACKNELL SFREST5A.11
C Berkshire UK SFREST5A.12
C RG12 2SZ SFREST5A.13
C SFREST5A.14
C If no contract has been raised with this copy of the code, the use, SFREST5A.15
C duplication or disclosure of it is strictly prohibited. Permission SFREST5A.16
C to do so must first be obtained in writing from the Head of Numerical SFREST5A.17
C Modelling at the above address. SFREST5A.18
C ******************************COPYRIGHT****************************** SFREST5A.19
C*LL SUBROUTINE SF_RESIST---------------------------------------------- SFREST5A.20
CLL SFREST5A.21
CLL Purpose: Calculate bulk Richardson number for surface layer SFREST5A.22
CLL SFREST5A.23
C Modification History: AJC1F405.60
C Version Date Change AJC1F405.61
C 4.5 Jul. 98 Kill the IBM specific lines (JCThil) AJC1F405.62
CLL SFREST5A.24
CLLEND----------------------------------------------------------------- SFREST5A.25
C* SFREST5A.26
C*L Arguaments ------------------------------------------------------- SFREST5A.27
SUBROUTINE SF_RESIST ( 6,6SFREST5A.28
& P_POINTS,LAND_PTS,LAND_MASK,INT_STOM, SFREST5A.29
& P1,LAND_INDEX, SFREST5A.31
& ROOTD,SMVCCL,SMVCWT,SMC,V_SOIL,VFRAC,CANOPY,CATCH,DQ, SFREST5A.33
& EPDT,LYING_SNOW,GC,RESIST,VSHR,CH,PSIS,FRACA, SFREST5A.34
& RESFS,F_SE,RESFT,LTIMER SFREST5A.35
& ) SFREST5A.36
IMPLICIT NONE SFREST5A.37
SFREST5A.38
SFREST5A.39
INTEGER ! Variables defining grid. SFREST5A.40
& P_POINTS ! IN Number of P-grid points to be processed SFREST5A.41
&,LAND_PTS ! IN Number of land points to be processed. SFREST5A.42
SFREST5A.43
&,LAND_INDEX(LAND_PTS)! IN Index for compressed land point array; SFREST5A.45
C ! i'th element holds position in the FULL SFREST5A.46
C ! field of the ith land pt to be SFREST5A.47
C ! processed SFREST5A.48
&,P1 ! IN First P-point to be processed. SFREST5A.49
SFREST5A.51
LOGICAL SFREST5A.52
& INT_STOM ! IN T for interactive stomatal resistance. SFREST5A.53
SFREST5A.54
REAL SFREST5A.55
& CANOPY(LAND_PTS) ! IN Surface water (kg per sq metre). F642. SFREST5A.56
&,CATCH(LAND_PTS) ! IN Surface capacity (max. surface water) SFREST5A.57
C ! (kg per sq metre). F6416. SFREST5A.58
&,CH(P_POINTS) ! IN Transport coefficient for heat and SFREST5A.59
C ! moisture transport SFREST5A.60
&,DQ(P_POINTS) ! IN Sp humidity difference between surface SFREST5A.61
C ! and lowest atmospheric level (Q1 - Q*). SFREST5A.62
C ! Holds value over sea-ice where SFREST5A.63
C ! ICE_FRACT>0 i.e. Leads contribution not SFREST5A.64
C ! included. SFREST5A.65
&,EPDT(P_POINTS) ! IN "Potential" Evaporation * Timestep. SFREST5A.66
C ! Dummy variable for first call to routine SFREST5A.67
&,LYING_SNOW(P_POINTS)! IN Lying snow amount (kg per sq metre). SFREST5A.68
&,GC(LAND_PTS) ! IN Interactive canopy conductance SFREST5A.69
C ! to evaporation (m/s) SFREST5A.70
&,RESIST(LAND_PTS) ! IN Fixed "stomatal" resistance SFREST5A.71
C ! to evaporation (s/m) SFREST5A.72
&,ROOTD(LAND_PTS) ! IN "Root depth" (metres). F6412. SFREST5A.73
&,SMC(LAND_PTS) ! IN Soil moisture content (kg per sq m). SFREST5A.74
C ! F621. SFREST5A.75
&,SMVCCL(LAND_PTS) ! IN Critical volumetric SMC (cubic metres SFREST5A.76
C ! per cubic metre of soil). F6232. SFREST5A.77
&,SMVCWT(LAND_PTS) ! IN Volumetric wilting point (cubic m of SFREST5A.78
C ! water per cubic m of soil). F6231. SFREST5A.79
&,V_SOIL(LAND_PTS) ! IN Volumetric soil moisture concentration SFREST5A.80
C ! in the top soil layer (m3 H2O/m3 soil). SFREST5A.81
&,VFRAC(LAND_PTS) ! IN Vegetated fraction. SFREST5A.82
&,VSHR(P_POINTS) ! IN Magnitude of surface-to-lowest-lev. wind SFREST5A.83
C SFREST5A.84
C Note: (SMVCCL - SMVCWT) is the critical volumetric available soil SFREST5A.85
LOGICAL SFREST5A.86
& LAND_MASK(P_POINTS) ! IN .TRUE. for land; .FALSE. elsewhere. F60. SFREST5A.87
C SFREST5A.88
C Output variables. SFREST5A.89
C SFREST5A.90
REAL SFREST5A.91
& FRACA(P_POINTS) ! OUT Fraction of surface moisture flux with SFREST5A.92
C ! only aerodynamic resistance. SFREST5A.93
&,PSIS(P_POINTS) ! OUT Soil moisture availability factor. SFREST5A.94
&,RESFS(P_POINTS) ! OUT Combined soil, stomatal and aerodynamic SFREST5A.95
C ! resistance factor = PSIS/(1+RS/RA) for SFREST5A.96
C ! fraction (1-FRACA). SFREST5A.97
&,F_SE(P_POINTS) ! OUT Fraction of the evapotranspiration SFREST5A.98
C ! which is bare soil evaporation. SFREST5A.99
&,RESFT(P_POINTS) ! OUT Total resistance factor SFREST5A.100
C ! FRACA+(1-FRACA)*RESFS. SFREST5A.101
SFREST5A.102
LOGICAL LTIMER ! Logical switch for TIMER diags SFREST5A.103
C Define local storage. SFREST5A.104
C SFREST5A.105
C (a) Workspace. SFREST5A.106
C SFREST5A.107
*CALL C_DENSTY
SFREST5A.108
*CALL SOIL_THICK
SFREST5A.109
*CALL C_MDI
SFREST5A.110
SFREST5A.111
SFREST5A.112
C*L Workspace -------------------------------------------------------- SFREST5A.113
INTEGER SFREST5A.114
& I ! Loop counter (horizontal field index). SFREST5A.115
&,J ! Loop counter (land field index). SFREST5A.116
&,L ! Loop counter (land field index). SFREST5A.117
REAL SFREST5A.118
& FSMC ! Soil moisture factor for bare soil evaporation. SFREST5A.119
&,SMCRIT ! "Critical" available SMC in kg per sq m. SFREST5A.120
SFREST5A.121
IF (LTIMER) THEN SFREST5A.122
CALL TIMER
('SFRESIST',3) SFREST5A.123
ENDIF SFREST5A.124
C----------------------------------------------------------------------- SFREST5A.125
CL 6 Evaporation over land surfaces without snow is limited by SFREST5A.126
CL soil moisture availability and stomatal resistance. SFREST5A.127
C Set FRACA (= fA in the documentation) according to P243.68, SFREST5A.128
C PSIS according to P243.65, and RESFS (= fS) according to P243.75 SFREST5A.129
C and P243.61, using neutral-stability value of CH (as explained SFREST5A.130
C in section (v) of the P243 documentation). SFREST5A.131
C----------------------------------------------------------------------- SFREST5A.132
DO I=1,P_POINTS SFREST5A.133
C- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - SFREST5A.134
CL 6.1 Set parameters (workspace) to values relevant for non-land SFREST5A.135
CL points. Only aerodynamic resistance applies. SFREST5A.136
C- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - SFREST5A.137
FRACA(I) = 1.0 SFREST5A.138
PSIS(I) = 0.0 SFREST5A.139
RESFT(I) = 1.0 SFREST5A.140
RESFS(I) = 0.0 SFREST5A.141
ENDDO SFREST5A.143
C- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - SFREST5A.145
CL 6.2 Over-write workspace for other points. SFREST5A.146
C- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - SFREST5A.147
CDIR$ IVDEP SFREST5A.152
! Fujitsu vectorization directive GRB0F405.503
!OCL NOVREC GRB0F405.504
DO L=1,LAND_PTS SFREST5A.153
I = LAND_INDEX(L) - (P1-1) SFREST5A.154
SFREST5A.156
!----------------------------------------------------------------------- SFREST5A.157
! If the interactive stomatal resistance is being used, calculate the SFREST5A.158
! soil water factor for bare soil evaporation SFREST5A.159
!----------------------------------------------------------------------- SFREST5A.160
IF (INT_STOM) THEN SFREST5A.161
SFREST5A.162
IF (V_SOIL(L) .GT. SMVCCL(L)) THEN SFREST5A.163
FSMC = 1.0 SFREST5A.164
ELSEIF (V_SOIL(L) .LE. SMVCWT(L)) THEN SFREST5A.165
FSMC = 0.0 SFREST5A.166
ELSE SFREST5A.167
FSMC = (V_SOIL(L) - SMVCWT(L)) SFREST5A.168
& / (SMVCCL(L) - SMVCWT(L)) SFREST5A.169
ENDIF SFREST5A.170
SFREST5A.171
ELSE SFREST5A.172
C SFREST5A.173
C Calculate the soil moisture availability factor, PSIS. SFREST5A.174
C SFREST5A.175
SMCRIT = RHO_WATER * ROOTD(L) * (SMVCCL(L)-SMVCWT(L)) SFREST5A.176
C ... P243.66 SFREST5A.177
C SFREST5A.178
PSIS(I) = 0.0 SFREST5A.179
IF (SMC(L).GE.SMCRIT .AND. SMCRIT.GT.0.0) SFREST5A.180
& PSIS(I) = 1.0 SFREST5A.181
IF (SMC(L).LT.SMCRIT .AND. SMC(L).GT.0.0) SFREST5A.182
& PSIS(I) = SMC(L)/SMCRIT SFREST5A.183
SFREST5A.184
ENDIF SFREST5A.185
C SFREST5A.186
C For snow-covered land or land points with negative moisture flux SFREST5A.187
C set the fraction of the flux with only aerodynamic resistance to 1 SFREST5A.188
C (no surface/stomatal resistance to evap from snow or condensation). SFREST5A.189
C SFREST5A.190
FRACA(I) = 1.0 SFREST5A.191
C SFREST5A.192
C When there is positive moisture flux from snow-free land, calculate SFREST5A.193
C the fraction of the flux from the "canopy". SFREST5A.194
C SFREST5A.195
IF (DQ(I).LT.0.0 .AND. LYING_SNOW(I).LE.0.0) FRACA(I) = 0.0 SFREST5A.196
IF (DQ(I).LT.0.0.AND.LYING_SNOW(I).LE.0.0.AND.CATCH(L).GT.0.0) SFREST5A.197
& FRACA(I) = CANOPY(L)/(EPDT(I) + CATCH(L)) SFREST5A.198
SFREST5A.199
SFREST5A.200
!----------------------------------------------------------------------- SFREST5A.201
! If the interactive stomatal resistance is being used calculate SFREST5A.202
! separate resistance factors for bare soil evaporation and SFREST5A.203
! transpiration. Assume a surface resistance of 100 s/m for bare soil. SFREST5A.204
!----------------------------------------------------------------------- SFREST5A.205
IF (INT_STOM) THEN ! Interactive Canopy Resistance SFREST5A.206
SFREST5A.207
!----------------------------------------------------------------------- SFREST5A.208
! Set resistance and moisture availability factors to zero for land ice SFREST5A.209
!----------------------------------------------------------------------- SFREST5A.210
IF (GC(L).EQ.RMDI) THEN ! land-ice points SFREST5A.211
SFREST5A.212
PSIS(I) = 0.0 SFREST5A.213
RESFS(I) = 0.0 SFREST5A.214
F_SE(I) = 0.0 SFREST5A.215
SFREST5A.216
ELSE SFREST5A.217
SFREST5A.218
!----------------------------------------------------------------------- SFREST5A.219
! If the interactive stomatal resistance is being used set the moisture SFREST5A.220
! availability factor to one, since moisture stress is already taken SFREST5A.221
! account of in SF_STOM (Peter Cox 21/11/95). SFREST5A.222
!----------------------------------------------------------------------- SFREST5A.223
SFREST5A.224
PSIS(I) = 1.0 SFREST5A.225
RESFS(I) = VFRAC(L) * GC(L) / ( GC(L) + CH(I)*VSHR(I)) SFREST5A.226
& + (1 - VFRAC(L)) * FSMC / (1.0 + CH(I)*VSHR(I)*100.0) SFREST5A.227
SFREST5A.228
F_SE(I) = 0.0 SFREST5A.229
SFREST5A.230
IF (RESFS(I) .GT. 0.0) THEN SFREST5A.231
F_SE(I) = (1 - VFRAC(L)) * FSMC SFREST5A.232
& / (RESFS(I)*(1.0 + CH(I)*VSHR(I)*100.0)) SFREST5A.233
ENDIF SFREST5A.234
SFREST5A.235
ENDIF SFREST5A.236
SFREST5A.237
ELSE SFREST5A.238
SFREST5A.239
RESFS(I) = PSIS(I) / ( 1.0 + CH(I)*VSHR(I)*RESIST(L)) SFREST5A.240
F_SE(I) = 0.0 SFREST5A.241
SFREST5A.242
ENDIF SFREST5A.243
SFREST5A.244
RESFT(I) = FRACA(I) + (1.0 - FRACA(I)) * RESFS(I) SFREST5A.245
ENDDO ! Evaporation over land points only, section 3.4.2 SFREST5A.250
SFREST5A.252
IF (LTIMER) THEN SFREST5A.253
CALL TIMER
('SFRESIST',4) SFREST5A.254
ENDIF SFREST5A.255
RETURN SFREST5A.256
END SFREST5A.257
*ENDIF SFREST5A.258