*IF DEF,A05_3C LAYERD3C.2 C ******************************COPYRIGHT****************************** LAYERD3C.3 C (c) CROWN COPYRIGHT 1997, METEOROLOGICAL OFFICE, All Rights Reserved. LAYERD3C.4 C LAYERD3C.5 C Use, duplication or disclosure of this code is subject to the LAYERD3C.6 C restrictions as set forth in the contract. LAYERD3C.7 C LAYERD3C.8 C Meteorological Office LAYERD3C.9 C London Road LAYERD3C.10 C BRACKNELL LAYERD3C.11 C Berkshire UK LAYERD3C.12 C RG12 2SZ LAYERD3C.13 C LAYERD3C.14 C If no contract has been raised with this copy of the code, the use, LAYERD3C.15 C duplication or disclosure of it is strictly prohibited. Permission LAYERD3C.16 C to do so must first be obtained in writing from the Head of Numerical LAYERD3C.17 C Modelling at the above address. LAYERD3C.18 C ******************************COPYRIGHT****************************** LAYERD3C.19 C LAYERD3C.20 CLL SUBROUTINE LAYER_DD-------------------------------------------- LAYERD3C.21 CLL LAYERD3C.22 CLL PURPOSE : CALCULATES LAYER DEPENDENT CONSTANTS FOR LAYER K LAYERD3C.23 CLL -PRESSURE LAYERD3C.24 CLL -LAYER THICKNESS LAYERD3C.25 CLL -ENTRAINMENT COEFFICIENTS LAYERD3C.26 CLL -DETRAINMENT COEFFICIENTS LAYERD3C.27 CLL LAYERD3C.28 CLL SUITABLE FOR SINGLE COLUMN MODEL USE LAYERD3C.29 CLL LAYERD3C.30 CLL MODEL MODIFICATION HISTORY:: LAYERD3C.31 CLL VERSION DATE LAYERD3C.32 !LL 4.4 11/08/97 New version optimised for T3E. LAYERD3C.33 !LL Not bit-reproducible with LAYERD2A. ADR1F405.59 !LL 4.5 18/02/98 Correct code to match LAYERD2A and call ADR1F405.60 !LL comdecks. D. Robinson. ADR1F405.61 CLL LAYERD3C.35 CLL PROGRAMMING STANDARDS : UNIFIED MODEL DOCUMENTATION PAPER NO. 3 LAYERD3C.36 CLL VERSION NO. 4 DATED 5/2/92 LAYERD3C.37 CLL LAYERD3C.38 CLL SYSTEM TASK : P27 LAYERD3C.39 CLL LAYERD3C.40 CLL DOCUMENTATION : UNIFIED MODEL DOCUMENTATION PAPER 27 LAYERD3C.41 CLL LAYERD3C.42 CLLEND----------------------------------------------------------------- LAYERD3C.43 C LAYERD3C.44 C*L ARGUMENTS--------------------------------------------------------- LAYERD3C.45 C LAYERD3C.46SUBROUTINE LAYER_DD(NPNTS,K,KCT,THE_K,THE_KM1,FLX_STRT,AK, 4LAYERD3C.47 * BK,AKM12,BKM12,DELAK,DELBK,EXNER_KM12, LAYERD3C.48 * EXNER_KP12,EXNER_KM32,PSTAR,PK,PKM1,DELPK, LAYERD3C.49 * DELPKM1,EXK,EXKM1,AMDETK,EKM14,EKM34,KMIN, LAYERD3C.50 * BDDI,recip_pstar) LAYERD3C.51 C LAYERD3C.52 IMPLICIT NONE LAYERD3C.53 C LAYERD3C.54 C---------------------------------------------------------------------- LAYERD3C.55 C MODEL CONSTANTS LAYERD3C.56 C---------------------------------------------------------------------- LAYERD3C.57 *CALL C_0_DG_C
ADR1F405.62 *CALL C_R_CP
ADR1F405.63 *CALL ENTCNST
ADR1F405.64 *CALL ENTDD
ADR1F405.65 *CALL DDKMDET
ADR1F405.66 C LAYERD3C.97 C---------------------------------------------------------------------- LAYERD3C.98 C VECTOR LENGTHS AND LOOP COUNTER LAYERD3C.99 C---------------------------------------------------------------------- LAYERD3C.100 C LAYERD3C.101 INTEGER NPNTS ! IN VECTOR LENGTH LAYERD3C.102 C LAYERD3C.103 INTEGER K ! IN PRESENT MODEL LAYER LAYERD3C.104 C LAYERD3C.105 INTEGER I ! COUNTER FOR DO LOOPS LAYERD3C.106 C LAYERD3C.107 INTEGER KCT ! IN CONVECTIVE CLOUD TOP LAYER LAYERD3C.108 C LAYERD3C.109 C---------------------------------------------------------------------- LAYERD3C.110 C VARIABLES WHICH ARE INPUT LAYERD3C.111 C---------------------------------------------------------------------- LAYERD3C.112 C LAYERD3C.113 REAL AK(K) ! IN ) HYBRID CO-ORDINATE VALUES AT LAYERD3C.114 REAL BK(K) ! IN ) MID-LAYER OF LAYER K LAYERD3C.115 C LAYERD3C.116 REAL AKM12(K+1) ! IN ) HYBRID CO-ORDINATE VALUES AT LAYERD3C.117 REAL BKM12(K+1) ! IN ) LOWER LAYER BOUNDARY OF LAYER K LAYERD3C.118 C LAYERD3C.119 REAL DELAK(K) ! IN ) HYBRID CO-ORDINATE VALUES FOR LAYERD3C.120 REAL DELBK(K) ! IN ) FOR THICKNESS OF LAYER K LAYERD3C.121 C LAYERD3C.122 REAL PSTAR(NPNTS) ! IN SURFACE PRESSURE (PA) LAYERD3C.123 C LAYERD3C.124 REAL EXNER_KM12(NPNTS) ! IN EXNER FUNCTION AT LAYER K-1/2 LAYERD3C.125 C LAYERD3C.126 REAL EXNER_KP12(NPNTS) ! IN EXNER FUNCTION AT LAYER K+1/2 LAYERD3C.127 C LAYERD3C.128 REAL EXNER_KM32(NPNTS) ! IN EXNER FUNCTION AT LAYER K-3/2 LAYERD3C.129 C LAYERD3C.130 REAL FLX_STRT(NPNTS) ! IN UPDRAUGHT MASSFLUX AT LEVEL WHERE LAYERD3C.131 ! DOWNDRAUGHT STARTS (PA/S) LAYERD3C.132 C LAYERD3C.133 REAL THE_K(NPNTS) ! IN POTENTIAL TEMPERATURE OF LAYERD3C.134 ! ENVIRONMENT IN LAYER K (K) LAYERD3C.135 C LAYERD3C.136 REAL THE_KM1(NPNTS) ! IN POTENTIAL TEMPERATURE OF LAYERD3C.137 ! ENVIRONMENT IN LAYER K-1 (K) LAYERD3C.138 C LAYERD3C.139 LOGICAL BDDI(NPNTS) ! IN MASK FOR POINTS WHERE DOWNDRAUGHT LAYERD3C.140 ! MAY INITIATE LAYERD3C.141 REAL recip_PSTAR(NPNTS)! Reciprocal of pstar array LAYERD3C.142 C LAYERD3C.143 C---------------------------------------------------------------------- LAYERD3C.144 C VARIABLES WHICH ARE INPUT AND OUTPUT LAYERD3C.145 C---------------------------------------------------------------------- LAYERD3C.146 C LAYERD3C.147 INTEGER KMIN(NPNTS) ! INOUT LAYERD3C.148 ! FREEZING LEVEL LAYERD3C.149 C LAYERD3C.150 C---------------------------------------------------------------------- LAYERD3C.151 C VARIABLES WHICH ARE OUTPUT LAYERD3C.152 C---------------------------------------------------------------------- LAYERD3C.153 C LAYERD3C.154 REAL PK(NPNTS) ! OUT PRESSURE AT LAYER K (PA) LAYERD3C.155 C LAYERD3C.156 REAL PKM1(NPNTS) ! OUT PRESSURE AT LAYER K-1 (PA) LAYERD3C.157 C LAYERD3C.158 REAL DELPK(NPNTS) ! OUT THICKNESS OF LAYER K (PA) LAYERD3C.159 C LAYERD3C.160 REAL DELPKM1(NPNTS) ! OUT THICHNESS OF LAYER K-1 (PA) LAYERD3C.161 C LAYERD3C.162 REAL EKM14(NPNTS) ! OUT ENTRAINMENT COEFFICIENT AT LAYERD3C.163 ! LEVEL K-1/4 MULTIPLIED BY LAYERD3C.164 ! APPROPRIATE LAYER THICKNESS LAYERD3C.165 C LAYERD3C.166 REAL EKM34(NPNTS) ! OUT ENTRAINMENT COEFFICIENT AT LAYERD3C.167 ! LEVEL K-3/4 MULTIPLIED BY LAYERD3C.168 ! APPROPRIATE LAYER THICKNESS LAYERD3C.169 C LAYERD3C.170 REAL AMDETK(NPNTS) ! OUT MIXING DETRAINMENT COEFFICIENT LAYERD3C.171 ! AT LEVEL K MULTIPLIED BY LAYERD3C.172 ! APPROPRIATE LAYER THICKNESS LAYERD3C.173 C LAYERD3C.174 REAL EXK(NPNTS) ! OUT EXNER FUNCTION AT LEVEL K LAYERD3C.175 C LAYERD3C.176 REAL EXKM1(NPNTS) ! OUT EXNER FUNCTION AT LEVEL K-1 LAYERD3C.177 C LAYERD3C.178 C---------------------------------------------------------------------- LAYERD3C.179 C VARIABLES WHICH ARE DEFINED LOCALLY LAYERD3C.180 C---------------------------------------------------------------------- LAYERD3C.181 C LAYERD3C.182 REAL TTK ! TEMPERATURE STORE AT LAYER K LAYERD3C.183 C LAYERD3C.184 REAL TTKM1 ! TEMPERATURE STORE AT LAYER K-1 LAYERD3C.185 C LAYERD3C.186 REAL THKM12 ! POTENTIAL TEMPERATURE STORE AT LAYERD3C.187 ! LAYER K-1/2 LAYERD3C.188 C LAYERD3C.189 REAL TTKM12 ! TEMPERATURE STORE AT LAYER K-1/2 LAYERD3C.190 C LAYERD3C.191 REAL INCR_FAC ! INCREMENT FACTOR FOR ENTRAINMENT LAYERD3C.192 ! RATES AT FREEZING LEVEL LAYERD3C.193 C LAYERD3C.194 REAL LAYERD3C.195 & PU,PL LAYERD3C.196 *CALL P_EXNERC
ADR1F405.67 LAYERD3C.208 LAYERD3C.209 C---------------------------------------------------------------------- LAYERD3C.210 C SET KMIN TO INITIAL VALUE LAYERD3C.211 CL CALCULATE PK, DELPK AND EXNER FUNCTION - IF K = KCT THEN LAYERD3C.212 CL VALUES FOR PREVIOUS PASS THROUGH ROUTINE AT (K-1)+1 ARE TAKEN LAYERD3C.213 C---------------------------------------------------------------------- LAYERD3C.214 C LAYERD3C.215 IF (K.EQ.KCT+1) THEN LAYERD3C.216 DO I=1,NPNTS LAYERD3C.217 KMIN(I) = KCT+2 LAYERD3C.218 PK(I) = AK(K) + BK(K)*PSTAR(I) LAYERD3C.219 DELPK(I) = - DELAK(K) - DELBK(K)*PSTAR(I) LAYERD3C.220 PU=PSTAR(I)*BKM12(K+1) + AKM12(K+1) LAYERD3C.221 PL=PSTAR(I)*BKM12(K) + AKM12(K) LAYERD3C.222 EXK(I) = P_EXNER_C(EXNER_KP12(I),EXNER_KM12(I),PU,PL,KAPPA) LAYERD3C.223 END DO LAYERD3C.224 ELSE LAYERD3C.225 DO I=1,NPNTS LAYERD3C.226 PK(I) = PKM1(I) LAYERD3C.227 DELPK(I) = DELPKM1(I) LAYERD3C.228 EXK(I) = EXKM1(I) LAYERD3C.229 END DO LAYERD3C.230 END IF LAYERD3C.231 CL LAYERD3C.232 CL--------------------------------------------------------------------- LAYERD3C.233 CL CALCULATE PKM1, DELPKM1 LAYERD3C.234 CL CALCULATE EXNER FUNCTIONS AT MID-LAYES K AND K-1, AND LAYERD3C.235 CL DIFFERENCE OF EXNER FUNCTION ACROSS LAYER K LAYERD3C.236 CL--------------------------------------------------------------------- LAYERD3C.237 CL LAYERD3C.238 DO I=1,NPNTS LAYERD3C.239 PKM1(I) = AK(K-1) + BK(K-1)*PSTAR(I) LAYERD3C.240 DELPKM1(I) = - DELAK(K-1) - DELBK(K-1)*PSTAR(I) LAYERD3C.241 PU=PSTAR(I)*BKM12(K) + AKM12(K) LAYERD3C.242 PL=PSTAR(I)*BKM12(K-1) + AKM12(K-1) LAYERD3C.243 EXKM1(I) = P_EXNER_C(EXNER_KM12(I),EXNER_KM32(I),PU,PL,KAPPA) LAYERD3C.244 C LAYERD3C.245 CL LAYERD3C.246 CL--------------------------------------------------------------------- LAYERD3C.247 CL CALCULATE FREEZING LEVEL : CHECK IF FREEZING LEVEL IN THIS LAYER LAYERD3C.248 CL--------------------------------------------------------------------- LAYERD3C.249 CL LAYERD3C.250 IF (KMIN(I).EQ.KCT+2) THEN LAYERD3C.251 TTK = THE_K(I)*EXK(I) LAYERD3C.252 TTKM1 = THE_KM1(I)*EXKM1(I) LAYERD3C.253 THKM12 = (THE_KM1(I)+THE_K(I))*0.5 LAYERD3C.254 TTKM12 = THKM12*EXNER_KM12(I) LAYERD3C.255 IF (TTKM12 .GE. TM .AND. TTK .LT. TM) THEN LAYERD3C.256 KMIN(I) = K LAYERD3C.257 ELSE IF (TTKM1 .GE. TM .AND. TTKM12 .LT. TM) THEN LAYERD3C.258 KMIN(I) = K-1 LAYERD3C.259 END IF LAYERD3C.260 END IF LAYERD3C.261 C LAYERD3C.262 CL LAYERD3C.263 CL--------------------------------------------------------------------- LAYERD3C.264 CL CALCULATE ENTRAINMENT COEFFICIENTS MULTIPLIED BY LAYERD3C.265 CL APPROPRIATE LAYER THICKNESS LAYERD3C.266 CL LAYERD3C.267 CL CALCULATE MIXING DETRAINMENT COEFFICIENT MULTIPLIED BY LAYERD3C.268 CL APPROPRIATE LAYER THICKNESS LAYERD3C.269 CL LAYERD3C.270 CL UM DOCUMENTATION PAPER 27 LAYERD3C.271 CL SECTION (2C), EQUATION(14) LAYERD3C.272 CL--------------------------------------------------------------------- LAYERD3C.273 CL LAYERD3C.274 IF (PK(I).LT.PSTAR(I)-DET_LYR) THEN ADR1F405.68 EKM14(I) = AE2 * (AKM12(K)+BKM12(K)*PSTAR(I)-PK(I)) * ADR1F405.69 & recip_PSTAR(I) ADR1F405.70 EKM34(I) = AE2 * (PKM1(I)-AKM12(K)-BKM12(K)*PSTAR(I)) * ADR1F405.71 & recip_PSTAR(I) ADR1F405.72 AMDETK(I) = (EKM14(I)+EKM34(I)) * (1.0-1.0/AE2) LAYERD3C.281 ELSE LAYERD3C.282 EKM14(I) = 0.0 ADR1F405.73 EKM34(I) = 0.0 ADR1F405.74 AMDETK(I) = DELPK(I) / (PSTAR(I)*(1.0-BKM12(K+1))-AKM12(K+1)) LAYERD3C.283 END IF LAYERD3C.284 C LAYERD3C.285 IF (BDDI(I)) THEN LAYERD3C.286 C LAYERD3C.287 IF (K.EQ.KMIN(I) .AND. PK(I).LT.PSTAR(I)-DET_LYR) THEN LAYERD3C.288 INCR_FAC = FLX_STRT(I)*DDCOEF1*recip_pstar(I) LAYERD3C.289 IF (INCR_FAC.GT.6.0) INCR_FAC=6.0 LAYERD3C.290 EKM14(I) = EKM14(I)*INCR_FAC LAYERD3C.291 EKM34(I) = EKM34(I)*INCR_FAC LAYERD3C.292 ELSE LAYERD3C.293 EKM14(I) = EKM14(I)*DDCOEF2 LAYERD3C.294 EKM34(I) = EKM34(I)*DDCOEF2 LAYERD3C.295 IF (KMIN(I).NE.KCT+2 .AND. K.LT.KMIN(I) .AND. PK(I).LT. LAYERD3C.296 * PSTAR(I)-DET_LYR) AMDETK(I) = AMDETK(I)*DDCOEF2 LAYERD3C.297 END IF LAYERD3C.298 C LAYERD3C.299 END IF LAYERD3C.300 END DO LAYERD3C.301 C LAYERD3C.302 RETURN LAYERD3C.303 END LAYERD3C.304 C LAYERD3C.305 *ENDIF LAYERD3C.306