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