*IF DEF,A03_5A SFRIB5A.2
C *****************************COPYRIGHT****************************** SFRIB5A.3
C (c) CROWN COPYRIGHT 1996, METEOROLOGICAL OFFICE, All Rights Reserved. SFRIB5A.4
C SFRIB5A.5
C Use, duplication or disclosure of this code is subject to the SFRIB5A.6
C restrictions as set forth in the contract. SFRIB5A.7
C SFRIB5A.8
C Meteorological Office SFRIB5A.9
C London Road SFRIB5A.10
C BRACKNELL SFRIB5A.11
C Berkshire UK SFRIB5A.12
C RG12 2SZ SFRIB5A.13
C SFRIB5A.14
C If no contract has been raised with this copy of the code, the use, SFRIB5A.15
C duplication or disclosure of it is strictly prohibited. Permission SFRIB5A.16
C to do so must first be obtained in writing from the Head of Numerical SFRIB5A.17
C Modelling at the above address. SFRIB5A.18
C ******************************COPYRIGHT****************************** SFRIB5A.19
C*LL SUBROUTINE SF_RIB------------------------------------------------ SFRIB5A.20
CLL SFRIB5A.21
CLL Purpose: Calculate bulk Richardson number for surface layer SFRIB5A.22
CLL SFRIB5A.23
CLL SFRIB5A.24
CLLEND----------------------------------------------------------------- SFRIB5A.25
C* Vn GSS2F402.307
CLL 4.2 Oct. 96 T3E migration - *DEF CRAY removed GSS2F402.308
CLL S J Swarbrick GSS2F402.309
CLL 4.4 08/09/97 L_BL_LSPICE specifies mixed phase precipitation ADM3F404.116
CLL scheme. D.Wilson ADM3F404.117
C 4.5 Jul. 98 Kill the IBM specific lines (JCThil) AJC1F405.56
C*L Arguaments ------------------------------------------------------- SFRIB5A.27
SUBROUTINE SF_RIB ( 2,6SFRIB5A.28
& P_POINTS,LAND_PTS,LAND_MASK,INT_STOM, SFRIB5A.29
& GATHER,P1,LAND_INDEX, SFRIB5A.31
& NSICE,SICE_INDEX,ICE_FRACT, SFRIB5A.33
& PSTAR,AK_1,BK_1,Q_1,QW_1,QCL_1,QCF_1, SFRIB5A.34
& CF_1,T_1,TL_1,QSL,QSTAR,QSTAR_LEAD, SFRIB5A.35
& QS1,TSTAR_NL,Z1,Z0M_EFF,Z0M,Z0H,Z0HS,Z0MSEA, SFRIB5A.36
& WIND_PROFILE_FACTOR,U_1_P,U_0_P,V_1_P,V_0_P, SFRIB5A.37
& ROOTD,SMVCCL,SMVCWT,SMC,V_SOIL,VFRAC,CANOPY,CATCH, SFRIB5A.38
& LYING_SNOW,GC,RESIST,RIB,RIB_LEAD,PSIS,VSHR,ALPHA1, SFRIB5A.39
& BT_1,BQ_1,BF_1,FRACA,RESFS,DQ,DQ_LEAD,DTEMP, ADM3F404.118
& DTEMP_LEAD,L_BL_LSPICE, ADM3F404.119
& LTIMER) SFRIB5A.41
IMPLICIT NONE SFRIB5A.42
SFRIB5A.43
SFRIB5A.44
INTEGER ! Variables defining grid. SFRIB5A.45
& P_POINTS ! IN Number of P-grid points to be processed SFRIB5A.46
&,LAND_PTS ! IN Number of land points to be processed. SFRIB5A.47
&,NSICE ! IN Number of sea-ice points. SFRIB5A.48
&,SICE_INDEX(P_POINTS) ! IN Index vector for gather to sea-ice SFRIB5A.49
C ! points SFRIB5A.50
SFRIB5A.51
&,LAND_INDEX(LAND_PTS)! IN Index for compressed land point array; SFRIB5A.53
C ! i'th element holds position in the FULL SFRIB5A.54
C ! field of the ith land pt to be SFRIB5A.55
C ! processed SFRIB5A.56
&,P1 ! IN First P-point to be processed. SFRIB5A.57
LOGICAL SFRIB5A.58
& GATHER ! IN If true then leads variables are comp- SFRIB5A.59
C ! ressed for sea-ice calculations. This SFRIB5A.60
C ! saves duplicating calculations if there SFRIB5A.61
C ! are a relatively few of sea-ice points. SFRIB5A.62
C ! Set to false for a limited area run SFRIB5A.63
C ! with a high proportion of sea-ice. SFRIB5A.64
LOGICAL SFRIB5A.66
& INT_STOM ! IN T for interactive stomatal resistance. SFRIB5A.67
&,L_BL_LSPICE ! IN ADM3F404.120
! TRUE Use scientific treatment of mixed ADM3F404.121
! phase precip scheme. ADM3F404.122
! FALSE Do not use mixed phase precip ADM3F404.123
! considerations ADM3F404.124
C SFRIB5A.68
REAL SFRIB5A.69
& AK_1 ! IN Hybrid "A" for lowest model layer. SFRIB5A.70
&,BK_1 ! IN Hybrid "B" for lowest model layer. SFRIB5A.71
&,CANOPY(LAND_PTS) ! IN Surface water (kg per sq metre). F642. SFRIB5A.72
&,CATCH(LAND_PTS) ! IN Surface capacity (max. surface water) SFRIB5A.73
C ! (kg per sq metre). F6416. SFRIB5A.74
&,CF_1(P_POINTS) ! IN Cloud fraction for lowest atmospheric SFRIB5A.75
C ! layer (decimal fraction). SFRIB5A.76
&,ICE_FRACT(P_POINTS) ! IN Fraction of gridbox which is sea-ice. SFRIB5A.77
&,LYING_SNOW(P_POINTS)! IN Lying snow amount (kg per sq metre). SFRIB5A.78
&,PSTAR(P_POINTS) ! IN Surface pressure (Pascals). SFRIB5A.79
&,Q_1(P_POINTS) ! IN Specific humidity for lowest SFRIB5A.80
C ! atmospheric layer (kg water per kg air) SFRIB5A.81
&,QCF_1(P_POINTS) ! IN Cloud ice for lowest atmospheric layer SFRIB5A.82
C ! (kg water per kg air). SFRIB5A.83
&,QCL_1(P_POINTS) ! IN Cloud liquid water for lowest atm layer SFRIB5A.84
C ! (kg water per kg air). SFRIB5A.85
&,QS1(P_POINTS) ! IN Sat. specific humidity qsat(TL_1,PSTAR) SFRIB5A.86
&,QSL(P_POINTS) ! IN Saturated sp humidity at liquid/ice SFRIB5A.87
C ! temperature and pressure of lowest SFRIB5A.88
C ! atmospheric level. SFRIB5A.89
&,QSTAR(P_POINTS) ! IN Surface saturated sp humidity. Holds SFRIB5A.90
C ! value over sea-ice where ICE_FRACT > 0. SFRIB5A.91
C ! i.e. Leads contribution not included. SFRIB5A.92
&,QSTAR_LEAD(P_POINTS) ! IN QSTAR for sea-ice leads. SFRIB5A.93
C ! Missing data indicator over non sea-ice. SFRIB5A.94
&,GC(LAND_PTS) ! IN Interactive canopy conductance SFRIB5A.95
C ! to evaporation (m/s) SFRIB5A.96
&,RESIST(LAND_PTS) ! IN Fixed "stomatal" resistance SFRIB5A.97
C ! to evaporation (s/m) SFRIB5A.98
&,ROOTD(LAND_PTS) ! IN "Root depth" (metres). F6412. SFRIB5A.99
&,SMC(LAND_PTS) ! IN Soil moisture content (kg per sq m). SFRIB5A.100
C ! F621. SFRIB5A.101
&,SMVCCL(LAND_PTS) ! IN Critical volumetric SMC (cubic metres SFRIB5A.102
C ! per cubic metre of soil). F6232. SFRIB5A.103
&,SMVCWT(LAND_PTS) ! IN Volumetric wilting point (cubic m of SFRIB5A.104
C ! water per cubic m of soil). F6231. SFRIB5A.105
C SFRIB5A.106
C Note: (SMVCCL - SMVCWT) is the critical volumetric available soil SFRIB5A.107
C moisture content. ~~~~~~~~~ SFRIB5A.108
C SFRIB5A.109
&,T_1(P_POINTS) ! IN Temperature for lowest atmospheric layer SFRIB5A.110
C ! (Kelvin). SFRIB5A.111
&,TL_1(P_POINTS) ! IN Liquid/frozen water temperature for SFRIB5A.112
C ! lowest atmospheric layer (K). SFRIB5A.113
&,TSTAR_NL(P_POINTS) ! IN TSTAR No Leads: surface temperature SFRIB5A.114
C ! over sea-ice fraction of gridsquare. SFRIB5A.115
C ! =TSTAR over non sea-ice points. SFRIB5A.116
&,U_1_P(P_POINTS) ! IN West-to-east wind component for lowest SFRIB5A.117
C ! atmospheric layer (m/s). On P grid. SFRIB5A.118
&,V_1_P(P_POINTS) ! IN South-to-north wind component for lowest SFRIB5A.122
C ! atmospheric layer (m/s). On P grid. SFRIB5A.123
&,U_0_P(P_POINTS) ! IN West-to-east component of ocean surface SFRIB5A.127
C ! current (m/s; zero over land if U_0 OK). SFRIB5A.128
C ! P grid. F615. SFRIB5A.129
&,V_0_P(P_POINTS) ! IN South-to-north component of ocean surface SFRIB5A.130
C ! current (m/s; zero over land if V_0 OK). SFRIB5A.131
C ! P grid. F616. SFRIB5A.132
&,V_SOIL(LAND_PTS) ! IN Volumetric soil moisture concentration SFRIB5A.133
C ! in the top soil layer (m3 H2O/m3 soil). SFRIB5A.134
&,VFRAC(LAND_PTS) ! IN Vegetated fraction. SFRIB5A.135
&,WIND_PROFILE_FACTOR(P_POINTS) SFRIB5A.136
C ! IN For transforming effective surface transf SFRIB5A.137
C ! coefficients to those excluding form drag SFRIB5A.138
+,Z0H(P_POINTS) ! IN Roughness length for heat and moisture m SFRIB5A.139
+,Z0HS(P_POINTS) ! IN Roughness length for heat and moisture SFRIB5A.140
C ! transport over sea. SFRIB5A.141
&,Z0M(P_POINTS) ! IN Roughness length for heat and moisture m SFRIB5A.142
&,Z0MSEA(P_POINTS) ! IN Sea-surface roughness length for SFRIB5A.143
C ! momentum (m). F617. SFRIB5A.144
&,Z0M_EFF(P_POINTS) ! IN Effective roughness length for momentum SFRIB5A.145
&,Z1(P_POINTS) ! IN Height of lowest atmospheric level (m). SFRIB5A.146
LOGICAL SFRIB5A.147
& LAND_MASK(P_POINTS) ! IN .TRUE. for land; .FALSE. elsewhere. F60. SFRIB5A.148
C SFRIB5A.149
C Output variables. SFRIB5A.150
C SFRIB5A.151
REAL SFRIB5A.152
& ALPHA1(P_POINTS) ! OUT Gradient of saturated specific humidity SFRIB5A.153
C ! with respect to temperature between the SFRIB5A.154
C ! bottom model layer and the surface SFRIB5A.155
&,BQ_1(P_POINTS) ! OUT A buoyancy parameter for lowest atm SFRIB5A.156
C ! level. ("beta-q twiddle"). SFRIB5A.157
&,BF_1(P_POINTS) ADM3F404.125
! OUT A buoyancy parameter for lowest atm level. ADM3F404.126
! ("beta-q twiddle"). ADM3F404.127
&,BT_1(P_POINTS) ! OUT A buoyancy parameter for lowest atm SFRIB5A.158
C ! level. ("beta-T twiddle"). SFRIB5A.159
&,DQ(P_POINTS) ! OUT Sp humidity difference between surface SFRIB5A.160
C ! and lowest atmospheric level (Q1 - Q*). SFRIB5A.161
C ! Holds value over sea-ice where SFRIB5A.162
C ! ICE_FRACT>0 i.e. Leads contribution not SFRIB5A.163
C ! included. SFRIB5A.164
&,DQ_LEAD(P_POINTS) ! OUT DQ for leads fraction of gridsquare. SFRIB5A.165
&,DTEMP(P_POINTS) ! OUT Liquid/ice static energy difference SFRIB5A.166
C ! between surface and lowest atmospheric SFRIB5A.167
C ! level, divided by CP (a modified SFRIB5A.168
C ! temperature difference). SFRIB5A.169
C ! Holds value over sea-ice where SFRIB5A.170
C ! ICE_FRACT>0 i.e. Leads contribution not SFRIB5A.171
C ! included. SFRIB5A.172
&,DTEMP_LEAD(P_POINTS) ! OUT DTEMP for leads fraction of SFRIB5A.173
C ! gridsquare. SFRIB5A.174
&,FRACA(P_POINTS) ! OUT Fraction of surface moisture flux with SFRIB5A.175
C ! only aerodynamic resistance. SFRIB5A.176
&,PSIS(P_POINTS) ! Soil moisture availability factor. SFRIB5A.177
&,QW_1(P_POINTS) ! OUT Total water content of lowest SFRIB5A.178
C ! atmospheric layer (kg per kg air). SFRIB5A.179
&,RESFS(P_POINTS) ! OUT Combined soil, stomatal and aerodynamic SFRIB5A.180
C ! resistance factor = PSIS/(1+RS/RA) for SFRIB5A.181
C ! fraction (1-FRACA) SFRIB5A.182
&,RESFT(P_POINTS) ! OUT Total resistance factor SFRIB5A.183
C ! FRACA+(1-FRACA)*RESFS. SFRIB5A.184
&,RIB(P_POINTS) ! OUT Bulk Richardson number for lowest layer SFRIB5A.185
&,RIB_LEAD(P_POINTS) ! OUT Bulk Richardson no. for sea-ice leads SFRIB5A.186
C ! at lowest layer. At non sea-ice points SFRIB5A.187
C ! holds RIB for FCDCH calculation, then SFRIB5A.188
C ! set to missing data indicator. SFRIB5A.189
&,VSHR(P_POINTS) ! OUT Magnitude of surface-to-lowest-lev. wind SFRIB5A.190
C SFRIB5A.191
LOGICAL LTIMER ! Logical switch for TIMER diags SFRIB5A.192
C* SFRIB5A.193
C*L Symbolic constants ----------------------------------------------- SFRIB5A.194
C SFRIB5A.195
SFRIB5A.196
*CALL C_MDI
SFRIB5A.197
*CALL C_0_DG_C
SFRIB5A.198
*CALL C_G
SFRIB5A.199
*CALL C_LHEAT
SFRIB5A.200
*CALL C_SOILH
SFRIB5A.201
*CALL C_R_CP
SFRIB5A.202
*CALL C_EPSLON
SFRIB5A.203
*CALL C_VKMAN
SFRIB5A.204
*CALL C_DENSTY
SFRIB5A.205
C SFRIB5A.206
C (3) Derived local parameters. SFRIB5A.207
C SFRIB5A.208
REAL ETAR,GRCP,LCRCP,LFRCP,LS,LSRCP SFRIB5A.209
PARAMETER ( SFRIB5A.210
& ETAR=1./(1.-EPSILON) ! Used in calc of buoyancy parameter BETAC SFRIB5A.211
&,GRCP=G/CP ! Used in calc of dT across surface layer. SFRIB5A.212
&,LCRCP=LC/CP ! Evaporation-to-dT conversion factor. SFRIB5A.213
&,LFRCP=LF/CP ! Freezing-to-dT conversion factor. SFRIB5A.214
&,LS=LF+LC ! Latent heat of sublimation. SFRIB5A.215
&,LSRCP=LS/CP ! Sublimation-to-dT conversion factor. SFRIB5A.216
& ) SFRIB5A.217
SFRIB5A.218
C Define local storage. SFRIB5A.219
C SFRIB5A.220
C (a) Workspace. SFRIB5A.221
C SFRIB5A.222
C*L Workspace -------------------------------------------------------- SFRIB5A.223
INTEGER SFRIB5A.224
& I ! Loop counter (horizontal field index). SFRIB5A.225
&,L ! Loop counter (land field index). SFRIB5A.226
&,SI ! Loop counter (sea-ice field index). SFRIB5A.227
REAL SFRIB5A.228
& AL ! Temporary in calculation of buoyancy parameters. SFRIB5A.229
&,ALPHAL ! Temporary in calculation of buoyancy parameters. SFRIB5A.230
&,BETAC ! Temporary in calculation of buoyancy parameters. SFRIB5A.231
&,BETAQ ! Temporary in calculation of buoyancy parameters. SFRIB5A.232
&,BETAT ! Temporary in calculation of buoyancy parameters. SFRIB5A.233
&,D_T ! Temporary in calculation of alpha1 SFRIB5A.234
&,USHEAR ! U-component of surface-to-lowest-level wind shear. SFRIB5A.235
&,VSHEAR ! V-component of surface-to-lowest-level wind shear. SFRIB5A.236
&,VSHR2 ! Square of magnitude of surface-to-lowest-level SFRIB5A.237
C ! wind shear. SFRIB5A.238
&,ZETAM ! Temporary in calculation of CHN. SFRIB5A.239
&,ZETAH ! Temporary in calculation of CHN. SFRIB5A.240
SFRIB5A.241
REAL SFRIB5A.243
& CHN(P_POINTS) ! Neutral-stability value of CH, used as a firs SFRIB5A.244
C ! approximation to the "true" CH. SFRIB5A.245
&,EPDT(P_POINTS) ! "Potential" Evaporation * Timestep - dummy SFRIB5A.246
C ! variale = 0. SFRIB5A.247
&,F_SE(P_POINTS) ! Dummy variable - actual value set in SFRIB5A.248
C ! 2nd Call to SF_RESIST in SF_EXCH SFRIB5A.249
SFRIB5A.260
SFRIB5A.261
EXTERNAL SF_RESIST SFRIB5A.262
IF (LTIMER) THEN SFRIB5A.263
CALL TIMER
('SFRIB ',3) SFRIB5A.264
ENDIF SFRIB5A.265
SFRIB5A.266
C---------------------------------------------------------------------- SFRIB5A.267
CL 1 Calculate buoyancy parameters for the lowest model level. SFRIB5A.268
C---------------------------------------------------------------------- SFRIB5A.269
DO I=1,P_POINTS SFRIB5A.270
IF (L_BL_LSPICE) THEN ADM3F404.128
QW_1(I) = Q_1(I) + QCL_1(I) ! P243.10 ADM3F404.129
ELSE ADM3F404.130
QW_1(I) = Q_1(I) + QCL_1(I) + QCF_1(I) ! P243.10 ADM3F404.131
ENDIF ADM3F404.132
BETAT = 1.0 / T_1(I) ! P243.19 (1st eqn) SFRIB5A.272
BETAQ = C_VIRTUAL / SFRIB5A.273
& ( 1.0 + C_VIRTUAL*Q_1(I) - QCL_1(I) - QCF_1(I) ) SFRIB5A.274
C ... P243.19 (2nd eqn) SFRIB5A.275
C SFRIB5A.276
IF (TL_1(I).GT.TM.OR.L_BL_LSPICE) THEN ADM3F404.133
ALPHAL = (EPSILON * LC * QSL(I)) / (R * TL_1(I) * TL_1(I)) SFRIB5A.278
C ... P243.20 (Clausius-Clapeyron) SFRIB5A.279
C SFRIB5A.280
AL = 1.0 / (1.0 + LCRCP*ALPHAL) ! P243.21 SFRIB5A.281
BETAC = CF_1(I) * AL * (LCRCP*BETAT - ETAR*BETAQ) SFRIB5A.282
C ... P243.19 (3rd eqn) SFRIB5A.283
C SFRIB5A.284
ELSE SFRIB5A.285
ALPHAL = (EPSILON * LS * QSL(I)) / (R * TL_1(I) * TL_1(I)) SFRIB5A.286
C ... P243.20 (Clausius-Clapeyron) SFRIB5A.287
C SFRIB5A.288
AL = 1.0 / (1.0 + LSRCP*ALPHAL) ! P243.21 SFRIB5A.289
BETAC = CF_1(I) * AL * (LSRCP*BETAT - ETAR*BETAQ) SFRIB5A.290
C ... P243.19 (3rd eqn) SFRIB5A.291
C SFRIB5A.292
ENDIF SFRIB5A.293
BT_1(I) = BETAT - ALPHAL*BETAC ! P243.18 (1st eqn) SFRIB5A.294
BQ_1(I) = BETAQ + BETAC ! P243.18 (2nd eqn) SFRIB5A.295
BF_1(I) = BETAQ *EPSILON*ETAR ! P243.18 (2nd eqn) ADM3F404.134
C SFRIB5A.296
C SFRIB5A.297
C*********************************************************************** SFRIB5A.298
C 2. Calculate ALPHA1 {qsat(T*,P*) -qsat(TL1,P*)}/ SFRIB5A.299
C {T*-TL1} for land and sea-ice points only - SFRIB5A.300
C set to zero over sea points SFRIB5A.301
C*********************************************************************** SFRIB5A.302
C SFRIB5A.303
D_T = TSTAR_NL(I)-TL_1(I) SFRIB5A.304
IF (D_T .GT. 0.05 .OR. D_T .LT. -0.05) THEN SFRIB5A.305
ALPHA1(I) = (QSTAR(I) - QS1(I)) / D_T SFRIB5A.306
ELSE IF (TL_1(I).GT.TM) THEN SFRIB5A.307
ALPHA1(I) = (EPSILON*LC*QS1(I)*(1.0+C_VIRTUAL*QS1(I))) SFRIB5A.308
& / (R*TL_1(I)*TL_1(I)) SFRIB5A.309
ELSE SFRIB5A.310
ALPHA1(I) = (EPSILON*LS*QS1(I)*(1.0+C_VIRTUAL*QS1(I))) SFRIB5A.311
& / (R*TL_1(I)*TL_1(I)) SFRIB5A.312
ENDIF SFRIB5A.313
IF (.NOT.LAND_MASK(I).AND.ICE_FRACT(I).LE.0.0) SFRIB5A.314
& ALPHA1(I) = 0.0 ! Sea points SFRIB5A.315
ENDDO SFRIB5A.316
C----------------------------------------------------------------------- SFRIB5A.317
CL 3 Calculate temperature (strictly, liquid/ice static energy) and SFRIB5A.318
CL humidity jumps, and wind shear, across the surface layer. SFRIB5A.319
CL Separate values are required for the leads and ice fractions SFRIB5A.320
CL of sea-ice grid-squares. SFRIB5A.321
C----------------------------------------------------------------------- SFRIB5A.322
IF (GATHER) THEN SFRIB5A.324
DO I=1,P_POINTS SFRIB5A.325
DTEMP(I) = TL_1(I) - TSTAR_NL(I) SFRIB5A.326
& + GRCP * ( Z1(I) + Z0M_EFF(I) - Z0H(I) ) SFRIB5A.327
C ! P243.118 SFRIB5A.328
DQ(I) = QW_1(I) - QSTAR(I) ! P243.119 SFRIB5A.329
C SFRIB5A.330
DTEMP_LEAD(I) = 1.E30 ! Missing data indicato SFRIB5A.331
DQ_LEAD(I) = 1.E30 ! Missing data indicato SFRIB5A.332
USHEAR = U_1_P(I) - U_0_P(I) SFRIB5A.333
VSHEAR = V_1_P(I) - V_0_P(I) SFRIB5A.334
VSHR2 = MAX (1.0E-6 , USHEAR*USHEAR + VSHEAR*VSHEAR) SFRIB5A.335
VSHR(I) = SQRT(VSHR2) SFRIB5A.336
C ... P243.120 (previous 4 lines of code) SFRIB5A.337
ENDDO SFRIB5A.338
C----------------------------------------------------------------------- SFRIB5A.339
CL 4 Calculate leads values by looping round sea-ice points only. SFRIB5A.340
C Avoids an if test in the above loop, so code can run faster. SFRIB5A.341
C----------------------------------------------------------------------- SFRIB5A.342
CDIR$ IVDEP SFRIB5A.343
! Fujitsu vectorization directive GRB0F405.507
!OCL NOVREC GRB0F405.508
DO SI=1,NSICE SFRIB5A.344
I = SICE_INDEX(SI) SFRIB5A.345
DTEMP_LEAD(I) = TL_1(I)-TFS + GRCP*(Z1(I)+Z0MSEA(I)-Z0HS(I)) SFRIB5A.346
DQ_LEAD(I) = QW_1(I) - QSTAR_LEAD(SI) SFRIB5A.347
ENDDO SFRIB5A.348
ELSE SFRIB5A.349
DO I=1,P_POINTS SFRIB5A.351
USHEAR = U_1_P(I) - U_0_P(I) SFRIB5A.352
VSHEAR = V_1_P(I) - V_0_P(I) SFRIB5A.353
SFRIB5A.354
VSHR2 = MAX (1.0E-6 , USHEAR*USHEAR + VSHEAR*VSHEAR) SFRIB5A.355
VSHR(I) = SQRT(VSHR2) SFRIB5A.356
C ... P243.120 (previous 4 lines of code) SFRIB5A.357
DTEMP(I) = TL_1(I) - TSTAR_NL(I) SFRIB5A.358
& + GRCP * ( Z1(I) + Z0M_EFF(I) - Z0H(I) ) SFRIB5A.359
C ! P243.118 SFRIB5A.360
DQ(I) = QW_1(I) - QSTAR(I) ! P243.119 SFRIB5A.361
C SFRIB5A.362
IF ( ICE_FRACT(I).GT.0.0 .AND. .NOT.LAND_MASK(I) ) THEN SFRIB5A.363
DTEMP_LEAD(I) = TL_1(I)-TFS + GRCP*(Z1(I)+Z0MSEA(I)-Z0HS(I)) SFRIB5A.364
DQ_LEAD(I) = QW_1(I) - QSTAR_LEAD(I) SFRIB5A.365
ELSE SFRIB5A.366
DTEMP_LEAD(I) = RMDI ! Missing data indicator SFRIB5A.367
DQ_LEAD(I) = RMDI ! Missing data indicator SFRIB5A.368
ENDIF SFRIB5A.369
C SFRIB5A.370
ENDDO SFRIB5A.371
ENDIF ! End of IF (GATHER) THEN... ELSE... SFRIB5A.373
SFRIB5A.375
SFRIB5A.376
C----------------------------------------------------------------------- SFRIB5A.377
CL 6 Evaporation over land surfaces without snow is limited by SFRIB5A.378
CL soil moisture availability and stomatal resistance. SFRIB5A.379
C Set FRACA (= fA in the documentation) according to P243.68, SFRIB5A.380
C PSIS according to P243.65, and RESFS (= fS) according to P243.75 SFRIB5A.381
C and P243.61, using neutral-stability value of CH (as explained SFRIB5A.382
C in section (v) of the P243 documentation). SFRIB5A.383
C----------------------------------------------------------------------- SFRIB5A.384
SFRIB5A.385
DO I=1,P_POINTS SFRIB5A.386
SFRIB5A.387
C- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - SFRIB5A.388
CL 6.2.1 Calculate neutral stability value of CH (CHN), as an SFRIB5A.389
CL approximation to CH. SFRIB5A.390
C- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - SFRIB5A.391
ZETAM = LOG ( (Z1(I) + Z0M_EFF(I))/Z0M_EFF(I) ) SFRIB5A.392
ZETAH = LOG ( (Z1(I) + Z0M_EFF(I))/Z0H(I) ) SFRIB5A.393
CHN(I) = (VKMAN/ZETAH) * (VKMAN/ZETAM) * WIND_PROFILE_FACTOR(I) SFRIB5A.394
SFRIB5A.395
EPDT(I) = 0.0 !Dummy variable for SF_RESIST SFRIB5A.396
SFRIB5A.397
ENDDO ! Calc of CHN SFRIB5A.398
SFRIB5A.399
SFRIB5A.400
CALL SF_RESIST
( SFRIB5A.401
& P_POINTS,LAND_PTS,LAND_MASK,INT_STOM, SFRIB5A.402
& P1,LAND_INDEX, SFRIB5A.404
& ROOTD,SMVCCL,SMVCWT,SMC,V_SOIL,VFRAC,CANOPY,CATCH,DQ, SFRIB5A.406
& EPDT,LYING_SNOW,GC,RESIST,VSHR,CHN,PSIS,FRACA, SFRIB5A.407
& RESFS,F_SE,RESFT,LTIMER SFRIB5A.408
& ) SFRIB5A.409
SFRIB5A.410
SFRIB5A.411
C----------------------------------------------------------------------- SFRIB5A.412
CL 7 Calculate bulk Richardson numbers for the surface layer. SFRIB5A.413
CL At sea-ice points RIB contains value for ice only (not leads). SFRIB5A.414
CL Initialise RIB_LEAD to RIB so that it contains sensible SFRIB5A.415
CL values at non sea ice points for the FCDCH calculation below. SFRIB5A.416
C----------------------------------------------------------------------- SFRIB5A.417
IF (GATHER) THEN SFRIB5A.419
DO I=1,P_POINTS SFRIB5A.420
RIB(I) = G * Z1(I) * SFRIB5A.421
& ( BT_1(I)*DTEMP(I) + BQ_1(I)*RESFT(I)*DQ(I) ) / SFRIB5A.422
& ( VSHR(I)*VSHR(I) ) SFRIB5A.423
RIB_LEAD(I) = RIB(I) SFRIB5A.424
ENDDO SFRIB5A.425
C----------------------------------------------------------------------- SFRIB5A.426
CL 7.1 Calculate bulk Richardson no. for leads at sea-ice points SFRIB5A.427
CL only. SFRIB5A.428
C----------------------------------------------------------------------- SFRIB5A.429
CDIR$ IVDEP SFRIB5A.430
! Fujitsu vectorization directive GRB0F405.509
!OCL NOVREC GRB0F405.510
DO SI = 1,NSICE SFRIB5A.431
I = SICE_INDEX(SI) SFRIB5A.432
RIB_LEAD(I) = G * Z1(I) * SFRIB5A.433
& ( BT_1(I) * DTEMP_LEAD(I) + SFRIB5A.434
& BQ_1(I) * RESFT(I) * DQ_LEAD(I) ) / SFRIB5A.435
& ( VSHR(I) * VSHR(I) ) SFRIB5A.436
C ... P2430.2, for sea-ice leads. SFRIB5A.437
ENDDO SFRIB5A.438
ELSE SFRIB5A.439
DO I=1,P_POINTS SFRIB5A.441
RIB(I) = G * Z1(I) * SFRIB5A.442
& ( BT_1(I)*DTEMP(I) + BQ_1(I)*RESFT(I)*DQ(I) ) / SFRIB5A.443
& ( VSHR(I)*VSHR(I) ) SFRIB5A.444
C ... P243.43 (G times middle line is surface SFRIB5A.445
C layer buoyancy difference, P243.25) SFRIB5A.446
C SFRIB5A.447
RIB_LEAD(I) = RIB(I) SFRIB5A.448
IF ( ICE_FRACT(I).GT.0.0 .AND. .NOT.LAND_MASK(I) ) THEN SFRIB5A.449
RIB_LEAD(I) = G * Z1(I) * SFRIB5A.450
& ( BT_1(I) * DTEMP_LEAD(I) + SFRIB5A.451
& BQ_1(I) * RESFT(I) * DQ_LEAD(I) ) / SFRIB5A.452
& ( VSHR(I) * VSHR(I) ) SFRIB5A.453
C ... P2430.2, for sea-ice leads. SFRIB5A.454
ENDIF SFRIB5A.455
ENDDO SFRIB5A.456
ENDIF ! End of IF (GATHER) THEN... ELSE... SFRIB5A.458
SFRIB5A.460
C SFRIB5A.461
IF (LTIMER) THEN SFRIB5A.462
CALL TIMER
('SFRIB ',4) SFRIB5A.463
ENDIF SFRIB5A.464
RETURN SFRIB5A.465
END SFRIB5A.466
SFRIB5A.467
*ENDIF SFRIB5A.468