*IF DEF,A05_3C DOWND3C.2 C (c) CROWN COPYRIGHT 1997, METEOROLOGICAL OFFICE, All Rights Reserved. DOWND3C.3 C DOWND3C.4 C Use, duplication or disclosure of this code is subject to the DOWND3C.5 C restrictions as set forth in the contract. DOWND3C.6 C DOWND3C.7 C Meteorological Office DOWND3C.8 C London Road DOWND3C.9 C BRACKNELL DOWND3C.10 C Berkshire UK DOWND3C.11 C RG12 2SZ DOWND3C.12 C DOWND3C.13 C If no contract has been raised with this copy of the code, the use, DOWND3C.14 C duplication or disclosure of it is strictly prohibited. Permission DOWND3C.15 C to do so must first be obtained in writing from the Head of Numerical DOWND3C.16 C Modelling at the above address. DOWND3C.17 C ******************************COPYRIGHT****************************** DOWND3C.18 C DOWND3C.19 CLL SUBROUTINE DOWND-------------------------------------------------- DOWND3C.20 CLL DOWND3C.21 CLL PURPOSE : CALL DOWNDRAUGHT CALCULATION DOWND3C.22 CLL DOWND3C.23 CLL CHANGE OF PHASE CALCULATION WHERE NO DOWNDRAUGHT OCCURS DOWND3C.24 CLL DOWND3C.25 CLL SUITABLE FOR SINGLE COLUMN MODEL USE DOWND3C.26 CLL DOWND3C.27 CLL DOWND3C.28 CLL MODEL MODIFICATION HISTORY: DOWND3C.29 CLL VERSION DATE DOWND3C.30 !LL 4.4 17/10/97 New version optimised for T3E. DOWND3C.31 !LL Loop splitting by hand for T3E optimisation DOWND3C.32 !LL D.Salmond DOWND3C.33 !LL 4.5 19/05/98 Pass L_PHASE_LIM down to CHG_PHSE to determine AJX1F405.51 !LL treatment of precip below cloud base. Julie Gregory AJX1F405.52 CLL 4.5 Jul. 98 Kill the IBM specific lines (JCThil) AJC1F405.29 CLL DOWND3C.34 CLL DOWND3C.35 CLL PROGRAMMING STANDARDS : UNIFIED MODEL DOCUMENTATION PAPER NO. 3 DOWND3C.36 CLL VERSION NO. 4 DATED 5/2/92 DOWND3C.37 CLL DOWND3C.38 CLL SYSTEM TASK : P27 DOWND3C.39 CLL DOWND3C.40 CLL DOCUMENTATION : UNIFIED MODEL DOCUMENTATION PAPER 27 DOWND3C.41 CLL DOWND3C.42 CLLEND----------------------------------------------------------------- DOWND3C.43 C DOWND3C.44 C*L ARGUMENTS--------------------------------------------------------- DOWND3C.45 C DOWND3C.46SUBROUTINE DOWND (NPNTS,NP_FULL,K,KCT,THDD_K,QDD_K,THE_K,THE_KM1, 4,12DOWND3C.47 & QE_K,QE_KM1,DTHBYDT_K,DTHBYDT_KM1,DQBYDT_K, DOWND3C.48 & DQBYDT_KM1,FLX_DD_K,P_KM1,DELPK,DELPKM1,EXK, DOWND3C.49 & EXKM1,DELTD,DELQD,AMDETK,EKM14,EKM34,PRECIP_K, DOWND3C.50 & RAIN,SNOW,ICCB,BWATER_K,BDD_START, DOWND3C.51 & BDDWT_K,BDDWT_KM1,BDD_ON,RAIN_ENV,SNOW_ENV, DOWND3C.52 & RAIN_DD,SNOW_DD,FLX_UD_K,TIMESTEP,CCA,NDDON_A, DOWND3C.53 & LR_UD_REF,L_MOM,UDD_K,VDD_K,UE_K,VE_K,UE_KM1, DOWND3C.54 & VE_KM1,DUBYDT_K,DVBYDT_K,DUBYDT_KM1,DVBYDT_KM1, DOWND3C.55 & DELUD,DELVD,EFLUX_U_DD,EFLUX_V_DD, DOWND3C.56 & L_TRACER,NTRA,TRADD_K,TRAE_K, DOWND3C.57 & TRAE_KM1,DTRABYDT_K,DTRABYDT_KM1,DELTRAD, AJX1F405.53 & L_PHASE_LIM) AJX1F405.54 C DOWND3C.59 IMPLICIT NONE DOWND3C.60 C DOWND3C.61 C----------------------------------------------------------------------- DOWND3C.62 C MODEL CONSTANTS DOWND3C.63 C----------------------------------------------------------------------- DOWND3C.64 C DOWND3C.65 *CALL C_0_DG_C
DOWND3C.66 *CALL C_G
DOWND3C.67 C DOWND3C.68 C----------------------------------------------------------------------- DOWND3C.69 C VECTOR LENGTHS AND LOOP COUNTERS DOWND3C.70 C----------------------------------------------------------------------- DOWND3C.71 C DOWND3C.72 C DOWND3C.76 INTEGER I,KTRA ! LOOP COUNTERS DOWND3C.77 C DOWND3C.78 INTEGER K ! IN PRESENT MODEL LAYER DOWND3C.79 C DOWND3C.80 INTEGER NPNTS ! IN NUMBER OF POINTS DOWND3C.81 C DOWND3C.82 INTEGER NDDON,NDDON_A ! NUMBER OF POINTS AT WHICH DOWND3C.83 ! DOWNDRAUGHT DOES OCCUR DOWND3C.84 C DOWND3C.85 INTEGER NP_FULL ! IN FULL VECTOR LENGTH DOWND3C.86 C DOWND3C.87 INTEGER NTRA ! NUMBER OF TRACERS DOWND3C.88 C DOWND3C.89 C----------------------------------------------------------------------- DOWND3C.90 C VARIABLES WHICH ARE INPUT DOWND3C.91 C----------------------------------------------------------------------- DOWND3C.92 C DOWND3C.93 INTEGER KCT ! IN CONVECTIVE CLOUD TOP LAYER DOWND3C.94 C DOWND3C.95 REAL THDD_K(NPNTS) ! IN MODEL POTENTIAL TEMPERATURE DOWND3C.96 ! OF DOWNDRAUGHT IN LAYER K (K) DOWND3C.97 C DOWND3C.98 REAL QDD_K(NPNTS) ! IN MIXING RATIO OF DOWNDRAUGHT IN DOWND3C.99 ! LAYER K (KG/KG) DOWND3C.100 C DOWND3C.101 REAL UDD_K(NPNTS) ! IN U IN DOWNDRAUGHT IN LAYER K (M/S) DOWND3C.102 C DOWND3C.103 REAL VDD_K(NPNTS) ! IN V IN DOWNDRAUGHT IN LAYER K (M/S) DOWND3C.104 C DOWND3C.105 REAL TRADD_K(NP_FULL,NTRA) ! IN TRACER CONTENT OF DOWNDRAUGHT DOWND3C.106 ! IN LAYER K (KG/KG) DOWND3C.107 C DOWND3C.108 REAL THE_K(NPNTS) ! IN POTENTIAL TEMPERATURE OF DOWND3C.109 ! ENVIRONMENT IN LAYER K (K) DOWND3C.110 C DOWND3C.111 REAL THE_KM1(NPNTS) ! IN POTENTIAL TEMPERATURE OF DOWND3C.112 ! ENVIRONMENT IN LAYER K-1 (K) DOWND3C.113 C DOWND3C.114 REAL QE_K(NPNTS) ! IN MIXING RATIO OF ENVIRONMENT IN DOWND3C.115 ! LAYER K (KG/KG) DOWND3C.116 C DOWND3C.117 REAL QE_KM1(NPNTS) ! IN MIXING RATIO OF ENVIRONMENT IN DOWND3C.118 ! LAYER K-1 (KG/KG) DOWND3C.119 C DOWND3C.120 REAL UE_K(NPNTS) ! IN U OF ENVIRONMENT IN LAYER K (M/S) DOWND3C.121 C DOWND3C.122 REAL UE_KM1(NPNTS) ! IN U OF ENVIRONMENT IN LAYER K-1 DOWND3C.123 ! (M/S) DOWND3C.124 C DOWND3C.125 REAL VE_K(NPNTS) ! IN V OF ENVIRONMENT IN LAYER K (M/S) DOWND3C.126 C DOWND3C.127 REAL VE_KM1(NPNTS) ! IN V OF ENVIRONMENT IN LAYER K-1 DOWND3C.128 ! (M/S) DOWND3C.129 C DOWND3C.130 REAL TRAE_K(NP_FULL,NTRA) ! IN TRACER CONTENT OF ENVIRONMENT DOWND3C.131 ! IN LAYER K (KG/KG) DOWND3C.132 C DOWND3C.133 REAL TRAE_KM1(NP_FULL,NTRA)! IN TRACER CONTENT OF ENVIRONMENT DOWND3C.134 ! IN LAYER K-1 (KG/KG) DOWND3C.135 C DOWND3C.136 REAL FLX_DD_K(NPNTS) ! IN DOWNDRAUGHT MASS FLUX OF LAYER K DOWND3C.137 ! (PA/S) DOWND3C.138 C DOWND3C.139 REAL P_KM1(NPNTS) ! IN PRESSURE OF LAYER K-1 (PA) DOWND3C.140 C DOWND3C.141 REAL DELPK(NPNTS) ! IN PRESSURE DIFFERENCE ACROSS DOWND3C.142 ! LAYER K (PA) DOWND3C.143 C DOWND3C.144 REAL DELPKM1(NPNTS) ! IN PRESSURE DIFFERENCE ACROSS DOWND3C.145 ! LAYER K-1 (PA) DOWND3C.146 C DOWND3C.147 REAL EXK(NPNTS) ! IN EXNER RATIO FOR LAYER K DOWND3C.148 C DOWND3C.149 REAL EXKM1(NPNTS) ! IN EXNER RATIO FOR LAYER K-1 DOWND3C.150 C DOWND3C.151 REAL PRECIP_K(NPNTS) ! IN PRECIPITATION ADDED WHEN DOWND3C.152 ! DESCENDING FROM LAYER K TO K-1 DOWND3C.153 ! (KG/M**2/S) DOWND3C.154 C DOWND3C.155 REAL AMDETK(NPNTS) ! IN MIXING DETRAINMENT AT LEVEL K DOWND3C.156 ! MULTIPLIED BY APPROPRIATE LAYER DOWND3C.157 ! THICKNESS DOWND3C.158 C DOWND3C.159 REAL EKM14(NPNTS) ! IN EXNER RATIO AT LAYER K-1/4 DOWND3C.160 C DOWND3C.161 REAL EKM34(NPNTS) ! IN EXNER RATIO AT LAYER K-3/4 DOWND3C.162 C DOWND3C.163 REAL DELTD(NPNTS) ! IN COOLING NECESSARY TO DOWND3C.164 ! ACHIEVE SATURATION (K) DOWND3C.165 C DOWND3C.166 REAL DELQD(NPNTS) ! IN MOISTENING NECESSARY TO DOWND3C.167 ! ACHIEVE SATURATION (KG/KG) DOWND3C.168 C DOWND3C.169 REAL DELUD(NPNTS) ! IN CHANGE IN ENVIRONMENT U DUE TO DOWND3C.170 ! DOWNDRAUGHT FORMATION (M/S) DOWND3C.171 C DOWND3C.172 REAL DELVD(NPNTS) ! IN CHANGE IN ENVIRONMENT V DUE TO DOWND3C.173 ! DOWNDRAUGHT FORMATION (M/S) DOWND3C.174 C DOWND3C.175 REAL DELTRAD(NP_FULL,NTRA) ! IN DEPLETION OF ENVIRONMENT TRACER DOWND3C.176 ! DUE TO DOWNDRAUGHT FORMATION DOWND3C.177 C DOWND3C.178 REAL ICCB(NPNTS) ! IN CLOUD BASE LEVEL DOWND3C.179 C DOWND3C.180 LOGICAL BWATER_K(NPNTS) ! IN MASK FOR THOSE POINTS AT WHICH DOWND3C.181 ! CONDENSATE IS WATER IN LAYER K DOWND3C.182 C DOWND3C.183 LOGICAL BDDWT_K(NPNTS) ! IN MASK FOR THOSE POINTS IN DOWND3C.184 ! DOWNDRAUGHT WHERE PRECIPITATION DOWND3C.185 ! IS LIQUID IN LAYER K DOWND3C.186 C DOWND3C.187 LOGICAL BDDWT_KM1(NPNTS) ! IN MASK FOR THOSE POINTS IN DOWND3C.188 ! DOWNDRAUGHT WHERE PRECIPITATION DOWND3C.189 ! IS LIQUID IN LAYER K-1 DOWND3C.190 C DOWND3C.191 LOGICAL L_TRACER ! IN SWITCH FOR INCLUSION OF TRACERS DOWND3C.192 C DOWND3C.193 LOGICAL L_MOM ! IN SWITCH FOR INCLUSION OF DOWND3C.194 ! MOMENTUM TRANSPORTS DOWND3C.195 C DOWND3C.196 LOGICAL L_PHASE_LIM ! IN SWITCH TO DETERMINE IF PHASE AJX1F405.55 C ! CHANGE OF PRECIP IS LIMITED AJX1F405.56 C AJX1F405.57 REAL RAIN_ENV(NPNTS) ! IN AMOUNT OF RAIN FALLING THROUGH DOWND3C.197 ! THE ENVIRONMENT DOWND3C.198 C DOWND3C.199 REAL SNOW_ENV(NPNTS) ! IN AMOUNT OF SNOW FALLING THROUGH DOWND3C.200 ! THE ENVIRONMENT DOWND3C.201 C DOWND3C.202 REAL RAIN_DD(NPNTS) ! IN AMOUNT OF RAIN FALLING THROUGH DOWND3C.203 ! THE DOWNDRAUGHT DOWND3C.204 C DOWND3C.205 REAL SNOW_DD(NPNTS) ! IN AMOUNT OF SNOW FALLING THROUGH DOWND3C.206 ! THE DOWNDRAUGHT DOWND3C.207 C DOWND3C.208 REAL FLX_UD_K(NPNTS) ! IN UPDRAUGHT MASSFLUX AT LAYER K DOWND3C.209 C DOWND3C.210 REAL TIMESTEP ! IN MODEL TIMESTEP (S) DOWND3C.211 C DOWND3C.212 REAL CCA(NPNTS) ! IN CONVECTIVE CLOUD AMOUNT DOWND3C.213 C DOWND3C.214 REAL LR_UD_REF(NPNTS) ! IN UD PPN MIXING RATION IN LOWEST DOWND3C.215 ! PRECIPITATING LAYER IN UD DOWND3C.216 C DOWND3C.217 C----------------------------------------------------------------------- DOWND3C.218 C VARIABLES WHICH ARE INPUT AND OUTPUT DOWND3C.219 C----------------------------------------------------------------------- DOWND3C.220 C DOWND3C.221 LOGICAL BDD_START(NPNTS) ! INOUT DOWND3C.222 ! IN MASK FOR THOSE POINTS WHERE DOWND3C.223 ! DOWNDRAUGHT MAY FORM IN LAYER K DOWND3C.224 ! OUT MASK FOR THOSE POINTS WHERE DOWND3C.225 ! DOWNDRAUGHT MAY FORM IN LAYER DOWND3C.226 ! K-1 DOWND3C.227 C DOWND3C.228 REAL DTHBYDT_K(NPNTS) ! INOUT DOWND3C.229 ! IN INCREMENT TO MODEL POTENTIAL DOWND3C.230 ! TEMPERATURE OF LAYER K (K/S) DOWND3C.231 ! OUT UPDATED INCREMENT TO MODEL DOWND3C.232 ! POTENTIAL TEMPERATURE OF LAYER K DOWND3C.233 ! (K/S) DOWND3C.234 C DOWND3C.235 REAL DTHBYDT_KM1(NPNTS) ! INOUT DOWND3C.236 ! IN INCREMENT TO MODEL POTENTIAL DOWND3C.237 ! TEMPERATURE OF LAYER K-1 (K/S) DOWND3C.238 ! OUT UPDATED INCREMENT TO MODEL DOWND3C.239 ! POTENTIAL TEMPERATURE OF DOWND3C.240 ! LAYER K-1 (K/S) DOWND3C.241 C DOWND3C.242 REAL DQBYDT_K(NPNTS) ! INOUT DOWND3C.243 ! IN INCREMENT TO MODEL MIXING DOWND3C.244 ! RATIO OF LAYER K (KG/KG/S) DOWND3C.245 ! OUT UPDATED INCREMENT TO MODEL DOWND3C.246 ! MIXING RATIO OF LAYER K (KG/KG/S) DOWND3C.247 C DOWND3C.248 REAL DQBYDT_KM1(NPNTS) ! INOUT DOWND3C.249 ! IN INCREMENT TO MODEL MIXING DOWND3C.250 ! RATIO OF LAYER K-1 (KG/KG/S) DOWND3C.251 ! OUT UPDATED INCREMENT TO MODEL DOWND3C.252 ! MIXING RATIO OF DOWND3C.253 ! LAYER K-1 (KG/KG/S) DOWND3C.254 C DOWND3C.255 REAL DUBYDT_K(NPNTS) ! INOUT DOWND3C.256 ! IN INCREMENT TO MODEL U IN DOWND3C.257 ! LAYER K (M/S**2) DOWND3C.258 ! OUT UPDATED INCREMENT TO MODEL DOWND3C.259 ! U IN LAYER K (M/S**2) DOWND3C.260 C DOWND3C.261 REAL DUBYDT_KM1(NPNTS) ! INOUT DOWND3C.262 ! IN INCREMENT TO MODEL U DOWND3C.263 ! IN LAYER K-1 (KG/KG/S) DOWND3C.264 ! OUT UPDATED INCREMENT TO MODEL DOWND3C.265 ! U IN LAYER K-1 (M/S**2) DOWND3C.266 C DOWND3C.267 REAL DVBYDT_K(NPNTS) ! INOUT DOWND3C.268 ! IN INCREMENT TO MODEL V IN DOWND3C.269 ! LAYER K (M/S**2) DOWND3C.270 ! OUT UPDATED INCREMENT TO MODEL DOWND3C.271 ! V IN LAYER K (M/S**2) DOWND3C.272 C DOWND3C.273 REAL DVBYDT_KM1(NPNTS) ! INOUT DOWND3C.274 ! IN INCREMENT TO MODEL V DOWND3C.275 ! IN LAYER K-1 (KG/KG/S) DOWND3C.276 ! OUT UPDATED INCREMENT TO MODEL DOWND3C.277 ! V IN LAYER K-1 (M/S**2) DOWND3C.278 C DOWND3C.279 REAL DTRABYDT_K(NP_FULL, ! INOUT DOWND3C.280 * NTRA) ! IN INCREMENT TO MODEL TRACER OF DOWND3C.281 ! LAYER K (KG/KG/S) DOWND3C.282 ! OUT UPDATED INCREMENT TO MODEL DOWND3C.283 DOWND3C.284 C DOWND3C.285 REAL DTRABYDT_KM1(NP_FULL, ! INOUT DOWND3C.286 * NTRA) ! IN INCREMENT TO MODEL TRACER OF DOWND3C.287 ! LAYER K-1 (KG/KG/S) DOWND3C.288 ! OUT UPDATED INCREMENT TO MODEL DOWND3C.289 ! TRACER IN LAYER K-1 DOWND3C.290 ! (KG/KG/S) DOWND3C.291 C DOWND3C.292 REAL RAIN (NPNTS) ! INOUT DOWND3C.293 ! IN INITIALISED RAINFALL (KG/M**2/S) DOWND3C.294 ! OUT SURFACE RAINFALL (KG/M**2/S) DOWND3C.295 C DOWND3C.296 REAL SNOW(NPNTS) ! INOUT DOWND3C.297 ! IN INITIALISED SNOWFALL (KG/M**2/S) DOWND3C.298 ! OUT SURFACE SNOWFALL (KG/M**2/S) DOWND3C.299 C DOWND3C.300 LOGICAL BDD_ON(NPNTS) ! INOUT DOWND3C.301 ! IN MASK FOR THOSE POINTS WHERE DD DOWND3C.302 ! HAS CONTINUED FROM PREVIOUS LAYER DOWND3C.303 ! OUT MASK FOR THOSE POINTS WHERE DD DOWND3C.304 ! CONTINUES TO LAYER K-1 DOWND3C.305 C DOWND3C.306 REAL EFLUX_U_DD(NPNTS), ! INOUT DOWND3C.307 * EFLUX_V_DD(NPNTS) ! IN EDDY FLUX OF MOMENTUM DUE TO DD DOWND3C.308 ! AT TOP OF A LAYER DOWND3C.309 ! OUT EDDY FLUX OF MOMENTUM DUE TO DD DOWND3C.310 ! AT BOTTOM OF A LAYER DOWND3C.311 C DOWND3C.312 C----------------------------------------------------------------------- DOWND3C.313 C VARIABLES WHICH ARE DEFINED LOCALLY DOWND3C.314 C----------------------------------------------------------------------- DOWND3C.315 C DOWND3C.316 C DOWND3C.350 REAL WORK(NDDON_A,38) ! WORK SPACE DOWND3C.351 C DOWND3C.352 LOGICAL BWORK(NDDON_A,5) ! WORK SPACE FOR 'BIT' MASKS DOWND3C.353 C DOWND3C.354 INTEGER INDEX1(NDDON_A) ! INDEX FOR COMPRESS AND DOWND3C.355 C DOWND3C.356 LOGICAL B_DD_END(NPNTS) ! MASK FOR POINTS WHERE DOWNDRAUGHT DOWND3C.357 ! HAS ENDED DOWND3C.358 C DOWND3C.359 REAL TRADD_K_C(NDDON_A, ! TRACER CONTENT IN DOWNDRAUGHT AT DOWND3C.360 * NTRA) ! LAYER K - COMPRESSED (KG/KG) DOWND3C.361 C DOWND3C.362 REAL TRAE_K_C(NDDON_A,NTRA)! TRACER CONTENT OF ENVIRONMENT AT DOWND3C.363 ! LAYER K - COMPRESSED (KG/KG) DOWND3C.364 C DOWND3C.365 REAL TRAE_KM1_C(NDDON_A, ! TRACER CONTENT OF ENVIRONMENT IN DOWND3C.366 * NTRA) ! LAYER K-1 - COMPRESSED (KG/KG) DOWND3C.367 C DOWND3C.368 REAL DTRA_K_C(NDDON_A,NTRA)! INCREMENT TO MODEL TRACER IN LAYER DOWND3C.369 ! K - COMPRESSED (KG/KG/S) DOWND3C.370 C DOWND3C.371 REAL DTRA_KM1_C(NDDON_A, ! INCREMENT TO MODEL TRACER IN LAYER DOWND3C.372 * NTRA) ! K-1 - COMPRESSED (KG/KG/S) DOWND3C.373 C DOWND3C.374 REAL DELTRAD_C(NDDON_A, ! DEPLETION OF ENVIRONMENT TRACER DOWND3C.375 * NTRA) ! DUE TO DOWNDRAUGHT FORMATION DOWND3C.376 ! COMPRESSED DOWND3C.377 C DOWND3C.378 C DOWND3C.380 REAL FACTOR ! PROPORTION OF RAINFALL GOING INTO DOWND3C.381 ! DOWNDRAUGHT FROM UD DOWND3C.382 C DOWND3C.383 REAL FACTOR_ENV ! PROPORTION OF RAINFALL GOING INTO DOWND3C.384 ! DD FROM FALLING PPN DOWND3C.385 C DOWND3C.386 REAL PPN_DD_REF ! REFERENCE DD PPN MASS DOWND3C.387 C DOWND3C.388 C----------------------------------------------------------------------- DOWND3C.389 C EXTERNAL ROUTINES CALLED DOWND3C.390 C----------------------------------------------------------------------- DOWND3C.391 C DOWND3C.392 EXTERNAL CHG_PHSE, PEVP_BCB, DDRAUGHT DOWND3C.393 C DOWND3C.394 C----------------------------------------------------------------------- DOWND3C.395 C START OF MAIN LOOP DOWND3C.396 C UPDATE PRECIPITATION AND CALCULATE MASK FOR WHERE PRECIPITATION DOWND3C.397 C IS LIQUID DOWND3C.398 C----------------------------------------------------------------------- DOWND3C.399 C DOWND3C.400 DO I=1,NPNTS DOWND3C.401 B_DD_END(I) = .FALSE. DOWND3C.402 END DO DOWND3C.403 C DOWND3C.404 IF (K.EQ.KCT+1) THEN DOWND3C.405 DO I=1,NPNTS DOWND3C.406 RAIN_DD(I) = 0.0 DOWND3C.407 RAIN_ENV(I) = 0.0 DOWND3C.408 END DO DOWND3C.409 DO I=1,NPNTS DOWND3C.410 SNOW_DD(I) = 0.0 DOWND3C.411 SNOW_ENV(I) = 0.0 DOWND3C.412 END DO DOWND3C.413 END IF DOWND3C.414 C DOWND3C.415 C---------------------------------------------------------------------- DOWND3C.416 C INJECTION OF PRECIPITATION FROM UD AT LEVEL K DOWND3C.417 C---------------------------------------------------------------------- DOWND3C.418 C DOWND3C.419 DO I=1,NPNTS DOWND3C.420 FACTOR= 0.0 DOWND3C.421 IF (BDD_ON(I) .AND. FLX_UD_K(I).GT.0.0) THEN DOWND3C.422 FACTOR = G * FLX_DD_K(I)/FLX_UD_K(I) DOWND3C.423 FACTOR = AMIN1(FACTOR,1.0) DOWND3C.424 END IF DOWND3C.425 c DOWND3C.426 IF (BWATER_K(I)) THEN DOWND3C.427 RAIN_DD(I) = RAIN_DD(I) + PRECIP_K(I)*FACTOR DOWND3C.428 RAIN_ENV(I) = RAIN_ENV(I) + PRECIP_K(I)*(1.0-FACTOR) DOWND3C.429 ELSE DOWND3C.430 SNOW_DD(I) = SNOW_DD(I) + PRECIP_K(I)*FACTOR DOWND3C.431 SNOW_ENV(I) = SNOW_ENV(I) + PRECIP_K(I)*(1.0-FACTOR) DOWND3C.432 END IF DOWND3C.433 c DOWND3C.434 END DO DOWND3C.435 C DOWND3C.436 C---------------------------------------------------------------------- DOWND3C.437 C INTERACTION OF DOWNDRAUGHT WITH RESERVE OF PRECIPITATION OUTSIDE DOWND3C.438 C DOWNDRAUGHT DOWND3C.439 C DOWND3C.440 C BASED UPON CONTINUITY OF PRECIPITATION MIXING RATIO WITHIN DOWND3C.441 C DOWNDRAUGHT - EITHER AFTER INJECTION OF RAIN FROM UD IN LEVEL DOWND3C.442 C K OR WITH PPN MIXING RATIO IN LOWEST PRECIPITATING LAYER DOWND3C.443 C DOWND3C.444 C IF DOWNDRAUGHT INCREASES IN MASS THEN WATER INJECTED DOWND3C.445 C IF DOWNDRAUGHT DECREASES IN MASS THEN WATER IS REMOVED DOWND3C.446 C DOWND3C.447 C---------------------------------------------------------------------- DOWND3C.448 C DOWND3C.449 DO I=1,NPNTS DOWND3C.450 C DOWND3C.451 IF (BDD_ON(I)) THEN DOWND3C.452 C DOWND3C.453 FACTOR_ENV = 0.0 DOWND3C.454 IF (PRECIP_K(I).GT.0.0) THEN DOWND3C.455 C DOWND3C.456 C--------------------------------------------------------------------- DOWND3C.457 C CALCULATE NEW REFERENCE PPN MIXING RATIO DOWND3C.458 C DD PPN MIXING RATIO IN LAYER KM1 BASED ON CONTINUITY DOWND3C.459 C WITH THAT IN LAYER K DOWND3C.460 C--------------------------------------------------------------------- DOWND3C.461 C DOWND3C.462 LR_UD_REF(I) = G * PRECIP_K(I)/FLX_UD_K(I) DOWND3C.463 PPN_DD_REF = RAIN_DD(I)+SNOW_DD(I) DOWND3C.464 ELSE DOWND3C.465 C DOWND3C.466 C--------------------------------------------------------------------- DOWND3C.467 C DD PPN MIXING RATIO IN LAYER KM1 BASED ON CONTINUITY DOWND3C.468 C WITH THAT IN LAST PRECIPITATING UD LAYER DOWND3C.469 C--------------------------------------------------------------------- DOWND3C.470 C DOWND3C.471 PPN_DD_REF = LR_UD_REF(I) * FLX_DD_K(I) DOWND3C.472 END IF DOWND3C.473 C DOWND3C.474 C-------------------------------------------------------------------- DOWND3C.475 C INJECT PPN INTO DD FROM PPN FALLING OUTSIDE OF THE DD DOWND3C.476 C-------------------------------------------------------------------- DOWND3C.477 C DOWND3C.478 IF ((RAIN_ENV(I) + SNOW_ENV(I)) .GT. 0.0) THEN DOWND3C.479 !-------Already inside IF ( BDD_ON(I)) block---------------------------- DOWND3C.480 FACTOR_ENV = ( (PPN_DD_REF * (1.0+EKM14(I))* DOWND3C.481 * (1.0+EKM34(I))*(1.0-AMDETK(I))) - DOWND3C.482 * (RAIN_DD(I)+SNOW_DD(I)) ) / DOWND3C.483 * (RAIN_ENV(I)+SNOW_ENV(I)) DOWND3C.484 FACTOR_ENV = AMIN1(FACTOR_ENV,1.0) DOWND3C.485 FACTOR_ENV = AMAX1(FACTOR_ENV,-1.0) DOWND3C.486 END IF DOWND3C.487 C DOWND3C.488 IF (FACTOR_ENV.GT.0.0) THEN DOWND3C.489 RAIN_DD(I) = RAIN_DD(I) + RAIN_ENV(I)*FACTOR_ENV DOWND3C.490 RAIN_ENV(I) = RAIN_ENV(I) * (1.0-FACTOR_ENV) DOWND3C.491 SNOW_DD(I) = SNOW_DD(I) + SNOW_ENV(I)*FACTOR_ENV DOWND3C.492 SNOW_ENV(I) = SNOW_ENV(I) * (1.0-FACTOR_ENV) DOWND3C.493 ELSE DOWND3C.494 RAIN_ENV(I) = RAIN_ENV(I) - RAIN_DD(I)*FACTOR_ENV DOWND3C.495 RAIN_DD(I) = RAIN_DD(I) * (1.0+FACTOR_ENV) DOWND3C.496 SNOW_ENV(I) = SNOW_ENV(I) - SNOW_DD(I)*FACTOR_ENV DOWND3C.497 SNOW_DD(I) = SNOW_DD(I) * (1.0+FACTOR_ENV) DOWND3C.498 END IF DOWND3C.499 C DOWND3C.500 END IF DOWND3C.501 C DOWND3C.502 C-------------------------------------------------------------------- DOWND3C.503 C ZERO PRECIPITATION RATE IN LAYER K DOWND3C.504 C-------------------------------------------------------------------- DOWND3C.505 C DOWND3C.506 PRECIP_K(I) = 0.0 DOWND3C.507 C DOWND3C.508 END DO DOWND3C.509 C DOWND3C.510 C DOWND3C.511 C----------------------------------------------------------------------- DOWND3C.512 C COMPRESS OUT ON BASIS OF BIT VECTOR BDDON - THOSE POINTS WITH A DOWND3C.513 C DOWNDRAUGHT DOWND3C.514 C----------------------------------------------------------------------- DOWND3C.515 C DOWND3C.516 NDDON=0 DOWND3C.517 C DOWND3C.518 DO I=1,NPNTS DOWND3C.519 IF (BDD_ON(I)) THEN DOWND3C.520 NDDON = NDDON+1 DOWND3C.521 INDEX1(NDDON) = I DOWND3C.522 END IF DOWND3C.523 END DO DOWND3C.524 C DOWND3C.525 IF (NDDON .NE. 0) THEN DOWND3C.526 DO I=1,NDDON DOWND3C.527 WORK(I,1) = THDD_K(INDEX1(I)) DOWND3C.528 WORK(I,2) = QDD_K(INDEX1(I)) DOWND3C.529 END DO DOWND3C.530 DO I=1,NDDON DOWND3C.531 WORK(I,3) = THE_K(INDEX1(I)) DOWND3C.532 WORK(I,4) = THE_KM1(INDEX1(I)) DOWND3C.533 END DO DOWND3C.534 DO I=1,NDDON DOWND3C.535 WORK(I,5) = QE_K(INDEX1(I)) DOWND3C.536 WORK(I,6) = QE_KM1(INDEX1(I)) DOWND3C.537 END DO DOWND3C.538 DO I=1,NDDON DOWND3C.539 WORK(I,7) = DTHBYDT_K(INDEX1(I)) DOWND3C.540 WORK(I,8) = DTHBYDT_KM1(INDEX1(I)) DOWND3C.541 END DO DOWND3C.542 DO I=1,NDDON DOWND3C.543 WORK(I,9) = DQBYDT_K(INDEX1(I)) DOWND3C.544 WORK(I,10) = DQBYDT_KM1(INDEX1(I)) DOWND3C.545 END DO DOWND3C.546 DO I=1,NDDON DOWND3C.547 WORK(I,11) = FLX_DD_K(INDEX1(I)) DOWND3C.548 WORK(I,12) = P_KM1(INDEX1(I)) DOWND3C.549 END DO DOWND3C.550 DO I=1,NDDON DOWND3C.551 WORK(I,13) = DELPK(INDEX1(I)) DOWND3C.552 WORK(I,14) = DELPKM1(INDEX1(I)) DOWND3C.553 END DO DOWND3C.554 DO I=1,NDDON DOWND3C.555 WORK(I,15) = EXK(INDEX1(I)) DOWND3C.556 WORK(I,16) = EXKM1(INDEX1(I)) DOWND3C.557 END DO DOWND3C.558 DO I=1,NDDON DOWND3C.559 WORK(I,17) = DELTD(INDEX1(I)) DOWND3C.560 WORK(I,18) = DELQD(INDEX1(I)) DOWND3C.561 END DO DOWND3C.562 DO I=1,NDDON DOWND3C.563 WORK(I,19) = AMDETK(INDEX1(I)) DOWND3C.564 WORK(I,20) = EKM14(INDEX1(I)) DOWND3C.565 END DO DOWND3C.566 DO I=1,NDDON DOWND3C.567 WORK(I,21) = EKM34(INDEX1(I)) DOWND3C.568 WORK(I,22) = RAIN_DD(INDEX1(I)) DOWND3C.569 END DO DOWND3C.570 DO I=1,NDDON DOWND3C.571 WORK(I,23) = SNOW_DD(INDEX1(I)) DOWND3C.572 WORK(I,24) = CCA(INDEX1(I)) DOWND3C.573 END DO DOWND3C.574 DO I=1,NDDON DOWND3C.575 BWORK(I,1) = BDD_START(INDEX1(I)) DOWND3C.576 BWORK(I,2) = BDDWT_K(INDEX1(I)) DOWND3C.577 END DO DOWND3C.578 DO I=1,NDDON DOWND3C.579 BWORK(I,3) = BDDWT_KM1(INDEX1(I)) DOWND3C.580 BWORK(I,4) = BDD_ON(INDEX1(I)) DOWND3C.581 BWORK(I,5) = B_DD_END(INDEX1(I)) DOWND3C.582 END DO DOWND3C.583 C DOWND3C.584 IF(L_MOM)THEN DOWND3C.585 DO I=1,NDDON DOWND3C.586 WORK(I,25) = UDD_K(INDEX1(I)) DOWND3C.587 WORK(I,26) = VDD_K(INDEX1(I)) DOWND3C.588 END DO DOWND3C.589 DO I=1,NDDON DOWND3C.590 WORK(I,27) = UE_K(INDEX1(I)) DOWND3C.591 WORK(I,28) = VE_K(INDEX1(I)) DOWND3C.592 END DO DOWND3C.593 DO I=1,NDDON DOWND3C.594 WORK(I,29) = UE_KM1(INDEX1(I)) DOWND3C.595 WORK(I,30) = VE_KM1(INDEX1(I)) DOWND3C.596 END DO DOWND3C.597 DO I=1,NDDON DOWND3C.598 WORK(I,31) = DUBYDT_K(INDEX1(I)) DOWND3C.599 WORK(I,32) = DUBYDT_KM1(INDEX1(I)) DOWND3C.600 END DO DOWND3C.601 DO I=1,NDDON DOWND3C.602 WORK(I,33) = DVBYDT_K(INDEX1(I)) DOWND3C.603 WORK(I,34) = DVBYDT_KM1(INDEX1(I)) DOWND3C.604 END DO DOWND3C.605 DO I=1,NDDON DOWND3C.606 WORK(I,35) = DELUD(INDEX1(I)) DOWND3C.607 WORK(I,36) = DELVD(INDEX1(I)) DOWND3C.608 END DO DOWND3C.609 DO I=1,NDDON DOWND3C.610 WORK(I,37) = EFLUX_U_DD(INDEX1(I)) DOWND3C.611 WORK(I,38) = EFLUX_V_DD(INDEX1(I)) DOWND3C.612 END DO DOWND3C.613 END IF DOWND3C.614 C DOWND3C.615 IF(L_TRACER)THEN DOWND3C.616 C DOWND3C.617 DO KTRA=1,NTRA DOWND3C.618 DO I=1,NDDON DOWND3C.619 TRADD_K_C(I,KTRA) = TRADD_K(INDEX1(I),KTRA) DOWND3C.620 TRAE_K_C(I,KTRA) = TRAE_K(INDEX1(I),KTRA) DOWND3C.621 END DO DOWND3C.622 DO I=1,NDDON DOWND3C.623 TRAE_KM1_C(I,KTRA) = TRAE_KM1(INDEX1(I),KTRA) DOWND3C.624 DTRA_K_C(I,KTRA) = DTRABYDT_K(INDEX1(I),KTRA) DOWND3C.625 END DO DOWND3C.626 DO I=1,NDDON DOWND3C.627 DTRA_KM1_C(I,KTRA) = DTRABYDT_KM1(INDEX1(I),KTRA) DOWND3C.628 DELTRAD_C(I,KTRA) = DELTRAD(INDEX1(I),KTRA) DOWND3C.629 END DO DOWND3C.630 END DO DOWND3C.631 C DOWND3C.632 END IF DOWND3C.633 C DOWND3C.634 C DOWND3C.635 C----------------------------------------------------------------------- DOWND3C.636 C START DOWNDRAUGHT CALCULATION DOWND3C.637 C----------------------------------------------------------------------- DOWND3C.638 C DOWND3C.639 C DOWND3C.640 CALL DDRAUGHT
(NDDON,NDDON_A,K,KCT,WORK(1,1),WORK(1,2), DOWND3C.641 & WORK(1,3),WORK(1,4),WORK(1,5),WORK(1,6), DOWND3C.642 & WORK(1,7),WORK(1,8),WORK(1,9),WORK(1,10), DOWND3C.643 & WORK(1,11),WORK(1,12),WORK(1,13),WORK(1,14), DOWND3C.644 & WORK(1,15),WORK(1,16),WORK(1,17),WORK(1,18), DOWND3C.645 & WORK(1,19),WORK(1,20),WORK(1,21),WORK(1,22), DOWND3C.646 & WORK(1,23),BWORK(1,1),BWORK(1,2),BWORK(1,3), DOWND3C.647 & BWORK(1,4),BWORK(1,5),WORK(1,24),L_MOM, DOWND3C.648 & WORK(1,25),WORK(1,26),WORK(1,27),WORK(1,28), DOWND3C.649 & WORK(1,29),WORK(1,30),WORK(1,31),WORK(1,32), DOWND3C.650 & WORK(1,33),WORK(1,34),WORK(1,35),WORK(1,36), DOWND3C.651 & WORK(1,37),WORK(1,38), DOWND3C.652 & L_TRACER,NTRA,TRADD_K_C,TRAE_K_C,TRAE_KM1_C, DOWND3C.653 & DTRA_K_C,DTRA_KM1_C,DELTRAD_C) DOWND3C.654 C DOWND3C.655 C----------------------------------------------------------------------- DOWND3C.656 C EXPAND REQUIRED VECTORS BACK TO FULL FIELDS DOWND3C.657 C----------------------------------------------------------------------- DOWND3C.658 C DOWND3C.659 DO I=1,NDDON DOWND3C.660 THDD_K(INDEX1(I)) = WORK(I,1) DOWND3C.661 QDD_K(INDEX1(I)) = WORK(I,2) DOWND3C.662 END DO DOWND3C.663 DO I=1,NDDON DOWND3C.664 DTHBYDT_K(INDEX1(I)) = WORK(I,7) DOWND3C.665 DTHBYDT_KM1(INDEX1(I)) = WORK(I,8) DOWND3C.666 END DO DOWND3C.667 DO I=1,NDDON DOWND3C.668 DQBYDT_K(INDEX1(I)) = WORK(I,9) DOWND3C.669 DQBYDT_KM1(INDEX1(I)) = WORK(I,10) DOWND3C.670 END DO DOWND3C.671 DO I=1,NDDON DOWND3C.672 FLX_DD_K(INDEX1(I)) = WORK(I,11) DOWND3C.673 RAIN_DD(INDEX1(I)) = WORK(I,22) DOWND3C.674 END DO DOWND3C.675 DO I=1,NDDON DOWND3C.676 SNOW_DD(INDEX1(I)) = WORK(I,23) DOWND3C.677 BDD_START(INDEX1(I)) = BWORK(I,1) DOWND3C.678 END DO DOWND3C.679 DO I=1,NDDON DOWND3C.680 BDDWT_K(INDEX1(I)) = BWORK(I,2) DOWND3C.681 BDDWT_KM1(INDEX1(I)) = BWORK(I,3) DOWND3C.682 END DO DOWND3C.683 DO I=1,NDDON DOWND3C.684 BDD_ON(INDEX1(I)) = BWORK(I,4) DOWND3C.685 B_DD_END(INDEX1(I)) = BWORK(I,5) DOWND3C.686 END DO DOWND3C.687 C DOWND3C.688 IF(L_MOM)THEN DOWND3C.689 DO I=1,NDDON DOWND3C.690 UDD_K(INDEX1(I)) = WORK(I,25) DOWND3C.691 VDD_K(INDEX1(I)) = WORK(I,26) DOWND3C.692 END DO DOWND3C.693 DO I=1,NDDON DOWND3C.694 DUBYDT_K(INDEX1(I)) = WORK(I,31) DOWND3C.695 DUBYDT_KM1(INDEX1(I)) = WORK(I,32) DOWND3C.696 END DO DOWND3C.697 DO I=1,NDDON DOWND3C.698 DVBYDT_K(INDEX1(I)) = WORK(I,33) DOWND3C.699 DVBYDT_KM1(INDEX1(I)) = WORK(I,34) DOWND3C.700 END DO DOWND3C.701 DO I=1,NDDON DOWND3C.702 EFLUX_U_DD(INDEX1(I)) = WORK(I,37) DOWND3C.703 EFLUX_V_DD(INDEX1(I)) = WORK(I,38) DOWND3C.704 END DO DOWND3C.705 END IF DOWND3C.706 C DOWND3C.707 IF(L_TRACER)THEN DOWND3C.708 C DOWND3C.709 DO KTRA=1,NTRA DOWND3C.710 DO I=1,NDDON DOWND3C.711 TRADD_K(INDEX1(I),KTRA) = TRADD_K_C(I,KTRA) DOWND3C.712 DTRABYDT_K(INDEX1(I),KTRA) = DTRA_K_C(I,KTRA) DOWND3C.713 DTRABYDT_KM1(INDEX1(I),KTRA) = DTRA_KM1_C(I,KTRA) DOWND3C.714 END DO DOWND3C.715 END DO DOWND3C.716 C DOWND3C.717 END IF DOWND3C.718 C DOWND3C.719 END IF DOWND3C.720 C DOWND3C.721 C----------------------------------------------------------------------- DOWND3C.722 C RESET PRECIPITATION FALLING THROUGH ENVIRONMENT IF DOWNDRAUGHT DOWND3C.723 C DID NOT FORM DOWND3C.724 C----------------------------------------------------------------------- DOWND3C.725 C DOWND3C.726 DO I=1,NPNTS DOWND3C.727 IF (.NOT.BDD_ON(I).AND..NOT.B_DD_END(I)) THEN DOWND3C.728 RAIN_ENV(I) = RAIN_ENV(I)+RAIN_DD(I) DOWND3C.729 SNOW_ENV(I) = SNOW_ENV(I)+SNOW_DD(I) DOWND3C.730 RAIN_DD(I) = 0.0 DOWND3C.731 SNOW_DD(I) = 0.0 DOWND3C.732 END IF DOWND3C.733 END DO DOWND3C.734 C DOWND3C.735 C----------------------------------------------------------------------- DOWND3C.736 C CARRY OUT CHANGE OF PHASE CALCULATION FOR PRECIPITATION FALLING DOWND3C.737 C THROUGH ENVIRONMENT DOWND3C.738 C----------------------------------------------------------------------- DOWND3C.739 C DOWND3C.740 CALL CHG_PHSE
(NPNTS,K,RAIN_ENV,SNOW_ENV,DTHBYDT_KM1, DOWND3C.741 & EXK,EXKM1,DELPKM1,THE_K,THE_KM1, AJX1F405.58 & TIMESTEP,CCA,L_PHASE_LIM) AJX1F405.59 C DOWND3C.743 C----------------------------------------------------------------------- DOWND3C.744 C EVAPORATE RAIN FALLING THROUGH ENVIRONMENT IF LAYER K BELOW DOWND3C.745 C CLOUD BASE DOWND3C.746 C----------------------------------------------------------------------- DOWND3C.747 C DOWND3C.748 CALL PEVP_BCB
(NPNTS,K-1,ICCB,THE_KM1,P_KM1,QE_KM1,DELPKM1, DOWND3C.749 & RAIN_ENV,SNOW_ENV,DTHBYDT_KM1,DQBYDT_KM1, DOWND3C.750 & EXKM1,TIMESTEP,CCA) DOWND3C.751 C DOWND3C.752 C----------------------------------------------------------------------- DOWND3C.753 C RESET PRECIPITATION FALLING THROUGH ENVIRONMENT IF DOWNDRAUGHT DOWND3C.754 C TERMINATES DOWND3C.755 C----------------------------------------------------------------------- DOWND3C.756 C DOWND3C.757 DO I=1,NPNTS DOWND3C.758 IF (B_DD_END(I)) THEN DOWND3C.759 RAIN_ENV(I) = RAIN_ENV(I)+RAIN_DD(I) DOWND3C.760 SNOW_ENV(I) = SNOW_ENV(I)+SNOW_DD(I) DOWND3C.761 RAIN_DD(I) = 0.0 DOWND3C.762 SNOW_DD(I) = 0.0 DOWND3C.763 END IF DOWND3C.764 END DO DOWND3C.765 C DOWND3C.766 C----------------------------------------------------------------------- DOWND3C.767 C UPDATE RAIN AND SNOW DOWND3C.768 C----------------------------------------------------------------------- DOWND3C.769 C DOWND3C.770 IF (K.EQ.2) THEN DOWND3C.771 DO I=1,NPNTS DOWND3C.772 RAIN(I) = RAIN(I)+RAIN_DD(I)+RAIN_ENV(I) DOWND3C.773 SNOW(I) = SNOW(I)+SNOW_DD(I)+SNOW_ENV(I) DOWND3C.774 END DO DOWND3C.775 END IF DOWND3C.776 C DOWND3C.777 RETURN DOWND3C.778 END DOWND3C.779 C DOWND3C.780 *ENDIF DOWND3C.781