*IF DEF,A03_5A SFEVAP5A.2
C *****************************COPYRIGHT****************************** SFEVAP5A.3
C (c) CROWN COPYRIGHT 1996, METEOROLOGICAL OFFICE, All Rights Reserved. SFEVAP5A.4
C SFEVAP5A.5
C Use, duplication or disclosure of this code is subject to the SFEVAP5A.6
C restrictions as set forth in the contract. SFEVAP5A.7
C SFEVAP5A.8
C Meteorological Office SFEVAP5A.9
C London Road SFEVAP5A.10
C BRACKNELL SFEVAP5A.11
C Berkshire UK SFEVAP5A.12
C RG12 2SZ SFEVAP5A.13
C SFEVAP5A.14
C If no contract has been raised with this copy of the code, the use, SFEVAP5A.15
C duplication or disclosure of it is strictly prohibited. Permission SFEVAP5A.16
C to do so must first be obtained in writing from the Head of Numerical SFEVAP5A.17
C Modelling at the above address. SFEVAP5A.18
C ******************************COPYRIGHT****************************** SFEVAP5A.19
C*LL SUBROUTINE SF_EVAP------------------------------------------------ SFEVAP5A.20
CLL SFEVAP5A.21
CLL Purpose: Calculate surface evaporation and sublimation amounts SFEVAP5A.22
CLL (without applying them to the surface stores). SFEVAP5A.23
CLL Also calculate heat flux due to sea-ice melting. SFEVAP5A.24
CLL Also calculate 1.5 metre T and Q. SFEVAP5A.25
CLL SFEVAP5A.26
CLL SFEVAP5A.27
CLL Suitable for single column usage. SFEVAP5A.28
CLL SFEVAP5A.29
CLL Model Modification history: SFEVAP5A.30
CLL version Date SFEVAP5A.31
CLL SFEVAP5A.32
CLL 4.1 New deck. SFEVAP5A.33
CLL 4.2 Oct. 96 T3E migration - *DEF CRAY removed GSS2F402.289
CLL S J Swarbrick GSS2F402.290
CLL 4.5 Jul. 98 Kill the IBM specific lines (JCThil) AJC1F405.126
CLL SFEVAP5A.34
CLL Programming standard: Unified Model Documentation Paper No 4, SFEVAP5A.35
CLL version 2, dated 18/1/90. SFEVAP5A.36
CLL SFEVAP5A.37
CLL Logical component covered: P245. SFEVAP5A.38
CLL SFEVAP5A.39
CLL System task: SFEVAP5A.40
CLL SFEVAP5A.41
CLL Documentation: UMDP 24 SFEVAP5A.42
CLL SFEVAP5A.43
CLL--------------------------------------------------------------------- SFEVAP5A.44
C* SFEVAP5A.45
C*L Arguments :--------------------------------------------------------- SFEVAP5A.46
SUBROUTINE SF_EVAP ( 4,14SFEVAP5A.47
+ P_FIELD,P1,LAND_FIELD,LAND1 SFEVAP5A.48
+,POINTS,BL_LEVELS,LAND_MASK,LAND_PTS,LAND_INDEX SFEVAP5A.52
+,ALPHA1,ASURF,ASHTF,CANOPY,CATCH SFEVAP5A.54
+,DTRDZ,DTRDZ_RML,E_SEA,FRACA SFEVAP5A.55
+,ICE_FRACT,NRML,RHOKH_1,SMC,TIMESTEP,CER1P5M,CHR1P5M SFEVAP5A.56
+,PSTAR,RESFS,RESFT,Z1,Z0M,Z0H,SQ1P5,ST1P5,SIMLT,SMLT SFEVAP5A.57
+,FTL,FQW,LYING_SNOW,QW,SURF_HT_FLUX SFEVAP5A.58
+,TL,TSTAR,TI,ECAN,ES,EI SFEVAP5A.59
+,SICE_MLT_HTF,SNOMLT_SURF_HTF,SNOWMELT SFEVAP5A.60
+,Q1P5M,T1P5M,LTIMER SFEVAP5A.61
+) SFEVAP5A.62
IMPLICIT NONE SFEVAP5A.63
LOGICAL LTIMER SFEVAP5A.64
INTEGER SFEVAP5A.65
+ P_FIELD ! IN No. of gridpoints in the whole grid. SFEVAP5A.66
+,P1 ! IN 1st P-pt in full field to be processed. SFEVAP5A.67
+,LAND_FIELD ! IN No. of landpoints in the whole grid. SFEVAP5A.68
+,LAND1 ! IN 1st L-pt in full field to be processed. SFEVAP5A.69
+,POINTS ! IN No. of gridpoints to be processed. SFEVAP5A.70
+,BL_LEVELS ! IN No. of levels treated by b.l. scheme. SFEVAP5A.71
+,LAND_PTS ! IN No. of land points to be processed. SFEVAP5A.72
LOGICAL SFEVAP5A.73
+ LAND_MASK(P_FIELD) ! IN T for land points, F otherwise. SFEVAP5A.74
INTEGER SFEVAP5A.76
+ LAND_INDEX(P_FIELD) ! IN Index of land points on the P-grid. SFEVAP5A.77
C ! The ith element contains the position SFEVAP5A.78
C ! in whole grid of the ith land point. SFEVAP5A.79
REAL SFEVAP5A.81
+ ALPHA1(P_FIELD) ! IN Gradient of saturated specific SFEVAP5A.82
C ! humidity with respect to temp. SFEVAP5A.83
C ! between the bottom model layer SFEVAP5A.84
C ! and the surface. SFEVAP5A.85
+,ASURF(P_FIELD) ! IN Soil coefficient from P242 (sq m K per SFEVAP5A.86
C ! per Joule * timestep). SFEVAP5A.87
+,ASHTF(P_FIELD) ! IN Coefficient to calculate SFEVAP5A.88
C ! the soil heat flux SFEVAP5A.89
C ! between the surface and top soil SFEVAP5A.90
C ! layer (W/m2/K) SFEVAP5A.91
+,CANOPY(LAND_FIELD) ! IN Gridbox mean canopy / surface water SFEVAP5A.92
C ! store (kg per sq m). SFEVAP5A.93
+,CATCH(LAND_FIELD) ! IN Canopy / surface water store capacity SFEVAP5A.94
C ! (kg per sq m). SFEVAP5A.95
+,DTRDZ(P_FIELD, ! IN -g.dt/dp for each model layer on p-grid SFEVAP5A.96
+ BL_LEVELS) ! From P244 ((kg/sq m/s)**-1). SFEVAP5A.97
+,DTRDZ_RML(P_FIELD) ! IN -g.dt/dp for the rapidly mixing layer SFEVAP5A.98
C ! (if it exists) on the p-grid from P244. SFEVAP5A.99
+,E_SEA(P_FIELD) ! IN Evaporation from sea (weighted with SFEVAP5A.100
C ! leads fraction at sea-ice points). SFEVAP5A.101
+,FRACA(P_FIELD) ! IN Fraction of surface moisture flux SFEVAP5A.102
C ! with only aerodynamic resistance. SFEVAP5A.103
C ! Diagnostics defined on land and sea. SFEVAP5A.105
+,ICE_FRACT(P_FIELD) ! IN Fraction of gridbox which is covered by SFEVAP5A.107
C ! sea-ice (decimal fraction, but most of SFEVAP5A.108
C ! this sub-component assumes it to be SFEVAP5A.109
C ! either 1.0 or 0.0 precisely). SFEVAP5A.110
C ! NB Dimension is PFIELD not LAND_FIELD f SFEVAP5A.112
C ! snow on sea-ice in coupled model runs. SFEVAP5A.113
+,SMC(LAND_FIELD) ! IN Soil moisture content (kg per sq m). SFEVAP5A.115
+,TIMESTEP ! IN Timestep (sec). SFEVAP5A.116
LOGICAL SFEVAP5A.117
+ SQ1P5 ! IN STASH flag for 1.5-metre sp humidity. SFEVAP5A.118
+,ST1P5 ! IN STASH flag for 1.5-metre temperature. SFEVAP5A.119
+,SIMLT ! IN STASH flag for sea-ice melting ht flux. SFEVAP5A.120
+,SMLT ! IN STASH flag for snow melting ht flux. SFEVAP5A.121
REAL SFEVAP5A.122
+ CER1P5M(P_FIELD) ! IN Transfer coefficient ratio, from P243. SFEVAP5A.123
+,CHR1P5M(P_FIELD) ! IN Transfer coefficient ratio, from P243. SFEVAP5A.124
+,PSTAR(P_FIELD) ! IN Surface pressure (Pa). SFEVAP5A.125
+,RESFS(P_FIELD) ! IN Combined soil, stomatal and SFEVAP5A.126
C ! aerodynamic resistance factor SFEVAP5A.127
+,RESFT(P_FIELD) ! IN Total resistance factor SFEVAP5A.128
C ! FRACA+(1-FRACA)*RESFS. SFEVAP5A.129
+,Z1(P_FIELD) ! IN Height of lowest atmospheric level SFEVAP5A.130
C ! (i.e. middle of lowest layer). Metres. SFEVAP5A.131
+,Z0M(P_FIELD) ! IN Roughness length for momentum (m) SFEVAP5A.132
+,Z0H(P_FIELD) ! IN Roughness length for heat and moisture SFEVAP5A.133
INTEGER SFEVAP5A.134
& NRML(P_FIELD) ! IN The Number of model layers in the SFEVAP5A.135
C ! Rapidly Mixing Layer. SFEVAP5A.136
REAL SFEVAP5A.137
+ RHOKH_1(P_FIELD) ! IN Turbulent surface exchange SFEVAP5A.138
C ! coefficient for sensible heat. SFEVAP5A.139
+,FTL(P_FIELD, ! INOUT Sensible heat flux from layer k-1 to SFEVAP5A.140
+ BL_LEVELS) ! layer k (W/sq m). From P243 and SFEVAP5A.141
C ! P244, units changed in P24 top level. SFEVAP5A.142
+,FQW(P_FIELD, ! INOUT Turbulent moisture flux from level SFEVAP5A.143
+ BL_LEVELS) ! k-1 to k (kg/sq m/s). From P243/4. SFEVAP5A.144
C ! Diagnostics defined on land and sea. SFEVAP5A.146
+,LYING_SNOW(P_FIELD) ! INOUT Lying snow (kg per sq m). SFEVAP5A.148
+,QW(P_FIELD,BL_LEVELS)! INOUT Total water content (kg(water)/ SFEVAP5A.149
C ! kg(air)). From P243/4. SFEVAP5A.150
C SFEVAP5A.151
+,SURF_HT_FLUX(P_FIELD)! INOUT Net downward heat flux at surface SFEVAP5A.152
C ! over land or sea-ice fraction of SFEVAP5A.153
C ! gridbox (W/m2). SFEVAP5A.154
+,TSTAR(P_FIELD) ! INOUT Surface temperature (K). SFEVAP5A.155
+,TI(P_FIELD) ! INOUT Sea-ice surface layer temp. (K). SFEVAP5A.156
+,TL(P_FIELD,BL_LEVELS)! INOUT Liquid/frozen water temperature (K). SFEVAP5A.157
REAL SFEVAP5A.158
+ ECAN(P_FIELD) ! OUT Gridbox mean evaporation from canopy/ SFEVAP5A.159
C ! surface store (kg per sq m per s). SFEVAP5A.160
C ! Zero over sea and sea-ice. SFEVAP5A.161
+,ES(P_FIELD) ! OUT Surface evapotranspiration (through SFEVAP5A.162
C ! a resistance which is not entirely SFEVAP5A.163
C ! aerodynamic). Always non-negative. SFEVAP5A.164
C ! Kg per sq m per sec. SFEVAP5A.165
C ! Diagnostics defined on land and sea. SFEVAP5A.167
+,EI(P_FIELD) ! OUT Sublimation from lying snow or sea- SFEVAP5A.169
C ! ice (kg per sq m per s). SFEVAP5A.170
REAL SFEVAP5A.171
+ SICE_MLT_HTF(P_FIELD)! OUT Heat flux due to melting of sea-ice SFEVAP5A.172
C ! (Watts per square metre). SFEVAP5A.173
+,SNOMLT_SURF_HTF(P_FIELD)! OUT Heat flux due to surface melting SFEVAP5A.174
C ! of snow (W/m2). SFEVAP5A.175
+,SNOWMELT(P_FIELD) ! OUT Surface snowmelt (kg/m2/s). SFEVAP5A.176
+,Q1P5M(P_FIELD) ! OUT Specific humidity at screen height of SFEVAP5A.177
C ! 1.5 metres (kg water per kg air). SFEVAP5A.178
+,T1P5M(P_FIELD) ! OUT Temperature at 1.5 metres above the SFEVAP5A.179
C ! surface (K). SFEVAP5A.180
C* SFEVAP5A.181
C*L External subprogram(s) required :- SFEVAP5A.182
EXTERNAL QSAT,SF_MELT SFEVAP5A.183
EXTERNAL TIMER SFEVAP5A.184
C* SFEVAP5A.185
C*L Local and other symbolic constants used :- SFEVAP5A.186
*CALL C_0_DG_C
SFEVAP5A.187
*CALL C_LHEAT
SFEVAP5A.188
*CALL C_G
SFEVAP5A.189
*CALL C_HT_M
! Contains Z1P5M SFEVAP5A.190
*CALL C_R_CP
SFEVAP5A.191
*CALL C_GAMMA
SFEVAP5A.192
*CALL C_KAPPAI
SFEVAP5A.193
REAL GRCP SFEVAP5A.194
PARAMETER ( SFEVAP5A.195
+ GRCP=G/CP ! Accn due to gravity / standard heat capacity of SFEVAP5A.196
C ! air at const pressure. Used in diagnosis of 1.5 SFEVAP5A.197
C ! metre temperature. SFEVAP5A.198
+) SFEVAP5A.199
C* SFEVAP5A.200
REAL SFEVAP5A.202
+ DFQW(P_FIELD) ! Adjustment increment to the flux of SFEVAP5A.203
C ! total water SFEVAP5A.204
+,DIFF_SENS_HTF(P_FIELD)! Adjustment increment to the sensible SFEVAP5A.205
C ! heat flux SFEVAP5A.206
+,DQW(P_FIELD) ! Increment to specific humidity SFEVAP5A.207
+,DTL(P_FIELD) ! Increment to temperature SFEVAP5A.208
+,DTRDZ_1(P_FIELD) ! -g.dt/dp for surface layer or rml if it SFEVAP5A.209
C ! exists from P244 ((kg/sq m/s)**-1). SFEVAP5A.210
+,EOLD(P_FIELD) ! Used to store initial value of evap. SFEVAP5A.211
C ! from P244 SFEVAP5A.212
+,EW(P_FIELD) ! Total surface flux of water, excluding SFEVAP5A.213
C ! sublimation/frost deposition, over land. SFEVAP5A.214
+,LEOLD(P_FIELD) ! Used to store initial value of latent SFEVAP5A.215
C ! heat flux from P244 SFEVAP5A.216
+,QS(P_FIELD) ! Used for saturated specific humidity SFEVAP5A.217
C ! at surface, in Q1P5M calculation. SFEVAP5A.218
+,RHOKH1_PRIME(P_FIELD) ! Modified forward time-weighted transfer SFEVAP5A.219
C ! coefficient SFEVAP5A.220
C Local scalars SFEVAP5A.243
REAL SFEVAP5A.244
+ DIFF_LAT_HTF ! Increment to the latent heat flux. SFEVAP5A.245
+,DIFF_SURF_HTF ! Increment to the surface heat flux. SFEVAP5A.246
+,DTSTAR ! Increment for surface temperature. SFEVAP5A.247
+,EA ! Surface evaporation with only aero- SFEVAP5A.248
C ! dynamic resistance (+ve), or condens- SFEVAP5A.249
C ! ation (-ve), averaged over gridbox SFEVAP5A.250
C ! (kg/m2/s). SFEVAP5A.251
+,EADT ! EA (q.v.) integrated over timestep. SFEVAP5A.252
+,ECANDT ! ECAN (q.v.) integrated over timestep. SFEVAP5A.253
+,EDT ! E=FQW(,1) (q.v.) integrated over timestep. SFEVAP5A.254
+,EIDT ! EI (q.v.) integrated over timestep. SFEVAP5A.255
+,ESDT ! ES (q.v.) integrated over timestep. SFEVAP5A.256
+,ESL ! ES (q.v.) without fractional weighting SFEVAP5A.257
C ! factor FRACS ('L' is for 'local') SFEVAP5A.258
C ! (kg/m2/s). SFEVAP5A.259
+,ESLDT ! ESL (q.v.) integrated over timestep. SFEVAP5A.260
+,FRACS ! Fraction of gridbox at which moisture flux SFEVAP5A.261
C ! is additionally impeded by a surface and/or SFEVAP5A.262
C ! stomatal resistance. SFEVAP5A.263
INTEGER SFEVAP5A.264
+ I ! Loop counter - full horizontal field index. SFEVAP5A.265
+,L ! Loop counter - land field index. SFEVAP5A.266
+,K ! Loop counter in the vertical. SFEVAP5A.267
+,KM1 ! K - 1 SFEVAP5A.268
C SFEVAP5A.269
C----------------------------------------------------------------------- SFEVAP5A.270
CL 1. Initialise some output variables and flux increments to zero. SFEVAP5A.271
C----------------------------------------------------------------------- SFEVAP5A.272
C SFEVAP5A.273
IF (LTIMER) THEN SFEVAP5A.274
CALL TIMER
('SFEVAP ',3) SFEVAP5A.275
ENDIF SFEVAP5A.276
DO 1 I=P1,P1+POINTS-1 SFEVAP5A.277
ECAN(I) = 0.0 SFEVAP5A.278
EI(I) = 0.0 SFEVAP5A.279
DIFF_SENS_HTF(I) = 0.0 SFEVAP5A.280
DFQW(I) = 0.0 SFEVAP5A.281
1 CONTINUE SFEVAP5A.282
C SFEVAP5A.283
C--------------------------------------------------------------------- SFEVAP5A.284
CL 2. Do calculations for land points. SFEVAP5A.285
C--------------------------------------------------------------------- SFEVAP5A.286
C SFEVAP5A.287
CMIC$ DO ALL VECTOR SHARED(P_FIELD, LAND_FIELD, BL_LEVELS, LAND1, SFEVAP5A.288
CMIC$1 LAND_PTS, LAND_INDEX, ESL, TIMESTEP, ES, LYING_SNOW, ECAN, SFEVAP5A.289
CMIC$2 EA, CATCH, CANOPY, SMC, EI, TSTAR, FQW, EOLD, LEOLD, SFEVAP5A.290
CMIC$3 P1,POINTS,LC,LF,TM,LAND_MASK,EW,FRACA,RESFT,RESFS) SFEVAP5A.291
CMIC$4 PRIVATE(I, L, ESLDT, SFEVAP5A.292
CMIC$5 ESDT, EADT, EDT, ECANDT, FRACS, EIDT) SFEVAP5A.293
CDIR$ IVDEP SFEVAP5A.294
! Fujitsu vectorization directive GRB0F405.451
!OCL NOVREC GRB0F405.452
DO 2 L=LAND1,LAND1+LAND_PTS-1 SFEVAP5A.300
I = LAND_INDEX(L) SFEVAP5A.301
IF (FQW(I,1).EQ.0.0) THEN SFEVAP5A.303
EA = 0.0 SFEVAP5A.304
ESL = 0.0 SFEVAP5A.305
ELSE SFEVAP5A.306
EA = FQW(I,1) / RESFT(I) * FRACA(I) SFEVAP5A.307
ESL = FQW(I,1) / RESFT(I) * RESFS(I) SFEVAP5A.308
END IF SFEVAP5A.309
ES(I) = ESL * (1. - FRACA(I)) SFEVAP5A.310
C SFEVAP5A.311
C----------------------------------------------------------------------- SFEVAP5A.312
CL 2.1 Calculate fluxes integrated over timestep. SFEVAP5A.313
C----------------------------------------------------------------------- SFEVAP5A.314
C SFEVAP5A.315
ESLDT = ESL * TIMESTEP SFEVAP5A.316
EADT = EA * TIMESTEP SFEVAP5A.317
ESDT = ES(I) * TIMESTEP SFEVAP5A.318
EDT = EADT + ESDT SFEVAP5A.319
C SFEVAP5A.320
C----------------------------------------------------------------------- SFEVAP5A.321
CL 2.2 Do calculations for snow-free land. Canopy processes operate. SFEVAP5A.322
CL LYING_SNOW is defined on sea and land points for snow on sea-ice SFEVAP5A.324
CL in coupled model runs. SFEVAP5A.325
C----------------------------------------------------------------------- SFEVAP5A.327
C SFEVAP5A.328
IF (LYING_SNOW(I).LE.0.0) THEN SFEVAP5A.329
C SFEVAP5A.330
C********************************************************************** SFEVAP5A.331
C Store initial value of evaporation and latent heat flux SFEVAP5A.332
C********************************************************************** SFEVAP5A.333
C SFEVAP5A.334
EOLD(I) = FQW(I,1) SFEVAP5A.335
LEOLD(I) = FQW(I,1) * LC SFEVAP5A.336
IF (EDT.GE.0.0) THEN SFEVAP5A.337
C SFEVAP5A.338
C----------------------------------------------------------------------- SFEVAP5A.339
CL 2.2.1 Non-negative moisture flux over snow-free land. SFEVAP5A.340
C----------------------------------------------------------------------- SFEVAP5A.341
C SFEVAP5A.342
C- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - SFEVAP5A.343
CL (a) Water in canopy and soil is assumed to be liquid, so all SFEVAP5A.344
CL positive moisture flux over snow-free land is evaporation SFEVAP5A.345
CL rather than sublimation, even if TSTAR is less than or equal SFEVAP5A.346
CL to TM. SFEVAP5A.347
C- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - SFEVAP5A.348
C SFEVAP5A.349
ECAN(I) = EA SFEVAP5A.350
ECANDT = EADT SFEVAP5A.351
C SFEVAP5A.352
C If EDT is non-negative, then ECANDT must be non-negative. SFEVAP5A.353
C SFEVAP5A.354
FRACA(I) = 0.0 SFEVAP5A.355
IF (CATCH(L).GT.0.0) SFEVAP5A.356
+ FRACA(I) = CANOPY(L) / CATCH(L) SFEVAP5A.357
IF (CANOPY(L).LT.ECANDT) THEN SFEVAP5A.358
C SFEVAP5A.359
C- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - SFEVAP5A.360
CL (b) It is assumed that any 'canopy' moisture flux in excess of the SFEVAP5A.361
CL current canopy water amount is in fact soil evaporation. SFEVAP5A.362
C- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - SFEVAP5A.363
C SFEVAP5A.364
C This situation is highly improbable - it will occur at, at SFEVAP5A.365
C most, a few gridpoints in any given timestep. SFEVAP5A.366
C SFEVAP5A.367
FRACS = 1.0 - FRACA(I)*( CANOPY(L) / ECANDT ) SFEVAP5A.368
ESDT = ESLDT * FRACS SFEVAP5A.369
ECANDT = CANOPY(L) SFEVAP5A.370
ECAN(I) = ECANDT / TIMESTEP SFEVAP5A.371
ES(I) = ESDT / TIMESTEP SFEVAP5A.372
ENDIF SFEVAP5A.373
C SFEVAP5A.374
C (The canopy store is depleted by evaporation in P252, and not here, SFEVAP5A.375
C according to the formula: CANOPY=CANOPY-ECANDT) SFEVAP5A.376
C SFEVAP5A.377
C- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - SFEVAP5A.378
CL (c) Adjustments to evaporation from soil as calculated so far :- SFEVAP5A.379
C- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - SFEVAP5A.380
C SFEVAP5A.381
IF (SMC(L).LE.0.0) THEN SFEVAP5A.382
C SFEVAP5A.383
CL (i) If there is currently no soil moisture, there must be no SFEVAP5A.384
CL evaporation of soil moisture, so this flux is set to zero. SFEVAP5A.385
C SFEVAP5A.386
ESDT = 0.0 SFEVAP5A.387
ES(I) = 0.0 SFEVAP5A.388
ELSEIF (SMC(L).LT.ESDT) THEN SFEVAP5A.389
C SFEVAP5A.390
CL (ii) Ensure that the soil evaporation is not greater than the SFEVAP5A.391
CL current soil moisture store. SFEVAP5A.392
C This situation is extremely unlikely at any given gridpoint SFEVAP5A.393
C at any given timestep. SFEVAP5A.394
C SFEVAP5A.395
ESDT = SMC(L) SFEVAP5A.396
ES(I) = ESDT / TIMESTEP SFEVAP5A.397
ENDIF SFEVAP5A.398
C SFEVAP5A.399
C (The soil moisture store is depleted by evaporation in P253, and not SFEVAP5A.400
C here, using the formula: SMC=SMC-ESDT) SFEVAP5A.401
C SFEVAP5A.402
EW(I) = ECAN(I) + ES(I) SFEVAP5A.403
EI(I) = 0.0 SFEVAP5A.404
C SFEVAP5A.405
C----------------------------------------------------------------------- SFEVAP5A.406
CL 2.2.2 Negative moisture flux onto snow-free land above freezing SFEVAP5A.407
C----------------------------------------------------------------------- SFEVAP5A.408
CL (i.e. condensation onto snow-free land). The whole flux is SFEVAP5A.409
CL into the surface/canopy store. SFEVAP5A.410
C SFEVAP5A.411
ELSEIF (TSTAR(I).GT.TM) THEN ! ELSE of evaporation / SFEVAP5A.412
C ! condensation block. SFEVAP5A.413
C SFEVAP5A.414
C Condensation implies ES=0, so ECAN=EA=EW=E (=FQW(,1)) SFEVAP5A.415
C SFEVAP5A.416
ECAN(I) = FQW(I,1) SFEVAP5A.417
ES(I) = 0.0 SFEVAP5A.418
EW(I) = ECAN(I) SFEVAP5A.419
EI(I) = 0.0 SFEVAP5A.420
C SFEVAP5A.421
C (The canopy store is augmented by interception of condensation at SFEVAP5A.422
C P252, and not here.) SFEVAP5A.423
C SFEVAP5A.424
C----------------------------------------------------------------------- SFEVAP5A.425
CL 2.2.3 Negative moisture flux onto snow-free land below freezing SFEVAP5A.426
CL (i.e. deposition of frost). SFEVAP5A.427
C----------------------------------------------------------------------- SFEVAP5A.428
C SFEVAP5A.429
ELSE ! ELSE of condensation / frost deposition block. SFEVAP5A.430
EI(I) = FQW(I,1) SFEVAP5A.431
ES(I) = 0.0 SFEVAP5A.432
EW(I) = 0.0 SFEVAP5A.433
C SFEVAP5A.434
C (Negative EI is used to increment the snowdepth store - there is SFEVAP5A.435
C no separate "frost" store. This incrementing is done in P251, SFEVAP5A.436
C according to: LYING_SNOW = LYING_SNOW - EI*TIMESTEP) SFEVAP5A.437
C SFEVAP5A.438
ENDIF ! End of evaporation/condensation/deposition block. SFEVAP5A.439
C SFEVAP5A.440
C----------------------------------------------------------------------- SFEVAP5A.441
CL 2.3 Do calculations for snow-covered land. SFEVAP5A.442
C----------------------------------------------------------------------- SFEVAP5A.443
C SFEVAP5A.444
ELSEIF (LYING_SNOW(I).LE.EDT) THEN ! ELSEIF of no-snow. SFEVAP5A.445
C SFEVAP5A.446
C********************************************************************** SFEVAP5A.447
C Store initial value of evaporation and latent heat flux SFEVAP5A.448
C********************************************************************** SFEVAP5A.449
C SFEVAP5A.450
EOLD(I) = FQW(I,1) SFEVAP5A.451
LEOLD(I) = FQW(I,1) * ( LC + LF ) SFEVAP5A.452
C SFEVAP5A.453
C----------------------------------------------------------------------- SFEVAP5A.454
CL 2.3.1 Shallow snow (lying snow or frost which is being exhausted SFEVAP5A.455
CL by evaporation). All the snow is sublimated, the remaining SFEVAP5A.456
CL moisture flux being taken from the canopy and soil, with all SFEVAP5A.457
CL the palaver of section 1.2.1 above. SFEVAP5A.458
C----------------------------------------------------------------------- SFEVAP5A.459
C SFEVAP5A.460
C This is extremely unlikely at more than one or two gridpoints SFEVAP5A.461
C at any given timestep, yet the complicated logic probably SFEVAP5A.462
C slows down the routine considerably - this section is a SFEVAP5A.463
C suitable candidate for further consideration as regards SFEVAP5A.464
C making the model optimally efficient. SFEVAP5A.465
C SFEVAP5A.466
EI(I) = LYING_SNOW(I) / TIMESTEP SFEVAP5A.467
EIDT = LYING_SNOW(I) SFEVAP5A.468
C SFEVAP5A.469
C Set EDT = ( E - SNOSUB ) * TIMESTEP. This is the moisture in kg per SFEVAP5A.470
C square metre left over to be evaporated from the canopy and soil. SFEVAP5A.471
C N.B. E=FQW(,1) SFEVAP5A.472
C SFEVAP5A.473
EDT = EDT - EIDT SFEVAP5A.474
C SFEVAP5A.475
C (Snowdepth is decreased using EI at P251, and not here. The formula SFEVAP5A.476
C used is simply: LYING_SNOW = LYING_SNOW - EI*TIMESTEP.) SFEVAP5A.477
C SFEVAP5A.478
C Now that all the snow has sublimed, canopy processes come into SFEVAP5A.479
C operation (FRACA no longer necessarily equal to 1). SFEVAP5A.480
C SFEVAP5A.481
FRACA(I) = 0.0 SFEVAP5A.482
IF (CATCH(L).GT.0.0) SFEVAP5A.483
+ FRACA(I) = CANOPY(L) / CATCH(L) SFEVAP5A.484
ECANDT = EDT * FRACA(I) SFEVAP5A.485
IF (CANOPY(L).LT.ECANDT) THEN SFEVAP5A.486
C SFEVAP5A.487
C Dry out the canopy completely and assume the remaining moisture flux SFEVAP5A.488
C is soil evaporation. SFEVAP5A.489
C SFEVAP5A.490
FRACS = 1.0 - FRACA(I)*( CANOPY(L) / ECANDT ) SFEVAP5A.491
ESDT = EDT * FRACS SFEVAP5A.492
ECANDT = CANOPY(L) SFEVAP5A.493
ELSE SFEVAP5A.494
C SFEVAP5A.495
C Calculate soil evaporation. SFEVAP5A.496
C SFEVAP5A.497
FRACS = 1.0 - FRACA(I) SFEVAP5A.498
ESDT = EDT * FRACS SFEVAP5A.499
ENDIF SFEVAP5A.500
ECAN(I) = ECANDT / TIMESTEP SFEVAP5A.501
ES(I) = ESDT / TIMESTEP SFEVAP5A.502
C SFEVAP5A.503
C (ECAN is used to deplete the canopy store at P252, and not here. The SFEVAP5A.504
C formula used is simply: CANOPY = CANOPY - ECAN*TIMESTEP.) SFEVAP5A.505
C SFEVAP5A.506
C Evaporation from soil. SFEVAP5A.507
C SFEVAP5A.508
IF (SMC(L).LE.0.0) THEN SFEVAP5A.509
C SFEVAP5A.510
C No evaporation from soil possible when there is no soil moisture. SFEVAP5A.511
C SFEVAP5A.512
ESDT = 0.0 SFEVAP5A.513
ES(I) = 0.0 SFEVAP5A.514
ELSEIF (SMC(L).LT.ESDT) THEN SFEVAP5A.515
C SFEVAP5A.516
C Limit evaporation of soil moisture in the extremely unlikely event SFEVAP5A.517
C that soil moisture is exhausted by the evaporation left over from SFEVAP5A.518
C sublimation which exhausted the snow store. SFEVAP5A.519
C SFEVAP5A.520
ESDT = SMC(L) SFEVAP5A.521
ES(I) = ESDT / TIMESTEP SFEVAP5A.522
ENDIF SFEVAP5A.523
C SFEVAP5A.524
C (ES is used to deplete the soil moisture store at P253, and not here, SFEVAP5A.525
C according to the formula: SMC = SMC - ES*TIMESTEP.) SFEVAP5A.526
C SFEVAP5A.527
EW(I) = ECAN(I) + ES(I) SFEVAP5A.528
C SFEVAP5A.529
C----------------------------------------------------------------------- SFEVAP5A.530
CL 2.3.2 Deep snow (i.e. not being exhausted by evaporation). This SFEVAP5A.531
CL covers two cases: (a) sublimation from deep snow (if total SFEVAP5A.532
CL moisture flux over the timestep is non-negative but less than SFEVAP5A.533
CL the lying snow amount), and (b) deposition onto an already SFEVAP5A.534
CL snowy surface (if the total moisture flux is negative and SFEVAP5A.535
CL the lying snow amount is positive). SFEVAP5A.536
C----------------------------------------------------------------------- SFEVAP5A.537
C SFEVAP5A.538
ELSE ! ELSE of shallow snow / deep snow block. SFEVAP5A.539
EI(I) = FQW(I,1) SFEVAP5A.540
EW(I) = 0.0 SFEVAP5A.541
C SFEVAP5A.542
C********************************************************************** SFEVAP5A.543
C Store initial value of evaporation and latent heat flux SFEVAP5A.544
C********************************************************************** SFEVAP5A.545
C SFEVAP5A.546
EOLD(I) = FQW(I,1) SFEVAP5A.547
LEOLD(I) = FQW(I,1) * ( LC + LF ) SFEVAP5A.548
C SFEVAP5A.549
C (EI is used to increase or decrease the snowdepth at P251, and not SFEVAP5A.550
C here, according to the formula: SFEVAP5A.551
C LYING_SNOW = LYING_SNOW - EI*TIMESTEP . ) SFEVAP5A.552
C SFEVAP5A.553
ENDIF ! End of no snow/shallow snow/deep snow block. SFEVAP5A.554
FQW(I,1) = EW(I) + EI(I) SFEVAP5A.555
2 CONTINUE SFEVAP5A.557
C SFEVAP5A.558
C Split loop 2 here so that it will vectorise. SFEVAP5A.559
C SFEVAP5A.560
CMIC$ DO ALL VECTOR SHARED(DTRDZ_1,DTRDZ,RHOKH_1,GAMMA, SFEVAP5A.561
CMIC$1 NRML,DTRDZ_RML,EI,EW,LEOLD,DIFF_LAT_HTF,FQW, SFEVAP5A.562
CMIC$2 EOLD,DFQW,ASHTF,DIFF_SENS_HTF,DIFF_SURF_HTF, SFEVAP5A.563
CMIC$3 ASURF,TIMESTEP,TSTAR,LAND_INDEX,RHOKH1_PRIME, SFEVAP5A.564
CMIC$4 SURF_HT_FLUX) PRIVATE(DTSTAR,I,L) SFEVAP5A.565
CDIR$ IVDEP SFEVAP5A.566
! Fujitsu vectorization directive GRB0F405.453
!OCL NOVREC GRB0F405.454
DO 24 L=LAND1,LAND1+LAND_PTS-1 SFEVAP5A.567
I = LAND_INDEX(L) SFEVAP5A.568
C SFEVAP5A.570
C*********************************************************************** SFEVAP5A.571
C 2.4 Calculate increments to surface and subsurface temperatures, SFEVAP5A.572
C surface heat and moisture fluxes and soil heat flux. Apply SFEVAP5A.573
C increments to TSTAR to give interim values before any SFEVAP5A.574
C snowmelt. SFEVAP5A.575
C*********************************************************************** SFEVAP5A.576
IF (NRML(I).GE.2) THEN SFEVAP5A.577
DTRDZ_1(I) = DTRDZ_RML(I) SFEVAP5A.578
ELSE SFEVAP5A.579
DTRDZ_1(I) = DTRDZ(I,1) SFEVAP5A.580
ENDIF SFEVAP5A.581
RHOKH1_PRIME(I) = 1.0 / ( 1.0 / RHOKH_1(I) SFEVAP5A.582
& + GAMMA(1) * DTRDZ_1(I) ) SFEVAP5A.583
DIFF_LAT_HTF = (LC + LF) * EI(I) + LC * EW(I) - LEOLD(I) SFEVAP5A.584
DFQW(I) = FQW(I,1) - EOLD(I) SFEVAP5A.585
DIFF_SENS_HTF(I) = - DIFF_LAT_HTF / SFEVAP5A.586
& ( 1. + ASHTF(I) /(RHOKH1_PRIME(I) * CP) ) SFEVAP5A.587
DIFF_SURF_HTF = - DIFF_LAT_HTF / ( 1.0 + SFEVAP5A.588
& RHOKH1_PRIME(I) * CP / ASHTF(I) ) SFEVAP5A.589
SURF_HT_FLUX(I) = SURF_HT_FLUX(I) + DIFF_SURF_HTF SFEVAP5A.590
DTSTAR = DIFF_SURF_HTF / ASHTF(I) SFEVAP5A.591
TSTAR(I) = TSTAR(I) + DTSTAR SFEVAP5A.592
24 CONTINUE SFEVAP5A.596
C SFEVAP5A.598
C----------------------------------------------------------------------- SFEVAP5A.599
CL 2.5 Do calculations for sea points. SFEVAP5A.600
C----------------------------------------------------------------------- SFEVAP5A.601
C SFEVAP5A.602
CMIC$ DO ALL VECTOR SHARED(P_FIELD, BL_LEVELS, P1, POINTS,NRML, SFEVAP5A.604
CMIC$1 LAND_MASK, ES, ECAN, EI, EOLD, SFEVAP5A.605
CMIC$2 ICE_FRACT, FQW, E_SEA,DTRDZ_RML, SFEVAP5A.606
CMIC$3 TSTAR, SMLT, SICE_MLT_HTF, KAPPAI, SFEVAP5A.607
CMIC$4 DTRDZ_1,DTRDZ,RHOKH_1,GAMMA,RHOKH1_PRIME, SFEVAP5A.608
CMIC$5 TIMESTEP,TM,TFS) PRIVATE(I, TSTARMAX) SFEVAP5A.609
CDIR$ IVDEP SFEVAP5A.610
! Fujitsu vectorization directive GRB0F405.455
!OCL NOVREC GRB0F405.456
DO 25 I=P1,P1+POINTS-1 SFEVAP5A.611
IF (.NOT.LAND_MASK(I)) THEN SFEVAP5A.612
C SFEVAP5A.614
C----------------------------------------------------------------------- SFEVAP5A.615
CL 2.5.1 Set soil and canopy evaporation amounts to zero, and set SFEVAP5A.616
CL sublimation to zero for liquid sea points. SFEVAP5A.617
C----------------------------------------------------------------------- SFEVAP5A.618
C SFEVAP5A.619
ES(I) = 0.0 SFEVAP5A.620
ECAN(I) = 0.0 SFEVAP5A.621
EI(I) = 0.0 SFEVAP5A.622
C----------------------------------------------------------------------- SFEVAP5A.623
CL 2.5.3 For sea-ice points :- SFEVAP5A.624
C----------------------------------------------------------------------- SFEVAP5A.625
C SFEVAP5A.626
IF (ICE_FRACT(I).GT.0.0) THEN SFEVAP5A.627
EOLD(I) = FQW(I,1) SFEVAP5A.628
EI(I) = FQW(I,1) - E_SEA(I) SFEVAP5A.629
IF (NRML(I).GE.2) THEN SFEVAP5A.630
DTRDZ_1(I) = DTRDZ_RML(I) SFEVAP5A.631
ELSE SFEVAP5A.632
DTRDZ_1(I) = DTRDZ(I,1) SFEVAP5A.633
ENDIF SFEVAP5A.634
RHOKH1_PRIME(I) = 1.0 / ( 1.0 / RHOKH_1(I) SFEVAP5A.635
& + ICE_FRACT(I)*GAMMA(1)*DTRDZ_1(I) ) SFEVAP5A.636
ENDIF ! End of liquid sea/sea-ice block. SFEVAP5A.637
ENDIF ! End of sea point calculations. SFEVAP5A.642
25 CONTINUE SFEVAP5A.643
C SFEVAP5A.645
C----------------------------------------------------------------------- SFEVAP5A.646
C Calculate fluxes and increments associated with melting of snow SFEVAP5A.647
C or sea-ice. SFEVAP5A.648
C----------------------------------------------------------------------- SFEVAP5A.649
CALL SF_MELT
(P_FIELD,P1,LAND_FIELD,LAND1 SFEVAP5A.650
+,POINTS,LAND_MASK,LAND_PTS,LAND_INDEX SFEVAP5A.654
+,ALPHA1,ASHTF,ASURF,ICE_FRACT SFEVAP5A.656
+,RHOKH1_PRIME,TIMESTEP,SIMLT,SMLT,DFQW,DIFF_SENS_HTF SFEVAP5A.657
+,EI,LYING_SNOW,SURF_HT_FLUX,TSTAR,TI SFEVAP5A.658
+,SICE_MLT_HTF,SNOMLT_SURF_HTF,SNOWMELT,LTIMER) SFEVAP5A.659
C SFEVAP5A.660
C----------------------------------------------------------------------- SFEVAP5A.661
C 3. Update heat and moisture fluxes due to limited evaporation and snow SFEVAP5A.662
C or sea-ice melting. SFEVAP5A.663
C----------------------------------------------------------------------- SFEVAP5A.664
C SFEVAP5A.665
DO I = P1,P1+POINTS-1 SFEVAP5A.666
IF ( LAND_MASK(I) .OR. ICE_FRACT(I).GT.0.0 ) THEN SFEVAP5A.667
DQW(I) = DTRDZ_1(I) * DFQW(I) SFEVAP5A.668
DTL(I) = DTRDZ_1(I) * DIFF_SENS_HTF(I) / CP SFEVAP5A.669
TL(I,1) = TL(I,1) + DTL(I) SFEVAP5A.670
QW(I,1) = QW(I,1) + DQW(I) SFEVAP5A.671
FTL(I,1) = FTL(I,1) + DIFF_SENS_HTF(I) SFEVAP5A.672
FQW(I,1) = EOLD(I) + DFQW(I) SFEVAP5A.673
ENDIF ! LAND_MASK etc. SFEVAP5A.674
ENDDO ! P1+POINTS-1 SFEVAP5A.675
C----------------------------------------------------------------------- SFEVAP5A.676
C Apply increments to rapidly mixing layer. SFEVAP5A.677
C----------------------------------------------------------------------- SFEVAP5A.678
DO K = 2,BL_LEVELS-1 SFEVAP5A.679
KM1 = K - 1 SFEVAP5A.680
DO I = P1,P1+POINTS-1 SFEVAP5A.681
IF ( LAND_MASK(I) .OR. ICE_FRACT(I).GT.0.0 ) THEN SFEVAP5A.682
IF ( K .LE. NRML(I) ) THEN SFEVAP5A.683
TL(I,K) = TL(I,K) + DTL(I) SFEVAP5A.684
QW(I,K) = QW(I,K) + DQW(I) SFEVAP5A.685
DIFF_SENS_HTF(I) = DIFF_SENS_HTF(I) SFEVAP5A.686
& - CP * DTL(I) / DTRDZ(I,KM1) SFEVAP5A.687
DFQW(I) = DFQW(I) - DQW(I) / DTRDZ(I,KM1) SFEVAP5A.688
FTL(I,K) = FTL(I,K) + DIFF_SENS_HTF(I) SFEVAP5A.689
FQW(I,K) = FQW(I,K) + DFQW(I) SFEVAP5A.690
ENDIF ! Rapidly mixing layer SFEVAP5A.691
ENDIF ! Land or sea-ice SFEVAP5A.692
ENDDO ! Loop over points SFEVAP5A.693
ENDDO ! Loop over levels SFEVAP5A.694
C SFEVAP5A.695
C----------------------------------------------------------------------- SFEVAP5A.696
CL 4. Diagnose temperature and/or specific humidity at screen height SFEVAP5A.697
CL (1.5 metres), as requested via the STASH flags. SFEVAP5A.698
C----------------------------------------------------------------------- SFEVAP5A.699
C SFEVAP5A.700
IF (SQ1P5 .OR. ST1P5) THEN SFEVAP5A.701
IF (SQ1P5) CALL QSAT
(QS(P1),TSTAR(P1),PSTAR(P1),POINTS) SFEVAP5A.702
DO 4 I=P1,P1+POINTS-1 SFEVAP5A.703
IF (ST1P5) T1P5M(I) = TSTAR(I) - GRCP*Z1P5M + CHR1P5M(I) * SFEVAP5A.704
+ ( TL(I,1) - TSTAR(I) + GRCP*(Z1(I)+Z0M(I)-Z0H(I)) ) SFEVAP5A.705
IF (SQ1P5) Q1P5M(I) = QW(I,1) + CER1P5M(I)*( QW(I,1) - QS(I) ) SFEVAP5A.706
4 CONTINUE SFEVAP5A.707
ENDIF SFEVAP5A.708
IF (LTIMER) THEN SFEVAP5A.709
CALL TIMER
('SFEVAP ',4) SFEVAP5A.710
ENDIF SFEVAP5A.711
RETURN SFEVAP5A.712
END SFEVAP5A.713
*ENDIF SFEVAP5A.714