*IF DEF,A03_6A ACB1F405.8
C *****************************COPYRIGHT****************************** SFEVAP5B.3
C (c) CROWN COPYRIGHT 1997, METEOROLOGICAL OFFICE, All Rights Reserved. SFEVAP5B.4
C SFEVAP5B.5
C Use, duplication or disclosure of this code is subject to the SFEVAP5B.6
C restrictions as set forth in the contract. SFEVAP5B.7
C SFEVAP5B.8
C Meteorological Office SFEVAP5B.9
C London Road SFEVAP5B.10
C BRACKNELL SFEVAP5B.11
C Berkshire UK SFEVAP5B.12
C RG12 2SZ SFEVAP5B.13
C SFEVAP5B.14
C If no contract has been raised with this copy of the code, the use, SFEVAP5B.15
C duplication or disclosure of it is strictly prohibited. Permission SFEVAP5B.16
C to do so must first be obtained in writing from the Head of Numerical SFEVAP5B.17
C Modelling at the above address. SFEVAP5B.18
C ******************************COPYRIGHT****************************** SFEVAP5B.19
! SFEVAP5B.20
!!! SUBROUTINE SF_EVAP------------------------------------------------ SFEVAP5B.21
!!! SFEVAP5B.22
!!! Purpose: Calculate surface evaporation and sublimation amounts SFEVAP5B.23
!!! (without applying them to the surface stores). SFEVAP5B.24
!!! Also calculate heat flux due to sea-ice melting. SFEVAP5B.25
!!! Also calculate 1.5 metre T and Q. SFEVAP5B.26
!!! SFEVAP5B.27
!!! SFEVAP5B.28
!!! Suitable for single column usage. SFEVAP5B.29
!!! SFEVAP5B.30
!!! Model Modification history: SFEVAP5B.31
!!! version Date SFEVAP5B.32
!!! SFEVAP5B.33
!!! Programming standard: Unified Model Documentation Paper No 4, SFEVAP5B.34
!!! version 2, dated 18/1/90. SFEVAP5B.35
!!! SFEVAP5B.36
!!! 4.3 New deck. SFEVAP5B.37
CLL 4.5 Jul. 98 Kill the IBM specific lines (JCThil) AJC1F405.125
!!! SFEVAP5B.38
!!! Logical component covered: P245. SFEVAP5B.39
!!! SFEVAP5B.40
!!! System task: SFEVAP5B.41
!!! SFEVAP5B.42
!!! Documentation: UMDP 24 SFEVAP5B.43
!!! SFEVAP5B.44
!!!--------------------------------------------------------------------- SFEVAP5B.45
SFEVAP5B.46
! Arguments :--------------------------------------------------------- SFEVAP5B.47
SUBROUTINE SF_EVAP ( 4,14SFEVAP5B.48
& P_FIELD,P1,N_TYPES,LAND_FIELD,LAND1,GAMMA SFEVAP5B.49
&,POINTS,BL_LEVELS,LAND_MASK,LAND_PTS,LAND_INDEX SFEVAP5B.53
&,TILE_FRAC,ALPHA1,ASURF,ASHTF,CANOPY,CATCH SFEVAP5B.55
&,DTRDZ,DTRDZ_RML,E_SEA,FRACA SFEVAP5B.56
&,ICE_FRACT,NRML,RHOKH_1,SMC,TIMESTEP,CER1P5M,CHR1P5M SFEVAP5B.57
&,PSTAR,RESFS,RESFT,Z0M,Z0H,SQ1P5,ST1P5,SIMLT,SMLT SFEVAP5B.58
&,FTL,FTL_TILE,FQW,FQW_TILE,LYING_SNOW,QW,SURF_HT_FLUX SFEVAP5B.59
&,TL,TSTAR_TILE,TSTAR_GB,TI,ECAN_GB,ES,EI_GB SFEVAP5B.60
&,SICE_MLT_HTF,SNOMLT_SURF_HTF,SNOWMELT_GB SFEVAP5B.61
&,H_BLEND,HEAT_BLEND_FACTOR,QCL_1,QCF_1,Z1_TQ ARN0F405.1806
&,Q1P5M,T1P5M,LTIMER SFEVAP5B.63
&) SFEVAP5B.64
SFEVAP5B.65
IMPLICIT NONE SFEVAP5B.66
SFEVAP5B.67
LOGICAL LTIMER SFEVAP5B.68
SFEVAP5B.69
INTEGER SFEVAP5B.70
& P_FIELD ! IN No. of gridpoints in the whole grid. SFEVAP5B.71
&,P1 ! IN 1st P-pt in full field to be SFEVAP5B.72
! processed. SFEVAP5B.73
&,N_TYPES ! IN No. of land tiles SFEVAP5B.74
&,LAND_FIELD ! IN No. of landpoints in the whole grid. SFEVAP5B.75
&,LAND1 ! IN 1st L-pt in full field to be SFEVAP5B.76
! processed. SFEVAP5B.77
&,POINTS ! IN No. of gridpoints to be processed. SFEVAP5B.78
&,BL_LEVELS ! IN No. of levels treated by b.l. scheme. SFEVAP5B.79
&,LAND_PTS ! IN No. of land points to be processed. SFEVAP5B.80
SFEVAP5B.81
LOGICAL SFEVAP5B.82
& LAND_MASK(P_FIELD) ! IN T for land points, F otherwise. SFEVAP5B.83
SFEVAP5B.84
INTEGER SFEVAP5B.86
& LAND_INDEX(P_FIELD) ! IN Index of land points on the P-grid. SFEVAP5B.87
! The ith element contains the position SFEVAP5B.88
! in whole grid of the ith land point. SFEVAP5B.89
SFEVAP5B.91
REAL SFEVAP5B.92
SFEVAP5B.93
& ALPHA1(P_FIELD,N_TYPES)! IN Gradient of saturated specific SFEVAP5B.94
! humidity with respect to temp. SFEVAP5B.95
! between the bottom model layer SFEVAP5B.96
! and the surface. SFEVAP5B.97
&,ASURF(P_FIELD) ! IN Soil coefficient from P242 (m2 K per SFEVAP5B.98
! per Joule * timestep). SFEVAP5B.99
&,ASHTF(P_FIELD) ! IN Coefficient to calculate the soil SFEVAP5B.100
! heat flux between the surface and SFEVAP5B.101
! top soil layer (W/m2/K) SFEVAP5B.102
&,CANOPY(LAND_FIELD) ! IN Gridbox mean canopy / surface water SFEVAP5B.103
! store (kg/m2). SFEVAP5B.104
&,CATCH(LAND_FIELD,N_TYPES) SFEVAP5B.105
! IN Canopy / surface water store capacity SFEVAP5B.106
! (kg per sq m). SFEVAP5B.107
&,CER1P5M(P_FIELD) ! IN Interpolation coefficient, from P243 SFEVAP5B.108
&,CHR1P5M(P_FIELD) ! IN Interpolation coefficient, from P243. SFEVAP5B.109
&,DTRDZ(P_FIELD,BL_LEVELS)!IN -g.dt/dp for each model layer on SFEVAP5B.110
! p-grid From P244 ((kg/m2/s)**-1). SFEVAP5B.111
&,DTRDZ_RML(P_FIELD) ! IN -g.dt/dp for the rapidly mixing layer SFEVAP5B.112
! (if it exists) on the p-grid from SFEVAP5B.113
! P244 SFEVAP5B.114
&,E_SEA(P_FIELD) ! IN Evaporation from sea (weighted with SFEVAP5B.115
! leads fraction at sea-ice points). SFEVAP5B.116
&,FRACA(P_FIELD,N_TYPES) ! IN Fraction of surface moisture flux SFEVAP5B.117
! with only aerodynamic resistance. SFEVAP5B.118
! Diagnostics defined on land and sea. SFEVAP5B.120
&,GAMMA(BL_LEVELS) ! IN Weights for implicit BL scheme. SFEVAP5B.122
&,H_BLEND(P_FIELD) ! IN Blending height SFEVAP5B.123
&,HEAT_BLEND_FACTOR(P_FIELD) SFEVAP5B.124
! IN Used for tile adjustment SFEVAP5B.125
&,Z1_TQ(P_FIELD) ! IN Height of lowest tq level (m). ARN0F405.1807
&,ICE_FRACT(P_FIELD) ! IN Fraction of gridbox which is covered SFEVAP5B.126
! by sea-ice (decimal fraction, but SFEVAP5B.127
! mostly this sub-component assumes it SFEVAP5B.128
! to be either 1.0 or 0.0 precisely). SFEVAP5B.129
! NB Dimension is PFIELD not LAND_FIELD SFEVAP5B.131
! for snow on sea-ice in coupled model SFEVAP5B.132
! runs. SFEVAP5B.133
&,PSTAR(P_FIELD) ! IN Surface pressure (Pa). SFEVAP5B.135
&,QCL_1(P_FIELD) ! IN Liquid water at level 1 SFEVAP5B.136
&,QCF_1(P_FIELD) ! IN frozen water at level 1 SFEVAP5B.137
&,RESFS(P_FIELD,N_TYPES) ! IN Combined soil, stomatal and SFEVAP5B.138
! aerodynamic resistance factor SFEVAP5B.139
&,RESFT(P_FIELD,N_TYPES) ! IN Total resistance factor SFEVAP5B.140
! FRACA+(1-FRACA)*RESFS. SFEVAP5B.141
&,RHOKH_1(P_FIELD,N_TYPES)!IN Turbulent surface exchange SFEVAP5B.142
! coefficient for sensible heat. SFEVAP5B.143
&,SMC(LAND_FIELD,N_TYPES)! IN Soil moisture content (kg per sq m). SFEVAP5B.144
&,TILE_FRAC(P_FIELD,N_TYPES) SFEVAP5B.145
! IN fractional coverage for each tile SFEVAP5B.146
&,TIMESTEP ! IN Timestep (sec). SFEVAP5B.147
&,Z0M(P_FIELD,N_TYPES) ! IN Roughness length for momentum (m) SFEVAP5B.148
&,Z0H(P_FIELD,N_TYPES) ! IN Roughness length for heat and SFEVAP5B.149
! moisture SFEVAP5B.150
SFEVAP5B.151
INTEGER SFEVAP5B.152
& NRML(P_FIELD) ! IN The Number of model layers in the SFEVAP5B.153
! Rapidly Mixing Layer. SFEVAP5B.154
SFEVAP5B.155
LOGICAL SFEVAP5B.156
& SQ1P5 ! IN STASH flag for 1.5-metre sp humidity. SFEVAP5B.157
&,ST1P5 ! IN STASH flag for 1.5-metre temperature. SFEVAP5B.158
&,SIMLT ! IN STASH flag for sea-ice melting ht SFEVAP5B.159
! flux. SFEVAP5B.160
&,SMLT ! IN STASH flag for snow melting ht flux. SFEVAP5B.161
SFEVAP5B.162
REAL SFEVAP5B.163
& FTL(P_FIELD,BL_LEVELS) ! INOUT Sensible heat flux from layer k-1 SFEVAP5B.164
! to layer k (W/sq m). From P243 SFEVAP5B.165
! and P244, units changed in P24 SFEVAP5B.166
! top level. SFEVAP5B.167
&,FTL_TILE(P_FIELD,N_TYPES) SFEVAP5B.168
! INOUT Sensible surf heat flux for tile SFEVAP5B.169
&,FQW(P_FIELD,BL_LEVELS) ! INOUT Turbulent moisture flux from level SFEVAP5B.170
! k-1 to k (kg/sq m/s). From P243/4. SFEVAP5B.171
! Diagnostics defined on land and SFEVAP5B.173
! sea SFEVAP5B.174
&,FQW_TILE(P_FIELD,N_TYPES) SFEVAP5B.176
! INOUT Moisture flux for tile SFEVAP5B.177
&,LYING_SNOW(P_FIELD) ! INOUT Lying snow (kg per sq m). SFEVAP5B.178
&,QW(P_FIELD,BL_LEVELS) ! INOUT Total water content (kg(water)/ SFEVAP5B.179
! kg(air)). From P243/4. SFEVAP5B.180
&,SURF_HT_FLUX(P_FIELD,N_TYPES) SFEVAP5B.181
! INOUT Net downward heat flux at surface SFEVAP5B.182
! over land or sea-ice fraction of SFEVAP5B.183
! gridbox (W/m2). SFEVAP5B.184
&,TL(P_FIELD,BL_LEVELS) ! INOUT Liquid/frozen water temperature K. SFEVAP5B.185
&,TSTAR_GB(P_FIELD) ! INOUT mean land Surface temperature (K) SFEVAP5B.186
&,TSTAR_TILE(P_FIELD,N_TYPES) SFEVAP5B.187
! INOUT Tile surface temperature (K). SFEVAP5B.188
&,TI(P_FIELD) ! INOUT Sea-ice surface layer temp. (K). SFEVAP5B.189
SFEVAP5B.190
! OUTPUT SFEVAP5B.191
SFEVAP5B.192
REAL SFEVAP5B.193
& ECAN_GB(P_FIELD) ! OUT Gridbox mean evap. from canopy/ SFEVAP5B.194
! surface store (kg/m2/s). SFEVAP5B.195
! Zero over sea and sea-ice. SFEVAP5B.196
&,ES_GB(P_FIELD) ! OUT Surface evapotranspiration (through SFEVAP5B.197
! a resistance which is not entirely SFEVAP5B.198
! aerodynamic). Always non-negative. SFEVAP5B.199
! Kg per sq m per sec. SFEVAP5B.200
! Diagnostics defined on land and sea. SFEVAP5B.202
&,EI_GB(P_FIELD) ! OUT Sublimation from lying snow or sea- SFEVAP5B.204
! ice (kg per sq m per s). SFEVAP5B.205
REAL SFEVAP5B.206
& SICE_MLT_HTF(P_FIELD) ! OUT Heat flux due to melting of sea-ice SFEVAP5B.207
! (Watts per square metre). SFEVAP5B.208
&,SNOMLT_SURF_HTF(P_FIELD)!OUT Heat flux due to surface melting SFEVAP5B.209
! of snow (W/m2). SFEVAP5B.210
&,SNOWMELT_GB(P_FIELD) ! OUT Surface snowmelt (kg/m2/s). SFEVAP5B.211
&,Q1P5M(P_FIELD) ! OUT Specific humidity at screen height SFEVAP5B.212
! of 1.5 metres (kg water / kg air). SFEVAP5B.213
&,T1P5M(P_FIELD) ! OUT Temperature at 1.5 metres above the SFEVAP5B.214
! surface (K). SFEVAP5B.215
SFEVAP5B.216
SFEVAP5B.217
! External subprogram(s) required :- SFEVAP5B.218
EXTERNAL QSAT,SF_MELT SFEVAP5B.219
EXTERNAL TIMER SFEVAP5B.220
SFEVAP5B.221
SFEVAP5B.222
C*L Local and other symbolic constants used :- SFEVAP5B.223
*CALL C_0_DG_C
SFEVAP5B.224
*CALL C_LHEAT
SFEVAP5B.225
*CALL C_G
SFEVAP5B.226
*CALL C_HT_M
! Contains Z1P5M SFEVAP5B.227
*CALL C_R_CP
SFEVAP5B.228
*CALL C_KAPPAI
SFEVAP5B.229
SFEVAP5B.230
REAL GRCP,LS,LCRCP,LSRCP SFEVAP5B.231
PARAMETER ( SFEVAP5B.232
& GRCP=G/CP ! Accn due to gravity / standard heat SFEVAP5B.233
! capacity of air at const pressure. SFEVAP5B.234
&,LS=LF+LC ! Latent heat of sublimation. SFEVAP5B.235
&,LCRCP=LC/CP ! Evaporation-to-dT conversion factor. SFEVAP5B.236
&,LSRCP=LS/CP ! Sublimation-to-dT conversion factor. SFEVAP5B.237
&) SFEVAP5B.238
SFEVAP5B.239
SFEVAP5B.240
!! Workspace SFEVAP5B.241
SFEVAP5B.242
REAL SFEVAP5B.243
& DFQW(P_FIELD,N_TYPES) ! Adjustment increment to the flux of SFEVAP5B.244
! total water for tile SFEVAP5B.245
&,DFQW_GB(P_FIELD) ! Adjustment increment to the flux of SFEVAP5B.246
! total water SFEVAP5B.247
&,DIFF_SENS_HTF(P_FIELD,N_TYPES) SFEVAP5B.248
! Adjustment increment to the sensible SFEVAP5B.249
! heat flux SFEVAP5B.250
&,DQW(P_FIELD) ! Increment to specific humidity for SFEVAP5B.251
! current tile SFEVAP5B.252
&,DTL(P_FIELD) ! Increment to temperature for current SFEVAP5B.253
! tile SFEVAP5B.254
&,DQW_GB(P_FIELD) ! Increment to specific humidity SFEVAP5B.255
&,DTL_GB(P_FIELD) ! Increment to temperature SFEVAP5B.256
&,D_S_H_GB(P_FIELD) ! Change in sens. heat flux over gridbox SFEVAP5B.257
&,DTRDZ_1(P_FIELD) ! -g.dt/dp for surface layer or rml if it SFEVAP5B.258
! exists from P244 ((kg/sq m/s)**-1). SFEVAP5B.259
&,ECAN(P_FIELD,N_TYPES) ! Tile evaporation from canopy/ SFEVAP5B.260
! surface store (kg per sq m per s). SFEVAP5B.261
! Zero over sea and sea-ice. SFEVAP5B.262
&,EOLD(P_FIELD,N_TYPES) ! Used to store initial value of evap. SFEVAP5B.263
! for current tile from P244 SFEVAP5B.264
&,EOLD_GB(P_FIELD) ! Used to store initial mean value of SFEVAP5B.265
! evap.for gridbox from P244 SFEVAP5B.266
&,EI(P_FIELD,N_TYPES) ! Sublimation from lying snow or sea- SFEVAP5B.267
! ice (kg per sq m per s). SFEVAP5B.268
&,ES(P_FIELD,N_TYPES) ! Surface evapotranspiration (through SFEVAP5B.269
! a resistance which is not entirely SFEVAP5B.270
! aerodynamic). Always non-negative. SFEVAP5B.271
! Kg per sq m per sec SFEVAP5B.272
&,EW(P_FIELD) ! Total surface flux of water, excluding SFEVAP5B.273
! sublimation/frost deposition, over land. SFEVAP5B.274
&,LEOLD(P_FIELD) ! Used to store initial value of latent SFEVAP5B.275
! heat flux from P244 SFEVAP5B.276
&,QS(P_FIELD) ! Used for saturated specific humidity SFEVAP5B.277
! at surface, in Q1P5M calculation. SFEVAP5B.278
&,QSTAR_GB(P_FIELD) ! Qstar in Q1P5M calculation. SFEVAP5B.279
&,RHOKH1_PRIME(P_FIELD,N_TYPES) SFEVAP5B.280
! Modified forward time-weighted transfer SFEVAP5B.281
! coefficient SFEVAP5B.282
&,SNOWMELT(P_FIELD,N_TYPES) SFEVAP5B.283
! Surface snowmelt (kg/m2/s). SFEVAP5B.284
SFEVAP5B.285
! Local scalars SFEVAP5B.286
REAL SFEVAP5B.287
& DIFF_LAT_HTF ! Increment to the latent heat flux. SFEVAP5B.288
&,DIFF_SURF_HTF ! Increment to the surface heat flux. SFEVAP5B.289
&,DTSTAR ! Increment for surface temperature. SFEVAP5B.290
&,EA ! Surface evaporation with only aero- SFEVAP5B.291
! dynamic resistance (+ve), or condens- SFEVAP5B.292
! ation (-ve), averaged over gridbox SFEVAP5B.293
! (kg/m2/s). SFEVAP5B.294
&,EADT ! EA (q.v.) integrated over timestep. SFEVAP5B.295
&,ECANDT ! ECAN (q.v.) integrated over timestep. SFEVAP5B.296
&,EDT ! E=FQW(,1) (q.v.) integrated over timestep. SFEVAP5B.297
&,EIDT ! EI (q.v.) integrated over timestep. SFEVAP5B.298
&,ESDT ! ES (q.v.) integrated over timestep. SFEVAP5B.299
&,ESL ! ES (q.v.) without fractional weighting SFEVAP5B.300
! factor FRACS ('L' is for 'local') SFEVAP5B.301
! (kg/m2/s). SFEVAP5B.302
&,ESLDT ! ESL (q.v.) integrated over timestep. SFEVAP5B.303
&,FRACS ! Fraction of gridbox at which moisture flux SFEVAP5B.304
! is additionally impeded by a surface and/or SFEVAP5B.305
! stomatal resistance. SFEVAP5B.306
&,QW_BLEND ! QW at blending height SFEVAP5B.307
&,TL_BLEND ! TL at blending height SFEVAP5B.308
SFEVAP5B.309
INTEGER SFEVAP5B.310
& I ! Loop counter - full horizontal field index. SFEVAP5B.311
&,ITILE ! Loop counter - land tile index. SFEVAP5B.312
&,L ! Loop counter - land field index. SFEVAP5B.313
&,K ! Loop counter in the vertical. SFEVAP5B.314
&,KM1 ! K - 1 SFEVAP5B.315
SFEVAP5B.316
IF (LTIMER) THEN SFEVAP5B.317
CALL TIMER
('SFEVAP ',3) SFEVAP5B.318
ENDIF SFEVAP5B.319
SFEVAP5B.320
!----------------------------------------------------------------------- SFEVAP5B.321
!! 1. Initialise some output variables and flux increments to zero. SFEVAP5B.322
!----------------------------------------------------------------------- SFEVAP5B.323
SFEVAP5B.324
SFEVAP5B.325
DO I=P1,P1+POINTS-1 SFEVAP5B.326
ECAN_GB(I) = 0.0 SFEVAP5B.327
ES_GB(I) = 0.0 SFEVAP5B.328
EI_GB(I) = 0.0 SFEVAP5B.329
D_S_H_GB(I) = 0.0 SFEVAP5B.330
DFQW_GB(I) = 0.0 SFEVAP5B.331
SNOWMELT_GB(I) = 0.0 SFEVAP5B.332
ENDDO SFEVAP5B.333
SFEVAP5B.334
DO ITILE=1,N_TYPES SFEVAP5B.335
DO I=P1,P1+POINTS-1 SFEVAP5B.336
DIFF_SENS_HTF(I,ITILE) = 0.0 SFEVAP5B.337
DFQW(I,ITILE) = 0.0 SFEVAP5B.338
EI(I,ITILE) = 0.0 SFEVAP5B.339
SNOWMELT(I,ITILE) = 0.0 SFEVAP5B.340
ECAN(I,ITILE) = 0.0 SFEVAP5B.341
ENDDO SFEVAP5B.342
ENDDO SFEVAP5B.343
SFEVAP5B.344
!--------------------------------------------------------------------- SFEVAP5B.345
!! 2. Do calculations for land points. SFEVAP5B.346
!--------------------------------------------------------------------- SFEVAP5B.347
SFEVAP5B.348
CMIC$ DO ALL VECTOR SHARED(P_FIELD, LAND_FIELD, BL_LEVELS, LAND1, SFEVAP5B.349
CMIC$1 LAND_PTS, LAND_INDEX, ESL, TIMESTEP, ES, LYING_SNOW, ECAN, SFEVAP5B.350
CMIC$2 EA, CATCH, CANOPY, SMC, EI, TSTAR_TILE, FQW_TILE, EOLD, SFEVAP5B.351
CMIC$3 LEOLD, P1,POINTS,LC,LF,TM,LAND_MASK,EW,FRACA,RESFT,RESFS) SFEVAP5B.352
CMIC$4 PRIVATE(I, L, ESLDT, SFEVAP5B.353
CMIC$5 ESDT, EADT, EDT, ECANDT, FRACS, EIDT) SFEVAP5B.354
CDIR$ IVDEP SFEVAP5B.355
! Fujitsu vectorization directive GRB0F405.457
!OCL NOVREC GRB0F405.458
SFEVAP5B.356
DO ITILE=1,N_TYPES SFEVAP5B.357
SFEVAP5B.358
DO L=LAND1,LAND1+LAND_PTS-1 SFEVAP5B.364
I = LAND_INDEX(L) SFEVAP5B.365
SFEVAP5B.367
IF (FQW_TILE(I,ITILE).EQ.0.0) THEN SFEVAP5B.368
EA = 0.0 SFEVAP5B.369
ESL = 0.0 SFEVAP5B.370
ELSE SFEVAP5B.371
EA = FQW_TILE(I,ITILE) / RESFT(I,ITILE) * FRACA(I,ITILE) SFEVAP5B.372
ESL = FQW_TILE(I,ITILE) / RESFT(I,ITILE) * RESFS(I,ITILE) SFEVAP5B.373
END IF SFEVAP5B.374
ES(I,ITILE) = ESL * (1. - FRACA(I,ITILE)) SFEVAP5B.375
SFEVAP5B.376
!----------------------------------------------------------------------- SFEVAP5B.377
!! 2.1 Calculate fluxes integrated over timestep. SFEVAP5B.378
!----------------------------------------------------------------------- SFEVAP5B.379
SFEVAP5B.380
ESLDT = ESL * TIMESTEP SFEVAP5B.381
EADT = EA * TIMESTEP SFEVAP5B.382
ESDT = ES(I,ITILE) * TIMESTEP SFEVAP5B.383
EDT = EADT + ESDT SFEVAP5B.384
SFEVAP5B.385
!----------------------------------------------------------------------- SFEVAP5B.386
!! 2.2 Do calculations for snow-free land. Canopy processes operate. SFEVAP5B.387
!! LYING_SNOW is defined on sea and land points for snow on sea-ice SFEVAP5B.389
!! in coupled model runs. SFEVAP5B.390
!----------------------------------------------------------------------- SFEVAP5B.392
SFEVAP5B.393
IF (LYING_SNOW(I).LE.0.0) THEN SFEVAP5B.394
SFEVAP5B.395
!********************************************************************** SFEVAP5B.396
! Store initial value of evaporation and latent heat flux SFEVAP5B.397
!********************************************************************** SFEVAP5B.398
SFEVAP5B.399
EOLD(I,ITILE) = FQW_TILE(I,ITILE) SFEVAP5B.400
EOLD_GB(I) = FQW(I,1) SFEVAP5B.401
LEOLD(I) = FQW_TILE(I,ITILE) * LC SFEVAP5B.402
IF (EDT.GE.0.0) THEN SFEVAP5B.403
SFEVAP5B.404
!----------------------------------------------------------------------- SFEVAP5B.405
!! 2.2.1 Non-negative moisture flux over snow-free land. SFEVAP5B.406
!----------------------------------------------------------------------- SFEVAP5B.407
SFEVAP5B.408
!- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - SFEVAP5B.409
!! (a) Water in canopy and soil is assumed to be liquid, so all SFEVAP5B.410
!! positive moisture flux over snow-free land is evaporation SFEVAP5B.411
!! rather than sublimation, even if TSTAR_TILE is less than or SFEVAP5B.412
!! equal to TM. SFEVAP5B.413
!- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - SFEVAP5B.414
SFEVAP5B.415
ECAN(I,ITILE) = EA SFEVAP5B.416
ECANDT = EADT SFEVAP5B.417
SFEVAP5B.418
! If EDT is non-negative, then ECANDT must be non-negative. SFEVAP5B.419
SFEVAP5B.420
FRACA(I,ITILE) = 0.0 SFEVAP5B.421
IF (CATCH(L,ITILE).GT.0.0) SFEVAP5B.422
& FRACA(I,ITILE) = CANOPY(L) / CATCH(L,ITILE) SFEVAP5B.423
IF (CANOPY(L).LT.ECANDT) THEN SFEVAP5B.424
SFEVAP5B.425
!- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - SFEVAP5B.426
!! (b) It is assumed that any 'canopy' moisture flux in excess of the SFEVAP5B.427
!! current canopy water amount is in fact soil evaporation. SFEVAP5B.428
!- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - SFEVAP5B.429
SFEVAP5B.430
! This situation is highly improbable - it will occur at, at SFEVAP5B.431
! most, a few gridpoints in any given timestep. SFEVAP5B.432
SFEVAP5B.433
FRACS = 1.0 - FRACA(I,ITILE)*( CANOPY(L) / ECANDT ) SFEVAP5B.434
ESDT = ESLDT * FRACS SFEVAP5B.435
ECANDT = CANOPY(L) SFEVAP5B.436
ECAN(I,ITILE) = ECANDT / TIMESTEP SFEVAP5B.437
ES(I,ITILE) = ESDT / TIMESTEP SFEVAP5B.438
ENDIF SFEVAP5B.439
SFEVAP5B.440
! (The canopy store is depleted by evaporation in P252, and not here, SFEVAP5B.441
! according to the formula: CANOPY=CANOPY-ECANDT) SFEVAP5B.442
SFEVAP5B.443
!- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - SFEVAP5B.444
!! (c) Adjustments to evaporation from soil as calculated so far :- SFEVAP5B.445
!- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - SFEVAP5B.446
SFEVAP5B.447
IF (SMC(L,ITILE).LE.0.0) THEN SFEVAP5B.448
SFEVAP5B.449
!! (i) If there is currently no soil moisture, there must be no SFEVAP5B.450
!! evaporation of soil moisture, so this flux is set to zero. SFEVAP5B.451
SFEVAP5B.452
ESDT = 0.0 SFEVAP5B.453
ES(I,ITILE) = 0.0 SFEVAP5B.454
ELSEIF (SMC(L,ITILE).LT.ESDT) THEN SFEVAP5B.455
SFEVAP5B.456
SFEVAP5B.457
!! (ii) Ensure that the soil evaporation is not greater than the SFEVAP5B.458
!! current soil moisture store. SFEVAP5B.459
! This situation is extremely unlikely at any given gridpoint SFEVAP5B.460
! at any given timestep. SFEVAP5B.461
SFEVAP5B.462
ESDT = SMC(L,ITILE) SFEVAP5B.463
ES(I,ITILE) = ESDT / TIMESTEP SFEVAP5B.464
ENDIF SFEVAP5B.465
SFEVAP5B.466
! (The soil moisture store is depleted by evaporation in P253, and not SFEVAP5B.467
! here, using the formula: SMC=SMC-ESDT) SFEVAP5B.468
SFEVAP5B.469
EW(I) = ECAN(I,ITILE) + ES(I,ITILE) SFEVAP5B.470
EI(I,ITILE) = 0.0 SFEVAP5B.471
SFEVAP5B.472
!----------------------------------------------------------------------- SFEVAP5B.473
!! 2.2.2 Negative moisture flux onto snow-free land above freezing SFEVAP5B.474
!----------------------------------------------------------------------- SFEVAP5B.475
!! (i.e. condensation onto snow-free land). The whole flux is SFEVAP5B.476
!! into the surface/canopy store. SFEVAP5B.477
SFEVAP5B.478
ELSEIF (TSTAR_TILE(I,ITILE).GT.TM) THEN ! ELSE of SFEVAP5B.479
! ! evaporation/condensation block. SFEVAP5B.480
SFEVAP5B.481
! Condensation implies ES=0, so ECAN=EA=EW=E (=FQW(,1)) SFEVAP5B.482
SFEVAP5B.483
ECAN(I,ITILE) = FQW_TILE(I,ITILE) SFEVAP5B.484
ES(I,ITILE) = 0.0 SFEVAP5B.485
EW(I) = ECAN(I,ITILE) SFEVAP5B.486
EI(I,ITILE) = 0.0 SFEVAP5B.487
SFEVAP5B.488
! (The canopy store is augmented by interception of condensation at SFEVAP5B.489
! P252, and not here.) SFEVAP5B.490
SFEVAP5B.491
!----------------------------------------------------------------------- SFEVAP5B.492
!! 2.2.3 Negative moisture flux onto snow-free land below freezing SFEVAP5B.493
!! (i.e. deposition of frost). SFEVAP5B.494
!----------------------------------------------------------------------- SFEVAP5B.495
SFEVAP5B.496
ELSE ! ELSE of condensation / frost deposition block. SFEVAP5B.497
EI(I,ITILE) = FQW_TILE(I,ITILE) SFEVAP5B.498
ES(I,ITILE) = 0.0 SFEVAP5B.499
EW(I) = 0.0 SFEVAP5B.500
SFEVAP5B.501
! (Negative EI is used to increment the snowdepth store - there is SFEVAP5B.502
! no separate "frost" store. This incrementing is done in P251, SFEVAP5B.503
! according to: LYING_SNOW = LYING_SNOW - EI*TIMESTEP) SFEVAP5B.504
SFEVAP5B.505
ENDIF ! End of evaporation/condensation/deposition block. SFEVAP5B.506
SFEVAP5B.507
!----------------------------------------------------------------------- SFEVAP5B.508
!! 2.3 Do calculations for snow-covered land. SFEVAP5B.509
!----------------------------------------------------------------------- SFEVAP5B.510
SFEVAP5B.511
ELSEIF (LYING_SNOW(I).LE.EDT) THEN ! ELSEIF of no-snow. SFEVAP5B.512
SFEVAP5B.513
!********************************************************************** SFEVAP5B.514
! Store initial value of evaporation and latent heat flux SFEVAP5B.515
!********************************************************************** SFEVAP5B.516
SFEVAP5B.517
EOLD(I,ITILE) = FQW_TILE(I,ITILE) SFEVAP5B.518
EOLD_GB(I) = FQW(I,1) SFEVAP5B.519
LEOLD(I) = FQW(I,1) * ( LC + LF ) SFEVAP5B.520
SFEVAP5B.521
!----------------------------------------------------------------------- SFEVAP5B.522
!! 2.3.1 Shallow snow (lying snow or frost which is being exhausted SFEVAP5B.523
!! by evaporation). All the snow is sublimated, the remaining SFEVAP5B.524
!! moisture flux being taken from the canopy and soil, with all SFEVAP5B.525
!! the palaver of section 1.2.1 above. SFEVAP5B.526
!----------------------------------------------------------------------- SFEVAP5B.527
SFEVAP5B.528
! This is extremely unlikely at more than one or two gridpoints SFEVAP5B.529
! at any given timestep, yet the complicated logic probably SFEVAP5B.530
! slows down the routine considerably - this section is a SFEVAP5B.531
! suitable candidate for further consideration as regards SFEVAP5B.532
! making the model optimally efficient. SFEVAP5B.533
SFEVAP5B.534
EI(I,ITILE) = LYING_SNOW(I) / TIMESTEP SFEVAP5B.535
EIDT = LYING_SNOW(I) SFEVAP5B.536
SFEVAP5B.537
! Set EDT = ( E - SNOSUB ) * TIMESTEP. This is the moisture in kg per SFEVAP5B.538
! square metre left over to be evaporated from the canopy and soil. SFEVAP5B.539
! N.B. E=FQW(,1) SFEVAP5B.540
SFEVAP5B.541
EDT = EDT - EIDT SFEVAP5B.542
SFEVAP5B.543
! (Snowdepth is decreased using EI at P251, and not here. The formula SFEVAP5B.544
! used is simply: LYING_SNOW = LYING_SNOW - EI*TIMESTEP.) SFEVAP5B.545
SFEVAP5B.546
! Now that all the snow has sublimed, canopy processes come into SFEVAP5B.547
! operation (FRACA no longer necessarily equal to 1). SFEVAP5B.548
SFEVAP5B.549
FRACA(I,ITILE) = 0.0 SFEVAP5B.550
IF (CATCH(L,ITILE).GT.0.0) SFEVAP5B.551
& FRACA(I,ITILE) = CANOPY(L) / CATCH(L,ITILE) SFEVAP5B.552
ECANDT = EDT * FRACA(I,ITILE) SFEVAP5B.553
IF (CANOPY(L).LT.ECANDT) THEN SFEVAP5B.554
SFEVAP5B.555
! Dry out the canopy completely and assume the remaining moisture flux SFEVAP5B.556
! is soil evaporation. SFEVAP5B.557
SFEVAP5B.558
FRACS = 1.0 - FRACA(I,ITILE)*( CANOPY(L) / ECANDT ) SFEVAP5B.559
ESDT = EDT * FRACS SFEVAP5B.560
ECANDT = CANOPY(L) SFEVAP5B.561
ELSE SFEVAP5B.562
SFEVAP5B.563
! Calculate soil evaporation. SFEVAP5B.564
SFEVAP5B.565
FRACS = 1.0 - FRACA(I,ITILE) SFEVAP5B.566
ESDT = EDT * FRACS SFEVAP5B.567
ENDIF SFEVAP5B.568
ECAN(I,ITILE) = ECANDT / TIMESTEP SFEVAP5B.569
ES(I,ITILE) = ESDT / TIMESTEP SFEVAP5B.570
SFEVAP5B.571
! (ECAN is used to deplete the canopy store at P252, and not here. The SFEVAP5B.572
! formula used is simply: CANOPY = CANOPY - ECAN*TIMESTEP.) SFEVAP5B.573
SFEVAP5B.574
! Evaporation from soil. SFEVAP5B.575
SFEVAP5B.576
IF (SMC(L,ITILE).LE.0.0) THEN SFEVAP5B.577
SFEVAP5B.578
! No evaporation from soil possible when there is no soil moisture. SFEVAP5B.579
SFEVAP5B.580
ESDT = 0.0 SFEVAP5B.581
ES(I,ITILE) = 0.0 SFEVAP5B.582
ELSEIF (SMC(L,ITILE).LT.ESDT) THEN SFEVAP5B.583
SFEVAP5B.584
! Limit evaporation of soil moisture in the extremely unlikely event SFEVAP5B.585
! that soil moisture is exhausted by the evaporation left over from SFEVAP5B.586
! sublimation which exhausted the snow store. SFEVAP5B.587
SFEVAP5B.588
ESDT = SMC(L,ITILE) SFEVAP5B.589
ES(I,ITILE) = ESDT / TIMESTEP SFEVAP5B.590
ENDIF SFEVAP5B.591
SFEVAP5B.592
! (ES is used to deplete the soil moisture store at P253, and not here, SFEVAP5B.593
! according to the formula: SMC = SMC - ES*TIMESTEP.) SFEVAP5B.594
SFEVAP5B.595
EW(I) = ECAN(I,ITILE) + ES(I,ITILE) SFEVAP5B.596
SFEVAP5B.597
!----------------------------------------------------------------------- SFEVAP5B.598
!! 2.3.2 Deep snow (i.e. not being exhausted by evaporation). This SFEVAP5B.599
!! covers two cases: (a) sublimation from deep snow (if total SFEVAP5B.600
!! moisture flux over the timestep is non-negative but less than SFEVAP5B.601
!! the lying snow amount), and (b) deposition onto an already SFEVAP5B.602
!! snowy surface (if the total moisture flux is negative and SFEVAP5B.603
!! the lying snow amount is positive). SFEVAP5B.604
!----------------------------------------------------------------------- SFEVAP5B.605
SFEVAP5B.606
ELSE ! ELSE of shallow snow / deep snow block. SFEVAP5B.607
EI(I,ITILE) = FQW_TILE(I,ITILE) SFEVAP5B.608
EW(I) = 0.0 SFEVAP5B.609
SFEVAP5B.610
!********************************************************************** SFEVAP5B.611
! Store initial value of evaporation and latent heat flux SFEVAP5B.612
!********************************************************************** SFEVAP5B.613
SFEVAP5B.614
EOLD(I,ITILE) = FQW_TILE(I,ITILE) SFEVAP5B.615
EOLD_GB(I) = FQW(I,1) SFEVAP5B.616
LEOLD(I) = FQW_TILE(I,ITILE) * ( LC + LF ) SFEVAP5B.617
SFEVAP5B.618
! (EI is used to increase or decrease the snowdepth at P251, and not SFEVAP5B.619
! here, according to the formula: SFEVAP5B.620
! LYING_SNOW = LYING_SNOW - EI*TIMESTEP . ) SFEVAP5B.621
SFEVAP5B.622
ENDIF ! End of no snow/shallow snow/deep snow block. SFEVAP5B.623
FQW_TILE(I,ITILE) = EW(I) + EI(I,ITILE) SFEVAP5B.624
SFEVAP5B.625
ENDDO ! end of loop over land points SFEVAP5B.627
SFEVAP5B.628
! Split loop 2 here so that it will vectorise. SFEVAP5B.629
SFEVAP5B.630
CMIC$ DO ALL VECTOR SHARED(DTRDZ_1,DTRDZ,RHOKH_1,GAMMA, SFEVAP5B.631
CMIC$1 NRML,DTRDZ_RML,EI,EW,LEOLD,DIFF_LAT_HTF,FQW, SFEVAP5B.632
CMIC$2 EOLD,DFQW,ASHTF,DIFF_SENS_HTF,DIFF_SURF_HTF, SFEVAP5B.633
CMIC$3 ASURF,TIMESTEP,TSTAR_TILE,LAND_INDEX,RHOKH1_PRIME,SURF_HT_FLUX) SFEVAP5B.634
CMIC$4 PRIVATE(DTSTAR,I) SFEVAP5B.635
CDIR$ IVDEP SFEVAP5B.636
! Fujitsu vectorization directive GRB0F405.459
!OCL NOVREC GRB0F405.460
SFEVAP5B.637
DO L=LAND1,LAND1+LAND_PTS-1 SFEVAP5B.638
I = LAND_INDEX(L) SFEVAP5B.639
SFEVAP5B.641
!*********************************************************************** SFEVAP5B.642
! 2.4 Calculate increments to surface and subsurface temperatures, SFEVAP5B.643
! surface heat and moisture fluxes and soil heat flux. Apply SFEVAP5B.644
! increments to TSTAR_TILE to give interim values before any SFEVAP5B.645
! snowmelt. SFEVAP5B.646
!*********************************************************************** SFEVAP5B.647
IF (NRML(I).GE.2) THEN SFEVAP5B.648
DTRDZ_1(I) = DTRDZ_RML(I) SFEVAP5B.649
ELSE SFEVAP5B.650
DTRDZ_1(I) = DTRDZ(I,1) SFEVAP5B.651
ENDIF SFEVAP5B.652
RHOKH1_PRIME(I,ITILE) = 1.0 / SFEVAP5B.653
& ( 1.0 / RHOKH_1(I,ITILE) + GAMMA(1) * DTRDZ_1(I)) SFEVAP5B.654
SFEVAP5B.655
DIFF_LAT_HTF = (LC + LF) * EI(I,ITILE) + SFEVAP5B.656
& LC * EW(I) - LEOLD(I) SFEVAP5B.657
DFQW(I,ITILE) = FQW_TILE(I,ITILE) - EOLD(I,ITILE) SFEVAP5B.658
SFEVAP5B.659
DIFF_SENS_HTF(I,ITILE) = - DIFF_LAT_HTF / SFEVAP5B.660
& ( 1. + ASHTF(I) /(RHOKH1_PRIME(I,ITILE) * CP) ) SFEVAP5B.661
SFEVAP5B.662
DIFF_SURF_HTF = - DIFF_LAT_HTF / ( 1.0 + SFEVAP5B.663
& RHOKH1_PRIME(I,ITILE) * CP / ASHTF(I) ) SFEVAP5B.664
SFEVAP5B.665
SURF_HT_FLUX(I,ITILE) = SURF_HT_FLUX(I,ITILE) + SFEVAP5B.666
& DIFF_SURF_HTF SFEVAP5B.667
DTSTAR = DIFF_SURF_HTF / ASHTF(I) SFEVAP5B.668
TSTAR_TILE(I,ITILE) = TSTAR_TILE(I,ITILE) + DTSTAR SFEVAP5B.669
SFEVAP5B.670
ENDDO !End of loop over land points SFEVAP5B.674
ENDDO !End of tile loop SFEVAP5B.675
SFEVAP5B.676
!----------------------------------------------------------------------- SFEVAP5B.677
!! 2.5 Do calculations for sea points. SFEVAP5B.678
!----------------------------------------------------------------------- SFEVAP5B.679
SFEVAP5B.680
CMIC$ DO ALL VECTOR SHARED(P_FIELD, BL_LEVELS, P1, POINTS,NRML, SFEVAP5B.682
CMIC$1 LAND_MASK, ES, EI, EOLD, SFEVAP5B.683
CMIC$2 ICE_FRACT, FQW, E_SEA,DTRDZ_RML, SFEVAP5B.684
CMIC$3 TSTAR_TILE, TSTAR_GB, SMLT, SICE_MLT_HTF, KAPPAI, SFEVAP5B.685
CMIC$4 DTRDZ_1,DTRDZ,RHOKH_1,GAMMA,RHOKH1_PRIME, SFEVAP5B.686
CMIC$5 TIMESTEP,TM,TFS) PRIVATE(I, TSTARMAX) SFEVAP5B.687
CDIR$ IVDEP SFEVAP5B.688
! Fujitsu vectorization directive GRB0F405.461
!OCL NOVREC GRB0F405.462
SFEVAP5B.690
SFEVAP5B.691
DO I=P1,P1+POINTS-1 SFEVAP5B.692
IF (.NOT.LAND_MASK(I)) THEN SFEVAP5B.693
SFEVAP5B.694
!----------------------------------------------------------------------- SFEVAP5B.695
!! 2.5.1 Set soil and canopy evaporation amounts to zero, and set SFEVAP5B.696
!! sublimation to zero for liquid sea points. SFEVAP5B.697
!----------------------------------------------------------------------- SFEVAP5B.698
SFEVAP5B.699
ES(I,1) = 0.0 SFEVAP5B.700
EI(I,1) = 0.0 SFEVAP5B.701
!----------------------------------------------------------------------- SFEVAP5B.702
!! 2.5.3 For sea-ice points :- SFEVAP5B.703
!----------------------------------------------------------------------- SFEVAP5B.704
SFEVAP5B.705
IF (ICE_FRACT(I).GT.0.0) THEN SFEVAP5B.706
EOLD_GB(I) = FQW(I,1) SFEVAP5B.707
EI(I,1) = FQW(I,1) - E_SEA(I) SFEVAP5B.708
IF (NRML(I).GE.2) THEN SFEVAP5B.709
DTRDZ_1(I) = DTRDZ_RML(I) SFEVAP5B.710
ELSE SFEVAP5B.711
DTRDZ_1(I) = DTRDZ(I,1) SFEVAP5B.712
ENDIF SFEVAP5B.713
RHOKH1_PRIME(I,1) = 1.0 / ( 1.0 / RHOKH_1(I,1) SFEVAP5B.714
& + ICE_FRACT(I)*GAMMA(1)*DTRDZ_1(I) ) SFEVAP5B.715
ENDIF ! End of liquid sea/sea-ice block. SFEVAP5B.716
SFEVAP5B.717
ENDIF ! End of sea point calculations. SFEVAP5B.718
ENDDO !End of loop over points SFEVAP5B.719
SFEVAP5B.720
!----------------------------------------------------------------------- SFEVAP5B.721
! Calculate fluxes and increments associated with melting of snow SFEVAP5B.722
! or sea-ice. SFEVAP5B.723
!----------------------------------------------------------------------- SFEVAP5B.724
SFEVAP5B.725
SFEVAP5B.726
CALL SF_MELT
(P_FIELD,P1,N_TYPES,LAND_FIELD,LAND1 SFEVAP5B.727
&,POINTS,LAND_MASK,LAND_PTS,LAND_INDEX SFEVAP5B.731
&,ALPHA1,ASHTF,ASURF,TILE_FRAC,ICE_FRACT SFEVAP5B.733
&,RHOKH1_PRIME,TIMESTEP,SIMLT,SMLT,DFQW,DIFF_SENS_HTF SFEVAP5B.734
&,EI,LYING_SNOW,SURF_HT_FLUX,TSTAR_TILE,TI SFEVAP5B.735
&,SICE_MLT_HTF,SNOMLT_SURF_HTF,SNOWMELT,LTIMER) SFEVAP5B.736
SFEVAP5B.737
!----------------------------------------------------------------------- SFEVAP5B.738
! 3. Update heat and moisture fluxes due to limited evaporation and snow SFEVAP5B.739
! or sea-ice melting. SFEVAP5B.740
!----------------------------------------------------------------------- SFEVAP5B.741
SFEVAP5B.742
DO I = P1,P1+POINTS-1 SFEVAP5B.743
SFEVAP5B.744
TSTAR_GB(I) = TSTAR_TILE(I,1) SFEVAP5B.745
EI_GB(I) = EI(I,1) SFEVAP5B.746
SNOWMELT_GB(I)=SNOWMELT(I,1) SFEVAP5B.747
SFEVAP5B.748
SFEVAP5B.749
IF ( ICE_FRACT(I).GT.0.0 ) THEN SFEVAP5B.750
DQW_GB(I) = DTRDZ_1(I) * DFQW(I,1) SFEVAP5B.751
DTL_GB(I) = DTRDZ_1(I) * DIFF_SENS_HTF(I,1) / CP SFEVAP5B.752
TL(I,1) = TL(I,1) + DTL_GB(I) SFEVAP5B.753
QW(I,1) = QW(I,1) + DQW_GB(I) SFEVAP5B.754
FTL(I,1) = FTL(I,1) + DIFF_SENS_HTF(I,1) SFEVAP5B.755
FQW(I,1) = EOLD_GB(I) + DFQW(I,1) SFEVAP5B.756
SFEVAP5B.757
do itile=1,n_types SFEVAP5B.758
ftl_tile(i,itile)=ftl_tile(i,itile) + DIFF_SENS_HTF(I,1) SFEVAP5B.759
fqw_tile(i,itile)=fqw_tile(i,itile) + DFQW(I,1) SFEVAP5B.760
enddo SFEVAP5B.761
SFEVAP5B.762
D_S_H_GB(I) = DIFF_SENS_HTF(I,1) SFEVAP5B.763
DFQW_GB(I) = DFQW(I,1) SFEVAP5B.764
SFEVAP5B.765
ENDIF ! ice_fract .gt. 0 SFEVAP5B.766
SFEVAP5B.767
IF ( LAND_MASK(I) ) THEN SFEVAP5B.768
SFEVAP5B.769
DQW_GB(I) = 0.0 SFEVAP5B.770
EI_GB(I) = 0.0 SFEVAP5B.771
DTL_GB(I) = 0.0 SFEVAP5B.772
D_S_H_GB(I) = 0.0 SFEVAP5B.773
DFQW_GB(I) = 0.0 SFEVAP5B.774
SNOWMELT_GB(I) = 0.0 SFEVAP5B.775
TSTAR_GB(I) = 0.0 SFEVAP5B.776
ENDIF ! land SFEVAP5B.777
ENDDO ! POINTS SFEVAP5B.778
SFEVAP5B.779
SFEVAP5B.780
DO ITILE=1,N_TYPES SFEVAP5B.781
CDIR$ IVDEP SFEVAP5B.786
! Fujitsu vectorization directive GRB0F405.463
!OCL NOVREC GRB0F405.464
DO L=LAND1,LAND1+LAND_PTS-1 SFEVAP5B.787
I = LAND_INDEX(L) SFEVAP5B.788
SFEVAP5B.790
DQW(I) = DTRDZ_1(I) * DFQW(I,ITILE) SFEVAP5B.791
DTL(I) = DTRDZ_1(I) * DIFF_SENS_HTF(I,ITILE) / CP SFEVAP5B.792
EI_GB(I) = EI_GB(I) + EI(I,ITILE) * TILE_FRAC(I,ITILE) SFEVAP5B.793
DQW_GB(I) = DQW_GB(I) + DQW(I) * TILE_FRAC(I,ITILE) SFEVAP5B.794
DTL_GB(I) = DTL_GB(I) + DTL(I) * TILE_FRAC(I,ITILE) SFEVAP5B.795
D_S_H_GB(I) = D_S_H_GB(I) + DIFF_SENS_HTF(I,ITILE) * SFEVAP5B.796
& TILE_FRAC(I,ITILE) SFEVAP5B.797
DFQW_GB(I) = DFQW_GB(I) + DFQW(I,ITILE) * SFEVAP5B.798
& TILE_FRAC(I,ITILE) SFEVAP5B.799
SFEVAP5B.800
TSTAR_GB(I) = TSTAR_GB(I) + TSTAR_TILE(I,ITILE) * SFEVAP5B.801
& TILE_FRAC(I,ITILE) SFEVAP5B.802
SFEVAP5B.803
ECAN_GB(I) = ECAN_GB(I) + ECAN(I,ITILE) * SFEVAP5B.804
& TILE_FRAC(I,ITILE) SFEVAP5B.805
SFEVAP5B.806
SNOWMELT_GB(I)=SNOWMELT_GB(I) + SNOWMELT(I,ITILE) * SFEVAP5B.807
& TILE_FRAC(I,ITILE) SFEVAP5B.808
SFEVAP5B.809
TL(I,1) = TL(I,1) + DTL(I) * TILE_FRAC(I,ITILE) SFEVAP5B.810
QW(I,1) = QW(I,1) + DQW(I) * TILE_FRAC(I,ITILE) SFEVAP5B.811
SFEVAP5B.812
FTL_TILE(I,ITILE) = FTL_TILE(I,ITILE) + SFEVAP5B.813
& DIFF_SENS_HTF(I,ITILE) SFEVAP5B.814
FQW_TILE(I,ITILE) = EOLD(I,ITILE) + DFQW(I,ITILE) SFEVAP5B.815
SFEVAP5B.816
ENDDO ! land points SFEVAP5B.820
ENDDO ! Tile loop SFEVAP5B.821
SFEVAP5B.822
SFEVAP5B.823
DO I=P1,P1+POINTS-1 SFEVAP5B.824
IF ( LAND_MASK(I)) THEN SFEVAP5B.825
FTL(I,1) = FTL(I,1) + D_S_H_GB(I) SFEVAP5B.826
FQW(I,1) = EOLD_GB(I) + DFQW_GB(I) SFEVAP5B.827
ENDIF ! Land block SFEVAP5B.828
ENDDO SFEVAP5B.829
SFEVAP5B.830
SFEVAP5B.831
!----------------------------------------------------------------------- SFEVAP5B.832
!! Apply increments to rapidly mixing layer. SFEVAP5B.833
!----------------------------------------------------------------------- SFEVAP5B.834
SFEVAP5B.835
DO K = 2,BL_LEVELS-1 SFEVAP5B.836
KM1 = K - 1 SFEVAP5B.837
DO I=P1,P1+POINTS-1 SFEVAP5B.838
SFEVAP5B.839
IF ( LAND_MASK(I) .OR. ICE_FRACT(I).GT.0.0 ) THEN SFEVAP5B.840
IF ( K .LE. NRML(I) ) THEN SFEVAP5B.841
TL(I,K) = TL(I,K) + DTL_GB(I) SFEVAP5B.842
QW(I,K) = QW(I,K) + DQW_GB(I) SFEVAP5B.843
D_S_H_GB(I) = D_S_H_GB(I) SFEVAP5B.844
& - CP * DTL_GB(I) / DTRDZ(I,KM1) SFEVAP5B.845
DFQW_GB(I) = DFQW_GB(I) - DQW_GB(I) / DTRDZ(I,KM1) SFEVAP5B.846
FTL(I,K) = FTL(I,K) + D_S_H_GB(I) SFEVAP5B.847
FQW(I,K) = FQW(I,K) + DFQW_GB(I) SFEVAP5B.848
ENDIF ! Rapidly mixing layer SFEVAP5B.849
ENDIF ! Land or sea-ice SFEVAP5B.850
ENDDO ! Loop over points SFEVAP5B.851
ENDDO ! Loop over levels SFEVAP5B.852
SFEVAP5B.853
!----------------------------------------------------------------------- SFEVAP5B.854
!! 4. Diagnose temperature and/or specific humidity at screen height SFEVAP5B.855
!! (1.5 metres), as requested via the STASH flags. SFEVAP5B.856
!----------------------------------------------------------------------- SFEVAP5B.857
SFEVAP5B.858
IF (SQ1P5 .OR. ST1P5) THEN SFEVAP5B.859
ITILE=1 ! when using more than 1 tile, use short grass SFEVAP5B.862
IF (SQ1P5) THEN ARN0F405.1808
CALL QSAT
(QS(P1),TSTAR_TILE(P1,ITILE),PSTAR(P1),POINTS) SFEVAP5B.863
CALL QSAT
(QSTAR_GB(P1),TSTAR_GB(P1),PSTAR(P1),POINTS) SFEVAP5B.864
ENDIF SFEVAP5B.865
DO I=P1,P1+POINTS-1 SFEVAP5B.866
SFEVAP5B.867
IF (ST1P5) THEN SFEVAP5B.868
SFEVAP5B.869
TL_BLEND = TSTAR_GB(I) - G/CP * (H_BLEND(I) - Z0H(I,ITILE)) ARN0F405.1809
& + (TL(I,1) ARN0F405.1810
& + G/CP * (Z1_TQ(I)+Z0M(I,ITILE)-Z0H(I,ITILE)) ARN0F405.1811
& - TSTAR_GB(I) ) * HEAT_BLEND_FACTOR(I) ARN0F405.1812
& + ( HEAT_BLEND_FACTOR(I) - 1.0 ) ARN0F405.1813
& * ( LCRCP*QCL_1(I) + LSRCP*QCF_1(I) ) ARN0F405.1814
SFEVAP5B.873
T1P5M(I) = TSTAR_TILE(I,ITILE) - GRCP*Z1P5M + CHR1P5M(I) * SFEVAP5B.874
& ( TL_BLEND - TSTAR_TILE(I,ITILE) ARN0F405.1815
& + GRCP * (H_BLEND(I) - Z0H(I,ITILE)) ) ARN0F405.1816
SFEVAP5B.877
! T1P5M(I) = TSTAR_TILE(I,1) - GRCP*Z1P5M + CHR1P5M(I) * SFEVAP5B.878
! & ( TL_BLEND - TSTAR_TILE(I,1) + SFEVAP5B.879
! & GRCP*(H_BLEND(I)+Z0M(I,1)-Z0H(I,1)) ) SFEVAP5B.880
SFEVAP5B.881
ENDIF ! st1p5 SFEVAP5B.882
IF (SQ1P5) THEN SFEVAP5B.883
QW_BLEND = HEAT_BLEND_FACTOR(I) * (QW(I,1) - QSTAR_GB(I)) + SFEVAP5B.884
& QSTAR_GB(I) - ( HEAT_BLEND_FACTOR(I) - 1.0 ) * SFEVAP5B.885
& ( QCL_1(I) + QCF_1(I) ) SFEVAP5B.886
SFEVAP5B.887
Q1P5M(I) = QW_BLEND + CER1P5M(I)*( QW_BLEND - QS(I) ) SFEVAP5B.888
ENDIF !sq1p5 SFEVAP5B.889
ENDDO ! POINTS SFEVAP5B.890
ENDIF ! sq1p5 or qt1p5 SFEVAP5B.891
SFEVAP5B.892
IF (LTIMER) THEN SFEVAP5B.893
CALL TIMER
('SFEVAP ',4) SFEVAP5B.894
ENDIF SFEVAP5B.895
SFEVAP5B.896
RETURN SFEVAP5B.897
END SFEVAP5B.898
*ENDIF SFEVAP5B.899