*IF DEF,A03_3A,OR,DEF,A03_5A AJS1F401.1483
C ******************************COPYRIGHT****************************** GTS2F400.2611
C (c) CROWN COPYRIGHT 1995, METEOROLOGICAL OFFICE, All Rights Reserved. GTS2F400.2612
C GTS2F400.2613
C Use, duplication or disclosure of this code is subject to the GTS2F400.2614
C restrictions as set forth in the contract. GTS2F400.2615
C GTS2F400.2616
C Meteorological Office GTS2F400.2617
C London Road GTS2F400.2618
C BRACKNELL GTS2F400.2619
C Berkshire UK GTS2F400.2620
C RG12 2SZ GTS2F400.2621
C GTS2F400.2622
C If no contract has been raised with this copy of the code, the use, GTS2F400.2623
C duplication or disclosure of it is strictly prohibited. Permission GTS2F400.2624
C to do so must first be obtained in writing from the Head of Numerical GTS2F400.2625
C Modelling at the above address. GTS2F400.2626
C ******************************COPYRIGHT****************************** GTS2F400.2627
C GTS2F400.2628
C*LL SUBROUTINE EX_COEF------------------------------------------------ EXCOEF3A.3
CLL EXCOEF3A.4
CLL Purpose: To calculate exchange coefficients for boundary layer EXCOEF3A.5
CLL subroutine KMKH. EXCOEF3A.6
CLL EXCOEF3A.7
CLL Suitable for single column use (via *IF definition IBM). EXCOEF3A.8
CLL EXCOEF3A.9
CLL Version 1 written by Fiona Hewer, May 1992. EXCOEF3A.10
CLL EXCOEF3A.11
CLL Model Modification history: EXCOEF3A.12
CLL version Date EXCOEF3A.13
CLL EXCOEF3A.14
CLL 3.4 18/10/94 *DECK inserted into UM version 3.4. S Jackson EXCOEF3A.15
CLL EXCOEF3A.16
CLL 4.3 04/02/97 Reduction in mixing length above b.l. top ARN1F403.51
CLL under control of logical switch L_MIXLEN & ARN1F403.52
CLL removal of enhanced stable momentum mixing ARN1F403.53
CLL under control of logical switch L_MOM. ARN1F403.54
CLL R.N.B.Smith ARN1F403.55
!LL 4.5 23/10/98 Prevent TIMER from performing barrier P.Burton GPB8F405.66
CLL ARN1F403.56
CLL Programming standard: Unified Model Documentation Paper No 4, EXCOEF3A.17
CLL Version 2, dated 18/1/90. EXCOEF3A.18
CLL EXCOEF3A.19
CLL System component covered: Part of P243. EXCOEF3A.20
CLL EXCOEF3A.21
CLL Project task: EXCOEF3A.22
CLL EXCOEF3A.23
CLL Documentation: UMDP No.24 EXCOEF3A.24
CLL EXCOEF3A.25
CLL--------------------------------------------------------------------- EXCOEF3A.26
C* EXCOEF3A.27
C*L Arguments :- EXCOEF3A.28
SUBROUTINE EX_COEF ( 5,6EXCOEF3A.29
+ P_FIELD,U_FIELD,P1,P_POINTS,BL_LEVELS, EXCOEF3A.30
+ CCB,CCT,NTML,L_MOM,L_MIXLEN, ARN1F403.57
+ AKH,BKH,CCA,DZL,PSTAR,RDZ,RI,TV,U_P,V_P,ZH,ZLB,Z0M,H_BLEND, EXCOEF3A.32
+ RHOKM,RHOKH,LTIMER EXCOEF3A.33
+) EXCOEF3A.34
IMPLICIT NONE EXCOEF3A.35
LOGICAL LTIMER EXCOEF3A.36
C ARN1F403.58
LOGICAL ARN1F403.59
& L_MOM ! IN Switch for convective momentum transport. ARN1F403.60
&,L_MIXLEN ! IN Switch for reducing the turbulent mixing ARN1F403.61
C ! length above the top of the boundary layer. ARN1F403.62
C ARN1F403.63
INTEGER EXCOEF3A.37
+ P_FIELD ! IN No. of P-grid points in whole field. EXCOEF3A.38
+,U_FIELD ! IN No. of U-grid points in whole field. EXCOEF3A.39
+,P1 ! IN First P-grid point to be processed. EXCOEF3A.40
+,P_POINTS ! IN No. of P-grid points to be processed. EXCOEF3A.41
+,BL_LEVELS ! IN maximum number of boundary layer levels EXCOEF3A.42
INTEGER EXCOEF3A.43
+ CCB(P_FIELD) ! IN Convective Cloud Base. EXCOEF3A.44
+,CCT(P_FIELD) ! IN Convective Cloud Top. EXCOEF3A.45
&,NTML(P_FIELD) ! IN Number of turbulently mixed ARN1F403.64
C ! layers. ARN1F403.65
REAL EXCOEF3A.46
+ AKH(BL_LEVELS) ! IN Hybrid "A" for layer interfaces. EXCOEF3A.47
C ! AKH(K) is value for lower boundary EXCOEF3A.48
C ! of layer K. EXCOEF3A.49
+,BKH(BL_LEVELS) ! IN Hybrid "B" for layer interfaces. EXCOEF3A.50
C ! BKH(K) is value for lower boundary EXCOEF3A.51
C ! of layer K. EXCOEF3A.52
+,CCA(P_FIELD) ! IN Convective Cloud Amount. EXCOEF3A.53
+,DZL(P_FIELD,BL_LEVELS) ! IN Layer depths (m). DZL(,K) is the EXCOEF3A.54
C ! distance from layer boundary K-1/2 EXCOEF3A.55
C ! to layer boundary K+1/2. For K=1 EXCOEF3A.56
C ! the lower boundary is the surface. EXCOEF3A.57
+,PSTAR(P_FIELD) ! IN Surface pressure (Pa). EXCOEF3A.58
+,RDZ(P_FIELD,BL_LEVELS) ! IN Reciprocal of distance between EXCOEF3A.59
C ! hybrid levels (m-1). 1/RDZ(,K) is EXCOEF3A.60
C ! the vertical distance from level EXCOEF3A.61
C ! K-1 to level K, except that for EXCOEF3A.62
C ! K=1 it is just the height of the EXCOEF3A.63
C ! lowest atmospheric level. EXCOEF3A.64
+,RI(P_FIELD,2:BL_LEVELS) ! IN Richardson number for lower EXCOEF3A.65
C ! interface of layer. EXCOEF3A.66
+,TV(P_FIELD,BL_LEVELS) ! IN Virtual temperature (K) - from EXCOEF3A.67
C ! SUBROUTINE Z. EXCOEF3A.68
+,U_P(P_FIELD,BL_LEVELS) ! IN Westerly wind component on P-grid EXCOEF3A.69
C ! (m per s). EXCOEF3A.70
+,V_P(P_FIELD,BL_LEVELS) ! IN Southerly wind component on P-grid EXCOEF3A.71
C ! (m per s). EXCOEF3A.72
+,ZH(P_FIELD) ! IN Boundary layer height (m). EXCOEF3A.73
+,ZLB(P_FIELD,BL_LEVELS) ! IN ZLB(,K) is height above surface of EXCOEF3A.74
C ! lower boundary of layer K (m). EXCOEF3A.75
+,Z0M(P_FIELD) ! IN Roughness length for momentum (m). EXCOEF3A.76
+,H_BLEND(P_FIELD) ! IN Blending height for effective EXCOEF3A.77
C ! roughness length scheme EXCOEF3A.78
REAL EXCOEF3A.79
+ RHOKM(U_FIELD,BL_LEVELS) ! INOUT Layer K-1 - to - layer K EXCOEF3A.80
C ! exchange coefficient for EXCOEF3A.81
C ! momentum, on UV-grid with first EXCOEF3A.82
C ! and last rows set to "missing EXCOEF3A.83
C ! data".Output as GAMMA*RHOKM* EXCOEF3A.84
C ! RDZUV for P244 (IMPL_CAL). EXCOEF3A.85
+,RHOKH(P_FIELD,BL_LEVELS) ! INOUT Layer K-1 - to - layer K EXCOEF3A.86
C ! exchange coefficient for FTL, EXCOEF3A.87
C ! on P-grid.Output as GAMMA* EXCOEF3A.88
C ! *RHOKH*RDZ for P244(IMPL_CAL) EXCOEF3A.89
C* EXCOEF3A.90
C*L--------------------------------------------------------------------- EXCOEF3A.91
EXTERNAL TIMER EXCOEF3A.92
C* EXCOEF3A.93
C*L--------------------------------------------------------------------- EXCOEF3A.94
C Local and other symbolic constants :- EXCOEF3A.95
*CALL C_LHEAT
EXCOEF3A.96
*CALL C_R_CP
EXCOEF3A.97
*CALL C_EPSLON
EXCOEF3A.98
*CALL C_VKMAN
EXCOEF3A.99
REAL EH,EM,G0,DH,DM,LAMBDA_MIN,A_LAMBDA EXCOEF3A.100
PARAMETER ( EXCOEF3A.101
+ EH=25.0 ! Used in calc of stability function FH. EXCOEF3A.102
+,EM=4.0 ! Used in calc of stability function FM. EXCOEF3A.103
+,G0=10.0 ! Used in stability function calcs. EXCOEF3A.104
+,DH=G0/EH ! Used in calc of stability function FH. EXCOEF3A.105
+,DM=G0/EM ! Used in calc of stability function FM. EXCOEF3A.106
+,LAMBDA_MIN=40.0 ! Minimum value of length scale LAMBDA. EXCOEF3A.107
+,A_LAMBDA=2.0 ! used in calc of LAMBDA_EFF EXCOEF3A.108
+) EXCOEF3A.109
C* EXCOEF3A.110
C EXCOEF3A.111
C Define local storage. EXCOEF3A.112
C EXCOEF3A.113
C Scalars. EXCOEF3A.114
C EXCOEF3A.115
REAL EXCOEF3A.116
+ DVDZM ! Modulus of wind shear gradient across lower level bdy. EXCOEF3A.117
+,DZU ! Westerly wind shear between adjacent levels. EXCOEF3A.118
+,DZV ! Southerly wind shear between adjacent levels. EXCOEF3A.119
+,DVMOD2 ! Square of modulus of wind shear between adjacent levels EXCOEF3A.120
+,ELH ! Mixing length for heat and moisture at lower layer bdy. EXCOEF3A.121
+,ELM ! Mixing length for momentum at lower layer boundary. EXCOEF3A.122
+,FH ! (Value of) stability function for heat & moisture. EXCOEF3A.123
+,FM ! (Value of) stability function for momentum transport. EXCOEF3A.124
+,RHO ! Air density at lower layer boundary. EXCOEF3A.125
+,RTMRI ! Temporary in stability function calculation. EXCOEF3A.126
+,VKZ ! Temporary in calculation of ELH. EXCOEF3A.127
+,WK ! Temporary in calculation of RHO. EXCOEF3A.128
+,WKM1 ! Temporary in calculation of RHO. EXCOEF3A.129
+,LAMBDAM ! Asymptotic mixing length for turbulent transport EXCOEF3A.130
C ! of momentum. EXCOEF3A.131
+,LAMBDAH ! Asymptotic mixing length for turbulent transport EXCOEF3A.132
C ! of heat/moisture. EXCOEF3A.133
+,LAMBDA_EFF ! Effective mixing length used with effective EXCOEF3A.134
C ! roughness length scheme. EXCOEF3A.135
INTEGER EXCOEF3A.136
+ I ! Loop counter (horizontal field index). EXCOEF3A.137
+,K ! Loop counter (vertical level index). EXCOEF3A.138
+,KM1 ! K-1. EXCOEF3A.139
C EXCOEF3A.140
C Layer interface K_LOG_LAYR-1/2 is the highest which requires log EXCOEF3A.141
C profile correction factors to the vertical finite differences. EXCOEF3A.142
C The value should be reassessed if the vertical resolution is changed. EXCOEF3A.143
C We could set K_LOG_LAYR = BL_LEVELS and thus apply the correction EXCOEF3A.144
C factors for all the interfaces treated by the boundary layer scheme; EXCOEF3A.145
C this would be desirable theoretically but expensive computationally EXCOEF3A.146
C because of the use of the log function. EXCOEF3A.147
C EXCOEF3A.148
INTEGER K_LOG_LAYR EXCOEF3A.149
PARAMETER (K_LOG_LAYR=2) EXCOEF3A.150
C* EXCOEF3A.151
IF (LTIMER) THEN EXCOEF3A.152
CALL TIMER
('EX_COEF ',103) GPB8F405.67
ENDIF EXCOEF3A.154
C EXCOEF3A.155
C----------------------------------------------------------------------- EXCOEF3A.156
CL 1. Loop round "boundary" levels; calculate the stability- EXCOEF3A.157
CL dependent turbulent mixing coefficients. EXCOEF3A.158
C----------------------------------------------------------------------- EXCOEF3A.159
C EXCOEF3A.160
DO 2 K=2,BL_LEVELS EXCOEF3A.161
KM1 = K-1 EXCOEF3A.162
CMIC$ DO ALL VECTOR SHARED(BL_LEVELS, P_POINTS, P1, DM, DH, EXCOEF3A.163
CMIC$1 P_FIELD, PSTAR, TV, DZL, RDZ, ZLB, Z0M, LAMBDA_MIN, ZH, EXCOEF3A.164
CMIC$2 U_P, V_P, RI, K, KM1, U_FIELD, RHOKM, RHOKH, AKH, BKH, CCA, EXCOEF3A.165
CMIC$3 CCB, CCT, H_BLEND, NTML) ARN1F403.66
CMIC$4 PRIVATE(RHO, VKZ, ELM, ELH, DZU, DZV, DVMOD2, DVDZM, EXCOEF3A.167
CMIC$5 RTMRI, FM, FH, I, WKM1, WK, LAMBDAM, LAMBDAH, LAMBDA_EFF, EXCOEF3A.168
CMIC$6 A_LAMBDA) EXCOEF3A.169
CDIR$ IVDEP EXCOEF3A.170
! Fujitsu vectorization directive GRB0F405.227
!OCL NOVREC GRB0F405.228
DO 21 I=P1,P1+P_POINTS-1 EXCOEF3A.171
C----------------------------------------------------------------------- EXCOEF3A.172
CL 2.1 Calculate asymptotic mixing lengths LAMBDAM and LAMBDAH EXCOEF3A.173
CL (currently assumed equal). EXCOEF3A.174
C----------------------------------------------------------------------- EXCOEF3A.175
C EXCOEF3A.176
LAMBDAM = MAX ( LAMBDA_MIN , 0.15*ZH(I) ) EXCOEF3A.177
LAMBDAH = LAMBDAM EXCOEF3A.178
LAMBDA_EFF = MAX (LAMBDAM, A_LAMBDA*H_BLEND(I) ) EXCOEF3A.179
IF ( L_MIXLEN ) THEN ARN1F403.67
IF ( K .GE. NTML(I) + 2 ) THEN ARN1F403.68
LAMBDAM = LAMBDA_MIN ARN1F403.69
LAMBDAH = LAMBDA_MIN ARN1F403.70
IF (ZLB(I,K) .GT. A_LAMBDA*H_BLEND(I)) ARN1F403.71
& LAMBDA_EFF = LAMBDA_MIN ARN1F403.72
ENDIF ARN1F403.73
ENDIF ARN1F403.74
C EXCOEF3A.180
C----------------------------------------------------------------------- EXCOEF3A.181
CL 2.2 Calculate mixing lengths ELH, ELM at layer interface K-1/2. EXCOEF3A.182
C----------------------------------------------------------------------- EXCOEF3A.183
C EXCOEF3A.184
C Incorporate log profile corrections to the vertical finite EXCOEF3A.185
C differences into the definitions of ELM and ELH. EXCOEF3A.186
C To save computing logarithms for all K, the values of ELM and ELH EXCOEF3A.187
C are unchanged for K > K_LOG_LAYR. EXCOEF3A.188
C EXCOEF3A.189
IF (K .LE. K_LOG_LAYR) THEN EXCOEF3A.190
VKZ = VKMAN / RDZ(I,K) EXCOEF3A.191
ELM = VKZ / ( LOG( ( ZLB(I,K) + Z0M(I) + 0.5*DZL(I,K) ) / EXCOEF3A.192
& ( ZLB(I,K) + Z0M(I) - 0.5*DZL(I,KM1) ) ) EXCOEF3A.193
& + VKZ / LAMBDA_EFF ) EXCOEF3A.194
ELH = VKZ / ( LOG( ( ZLB(I,K) + Z0M(I) + 0.5*DZL(I,K) ) / EXCOEF3A.195
& ( ZLB(I,K) + Z0M(I) - 0.5*DZL(I,KM1) ) ) EXCOEF3A.196
& + VKZ / LAMBDAH ) EXCOEF3A.197
ELSE EXCOEF3A.198
VKZ = VKMAN * ( ZLB(I,K) + Z0M(I) ) EXCOEF3A.199
ELM = VKZ / (1.0 + VKZ/LAMBDA_EFF ) EXCOEF3A.200
ELH = VKZ / (1.0 + VKZ/LAMBDAH ) EXCOEF3A.201
ENDIF EXCOEF3A.202
C EXCOEF3A.203
C----------------------------------------------------------------------- EXCOEF3A.204
CL 2.2 Calculate air density RHO = P/(R*TV) for interface between EXCOEF3A.205
CL "current" and previous (lower) layers (i.e. at level K-1/2). EXCOEF3A.206
C----------------------------------------------------------------------- EXCOEF3A.207
C Repeat of KMKH calculation, could be passed in from KMKH. EXCOEF3A.208
WKM1 = 0.5 * DZL(I,KM1) * RDZ(I,K) EXCOEF3A.209
WK = 0.5 * DZL(I,K) * RDZ(I,K) EXCOEF3A.210
RHO = ! Calculate rho at K-1/2, from P243.111 :- EXCOEF3A.211
+ ( AKH(K) + BKH(K)*PSTAR(I) ) ! Pressure at K-1/2, P243.112 EXCOEF3A.212
+ / ! divided by ... EXCOEF3A.213
+ ( R * ! R times ... EXCOEF3A.214
+ ( TV(I,KM1)*WK + TV(I,K)*WKM1 ) ! TV at K-1/2, from P243.113 EXCOEF3A.215
+ ) EXCOEF3A.216
C EXCOEF3A.217
C----------------------------------------------------------------------- EXCOEF3A.218
CL 2.3 Calculate wind shear and magnitude of gradient thereof across EXCOEF3A.219
CL interface K-1/2. EXCOEF3A.220
C----------------------------------------------------------------------- EXCOEF3A.221
C Repeat of KMKH calculation, could be passed in from KMKH. EXCOEF3A.222
DZU = U_P(I,K) - U_P(I,KM1) EXCOEF3A.223
DZV = V_P(I,K) - V_P(I,KM1) EXCOEF3A.224
DVMOD2 = MAX ( 1.0E-12 , DZU*DZU + DZV*DZV ) EXCOEF3A.225
DVDZM = SQRT (DVMOD2) * RDZ(I,K) EXCOEF3A.226
C EXCOEF3A.227
C----------------------------------------------------------------------- EXCOEF3A.228
CL 2.4 Calculate (values of) stability functions FH, FM. EXCOEF3A.229
C----------------------------------------------------------------------- EXCOEF3A.230
C EXCOEF3A.231
IF (RI(I,K) .GE. 0.0) THEN EXCOEF3A.232
RTMRI = 0.0 EXCOEF3A.233
FM = 1.0 / ( 1.0 + G0*RI(I,K) ) EXCOEF3A.234
FH = FM EXCOEF3A.235
C !----------------------------------------------------------- EXCOEF3A.236
C ! If convective cloud exists in layer K allow neutral mixing EXCOEF3A.237
C ! of momentum between layers K-1 and K. This is to ensure EXCOEF3A.238
C ! that a reasonable amount of momentum is mixed in the EXCOEF3A.239
C ! presence of convection; it is not be required when ARN1F403.75
C ! momentum transport is included in the convection scheme. EXCOEF3A.241
C !----------------------------------------------------------- EXCOEF3A.242
IF ( .NOT.L_MOM .AND. (CCA(I) .GT. 0.0) .AND. ARN1F403.76
& (K .GE. CCB(I)) .AND. (K .LT. CCT(I)) ) ARN1F403.77
& FM = 1.0 EXCOEF3A.244
ELSE EXCOEF3A.245
RTMRI = (ELM/ELH) * SQRT ( -RI(I,K) ) EXCOEF3A.246
FM = 1.0 - ( G0*RI(I,K) / ( 1.0 + DM*RTMRI ) ) EXCOEF3A.247
FH = 1.0 - ( G0*RI(I,K) / ( 1.0 + DH*RTMRI ) ) EXCOEF3A.248
ENDIF EXCOEF3A.249
C EXCOEF3A.250
C----------------------------------------------------------------------- EXCOEF3A.251
CL 2.5 Calculate exchange coefficients RHO*KM, RHO*KH for interface EXCOEF3A.252
CL K-1/2. EXCOEF3A.253
C----------------------------------------------------------------------- EXCOEF3A.254
C EXCOEF3A.255
RHOKM(I,K) = RHO * ELM * ELM * DVDZM * FM EXCOEF3A.256
RHOKH(I,K) = RHO * ELH * ELM * DVDZM * FH EXCOEF3A.257
21 CONTINUE EXCOEF3A.258
2 CONTINUE EXCOEF3A.259
IF (LTIMER) THEN EXCOEF3A.260
CALL TIMER
('EX_COEF ',104) GPB8F405.68
ENDIF EXCOEF3A.262
RETURN EXCOEF3A.263
END EXCOEF3A.264
*ENDIF EXCOEF3A.265