*IF DEF,A04_2E LSPEVA2E.2
C (c) CROWN COPYRIGHT 1997, METEOROLOGICAL OFFICE, All Rights Reserved. LSPEVA2E.3
C LSPEVA2E.4
C Use, duplication or disclosure of this code is subject to the LSPEVA2E.5
C restrictions as set forth in the contract. LSPEVA2E.6
C LSPEVA2E.7
C Meteorological Office LSPEVA2E.8
C London Road LSPEVA2E.9
C BRACKNELL LSPEVA2E.10
C Berkshire UK LSPEVA2E.11
C RG12 2SZ LSPEVA2E.12
C LSPEVA2E.13
C If no contract has been raised with this copy of the code, the use, LSPEVA2E.14
C duplication or disclosure of it is strictly prohibited. Permission LSPEVA2E.15
C to do so must first be obtained in writing from the Head of Numerical LSPEVA2E.16
C Modelling at the above address. LSPEVA2E.17
C ******************************COPYRIGHT****************************** LSPEVA2E.18
C LSPEVA2E.19
C*LL SUBROUTINE LSP_EVAP----------------------------------------------- LSPEVA2E.20
!LL LSPEVA2E.21
!LL Purpose: Calculate the amount of evaporation from precipitation LSPEVA2E.22
!LL falling through one model layer, and the effects of this LSPEVA2E.23
!LL evaporation on Q and T in the layer. LSPEVA2E.24
!LL This version uses the revised constants. LSPEVA2E.25
!LL LSPEVA2E.26
!LL Rewritten by S BETT LSPEVA2E.27
!LL LSPEVA2E.28
!LL Model Modification history: LSPEVA2E.29
!LL version date LSPEVA2E.30
!LL 4.4 11/08/97 New version optimised for T3E. LSPEVA2E.31
!LL Not bit-reproducible with ADJCTL1A. LSPEVA2E.32
CLL 4.4 11/08/97 Remove extra swapbound LSPEVA2E.33
!LL 4.4 03/08/97 Code changed to use vector sqrt and ** on T3E LSPEVA2E.34
!LL A. Dickinson LSPEVA2E.35
!LL LSPEVA2E.36
!LL Programming standard: Unified Model Documentation Paper No 3, LSPEVA2E.37
!LL Version 4, dated 5/2/92. LSPEVA2E.38
!LL LSPEVA2E.39
!LL System component covered: Part of P26. LSPEVA2E.40
!LL LSPEVA2E.41
!LL Documentation: Unified Model Documentation Paper No 26. LSPEVA2E.42
C* LSPEVA2E.43
C*L Arguments:--------------------------------------------------------- LSPEVA2E.44
SUBROUTINE LSP_EVAP 2,6LSPEVA2E.45
&(P,RHODZ,TIMESTEP,POINTS,Q,RAIN,SNOW,T) LSPEVA2E.46
IMPLICIT NONE LSPEVA2E.47
INTEGER ! Input integer scalar :- LSPEVA2E.48
& POINTS ! IN Number of gridpoints being processed. LSPEVA2E.49
REAL ! Input real arrays :- LSPEVA2E.50
& P(POINTS) ! IN pressure N /sq m LSPEVA2E.51
&,RHODZ(POINTS) ! IN Air mass p.u.a. in layer (kg per sq m). LSPEVA2E.52
REAL ! Updated real arrays :- LSPEVA2E.53
& Q(POINTS) ! INOUT Specific humidity (kg water per kg air). LSPEVA2E.54
&,RAIN(POINTS) ! INOUT Rainfall rate (kg per sq m per s). LSPEVA2E.55
&,SNOW(POINTS) ! INOUT Snowfall rate (kg per sq m per s). LSPEVA2E.56
&,T(POINTS) ! INOUT Temperature (K). LSPEVA2E.57
REAL ! Input real scalar :- LSPEVA2E.58
& TIMESTEP ! IN Timestep (s). LSPEVA2E.59
C* LSPEVA2E.60
C*L Workspace usage: 1 real array-------------------------------------- LSPEVA2E.61
REAL LSPEVA2E.62
& QS(POINTS) ! Saturated sp humidity for (T,p) in layer LSPEVA2E.63
C*L external subprograms are called --------------------------------- LSPEVA2E.64
EXTERNAL QSAT LSPEVA2E.65
C* LSPEVA2E.66
C* LSPEVA2E.67
*CALL C_LHEAT
LSPEVA2E.68
*CALL C_R_CP
LSPEVA2E.69
! Local (derived) physical constants ---------------------------------- LSPEVA2E.70
*CALL C_EVAPPN
LSPEVA2E.71
*CALL C_EPSLON
LSPEVA2E.72
REAL LCRCP,LFRCP,LSRCP LSPEVA2E.73
PARAMETER( LSPEVA2E.74
& LCRCP=LC/CP ! Latent heat of condensation / Cp (K). LSPEVA2E.75
&,LFRCP=LF/CP ! Latent heat of fusion / Cp (K). LSPEVA2E.76
&,LSRCP=LCRCP+LFRCP ! Sum of the above (S for Sublimation). LSPEVA2E.77
&) LSPEVA2E.78
REAL ALPHF,ALPHL ! Derived parameters. LSPEVA2E.79
PARAMETER ( LSPEVA2E.80
& ALPHF=EPSILON*(LF+LC)/R ! For frozen AlphaL calculation. LSPEVA2E.81
&,ALPHL=EPSILON*LC/R ! For liquid AlphaL calculation. LSPEVA2E.82
&) LSPEVA2E.83
! LSPEVA2E.84
! Define local variables----------------------------------------------- LSPEVA2E.85
INTEGER LSPEVA2E.86
& I ! Loop counter (horizontal field index). LSPEVA2E.87
&,J ! Loop counter (rain or snow points) LSPEVA2E.88
&,NRAIN ! No of rain points LSPEVA2E.89
&,NSNOW ! No of snow points LSPEVA2E.90
! 6 local variables which will effectively be expanded to workspace LSPEVA2E.91
! by the Cray (using vector registers) are required :- LSPEVA2E.92
REAL ! Real "workspace". Contents at end of loop :- LSPEVA2E.93
& CEV ! Bulk evporation coefficient (rain). LSPEVA2E.94
&,CSB ! Bulk evporation coefficient (snow). LSPEVA2E.95
&,QEV ! Evap rate from rain (kg wat per kg air per s). LSPEVA2E.96
&,QSB ! Evap rate from snow (kg wat per kg air per s). LSPEVA2E.97
&,ALPHAL ! factor from Clausius-Claperyon eqn LSPEVA2E.98
&,BL ! factor due to implicit treatment LSPEVA2E.99
&,C1 ! temporary store LSPEVA2E.100
&,C2 ! temporary store LSPEVA2E.101
LSPEVA2E.102
REAL LSPEVA2E.103
& RHO(POINTS) ! density of air in layer LSPEVA2E.104
&,TEMP1(POINTS) ! Work space LSPEVA2E.105
&,TEMP2(POINTS) ! Work space LSPEVA2E.106
&,TEMP3(POINTS) ! Work space LSPEVA2E.107
INTEGER LSPEVA2E.108
& INDEX1(POINTS) ! Index of rain or snow points LSPEVA2E.109
!----------------------------------------------------------------------- LSPEVA2E.110
!L Internal structure. LSPEVA2E.111
!L 0 Call qsat LSPEVA2E.112
!----------------------------------------------------------------------- LSPEVA2E.113
CALL QSAT
(QS,T,P,POINTS) LSPEVA2E.114
LSPEVA2E.115
! LSPEVA2E.116
!----------------------------------------------------------------------- LSPEVA2E.117
! Calculate density of air in layer LSPEVA2E.118
!----------------------------------------------------------------------- LSPEVA2E.119
! LSPEVA2E.120
DO I=1,POINTS LSPEVA2E.121
RHO(I) = P(I) / (R*T(I)) LSPEVA2E.122
ENDDO LSPEVA2E.123
! LSPEVA2E.124
!----------------------------------------------------------------------- LSPEVA2E.125
!L 1. Perform calculations for rain. LSPEVA2E.126
! LSPEVA2E.127
!----------------------------------------------------------------------- LSPEVA2E.128
! LSPEVA2E.129
NRAIN=0 LSPEVA2E.130
DO I=1,POINTS LSPEVA2E.131
IF(RAIN(I).GT.0.0)THEN LSPEVA2E.132
NRAIN=NRAIN+1 LSPEVA2E.133
INDEX1(NRAIN)=I LSPEVA2E.134
ENDIF LSPEVA2E.135
ENDDO LSPEVA2E.136
LSPEVA2E.137
IF(NRAIN.GT.0) THEN LSPEVA2E.138
LSPEVA2E.139
DO J=1,NRAIN LSPEVA2E.140
TEMP1(J)=RAIN(INDEX1(J)) LSPEVA2E.141
TEMP2(J)=RHO(INDEX1(J)) LSPEVA2E.142
*IF -DEF,VECTLIB PXVECTLB.33
TEMP3(J)=SQRT(TEMP2(J)) LSPEVA2E.144
TEMP3(J)=TEMP3(J)*TEMP1(J) LSPEVA2E.145
TEMP1(J)=TEMP1(J)**LSRN_P4 LSPEVA2E.146
TEMP2(J)=TEMP2(J)**LSRN_P3 LSPEVA2E.147
TEMP3(J)=TEMP3(J)**LSRN_P2 LSPEVA2E.148
*ENDIF LSPEVA2E.149
ENDDO LSPEVA2E.150
*IF DEF,VECTLIB PXVECTLB.34
CALL SQRT_V(
NRAIN,TEMP2,TEMP3) LSPEVA2E.152
DO J=1,NRAIN LSPEVA2E.153
TEMP3(J)=TEMP1(J)*TEMP3(J) LSPEVA2E.154
ENDDO LSPEVA2E.155
CALL POWR_V(
NRAIN,TEMP3,LSRN_P2,TEMP3) LSPEVA2E.156
CALL POWR_V(
NRAIN,TEMP1,LSRN_P4,TEMP1) LSPEVA2E.157
CALL POWR_V(
NRAIN,TEMP2,LSRN_P3,TEMP2) LSPEVA2E.158
*ENDIF LSPEVA2E.159
LSPEVA2E.160
!----------------------------------------------------------------------- LSPEVA2E.161
!L 1.1 Calculate evaporation coefficient for rain (CEV). LSPEVA2E.162
!L See eqs P26.9, P26.11. LSPEVA2E.163
!----------------------------------------------------------------------- LSPEVA2E.164
LSPEVA2E.165
DO J=1,NRAIN LSPEVA2E.166
I=INDEX1(J) LSPEVA2E.167
CEV = ((CEV2*T(I)+CEV1)*T(I)+CEV0)*(100000.0/P(I)) LSPEVA2E.168
C1 = LSRN_A*TEMP3(J) LSPEVA2E.169
C2 = LSRN_B*TEMP1(J)*TEMP2(J) LSPEVA2E.170
CEV = CEV*(C1+C2) LSPEVA2E.171
!----------------------------------------------------------------------- LSPEVA2E.172
!L 1.2 Calculate implicit treatment factors alphal and bl LSPEVA2E.173
!L See eqs P26.??, P26.??. LSPEVA2E.174
!----------------------------------------------------------------------- LSPEVA2E.175
ALPHAL=ALPHL*QS(I)/(T(I)*T(I)) LSPEVA2E.176
BL=1. + CEV*TIMESTEP*(1. + LCRCP*ALPHAL) LSPEVA2E.177
!----------------------------------------------------------------------- LSPEVA2E.178
!L 1.3 Calculate evaporation rate, adjusted to be .LE. precip rate, LSPEVA2E.179
!L in kg water per sq m per sec. See eq P26.1. LSPEVA2E.180
! Store result in QEV. NB this is QEV*RHODZ in documentation. LSPEVA2E.181
!----------------------------------------------------------------------- LSPEVA2E.182
QEV=MIN ( RAIN(I) , RHODZ(I)*CEV*MAX(0.0,QS(I)-Q(I))/BL ) LSPEVA2E.183
!----------------------------------------------------------------------- LSPEVA2E.184
!L 1.4 Calculate effects of evaporation on precip rates and on Q and T. LSPEVA2E.185
!L See eqs P26.7, P26.5, P26.6 respectively. LSPEVA2E.186
! LSPEVA2E.187
!----------------------------------------------------------------------- LSPEVA2E.188
! Increment precipitation rates (kg per sq m per sec), Q (kg per kg) LSPEVA2E.189
! and T (K). For the last 2 the change is integrated over the LSPEVA2E.190
! timestep. LSPEVA2E.191
! LSPEVA2E.192
RAIN(I)=RAIN(I)-QEV LSPEVA2E.193
Q(I)=Q(I)+QEV*TIMESTEP/RHODZ(I) LSPEVA2E.194
T(I)=T(I)-LCRCP*QEV*TIMESTEP/RHODZ(I) LSPEVA2E.195
LSPEVA2E.196
END DO ! Loop over rain points LSPEVA2E.197
ENDIF ! Rain LSPEVA2E.198
LSPEVA2E.199
!----------------------------------------------------------------------- LSPEVA2E.200
!L 2 Call qsat again since evap of rain may have altered T LSPEVA2E.201
!----------------------------------------------------------------------- LSPEVA2E.202
CALL QSAT
(QS,T,P,POINTS) LSPEVA2E.203
LSPEVA2E.204
! LSPEVA2E.205
!----------------------------------------------------------------------- LSPEVA2E.206
! Recalculate density of air in layer LSPEVA2E.207
!----------------------------------------------------------------------- LSPEVA2E.208
! LSPEVA2E.209
DO I=1,POINTS LSPEVA2E.210
RHO(I) = P(I) / (R*T(I)) LSPEVA2E.211
ENDDO LSPEVA2E.212
! LSPEVA2E.213
!----------------------------------------------------------------------- LSPEVA2E.214
!L 3. Perform calculations for snow. LSPEVA2E.215
! LSPEVA2E.216
!----------------------------------------------------------------------- LSPEVA2E.217
! LSPEVA2E.218
NSNOW=0 LSPEVA2E.219
DO I=1,POINTS LSPEVA2E.220
IF(SNOW(I).GT.0.0)THEN LSPEVA2E.221
NSNOW=NSNOW+1 LSPEVA2E.222
INDEX1(NSNOW)=I LSPEVA2E.223
ENDIF LSPEVA2E.224
ENDDO LSPEVA2E.225
LSPEVA2E.226
IF(NSNOW.GT.0) THEN LSPEVA2E.227
LSPEVA2E.228
DO J=1,NSNOW LSPEVA2E.229
TEMP1(J)=SNOW(INDEX1(J)) LSPEVA2E.230
TEMP2(J)=RHO(INDEX1(J)) LSPEVA2E.231
*IF -DEF,VECTLIB PXVECTLB.35
TEMP3(J)=SQRT(TEMP2(J)) LSPEVA2E.233
TEMP3(J)=TEMP3(J)*TEMP1(J) LSPEVA2E.234
TEMP1(J)=TEMP1(J)**LSSW_P4 LSPEVA2E.235
TEMP2(J)=TEMP2(J)**LSSW_P3 LSPEVA2E.236
TEMP3(J)=TEMP3(J)**LSSW_P2 LSPEVA2E.237
*ENDIF LSPEVA2E.238
ENDDO LSPEVA2E.239
*IF DEF,VECTLIB PXVECTLB.36
CALL SQRT_V(
NSNOW,TEMP2,TEMP3) LSPEVA2E.241
DO J=1,NSNOW LSPEVA2E.242
TEMP3(J)=TEMP1(J)*TEMP3(J) LSPEVA2E.243
ENDDO LSPEVA2E.244
CALL POWR_V(
NSNOW,TEMP3,LSSW_P2,TEMP3) LSPEVA2E.245
CALL POWR_V(
NSNOW,TEMP1,LSSW_P4,TEMP1) LSPEVA2E.246
CALL POWR_V(
NSNOW,TEMP2,LSSW_P3,TEMP2) LSPEVA2E.247
*ENDIF LSPEVA2E.248
LSPEVA2E.249
!----------------------------------------------------------------------- LSPEVA2E.250
!L 3.1 Calculate evaporation coefficient for snow (CSB). LSPEVA2E.251
!L See eqs P26.10, P26.12 LSPEVA2E.252
! MAX value of ASB(T) is at 243.58. This value is used for LSPEVA2E.253
! T below this. The quadratic fit has a root at about 301K, when LSPEVA2E.254
! there shouldn't be any snow.(The other root is at 185K) LSPEVA2E.255
!----------------------------------------------------------------------- LSPEVA2E.256
DO J=1,NSNOW LSPEVA2E.257
I=INDEX1(J) LSPEVA2E.258
IF(T(I).LE.243.58) THEN LSPEVA2E.259
CSB=1.7405E-5*(100000.0/P(I)) LSPEVA2E.260
ELSE LSPEVA2E.261
CSB = ((CSB2*T(I)+CSB1)*T(I)+CSB0)*(100000/P(I)) LSPEVA2E.262
ENDIF LSPEVA2E.263
C1 = LSSW_A*TEMP3(J) LSPEVA2E.264
C2 = LSSW_B*TEMP2(J)*TEMP1(J) LSPEVA2E.265
CSB = CSB*(C1+C2) LSPEVA2E.266
!----------------------------------------------------------------------- LSPEVA2E.267
!L 3.2 Calculate implicit treatment factors alphal and bl LSPEVA2E.268
!L See eqs P26.??, P26.??. LSPEVA2E.269
!----------------------------------------------------------------------- LSPEVA2E.270
ALPHAL=ALPHF*QS(I)/(T(I)*T(I)) LSPEVA2E.271
BL=1. + CSB*TIMESTEP*(1. + LSRCP*ALPHAL) LSPEVA2E.272
!----------------------------------------------------------------------- LSPEVA2E.273
!L 3.3 Calculate evaporation rate, adjusted to be .LE. precip rate, LSPEVA2E.274
!L in kg water per sq m per sec. See eq P26.2. LSPEVA2E.275
! Store result in QSB. NB this is QSB*RHODZ in documentation. LSPEVA2E.276
!----------------------------------------------------------------------- LSPEVA2E.277
QSB=MIN ( SNOW(I) , RHODZ(I)*CSB*MAX(0.0,QS(I)-Q(I))/BL ) LSPEVA2E.278
! LSPEVA2E.279
!----------------------------------------------------------------------- LSPEVA2E.280
!L 3.4 Calculate effects of evaporation on precip rates and on Q and T. LSPEVA2E.281
!L See eqs P26.8, P26.5, P26.6 respectively. LSPEVA2E.282
! LSPEVA2E.283
!----------------------------------------------------------------------- LSPEVA2E.284
! LSPEVA2E.285
! Increment precipitation rates (kg per sq m per sec), Q (kg per kg) LSPEVA2E.286
! and T (K). For the last 2 the change is integrated over the LSPEVA2E.287
! timestep. LSPEVA2E.288
! LSPEVA2E.289
SNOW(I)=SNOW(I)-QSB LSPEVA2E.290
Q(I)=Q(I)+QSB*TIMESTEP/RHODZ(I) LSPEVA2E.291
T(I)=T(I)-LSRCP*QSB*TIMESTEP/RHODZ(I) LSPEVA2E.292
LSPEVA2E.293
END DO ! Loop over snow points LSPEVA2E.294
ENDIF ! Snow LSPEVA2E.295
! LSPEVA2E.296
RETURN LSPEVA2E.297
END LSPEVA2E.298
*ENDIF LSPEVA2E.299