*IF DEF,A04_2B,OR,DEF,A04_2C ADM3F404.32
C ******************************COPYRIGHT****************************** GTS2F400.5365
C (c) CROWN COPYRIGHT 1995, METEOROLOGICAL OFFICE, All Rights Reserved. GTS2F400.5366
C GTS2F400.5367
C Use, duplication or disclosure of this code is subject to the GTS2F400.5368
C restrictions as set forth in the contract. GTS2F400.5369
C GTS2F400.5370
C Meteorological Office GTS2F400.5371
C London Road GTS2F400.5372
C BRACKNELL GTS2F400.5373
C Berkshire UK GTS2F400.5374
C RG12 2SZ GTS2F400.5375
C GTS2F400.5376
C If no contract has been raised with this copy of the code, the use, GTS2F400.5377
C duplication or disclosure of it is strictly prohibited. Permission GTS2F400.5378
C to do so must first be obtained in writing from the Head of Numerical GTS2F400.5379
C Modelling at the above address. GTS2F400.5380
C ******************************COPYRIGHT****************************** GTS2F400.5381
C GTS2F400.5382
C*LL SUBROUTINE LSP_EVAP----------------------------------------------- LSPEVA2A.3
CLL LSPEVA2A.4
CLL Purpose: Calculate the amount of evaporation from precipitation LSPEVA2A.5
CLL falling through one model layer, and the effects of this LSPEVA2A.6
CLL evaporation on Q and T in the layer. LSPEVA2A.7
CLL This version uses the revised constants. LSPEVA2A.8
CLL LSPEVA2A.9
CLL Rewritten by S BETT LSPEVA2A.10
CLL LSPEVA2A.11
CLL Model Modification history from model version 3.0: LSPEVA2A.12
CLL version date LSPEVA2A.13
CLL 4.2 Oct. 96 T3E migration: *DEF CRAY removed, HF functions GSS4F402.1
CLL replaced. GSS4F402.2
CLL S.J.Swarbrick GSS4F402.3
CLL LSPEVA2A.14
CLL Programming standard: Unified Model Documentation Paper No 3, LSPEVA2A.15
CLL Version 4, dated 5/2/92. LSPEVA2A.16
CLL LSPEVA2A.17
CLL System component covered: Part of P26. LSPEVA2A.18
CLL LSPEVA2A.19
CLL Documentation: Unified Model Documentation Paper No 26. LSPEVA2A.20
C* LSPEVA2A.21
C*L Arguments:--------------------------------------------------------- LSPEVA2A.22
SUBROUTINE LSP_EVAP 2,6LSPEVA2A.23
+(P,RHODZ,TIMESTEP,POINTS,Q,RAIN,SNOW,T) LSPEVA2A.24
IMPLICIT NONE LSPEVA2A.25
INTEGER ! Input integer scalar :- LSPEVA2A.26
+ POINTS ! IN Number of gridpoints being processed. LSPEVA2A.27
REAL ! Input real arrays :- LSPEVA2A.28
+ P(POINTS) ! IN pressure N /sq m LSPEVA2A.29
+,RHODZ(POINTS) ! IN Air mass p.u.a. in layer (kg per sq m). LSPEVA2A.30
REAL ! Updated real arrays :- LSPEVA2A.31
+ Q(POINTS) ! INOUT Specific humidity (kg water per kg air). LSPEVA2A.32
+,RAIN(POINTS) ! INOUT Rainfall rate (kg per sq m per s). LSPEVA2A.33
+,SNOW(POINTS) ! INOUT Snowfall rate (kg per sq m per s). LSPEVA2A.34
+,T(POINTS) ! INOUT Temperature (K). LSPEVA2A.35
REAL ! Input real scalar :- LSPEVA2A.36
+ TIMESTEP ! IN Timestep (s). LSPEVA2A.37
C* LSPEVA2A.38
C*L Workspace usage: 1 real array-------------------------------------- LSPEVA2A.39
REAL LSPEVA2A.41
+ QS(POINTS) ! Saturated sp humidity for (T,p) in layer LSPEVA2A.42
C*L external subprograms are called --------------------------------- LSPEVA2A.49
EXTERNAL QSAT LSPEVA2A.50
*IF DEF,TIMER2 LSPEVA2A.51
EXTERNAL TIMER LSPEVA2A.52
*ENDIF LSPEVA2A.53
C* LSPEVA2A.54
C* LSPEVA2A.59
*CALL C_LHEAT
LSPEVA2A.60
*CALL C_R_CP
LSPEVA2A.61
C Local (derived) physical constants ---------------------------------- LSPEVA2A.62
*CALL C_EVAPPN
LSPEVA2A.63
*CALL C_EPSLON
LSPEVA2A.64
REAL LCRCP,LFRCP,LSRCP LSPEVA2A.65
PARAMETER( LSPEVA2A.66
+ LCRCP=LC/CP ! Latent heat of condensation / Cp (K). LSPEVA2A.67
+,LFRCP=LF/CP ! Latent heat of fusion / Cp (K). LSPEVA2A.68
+,LSRCP=LCRCP+LFRCP ! Sum of the above (S for Sublimation). LSPEVA2A.69
+) LSPEVA2A.70
REAL ALPHF,ALPHL ! Derived parameters. LSPEVA2A.71
PARAMETER ( LSPEVA2A.72
+ ALPHF=EPSILON*(LF+LC)/R ! For frozen AlphaL calculation. LSPEVA2A.73
+,ALPHL=EPSILON*LC/R ! For liquid AlphaL calculation. LSPEVA2A.74
+) LSPEVA2A.75
C LSPEVA2A.76
C Define local variables----------------------------------------------- LSPEVA2A.77
INTEGER I ! Loop counter (horizontal field index). LSPEVA2A.78
C 6 local variables which will effectively be expanded to workspace LSPEVA2A.79
C by the Cray (using vector registers) are required :- LSPEVA2A.80
REAL ! Real "workspace". Contents at end of loop :- LSPEVA2A.81
+ CEV ! Bulk evporation coefficient (rain). LSPEVA2A.82
+,CSB ! Bulk evporation coefficient (snow). LSPEVA2A.83
+,QEV ! Evap rate from rain (kg wat per kg air per s). LSPEVA2A.84
+,QSB ! Evap rate from snow (kg wat per kg air per s). LSPEVA2A.85
+,ALPHAL ! factor from Clausius-Claperyon eqn LSPEVA2A.86
+,BL ! factor due to implicit treatment LSPEVA2A.87
+,C1 ! temporary store LSPEVA2A.88
+,C2 ! temporary store LSPEVA2A.89
+,RHO ! density of air in layer LSPEVA2A.90
+,SR_RHO ! square root of density LSPEVA2A.91
*IF DEF,TIMER2 LSPEVA2A.92
CALL TIMER
('LSPEVAP ',3) LSPEVA2A.93
*ENDIF LSPEVA2A.94
C----------------------------------------------------------------------- LSPEVA2A.95
CL Internal structure. LSPEVA2A.96
CL 0 Call qsat LSPEVA2A.97
C----------------------------------------------------------------------- LSPEVA2A.98
CALL QSAT
(QS,T,P,POINTS) LSPEVA2A.99
LSPEVA2A.100
C----------------------------------------------------------------------- LSPEVA2A.101
CL Loop over gridpoints :- LSPEVA2A.102
C----------------------------------------------------------------------- LSPEVA2A.103
DO 1 I=1,POINTS LSPEVA2A.104
C LSPEVA2A.105
C----------------------------------------------------------------------- LSPEVA2A.106
C Calculate density of air in layer LSPEVA2A.107
C----------------------------------------------------------------------- LSPEVA2A.108
C LSPEVA2A.109
RHO = P(I) / (R*T(I)) LSPEVA2A.110
SR_RHO = SQRT(RHO) LSPEVA2A.111
C LSPEVA2A.112
C----------------------------------------------------------------------- LSPEVA2A.113
CL 1. Perform calculations for rain. LSPEVA2A.114
C LSPEVA2A.115
C----------------------------------------------------------------------- LSPEVA2A.116
C LSPEVA2A.117
IF(RAIN(I).GT.0.0)THEN LSPEVA2A.118
C----------------------------------------------------------------------- LSPEVA2A.119
CL 1.1 Calculate evaporation coefficient for rain (CEV). LSPEVA2A.120
CL See eqs P26.9, P26.11. LSPEVA2A.121
C----------------------------------------------------------------------- LSPEVA2A.122
CEV = ((CEV2*T(I)+CEV1)*T(I)+CEV0) LSPEVA2A.123
C1 = LSRN_A*(RAIN(I)*SR_RHO)**LSRN_P2 LSPEVA2A.128
C2 = LSRN_B*(RHO**LSRN_P3)*(RAIN(I)**LSRN_P4) LSPEVA2A.129
CEV = CEV*(C1+C2) LSPEVA2A.131
C----------------------------------------------------------------------- LSPEVA2A.132
CL 1.2 Calculate implicit treatment factors alphal and bl LSPEVA2A.133
CL See eqs P26.??, P26.??. LSPEVA2A.134
C----------------------------------------------------------------------- LSPEVA2A.135
ALPHAL=ALPHL*QS(I)/(T(I)*T(I)) LSPEVA2A.136
BL=1. + CEV*TIMESTEP*(1. + LCRCP*ALPHAL) LSPEVA2A.137
C----------------------------------------------------------------------- LSPEVA2A.138
CL 1.3 Calculate evaporation rate, adjusted to be .LE. precip rate, LSPEVA2A.139
CL in kg water per sq m per sec. See eq P26.1. LSPEVA2A.140
C Store result in QEV. NB this is QEV*RHODZ in documentation. LSPEVA2A.141
C----------------------------------------------------------------------- LSPEVA2A.142
QEV=MIN ( RAIN(I) , RHODZ(I)*CEV*MAX(0.0,QS(I)-Q(I))/BL ) LSPEVA2A.143
C----------------------------------------------------------------------- LSPEVA2A.144
CL 1.4 Calculate effects of evaporation on precip rates and on Q and T. LSPEVA2A.145
CL See eqs P26.7, P26.5, P26.6 respectively. LSPEVA2A.146
C LSPEVA2A.147
C----------------------------------------------------------------------- LSPEVA2A.148
C Increment precipitation rates (kg per sq m per sec), Q (kg per kg) LSPEVA2A.149
C and T (K). For the last 2 the change is integrated over the LSPEVA2A.150
C timestep. LSPEVA2A.151
C LSPEVA2A.152
RAIN(I)=RAIN(I)-QEV LSPEVA2A.153
Q(I)=Q(I)+QEV*TIMESTEP/RHODZ(I) LSPEVA2A.154
T(I)=T(I)-LCRCP*QEV*TIMESTEP/RHODZ(I) LSPEVA2A.155
ENDIF ! rain>0 LSPEVA2A.156
1 CONTINUE LSPEVA2A.157
C----------------------------------------------------------------------- LSPEVA2A.158
CL 2 Call qsat again since evap of rain may have altered T LSPEVA2A.159
C----------------------------------------------------------------------- LSPEVA2A.160
CALL QSAT
(QS,T,P,POINTS) LSPEVA2A.161
LSPEVA2A.162
DO 3 I=1,POINTS LSPEVA2A.163
C LSPEVA2A.164
C----------------------------------------------------------------------- LSPEVA2A.165
C Recalculate density of air in layer LSPEVA2A.166
C----------------------------------------------------------------------- LSPEVA2A.167
C LSPEVA2A.168
RHO = P(I) / (R*T(I)) LSPEVA2A.169
SR_RHO = SQRT(RHO) LSPEVA2A.170
c LSPEVA2A.171
C----------------------------------------------------------------------- LSPEVA2A.172
CL 3. Perform calculations for snow. LSPEVA2A.173
C LSPEVA2A.174
C----------------------------------------------------------------------- LSPEVA2A.175
C LSPEVA2A.176
IF(SNOW(I).GT.0.0)THEN LSPEVA2A.177
C----------------------------------------------------------------------- LSPEVA2A.178
CL 3.1 Calculate evaporation coefficient for snow (CSB). LSPEVA2A.179
CL See eqs P26.10, P26.12 LSPEVA2A.180
C MAX value of ASB(T) is at 243.58. This value is used for LSPEVA2A.181
C T below this. The quadratic fit has a root at about 301K, when LSPEVA2A.182
C there shouldn't be any snow.(The other root is at 185K) LSPEVA2A.183
C----------------------------------------------------------------------- LSPEVA2A.184
IF(T(I).LE.243.58) THEN LSPEVA2A.185
CSB=1.7405E-5 LSPEVA2A.186
ELSE LSPEVA2A.187
CSB = ((CSB2*T(I)+CSB1)*T(I)+CSB0) LSPEVA2A.188
ENDIF LSPEVA2A.189
C1 = LSSW_A*(SNOW(I)*SR_RHO)**LSSW_P2 LSPEVA2A.194
C2 = LSSW_B*(RHO**LSSW_P3)*(SNOW(I)**LSSW_P4) LSPEVA2A.195
CSB = CSB*(C1+C2) LSPEVA2A.197
C----------------------------------------------------------------------- LSPEVA2A.198
CL 3.2 Calculate implicit treatment factors alphal and bl LSPEVA2A.199
CL See eqs P26.??, P26.??. LSPEVA2A.200
C----------------------------------------------------------------------- LSPEVA2A.201
ALPHAL=ALPHF*QS(I)/(T(I)*T(I)) LSPEVA2A.202
BL=1. + CSB*TIMESTEP*(1. + LSRCP*ALPHAL) LSPEVA2A.203
C----------------------------------------------------------------------- LSPEVA2A.204
CL 3.3 Calculate evaporation rate, adjusted to be .LE. precip rate, LSPEVA2A.205
CL in kg water per sq m per sec. See eq P26.2. LSPEVA2A.206
C Store result in QSB. NB this is QSB*RHODZ in documentation. LSPEVA2A.207
C----------------------------------------------------------------------- LSPEVA2A.208
QSB=MIN ( SNOW(I) , RHODZ(I)*CSB*MAX(0.0,QS(I)-Q(I))/BL ) LSPEVA2A.209
C LSPEVA2A.210
C----------------------------------------------------------------------- LSPEVA2A.211
CL 3.4 Calculate effects of evaporation on precip rates and on Q and T. LSPEVA2A.212
CL See eqs P26.8, P26.5, P26.6 respectively. LSPEVA2A.213
C LSPEVA2A.214
C----------------------------------------------------------------------- LSPEVA2A.215
C LSPEVA2A.216
C Increment precipitation rates (kg per sq m per sec), Q (kg per kg) LSPEVA2A.217
C and T (K). For the last 2 the change is integrated over the LSPEVA2A.218
C timestep. LSPEVA2A.219
C LSPEVA2A.220
SNOW(I)=SNOW(I)-QSB LSPEVA2A.221
Q(I)=Q(I)+QSB*TIMESTEP/RHODZ(I) LSPEVA2A.222
T(I)=T(I)-LSRCP*QSB*TIMESTEP/RHODZ(I) LSPEVA2A.223
ENDIF ! snow>0 LSPEVA2A.224
3 CONTINUE LSPEVA2A.225
*IF DEF,TIMER2 LSPEVA2A.226
CALL TIMER
('LSPEVAP ',4) LSPEVA2A.227
*ENDIF LSPEVA2A.228
RETURN LSPEVA2A.229
END LSPEVA2A.230
*ENDIF LSPEVA2A.231