*IF DEF,A05_3B AJX1F405.164
C (c) CROWN COPYRIGHT 1995, METEOROLOGICAL OFFICE, All Rights Reserved. GTS2F400.14555
C GTS2F400.14556
C Use, duplication or disclosure of this code is subject to the GTS2F400.14557
C restrictions as set forth in the contract. GTS2F400.14558
C GTS2F400.14559
C Meteorological Office GTS2F400.14560
C London Road GTS2F400.14561
C BRACKNELL GTS2F400.14562
C Berkshire UK GTS2F400.14563
C RG12 2SZ GTS2F400.14564
C GTS2F400.14565
C If no contract has been raised with this copy of the code, the use, GTS2F400.14566
C duplication or disclosure of it is strictly prohibited. Permission GTS2F400.14567
C to do so must first be obtained in writing from the Head of Numerical GTS2F400.14568
C Modelling at the above address. GTS2F400.14569
C ******************************COPYRIGHT****************************** GTS2F400.14570
C GTS2F400.14571
CLL SUBROUTINE CONVECT------------------------------------------------ CONVEC3A.3
CLL CONVEC3A.4
CLL PURPOSE : TOP LEVEL OF THE MASS FLUX CONVECTION SCHEME. CONVEC3A.5
CLL LOOPS ROUND MODEL LEVELS FORM SURFACE UPWARDS CONVEC3A.6
CLL A STABILITY TEST IS CARRIED OUT TO DETERMINE WHICH CONVEC3A.7
CLL POINTS ARE TOO STABLE FOR CONVECTION TO OCCUR CONVEC3A.8
CLL SUBROUTINE LIFTP AND CONVC2 ARE CALLED TO CALCULATE CONVEC3A.9
CLL THE PARCEL ASCENT CONVEC3A.10
CLL SUBROUTINE POUR IS CALLED TO CALCULATE THE EVAPORATION CONVEC3A.11
CLL OF FALLING PRECIPITATION CONVEC3A.12
CLL SUBROUTINE DD_CALL CALLS THE DOWNDRAUGHT CODE CONVEC3A.13
CLL SUBROUTINE CORNRG IS CALLED TO CONSERVE MOIST STATIC CONVEC3A.14
CLL ENERGY ONCE OTHER CALCULATIONS ARE COMPLETE CONVEC3A.15
CLL CONVEC3A.16
CLL SUITABLE FOR SINGLE COLUMN MODEL USE CONVEC3A.17
CLL CONVEC3A.18
CLL MODEL MODIFICATION HISTORY FROM MODEL VERSION 3.0: CONVEC3A.19
CLL VERSION DATE CONVEC3A.20
CLL 4.0 5/05/95 : New version (based on 2B) incorporating; CONVEC3A.21
CLL Tracer transports CONVEC3A.22
CLL Convective momentum transports with cloud pressure CONVEC3A.23
CLL gradients and eddy flux formulation CONVEC3A.24
CLL CAPE closure and CAPE diagnostic CONVEC3A.25
CLL Diagnosis of deep/shallow/mid convection CONVEC3A.26
CLL Pressure dependency of evaporation of CONVEC3A.27
CLL precipitation CONVEC3A.28
CLL 4.1 10/6/96 : Changed dimensions of momentum arrays to API4F401.57
CLL allow convection to be split into segments API4F401.58
CLL with the momentum transport scheme. API4F401.59
CLL Pete Inness API4F401.60
CLL 4.1 25/03/96 : CAPE closure restructured to avoid increments API1F401.1
CLL from split final detrainment being included API1F401.2
CLL in the scheme if convection re-initiates API1F401.3
CLL from a level at which split final detrainment API1F401.4
CLL has already occurred. API1F401.5
CLL P. Inness. API1F401.6
CLL CONVEC3A.29
CLL 4.1 10/05/96 Include check to prevent negative tracer values AWO5F401.246
CLL (involves use or CRAY-specific MINVAL function) AWO5F401.247
CLL M. Woodage, D. Roberts AWO5F401.248
CLL 4.2 Oct. 96 T3E migration: *DEF CRAY removed GSS2F402.267
CLL (was used to switch on WHENIMD & MINVAL) GSS2F402.268
CLL S.J.Swarbrick GSS2F402.269
CLL AWO5F401.249
CLL 4.2 26/9/96 : Four new diagnostics added - AJX1F402.219
CLL (i) Gridbox mean conv. cloud water AJX1F402.220
CLL (ii) Gridbox mean conv. cloud liquid water path AJX1F402.221
CLL (iii)Cloud base pressure weighted by convective AJX1F402.222
CLL cloud amount (CCA) AJX1F402.223
CLL (iv) Cloud top pressure weighted by CCA AJX1F402.224
CLL J.Cairns AJX1F402.225
CLL 4.3 Feb. 97 T3E optimisation: introduce recip_pstar, GSS1F403.140
CLL eliminate copying into workspace arrays GSS1F403.141
CLL for CORENG call. S.J.Swarbrick GSS1F403.142
CLL 4.3 03/02/97 (i) Pass logical switch L_XSCOMP down to ENVIRON. ARN2F403.23
CLL (ii) Put setting of bottom model layer parcel ARN2F403.24
CLL excess to standard deviation of turbulent ARN2F403.25
CLL fluctuations under control of logical ARN2F403.26
CLL switch L_SDXS (also passed down to ENVIRON). ARN2F403.27
CLL R.N.B.Smith ARN2F403.28
!LL 4.4 Oct 97 Add halo mask to stop redundant calculations AAD2F404.195
!LL Alan Dickinson AAD2F404.196
CLL 4.4 29/08/97 Pass switch L_CCW down to CLOUD_W to determine if AJX0F404.206
CLL precip is included in water path and pass in switch AJX0F404.207
CLL L_3D_CCA to determine if a 3D conv cloud amount AJX0F404.208
CLL should be calculated in new subroutine CALC_3D_CCA. AJX0F404.209
CLL 4.4 26/11/97 Levels loop for DTRABYDT should be NLEV ARB0F404.25
CLL not TRLEV. RTHBarnes. ARB0F404.26
!LL 4.5 5/6/98 Updraught factor and L_CLOUD_DEEP passed into AJX3F405.33
!LL convection as part of anvil scheme. J.Gregory AJX3F405.34
CLL 4.5 Jul. 98 Kill the IBM specific lines (JCThil) AJC1F405.21
!LL 4.5 20/02/98 Remove redundant code. A. Dickinson ADR1F405.21
CLL 4.5 05/05/98 Add Fujitsu vectorization directives. GRB0F405.168
CLL 4.5 05/05/98 Use fortran 90 intrinsic TINY instead of GRB1F405.76
CLL 1.0E-100 for safety_margin. RBarnes@ecmwf.int GRB1F405.77
CLL ARB0F404.27
CLL ARN2F403.29
CLL PROGRAMMING STANDARDS : UNIFIED MODEL DOCUMENTATION PAPER NO. 3 CONVEC3A.30
CLL VERSION NO. 4 Dated 05/02/92 CONVEC3A.31
CLL CONVEC3A.32
CLL LOGICAL COMPONENTS INCLUDED: CONVEC3A.33
CLL CONVEC3A.34
CLL SYSTEM TASK : P27 CONVEC3A.35
CLL CONVEC3A.36
CLL DOCUMENTATION : UNIFIED MODEL DOCUMENTATION PAPER P27 CONVEC3A.37
CLL CONVEC3A.38
CLLEND----------------------------------------------------------------- CONVEC3A.39
C CONVEC3A.40
C*L ARGUMENTS--------------------------------------------------------- CONVEC3A.41
C CONVEC3A.42
SUBROUTINE CONVECT(NP_FIELD,NPNTS,NLEV,NBL,TH,Q,PSTAR,BLAND,U,V, 3,46CONVEC3A.43
* TRACER,DTHBYDT,DQBYDT,DUBYDT,DVBYDT,RAIN,SNOW, CONVEC3A.44
* CCA,ICCB,ICCT,CCLWP,CCW,ICCBPxCCA,ICCTPxCCA, AJX1F402.227
* GBMCCWP,GBMCCW,LCBASE,LCTOP,LCCA, AJX1F402.228
* LCCLWP,CAPE_OUT,EXNER,AK,BK, CONVEC3A.46
* AKM12,BKM12,DELAK,DELBK,TIMESTEP,T1_SD,Q1_SD, CONVEC3A.47
& L_MOM,L_TRACER,L_CAPE,NTRA,TRLEV,L_XSCOMP, ARN2F403.30
& L_SDXS,N_CCA_LEV,L_3D_CCA,L_CCW,MPARWTR AJX0F404.210
& ,ANVIL_FACTOR ,TOWER_FACTOR AJX0F404.211
*IF DEF,SCMA AJC0F405.177
C For Observational forcing AJC0F405.178
& ,DTHUD,DTHDD,DQUD,DQDD AJC0F405.179
*ENDIF AJC0F405.180
*IF DEF,MPP AAD2F404.197
& ,l_halo AAD2F404.198
*ENDIF AAD2F404.199
& ,UD_FACTOR,L_CLOUD_DEEP AJX3F405.35
& ,UP_FLUX,FLG_UP_FLX,DWN_FLUX,FLG_DWN_FLX, AJX3F405.36
& ENTRAIN_UP,FLG_ENTR_UP,DETRAIN_UP, AJX3F405.37
& FLG_DETR_UP,ENTRAIN_DWN,FLG_ENTR_DWN, AJX3F405.38
& DETRAIN_DWN,FLG_DETR_DWN AJX3F405.39
& ) AJX0F404.212
! AJX0F404.213
IMPLICIT NONE CONVEC3A.50
C CONVEC3A.51
C CONVEC3A.55
C-------------------------------------------------------------------- CONVEC3A.56
C MODEL CONSTANTS CONVEC3A.57
C-------------------------------------------------------------------- CONVEC3A.58
C CONVEC3A.59
*CALL PARXS
CONVEC3A.60
*CALL C_EPSLON
CONVEC3A.61
*CALL C_R_CP
CONVEC3A.62
*CALL XSBMIN
CONVEC3A.63
*CALL MPARB
CONVEC3A.64
*CALL DELTHST
CONVEC3A.65
*CALL C_LHEAT
CONVEC3A.66
*CALL MASSFC
CONVEC3A.67
*CALL ENTCNST
CONVEC3A.68
*CALL CAPECNST
CONVEC3A.69
*CALL QSTICE
CONVEC3A.70
*CALL C_0_DG_C
AJX0F404.214
*CALL C_G
AJX4F405.5
C CONVEC3A.71
*IF DEF,CRAY AWO5F401.250
*IF DEF,CRAY,AND,-DEF,T3D GSS2F402.270
INTRINSIC MINVAL ! FOR TRACERS AWO5F401.251
*ENDIF AWO5F401.252
*ENDIF GSS2F402.271
C--------------------------------------------------------------------- CONVEC3A.72
C VECTOR LENGTHS AND LOOP COUNTERS CONVEC3A.73
C--------------------------------------------------------------------- CONVEC3A.74
C CONVEC3A.75
INTEGER NP_FIELD ! LENGTH OF DATA (ALSO USED TO CONVEC3A.76
! SPECIFY STARTING POINT OF CONVEC3A.77
! DATA PASSED IN) CONVEC3A.78
C CONVEC3A.79
INTEGER NPNTS ! IN FULL VECTOR LENGTH CONVEC3A.80
C CONVEC3A.81
INTEGER NLEV ! IN NUMBER OF MODEL LAYERS CONVEC3A.82
C CONVEC3A.83
INTEGER NBL ! IN NUMBER OF BOUNDARY LAYER LEVELS CONVEC3A.84
C CONVEC3A.85
INTEGER NCONV ! NUMBER OF POINTS WHICH PASS CONVEC3A.86
! INITIAL STABILITY TEST IN LAYER K CONVEC3A.87
C CONVEC3A.88
INTEGER NINIT ! NUMBER OF POINTS AT WHICH CONVEC3A.89
! CONVECTION OCCURS IN LAYER K CONVEC3A.90
C CONVEC3A.91
INTEGER NTERM ! NUMBER OF CONVECTING POINTS IN CONVEC3A.92
! LAYER K AT WHICH CONVECTION IS CONVEC3A.93
! TERMINATING CONVEC3A.94
C CONVEC3A.95
INTEGER NCNLV ! NUMBER OF POINTS AT WHICH CONVECTION CONVEC3A.96
! OCCURS AT SOME LAYER OF THE DOMAIN CONVEC3A.97
C CONVEC3A.98
INTEGER NTRA ! NUMBER OF TRACER FIELDS CONVEC3A.99
C CONVEC3A.100
INTEGER TRLEV ! NUMBER OF MODEL LEVELS ON WHICH CONVEC3A.101
! TRACERS ARE INCLUDED CONVEC3A.102
C CONVEC3A.103
INTEGER I,K,KC,KTRA,K_TEST, ! LOOP COUNTERS CONVEC3A.104
* KT CONVEC3A.105
C CONVEC3A.106
INTEGER N_CCA_LEV ! Number of levels for conv cloud AJX0F404.215
! ! amount: 1 for 2D, nlevs for 3D. AJX0F404.216
C CONVEC3A.107
C--------------------------------------------------------------------- CONVEC3A.108
C VARIABLES WHICH ARE INPUT CONVEC3A.109
C--------------------------------------------------------------------- CONVEC3A.110
C CONVEC3A.111
LOGICAL BLAND(NP_FIELD) ! IN LAND/SEA MASK CONVEC3A.112
C CONVEC3A.113
LOGICAL L_TRACER ! IN SWITCH FOR INCLUSION OF TRACERS CONVEC3A.114
C CONVEC3A.115
LOGICAL L_MOM ! IN SWITCH FOR INCLUSION OF CONVEC3A.116
! MOMENTUM TRANSPORTS CONVEC3A.117
C CONVEC3A.118
LOGICAL L_CAPE ! IN SWITCH FOR USE OF CAPE CLOSURE CONVEC3A.119
C CONVEC3A.120
LOGICAL L_XSCOMP ! IN Switch for allowing compensating ARN2F403.32
! cooling and drying of the ARN2F403.33
! environment in initiating layer ARN2F403.34
C ARN2F403.35
LOGICAL L_SDXS ! IN Switch for allowing parcel excess ARN2F403.36
! to be set to s.d. of turbulent ARN2F403.37
! fluctuations in lowest model ARN2F403.38
! layer ARN2F403.39
C ARN2F403.40
LOGICAL L_3D_CCA ! IN Switch for conv cld amt varying AJX0F404.217
! ! with height (3D), or not (2D) AJX0F404.218
LOGICAL L_CCW ! IN Switch for allowing precip AJX0F404.219
! before calculation of water AJX0F404.220
! path. AJX0F404.221
! AJX3F405.40
LOGICAL L_CLOUD_DEEP ! IN Switch for depth criterion for AJX3F405.41
! ! anvil clouds. AJX3F405.42
! AJX3F405.43
REAL PSTAR(NP_FIELD) ! IN SURFACE PRESSURE (PA) CONVEC3A.121
C CONVEC3A.122
REAL EXNER(NP_FIELD,NLEV+1) ! IN EXNER RATIO CONVEC3A.123
C CONVEC3A.124
REAL AK(NLEV), ! IN HYBRID CO-ORDINATE COEFFICIENTS CONVEC3A.125
* BK(NLEV) ! DEFINE PRESSURE AT MID-POINT CONVEC3A.126
! OF LAYER K CONVEC3A.127
C CONVEC3A.128
REAL AKM12(NLEV+1), ! IN HYBRID CO-ORDINATE COEFFICIENTS CONVEC3A.129
* BKM12(NLEV+1) ! TO DEFINE PRESSURE AT CONVEC3A.130
! LEVEL K-1/2 CONVEC3A.131
C CONVEC3A.132
REAL DELAK(NLEV), ! IN DIFFERENCE IN HYBRID CO-ORDINATE CONVEC3A.133
* DELBK(NLEV) ! COEFFICIENTS ACROSS LAYER K CONVEC3A.134
C CONVEC3A.135
REAL TIMESTEP ! IN MODEL TIMESTEP (SECS) CONVEC3A.136
C CONVEC3A.137
REAL T1_SD(NP_FIELD) ! IN Standard deviation of turbulent CONVEC3A.138
C ! fluctuations of layer 1 CONVEC3A.139
C ! temperature (K). CONVEC3A.140
REAL Q1_SD(NP_FIELD) ! IN Standard deviation of turbulent CONVEC3A.141
C ! fluctuations of layer 1 CONVEC3A.142
C ! humidity (kg/kg). CONVEC3A.143
REAL MPARWTR ! IN Reservoir of conv cld water left AJX0F404.222
! ! in a layer after conv. precip. AJX0F404.223
REAL ANVIL_FACTOR ! IN used in calculation of cld. amt. AJX0F404.224
& ,TOWER_FACTOR ! on model levels if L_3D_CCA = .T. AJX0F404.225
! AJX3F405.44
REAL UD_FACTOR ! IN Updraught factor: used in conv. AJX3F405.45
! ! cloud water path as seen by rad. AJX3F405.46
! ! if L_CCW is true. AJX3F405.47
! AJX3F405.48
*IF DEF,MPP AAD2F404.201
LOGICAL l_halo(NP_FIELD) ! Mask for halos AAD2F404.202
*ENDIF AAD2F404.203
LOGICAL FLG_UP_FLX ! STASH FLAG FOR UPDRAUGHT MASS FLUX API2F405.183
C CONVEC3A.144
LOGICAL FLG_DWN_FLX ! STASH FLAG FOR DOWNDRAGHT MASS FLUX API2F405.184
! API2F405.185
LOGICAL FLG_ENTR_UP ! STASH FLAG FOR UPDRAUGHT ENTRAINMENT API2F405.186
! API2F405.187
LOGICAL FLG_ENTR_DWN ! STASH FLAG FOR DOWNDRAUGHT ENTRAINMN API2F405.188
! API2F405.189
LOGICAL FLG_DETR_UP ! STASH FLAG FOR UPDRAUGHT DETRAINMENT API2F405.190
! API2F405.191
LOGICAL FLG_DETR_DWN ! STASH FLAG FOR DOWNDRAUGHT DETRAINMN API2F405.192
! API2F405.193
C--------------------------------------------------------------------- CONVEC3A.145
C VARIABLES WHICH ARE INPUT AND OUTPUT CONVEC3A.146
C--------------------------------------------------------------------- CONVEC3A.147
C CONVEC3A.148
REAL TH(NP_FIELD,NLEV) ! INOUT CONVEC3A.149
! IN MODEL POTENTIAL TEMPERATURE (K) CONVEC3A.150
! OUT MODEL POTENTIAL TEMPERATURE CONVEC3A.151
! AFTER CONVECTION (K) CONVEC3A.152
C CONVEC3A.153
REAL Q(NP_FIELD,NLEV) ! INOUT CONVEC3A.154
! IN MODEL MIXING RATIO (KG/KG) CONVEC3A.155
! OUT MODEL MIXING RATIO AFTER CONVEC3A.156
! AFTER CONVECTION (KG/KG) CONVEC3A.157
C CONVEC3A.158
REAL U(NP_FIELD,NLEV) ! INOUT API4F401.61
! IN MODEL U FIELD (M/S) CONVEC3A.160
! OUT MODEL U FIELD AFTER CONVECTIVE CONVEC3A.161
! MOMENTUM TRANSPORT (M/S) CONVEC3A.162
C CONVEC3A.163
REAL V(NP_FIELD,NLEV) ! INOUT API4F401.62
! IN MODEL V FIELD (M/S) CONVEC3A.165
! OUT MODEL V FIELD AFTER CONVECTIVE CONVEC3A.166
! MOMENTUM TRANSPORT (M/S) CONVEC3A.167
C CONVEC3A.168
REAL TRACER(NP_FIELD,TRLEV, ! INOUT CONVEC3A.169
* NTRA) ! IN MODEL TRACER FIELDS (KG/KG) CONVEC3A.170
! OUT MODEL TRACER FIELDS AFTER CONVEC3A.171
! CONVECTION (KG/KG) CONVEC3A.172
C CONVEC3A.173
C CONVEC3A.174
C---------------------------------------------------------------------- CONVEC3A.175
C VARIABLES WHICH ARE OUTPUT CONVEC3A.176
C---------------------------------------------------------------------- CONVEC3A.177
C CONVEC3A.178
REAL DTHBYDT(NP_FIELD,NLEV) ! OUT INCREMENTS TO POTENTIAL CONVEC3A.179
! TEMPERATURE DUE TO CONVECTION CONVEC3A.180
! (K/S) CONVEC3A.181
C CONVEC3A.182
REAL DQBYDT(NP_FIELD,NLEV) ! OUT INCREMENTS TO MIXING RATIO CONVEC3A.183
! DUE TO CONVECTION (KG/KG/S) CONVEC3A.184
C CONVEC3A.185
REAL DUBYDT(NP_FIELD,NLEV) ! OUT INCREMENTS TO U DUE TO API4F401.63
! CONVECTIVE MOMENTUM TRANSPORT CONVEC3A.187
! (M/S**2) CONVEC3A.188
C CONVEC3A.189
REAL DVBYDT(NP_FIELD,NLEV) ! OUT INCREMENTS TO V DUE TO API4F401.64
! CONVECTIVE MOMENTUM TRANSPORT CONVEC3A.191
! (M/S**2) CONVEC3A.192
*IF DEF,SCMA AJC0F405.181
Real DTHUD(NP_FIELD,NLEV) AJC0F405.182
Real DTHDD(NP_FIELD,NLEV) AJC0F405.183
Real DQUD(NP_FIELD,NLEV) AJC0F405.184
Real DQDD(NP_FIELD,NLEV) AJC0F405.185
*ENDIF AJC0F405.186
C CONVEC3A.193
REAL RAIN(NP_FIELD) ! OUT SURFACE CONVECTIVE RAINFALL CONVEC3A.194
! (KG/M**2/S) CONVEC3A.195
C CONVEC3A.196
REAL SNOW(NP_FIELD) ! OUT SURFACE CONVECTIVE SNOWFALL CONVEC3A.197
! (KG/M**2/S) CONVEC3A.198
C CONVEC3A.199
REAL CCA(NP_FIELD,N_CCA_LEV)! OUT CONVECTIVE CLOUD AMOUNT (%) AJX0F404.226
C CONVEC3A.201
INTEGER ICCB(NP_FIELD) ! OUT CONVECTIVE CLOUD BASE LEVEL CONVEC3A.202
C CONVEC3A.203
INTEGER ICCT(NP_FIELD) ! OUT CONVECTIVE CLOUD TOP LEVEL CONVEC3A.204
C CONVEC3A.205
REAL CCLWP(NP_FIELD) ! OUT CONDENSED WATER PATH (KG/M**2) CONVEC3A.206
C CONVEC3A.207
REAL CCW(NP_FIELD,NLEV) ! OUT CONVECTIVE CLOUD LIQUID WATER CONVEC3A.208
! (G/KG) ON MODEL LEVELS CONVEC3A.209
C CONVEC3A.210
REAL ICCBPxCCA(NP_FIELD) ! OUT CONV. CLD BASE PRESSURE x CCA AJX1F402.229
C AJX1F402.230
REAL ICCTPxCCA(NP_FIELD) ! OUT CONV. CLD TOP PRESSURE x CCA AJX1F402.231
C AJX1F402.232
REAL GBMCCWP(NP_FIELD) ! OUT GRIDBOX MEAN CCWP AJX1F402.233
C AJX1F402.234
REAL GBMCCW(NP_FIELD,NLEV) ! OUT GRIDBOX MEAN CCW AJX1F402.235
C AJX1F402.236
REAL LCCA(NP_FIELD) ! OUT LOWEST CONV.CLOUD AMOUNT (%) CONVEC3A.211
C CONVEC3A.212
INTEGER LCBASE(NP_FIELD) ! OUT LOWEST CONV.CLOUD BASE LEVEL CONVEC3A.213
C CONVEC3A.214
INTEGER LCTOP(NP_FIELD) ! OUT LOWEST CONV.CLOUD TOP LEVEL CONVEC3A.215
C CONVEC3A.216
REAL LCCLWP(NP_FIELD) ! OUT CONDENSED WATER PATH (KG/M**2) CONVEC3A.217
! FOR LOWEST CONV.CLOUD CONVEC3A.218
C CONVEC3A.219
REAL CAPE_OUT(NPNTS) ! OUT SAVED VALUES OF CONVECTIVE CONVEC3A.220
! AVAILABLE POTENTIAL ENERGY CONVEC3A.221
! FOR DIAGNOSTIC OUTPUT CONVEC3A.222
REAL UP_FLUX(NP_FIELD,NLEV) ! OUT UPDRAUGHT MASS FLUX API2F405.194
C CONVEC3A.223
REAL DWN_FLUX(NP_FIELD,NLEV) ! OUT DOWNDRAUGHT MASS FLUX API2F405.195
! API2F405.196
REAL ENTRAIN_UP(NP_FIELD,NLEV) ! FRACTIONAL ENTRAINMENT RATE API2F405.197
! INTO UPDRAUGHTS API2F405.198
REAL DETRAIN_UP(NP_FIELD,NLEV) ! FRACTIONAL DETRAINMENT RATE API2F405.199
! FROM UPDRAUGHTS API2F405.200
REAL ENTRAIN_DWN(NP_FIELD,NLEV) ! FRACTIONAL ENTRAINMENT RATE API2F405.201
! INTO DOWNDRAUGHTS API2F405.202
REAL DETRAIN_DWN(NP_FIELD,NLEV) ! FRACTIONAL DETRAINMENT RATE API2F405.203
! FROM DOWNDRAUGHTS API2F405.204
API2F405.205
API2F405.206
C---------------------------------------------------------------------- CONVEC3A.224
C VARIABLES DEFINED LOCALLY CONVEC3A.225
C CONVEC3A.226
REAL WORK(NPNTS,NLEV*2), ! WORK SPACE CONVEC3A.448
* WORK2(NPNTS,NLEV*2) CONVEC3A.449
LOGICAL BWORK(NPNTS,4), ! WORK SPACE FOR 'BIT' MASKS CONVEC3A.450
* BWORK2(NPNTS,4) CONVEC3A.451
C CONVEC3A.452
REAL CAPE(NPNTS) ! CONVECTIVE AVAILABLE POTENTIAL CONVEC3A.453
! ENERGY (J/KG) CONVEC3A.454
C CONVEC3A.455
REAL DCPBYDT(NPNTS) ! RATE OF CHANGE OF CAPE CONVEC3A.456
C CONVEC3A.457
REAL CAPE_C(NPNTS) ! CAPE - COMPRESSED CONVEC3A.458
C CONVEC3A.459
REAL DCPBYDT_C(NPNTS) ! RATE OF CHANGE OF CAPE - COMPRESSED CONVEC3A.460
C CONVEC3A.461
REAL DTHEF(NPNTS) ! THETA INCREMENT FROM CONVECTION API1F401.20
! IN MODEL LEVEL AT WHICH SPLIT API1F401.21
! FINAL DETRAINMENT LAST OCCURRED API1F401.22
! (K/S) API1F401.23
C API1F401.24
REAL DQF(NPNTS) ! SPECIFIC HUMIDITY INCREMENT FROM API1F401.25
! CONVECTION IN MODEL LEVEL AT WHICH API1F401.26
! SPLIT FINAL DETRAINMENT LAST API1F401.27
! OCCURRED (KG/KG/S) API1F401.28
C API1F401.29
REAL DUEF(NPNTS) ! AS DTHEF BUT FOR U INCREMENTS (ms-2) API1F405.1
! API1F405.2
REAL DVEF(NPNTS) ! AS DTHEF BUT FOR V INCREMENTS (ms-2) API1F405.3
! API1F405.4
LOGICAL BCONV(NPNTS) ! MASK FOR POINTS WHERE STABILITY CONVEC3A.462
! LOW ENOUGH FOR CONVECTION CONVEC3A.463
! TO OCCUR CONVEC3A.464
C CONVEC3A.465
REAL QSE(NPNTS,NLEV) ! SATURATION MIXING RATIO OF CLOUD CONVEC3A.466
! ENVIRONMENT (KG/KG) CONVEC3A.467
C CONVEC3A.468
REAL TT(NPNTS) ! TEMPORARY STORE FOR TEMPERATURE CONVEC3A.469
! IN CALCULATION OF SATURATION CONVEC3A.470
! MIXING RATIO (K) CONVEC3A.471
C CONVEC3A.472
REAL TTKM1(NPNTS) ! TEMPORARY STORE FOR TEMPERATURE AJX0F404.237
! IN LAYER K-1 FOR USE IN FREEZING AJX0F404.238
! LEV. CALCULATION FOR ANVIL (K) AJX0F404.239
C AJX0F404.240
REAL PT(NPNTS) ! TEMPORARY STORE FOR PRESSURE CONVEC3A.473
! IN CALCULATION OF SATURATION CONVEC3A.474
! MIXING RATIO (PA) CONVEC3A.475
C CONVEC3A.476
REAL CCA_2DC(NPNTS) ! COMPRESSED VALUES OF 2D CCA AJX0F404.241
C CONVEC3A.478
INTEGER ICCBC(NPNTS) ! COMPRESSED VALUES OF CCB CONVEC3A.479
C CONVEC3A.480
INTEGER ICCTC(NPNTS) ! COMPRESSED VALUES OF CCT CONVEC3A.481
C CONVEC3A.482
REAL TCW(NPNTS) ! TOTAL CONDENSED WATER (KG/M**2/S) CONVEC3A.483
C CONVEC3A.484
REAL TCWC(NPNTS) ! COMPRESSED VALUES OF TCW CONVEC3A.485
C CONVEC3A.486
REAL CCLWPC(NPNTS) ! COMPRESSED VALUE OF CCLWP CONVEC3A.487
C CONVEC3A.488
REAL LCCAC(NPNTS) ! COMPRESSED VALUES OF LCCA CONVEC3A.489
C CONVEC3A.490
INTEGER LCBASEC(NPNTS) ! COMPRESSED VALUES OF LCBASE CONVEC3A.491
C CONVEC3A.492
INTEGER LCTOPC(NPNTS) ! COMPRESSED VALUES OF LCTOP CONVEC3A.493
C CONVEC3A.494
REAL LCCLWPC(NPNTS) ! COMPRESSED VALUE OF LCCLWP CONVEC3A.495
C CONVEC3A.496
REAL DQSTHK(NPNTS) ! GRADIENT OF SATURATION MIXING CONVEC3A.497
! RATIO OF CLOUD ENVIRONMENT WITH CONVEC3A.498
! POTENTIAL TEMPERATURE IN LAYER K CONVEC3A.499
! (KG/KG/K) CONVEC3A.500
C CONVEC3A.501
REAL DQSTHKP1(NPNTS) ! GRADIENT OF SATURATION MIXING CONVEC3A.502
! RATIO OF CLOUD ENVIRONMENT WITH CONVEC3A.503
! POTENTIAL TEMPERATURE IN LAYER K+1 CONVEC3A.504
! (KG/KG/K) CONVEC3A.505
C CONVEC3A.506
REAL DTRABYDT(NPNTS,NLEV, ! INCREMENT TO TRACER DUE TO CONVEC3A.507
* NTRA) ! CONVECTION (KG/KG/S) CONVEC3A.508
C CONVEC3A.509
REAL PRECIP(NPNTS,NLEV) ! AMOUNT OF PRECIPITATION CONVEC3A.510
! FROM EACH LAYER (KG/M*:2/S) CONVEC3A.511
C CONVEC3A.512
REAL THPI(NPNTS) ! INITIAL PARCEL POTENTIAL TEMPERATURE CONVEC3A.513
! (K) CONVEC3A.514
C CONVEC3A.515
REAL QPI(NPNTS) ! INITIAL PARCEL MIXING RATIO CONVEC3A.516
! (KG/KG) CONVEC3A.517
C CONVEC3A.518
REAL TRAPI(NPNTS,NTRA) ! INITIAL PARCEL TRACER CONTENT CONVEC3A.519
! (KG/KG) CONVEC3A.520
C CONVEC3A.521
REAL THP(NPNTS,NLEV) ! PARCEL POTENTIAL TEMPERATURE CONVEC3A.522
! IN LAYER K (K) CONVEC3A.523
C CONVEC3A.524
REAL QP(NPNTS,NLEV) ! PARCEL MIXING RATIO IN LAYER K CONVEC3A.525
! (KG/KG) CONVEC3A.526
C CONVEC3A.527
REAL UP(NPNTS,NLEV) ! PARCEL U IN LAYER K (M/S) CONVEC3A.528
C CONVEC3A.529
REAL VP(NPNTS,NLEV) ! PARCEL V IN LAYER K (M/S) CONVEC3A.530
C CONVEC3A.531
REAL TRAP(NPNTS,NLEV,NTRA) ! PARCEL TRACER CONTENT IN LAYER K CONVEC3A.532
! (KG/KG) CONVEC3A.533
C CONVEC3A.534
REAL XPK(NPNTS,NLEV) ! PARCEL CLOUD WATER IN LAYER K CONVEC3A.535
! (KG/KG) CONVEC3A.536
C CONVEC3A.537
REAL FLX(NPNTS,NLEV) ! PARCEL MASSFLUX IN LAYER K (PA/S) CONVEC3A.538
C CONVEC3A.539
REAL FLX_INIT(NPNTS) ! INITIAL MASSFLUX AT CLOUD BASE CONVEC3A.540
! (PA/S) CONVEC3A.541
C CONVEC3A.542
REAL FLX_INIT_NEW(NPNTS) ! INITIAL MASSFLUX AT CLOUD BASE, CONVEC3A.543
! SCALED TO DESTROY CAPE OVER CONVEC3A.544
! GIVEN TIMESCALE (PA/S) CONVEC3A.545
C CONVEC3A.546
REAL FLXMAX_INIT(NPNTS) ! MAXIMUM POSSIBLE INITIAL MASSFLUX CONVEC3A.547
! LIMITED TO THE MASS IN TH INITIAL CONVEC3A.548
! CONVECTING LAYER (PA/S) CONVEC3A.549
C CONVEC3A.550
INTEGER START_LEV(NPNTS) ! LEVEL AT WHICH CONVECTION INITIATES CONVEC3A.551
C CONVEC3A.552
INTEGER DET_LEV(NPNTS) ! LEVEL AT WHICH SPLIT FINAL API1F401.30
! DETRAINMENT LAST OCCURRED API1F401.31
C API1F401.32
LOGICAL BINIT(NPNTS) ! MASK FOR POINTS WHERE CONVECTION CONVEC3A.553
! IS OCCURING CONVEC3A.554
C CONVEC3A.555
LOGICAL BTERM(NPNTS) ! MASK FOR POINTS WHERE CONVECTION CONVEC3A.556
! TERMINATES IN LAYER K+1 CONVEC3A.557
C CONVEC3A.558
LOGICAL BWATER(NPNTS,2:NLEV) ! MASK FOR POINTS AT WHICH CONVEC3A.559
! PRECIPITATION IS LIQUID CONVEC3A.560
C CONVEC3A.561
LOGICAL BGMK(NPNTS) ! MASK FOR POINTS WHERE PARCEL IN CONVEC3A.562
! LAYER K IS SATURATED CONVEC3A.563
C CONVEC3A.564
LOGICAL BCNLV(NPNTS) ! MASK FOR THOSE POINTS AT WHICH CONVEC3A.565
! CONVECTION HAS OCCURED AT SOME CONVEC3A.566
! LEVEL OF THE MODEL CONVEC3A.567
C CONVEC3A.568
REAL DEPTH(NPNTS) ! DEPTH OF CONVECTIVE CLOUD (M) CONVEC3A.569
C CONVEC3A.570
REAL FLXMAXK(NPNTS) ! MAXIMUM INITIL CONVECTIVE MASSFLUX CONVEC3A.571
! (PA/S) CONVEC3A.572
C CONVEC3A.573
REAL FLXMAX2(NPNTS) ! MAXIMUM INITIL CONVECTIVE MASSFLUX CONVEC3A.574
! (PA/S) CONVEC3A.575
C CONVEC3A.576
REAL PK(NPNTS) ! PRESSURE AT MID-POINT OF LAYER K CONVEC3A.577
! (PA) CONVEC3A.578
C CONVEC3A.579
REAL PKP1(NPNTS) ! PRESSURE AT MID-POINT OF LAYER K+1 CONVEC3A.580
! (PA) CONVEC3A.581
C CONVEC3A.582
REAL DELPK(NPNTS) ! PRESSURE DIFFERENCE ACROSS LAYER K CONVEC3A.583
! (PA) CONVEC3A.584
C CONVEC3A.585
REAL DELPKP1(NPNTS) ! PRESSURE DIFFERENCE ACROSS LAYER K+1 CONVEC3A.586
! (PA) CONVEC3A.587
C CONVEC3A.588
REAL DELPKP12(NPNTS) ! PRESSURE DIFFERENCE BETWEEN CONVEC3A.589
! LEVELS K AND K+1 (PA) CONVEC3A.590
C CONVEC3A.591
REAL EKP14(NPNTS), ! ENTRAINMENT COEFFICIENTS AT LEVELS CONVEC3A.592
* EKP34(NPNTS) ! K+1/4 AND K+3/4 MULTIPLIED BY CONVEC3A.593
! APPROPRIATE LAYER THICKNESS CONVEC3A.594
C CONVEC3A.595
REAL AMDETK(NPNTS) ! MIXING DETRAINMENT COEFFICIENT AT CONVEC3A.596
! LEVEL K MULTIPLIED BY APPROPRIATE CONVEC3A.597
! LAYER THICKNESS CONVEC3A.598
C CONVEC3A.599
REAL DELTAK(NPNTS) ! FORCED DETRAINMENT RATE API2F405.207
C API2F405.208
REAL EXK(NPNTS) ! EXNER RATIO AT LEVEL K CONVEC3A.600
C CONVEC3A.601
REAL EXKP1(NPNTS) ! EXNER RATIO AT LEVEL K+1 CONVEC3A.602
C CONVEC3A.603
REAL DELEXKP1(NPNTS) ! DIFFERENCE IN EXNER RATIO CONVEC3A.604
! ACROSS LAYER K+1 CONVEC3A.605
C CONVEC3A.606
REAL EMINDS(NPNTS) ! MINIMUM BUOYANCY FOR CONVECTION TO CONVEC3A.607
! INITIATE FROM LAYER K CONVEC3A.608
C CONVEC3A.609
INTEGER INDEX1(NPNTS), ! INDEX FOR COMPRESS AND CONVEC3A.610
* INDEX2(NPNTS), ! EXPAND CONVEC3A.611
* INDEX3(NPNTS), CONVEC3A.612
* INDEX4(NPNTS) CONVEC3A.613
C CONVEC3A.614
LOGICAL L_SHALLOW(NPNTS) ! CONVECTION LIKELY TO BE SHALLOW CONVEC3A.615
! IF SET TO TR CONVEC3A.616
C CONVEC3A.617
LOGICAL L_SHALLOW_C(NPNTS), ! CONVECTION LIKELY TO BE SHALLOW CONVEC3A.618
* L_SHALLOW_C2(NPNTS) ! IF SET TO TRUE -- COMPRESSED CONVEC3A.619
C CONVEC3A.620
LOGICAL L_MID(NPNTS) ! CONVECTION STARTS ABOVE BOUNDARY CONVEC3A.621
! LAYER IF SET TO TRUE CONVEC3A.622
C CONVEC3A.623
LOGICAL L_MID_C(NPNTS), ! CONVECTION STARTS ABOVE BOUNDARY CONVEC3A.624
* L_MID_C2(NPNTS) ! LAYER IF SET TO TRUE -- COMPRESSED CONVEC3A.625
C CONVEC3A.626
REAL TRAPK_C(NPNTS,NTRA), ! PARCEL TRACER CONTENT IN LAYER K CONVEC3A.627
* TRAPK_C2(NPNTS,NTRA) ! - COMPRESSED (KG/KG) CONVEC3A.628
C CONVEC3A.629
REAL TRAPKP1_C(NPNTS,NTRA), ! PARCEL TRACER CONTENT IN LAYER K+1 CONVEC3A.630
* TRAPKP1_C2(NPNTS,NTRA) ! - COMPRESSED (KG/KG) CONVEC3A.631
C CONVEC3A.632
REAL TRAEK_C(NPNTS,NTRA), ! TRACER CONTENT OF CLOUD ENVIRONMENT CONVEC3A.633
* TRAEK_C2(NPNTS,NTRA) ! IN LAYER K - COMPRESSED (KG/KG) CONVEC3A.634
C CONVEC3A.635
REAL TRAEKP1_C(NPNTS,NTRA), ! TRACER CONTENT OF CLOUD ENVIRONMENT CONVEC3A.636
* TRAEKP1_C2(NPNTS,NTRA) ! IN LAYER K+1 - COMPRESSED (KG/KG) CONVEC3A.637
C CONVEC3A.638
REAL DTRAEK_C(NPNTS,NTRA) ! INCREMENTS TO MODEL TRACER CONVEC3A.639
! DUE TO CONVECTION AT LEVEL K CONVEC3A.640
! - COMPRESSED (KG/KG/S) CONVEC3A.641
C CONVEC3A.642
REAL DTRAEKP1_C(NPNTS,NTRA) ! INCREMENTS TO MODEL TRACER DUE TO CONVEC3A.643
! CONVECTION IN LAYER K+1 -COMPRESSED CONVEC3A.644
! (KG/KG/S) CONVEC3A.645
C CONVEC3A.646
REAL EFLUX_U_UD(NPNTS), ! VERTICAL EDDY FLUX OF MOMENTUM DUE CONVEC3A.647
* EFLUX_V_UD(NPNTS) ! TO UD AT TOP OF A LAYER CONVEC3A.648
C CONVEC3A.649
REAL EFLUX_U_DD(NPNTS), ! VERTICAL EDDY FLUX OF MOMENTUM DUE CONVEC3A.650
* EFLUX_V_DD(NPNTS) ! TO DD AT BOTTOM OF A LAYER CONVEC3A.651
C CONVEC3A.652
REAL LIMITED_STEP(NPNTS), ! Reduced step size for tracer mixing AWO5F401.253
& STEP_TEST1(NLEV), ! Work array used in reducing step AWO5F401.254
& STEP_TEST2(NLEV) ! " AWO5F401.255
REAL REDUCTION_FACTOR(NPNTS,NTRA) ! Diagnostic array for time- AWO5F401.256
! ! step reduction factor for tracers AWO5F401.257
REAL SAFETY_MARGIN ! Small no. used in tracer step reducn AWO5F401.258
C CONVEC3A.653
*IF DEF,FUJITSU GRB1F405.78
PARAMETER (SAFETY_MARGIN = TINY(1.0) ) GRB1F405.79
*ELSEIF DEF,SCMA,AND,-DEF,T3E GRB1F405.80
PARAMETER (SAFETY_MARGIN = 1.19E-7 ) GRB1F405.81
*ELSE GRB1F405.82
PARAMETER (SAFETY_MARGIN = 1.0E-100 ) GRB1F405.83
*ENDIF GRB1F405.84
! AWO5F401.260
C AJX0F404.242
INTEGER FREEZE_LEV(NPNTS) ! FREEZING LEVEL AJX0F404.243
C AJX0F404.244
REAL CCA_2D(NPNTS) ! Conv cloud amount on a single AJX0F404.245
! ! level, as calculated in CONRAD AJX0F404.246
C AJX0F404.247
C CONVEC3A.655
REAL FLX2 ! TEMPORARY STORE FOR MASS FLUX CONVEC3A.656
C CONVEC3A.657
REAL AEKP14,AEKP34 ! CONSTANTS USED IN CALCULATION CONVEC3A.658
! OF ENTRAINMENT COEFFICIENTS CONVEC3A.659
C CONVEC3A.660
REAL EL ! LATENT HEAT OF CONDENSATION CONVEC3A.661
! USED IN UNDILUTE ASCENT CALCULATION CONVEC3A.662
C CONVEC3A.663
REAL THVUNDI,THVEKP1 ! VIRTUAL TEMPERATURE OF UNDILUTE CONVEC3A.664
! PARCEL AND ENVIRONMENT USED IN CONVEC3A.665
! BUOYANCY CALCULATIONS FOR THE CONVEC3A.666
! UNDILUTE ASCENT CONVEC3A.667
C CONVEC3A.668
REAL C,D ! MASS FLUX PARAMETERS CONVEC3A.669
C AJX0F404.248
REAL recip_PSTAR(NP_FIELD) ! Reciprocal of pstar array GSS1F403.144
C CONVEC3A.670
C---------------------------------------------------------------------- CONVEC3A.671
C EXTERNAL ROUTINES CALLED CONVEC3A.672
C---------------------------------------------------------------------- CONVEC3A.673
C CONVEC3A.674
EXTERNAL QSAT,FLAG_WET,LIFT_PAR,CONVEC2,LAYER_CN, CONVEC3A.675
* DQS_DTH,COR_ENGY,DD_CALL,CALC_3D_CCA AJX0F404.249
C CONVEC3A.680
CONVEC3A.681
REAL CONVEC3A.682
& PU,PL,PM CONVEC3A.683
*CALL P_EXNERC
CONVEC3A.684
CONVEC3A.685
C*--------------------------------------------------------------------- CONVEC3A.686
C CONVEC3A.687
CL CONVEC3A.688
CL--------------------------------------------------------------------- CONVEC3A.689
CL CALCULATE AN ARRAY OF SATURATION MIXING RATIOS CONVEC3A.690
CL FIRST CONVERT POTENTIAL TEMPERATURE TO TEMPERATURE AND CALCULATE CONVEC3A.691
CL PRESSURE OF LAYER K CONVEC3A.692
CL CONVEC3A.693
CL SUBROUTINE QSAT CONVEC3A.694
CL UM DOCUMENTATION PAPER P282 CONVEC3A.695
CL--------------------------------------------------------------------- CONVEC3A.696
CL CONVEC3A.697
C Calculate reciprocal of pstar ADR1F405.22
DO I=1,NPNTS ADR1F405.23
RECIP_PSTAR(I)=1./PSTAR(I) ADR1F405.24
ENDDO ADR1F405.25
C GSS1F403.152
DO 20 K=1,NLEV CONVEC3A.698
DO 25 I = 1,NPNTS CONVEC3A.699
TTKM1(I)=TT(I) AJX0F404.250
PU=PSTAR(I)*BKM12(K+1) + AKM12(K+1) CONVEC3A.700
PL=PSTAR(I)*BKM12(K) + AKM12(K) CONVEC3A.701
TT(I) = TH(I,K)* P_EXNER_C(EXNER(I,K+1),EXNER(I,K),PU,PL,KAPPA) CONVEC3A.702
PT(I) = AK(K)+BK(K)*PSTAR(I) CONVEC3A.703
IF (TT(I).LT.TM) THEN AJX0F404.252
IF (K.EQ.1) THEN AJX0F404.253
FREEZE_LEV(I)=K AJX0F404.254
ELSEIF(TTKM1(I).GE.TM) THEN AJX4F405.1
FREEZE_LEV(I)=K AJX0F404.256
ENDIF AJX0F404.257
ENDIF AJX0F404.258
25 CONTINUE CONVEC3A.704
C CONVEC3A.705
CALL QSAT
(QSE(1,K),TT,PT,NPNTS) CONVEC3A.706
C CONVEC3A.707
20 CONTINUE CONVEC3A.708
CL CONVEC3A.709
CL--------------------------------------------------------------------- CONVEC3A.710
CL CALCULATE BIT VECTOR WHERE WATER WILL CONDENSE RATHER THAN ICE CONVEC3A.711
CL SUBROUTINE FLAG_WET CONVEC3A.712
CL CONVEC3A.713
CL UM DOCUMENTATION PAPER P27 CONVEC3A.714
CL SECTION (2B) CONVEC3A.715
CL--------------------------------------------------------------------- CONVEC3A.716
CL CONVEC3A.717
CALL FLAG_WET
(BWATER,TH,EXNER,PSTAR,AKM12,BKM12, CONVEC3A.718
& NP_FIELD,NPNTS,NLEV) CONVEC3A.719
C CONVEC3A.720
C---------------------------------------------------------------------- CONVEC3A.721
C INITIALISE PRECIPITATION, DTH/DT, DQ/DT, CCW CONVEC3A.722
C DU/DT, DV/DT AND TRACER INCREMENT ARRAYS CONVEC3A.723
C---------------------------------------------------------------------- CONVEC3A.724
C CONVEC3A.725
DO K=1,NLEV CONVEC3A.726
DO I=1,NPNTS CONVEC3A.727
PRECIP(I,K) = 0.0 CONVEC3A.728
CCW(I,K) = 0.0 CONVEC3A.729
GBMCCW(I,K) = 0.0 AJX1F402.237
DTHBYDT(I,K) = 0.0 CONVEC3A.730
DQBYDT(I,K) = 0.0 CONVEC3A.731
*IF DEF,SCMA AJC0F405.187
DTHUD(I,K) = 0.0 AJC0F405.188
DTHDD(I,K) = 0.0 AJC0F405.189
DQUD(I,K) = 0.0 AJC0F405.190
DQDD(I,K) = 0.0 AJC0F405.191
*ENDIF AJC0F405.192
IF(L_MOM)THEN CONVEC3A.732
DUBYDT(I,K) = 0.0 CONVEC3A.733
DVBYDT(I,K) = 0.0 CONVEC3A.734
END IF CONVEC3A.735
END DO CONVEC3A.736
END DO CONVEC3A.737
IF(L_TRACER)THEN CONVEC3A.738
DO KTRA=1,NTRA CONVEC3A.739
DO K=1,NLEV ARB0F404.28
DO I=1,NPNTS CONVEC3A.741
DTRABYDT(I,K,KTRA) = 0.0 CONVEC3A.742
END DO CONVEC3A.743
END DO CONVEC3A.744
END DO CONVEC3A.745
END IF CONVEC3A.746
DO K=1,N_CCA_LEV AJX0F404.259
DO I=1,NPNTS AJX0F404.260
CCA(I,K) = 0.0 AJX0F404.261
ENDDO AJX0F404.262
ENDDO AJX0F404.263
C CONVEC3A.747
DO 50 I=1,NPNTS CONVEC3A.748
C CONVEC3A.749
C---------------------------------------------------------------------- CONVEC3A.750
C INITIALISE BIT VECTORS FOR POINTS WHICH ARE ALREADY CONVECTING CONVEC3A.751
C AND FOR POINTS AT WHICH CONVECTION OCCURS AT SOME LEVEL OF CONVEC3A.752
C THE ATMOSPHERE. ALSO SET BIT VECTORS FOR SHALLOW AND MID LEVEL CONVEC3A.753
C CONVECTION TO FALSE AS DEEP CONVECTION IS ASSUMED UNTIL TEST CONVEC3A.754
C ASCENT IS PERFORMED. CONVEC3A.755
C---------------------------------------------------------------------- CONVEC3A.756
C CONVEC3A.757
BINIT(I) = .FALSE. CONVEC3A.758
BCNLV(I) = .FALSE. CONVEC3A.759
BTERM(I) = .FALSE. CONVEC3A.760
L_SHALLOW(I) = .FALSE. CONVEC3A.761
L_MID(I) = .FALSE. CONVEC3A.762
C CONVEC3A.763
C---------------------------------------------------------------------- CONVEC3A.764
C INITIALISE RADIATION DIAGNOSTICS CONVEC3A.765
C---------------------------------------------------------------------- CONVEC3A.766
C CONVEC3A.767
CCA_2D(I) = 0.0 AJX0F404.264
ICCB(I) = 0 CONVEC3A.769
ICCT(I) = 0 CONVEC3A.770
TCW(I) = 0.0 CONVEC3A.771
CCLWP(I) = 0.0 AJX1F402.238
C AJX1F402.239
C--------------------------------------------------------------------- AJX1F402.240
C INITIALISE GRIDBOX MEAN DIAGNOSTICS AJX1F402.241
C--------------------------------------------------------------------- AJX1F402.242
C AJX1F402.243
GBMCCWP(I) = 0.0 AJX1F402.244
ICCBPxCCA(I) = 0.0 AJX1F402.245
ICCTPxCCA(I) = 0.0 AJX1F402.246
C CONVEC3A.772
CL------------------------------------------------------------------- CONVEC3A.773
CL INITIALISE DIAGNOSTICS FOR CLOSURE CALCULATION CONVEC3A.774
CL------------------------------------------------------------------- CONVEC3A.775
C CONVEC3A.776
FLX_INIT(I) = 0.0 CONVEC3A.777
FLX_INIT_NEW(I) = 0.0 CONVEC3A.778
CAPE(I) = 0.0 CONVEC3A.779
CAPE_OUT(I) = 0.0 CONVEC3A.780
DCPBYDT(I) = 0.0 CONVEC3A.781
CAPE_C(I) = 0.0 CONVEC3A.782
DCPBYDT_C(I) = 0.0 CONVEC3A.783
START_LEV(I) = 0 CONVEC3A.784
DELTAK(I)=0.0 API2F405.209
DET_LEV(I) = 0 API1F401.33
DTHEF(I) = 0.0 API1F401.34
DQF(I) = 0.0 API1F401.35
DUEF(I) = 0.0 API1F405.5
DVEF(I) = 0.0 API1F405.6
C CONVEC3A.785
C--------------------------------------------------------------------- CONVEC3A.786
C INITIALISE EDDY FLUX ARRAYS FOR UD AND DD CONVEC3A.787
C-------------------------------------------------------------------- CONVEC3A.788
C CONVEC3A.789
EFLUX_U_UD(I) = 0.0 CONVEC3A.790
EFLUX_V_UD(I) = 0.0 CONVEC3A.791
EFLUX_U_DD(I) = 0.0 CONVEC3A.792
EFLUX_V_DD(I) = 0.0 CONVEC3A.793
C CONVEC3A.794
C--------------------------------------------------------------------- CONVEC3A.795
C INITIALISE SURFACE PRECIPITATION ARRAYS CONVEC3A.796
C--------------------------------------------------------------------- CONVEC3A.797
C CONVEC3A.798
RAIN(I) = 0.0 CONVEC3A.799
50 SNOW(I) = 0.0 CONVEC3A.800
CL CONVEC3A.801
CL===================================================================== CONVEC3A.802
CL MAIN LOOP OVER LEVELS - FROM SURFACE TO TOP CONVEC3A.803
CL===================================================================== CONVEC3A.804
CL CONVEC3A.805
DO 60 K=1,NLEV-1 CONVEC3A.806
CL CONVEC3A.807
CL--------------------------------------------------------------------- CONVEC3A.808
CL CALCULATE LEVEL PRESSURES, EXNER RATIO FOR MID POINTS, ENTRAINMENT CONVEC3A.809
CL RATES, DETRAINMENTS RATES AND PRESSURE DIFFERENCE ACROS LAYERS AS CONVEC3A.810
CL A FUNCTION OF GRID-POINT CONVEC3A.811
CL CONVEC3A.812
CL SUBROUTINE LAYER_CN CONVEC3A.813
CL--------------------------------------------------------------------- CONVEC3A.814
CL CONVEC3A.815
CALL LAYER_CN
(K,NP_FIELD,NPNTS,NLEV,EXNER,AK,BK,AKM12,BKM12, CONVEC3A.816
* DELAK,DELBK,PSTAR,PK,PKP1,DELPK,DELPKP1, CONVEC3A.817
* DELPKP12,EKP14,EKP34,AMDETK,EXK,EXKP1, CONVEC3A.818
* DELEXKP1,recip_PSTAR) GSS1F403.153
CL CONVEC3A.820
CL--------------------------------------------------------------------- CONVEC3A.821
CL CALCULATE DQS/DTH FOR LAYERS K AND K+1 CONVEC3A.822
CL CONVEC3A.823
CL SUBROUTINE DQS_DTH CONVEC3A.824
CL--------------------------------------------------------------------- CONVEC3A.825
CL CONVEC3A.826
IF (K.EQ.1) THEN CONVEC3A.827
CALL DQS_DTH
(DQSTHK,K,TH(1,K),QSE(1,K),EXK,NPNTS) CONVEC3A.828
ELSE CONVEC3A.829
DO 65 I=1,NPNTS CONVEC3A.830
DQSTHK(I) = DQSTHKP1(I) CONVEC3A.831
65 CONTINUE CONVEC3A.832
END IF CONVEC3A.833
C CONVEC3A.834
CALL DQS_DTH
(DQSTHKP1,K+1,TH(1,K+1),QSE(1,K+1),EXKP1,NPNTS) CONVEC3A.835
C CONVEC3A.836
DO 70 I=1,NPNTS CONVEC3A.837
C CONVEC3A.838
C--------------------------------------------------------------------- CONVEC3A.839
C SET OTHER GIRD-POINT DEPENDENT CONSTANTS CONVEC3A.840
C--------------------------------------------------------------------- CONVEC3A.841
C CONVEC3A.842
C--------------------------------------------------------------------- CONVEC3A.843
C MAXIMUM INITIAL CONVECTIVE MASSFLUX CONVEC3A.844
C--------------------------------------------------------------------- CONVEC3A.845
C CONVEC3A.846
FLXMAXK(I) = DELPK(I)/((1.0 + EKP14(I)) * TIMESTEP) CONVEC3A.847
C CONVEC3A.848
C--------------------------------------------------------------------- CONVEC3A.849
C MAXIMUM CONVECTIVE MASSFLUX AT MID-POINT OF LAYER 2 CONVEC3A.850
C--------------------------------------------------------------------- CONVEC3A.851
C CONVEC3A.852
IF (K.EQ.1) FLXMAX2(I) = (PSTAR(I)-PKP1(I)) / TIMESTEP CONVEC3A.853
C CONVEC3A.854
C--------------------------------------------------------------------- CONVEC3A.855
C MINIMUM BUOYANCY FOR CONVECTION TO START FROM LAYER K CONVEC3A.856
C--------------------------------------------------------------------- CONVEC3A.857
C CONVEC3A.858
EMINDS(I) = MPARB*DELPKP12(I)*RECIP_PSTAR(I) ADR1F405.26
C CONVEC3A.860
C---------------------------------------------------------------------- CONVEC3A.861
C SET BIT VECTOR FOR POINTS WHERE CONVECTION HAS OCCURRED AT SOME CONVEC3A.862
C LEVEL OF THE ATMOSPHERE CONVEC3A.863
C----------------------------------------------------------------------- CONVEC3A.864
C CONVEC3A.865
BCNLV(I) = BCNLV(I) .OR. BINIT(I) CONVEC3A.866
CL CONVEC3A.867
CL--------------------------------------------------------------------- CONVEC3A.868
CL SET INITIAL VALUES FOR POINTS NOT ALREADY INITIATED CONVEC3A.869
CL CONVEC3A.870
CL UM DOCUMENTATION PAPER P27 CONVEC3A.871
CL SECTION (3), EQUATION(17) CONVEC3A.872
CL--------------------------------------------------------------------- CONVEC3A.873
CL CONVEC3A.874
IF (.NOT.BINIT(I)) THEN CONVEC3A.875
C CONVEC3A.876
IF (K.LT.NBL) THEN CONVEC3A.877
C CONVEC3A.878
C---------------------------------------------------------------------- CONVEC3A.879
C SET TO DEEP CONVECTIVE VALUES - MODIFIED LATER IF SHALLOW CONVECTION CONVEC3A.880
C IS TO DEVELOP CONVEC3A.881
C---------------------------------------------------------------------- CONVEC3A.882
C CONVEC3A.883
L_SHALLOW(I) = .FALSE. CONVEC3A.884
IF ( L_SDXS .AND. K .EQ. 1 ) THEN ARN2F403.41
THPI(I) = TH(I,K) + MAX ( THPIXS_DEEP , T1_SD(I)/EXK(I) ) CONVEC3A.886
THP(I,K) = TH(I,K) + MAX ( THPIXS_DEEP , T1_SD(I)/EXK(I) ) CONVEC3A.887
QPI(I) = Q(I,K) + MAX ( QPIXS_DEEP , Q1_SD(I) ) CONVEC3A.888
QP(I,K) = Q(I,K) + MAX ( QPIXS_DEEP , Q1_SD(I) ) CONVEC3A.889
ELSE CONVEC3A.890
THPI(I) = TH(I,K) + THPIXS_DEEP CONVEC3A.891
THP(I,K) = TH(I,K) + THPIXS_DEEP CONVEC3A.892
QPI(I) = Q(I,K) + QPIXS_DEEP CONVEC3A.893
QP(I,K) = Q(I,K) + QPIXS_DEEP CONVEC3A.894
END IF CONVEC3A.895
C CONVEC3A.896
ELSE ! IF(K.GE.NBL) CONVEC3A.897
C CONVEC3A.898
C---------------------------------------------------------------------- CONVEC3A.899
C SET TO VALUES FOR MID-LEVEL CONVECTION CONVEC3A.900
C---------------------------------------------------------------------- CONVEC3A.901
C CONVEC3A.902
L_MID(I) = .TRUE. CONVEC3A.903
THPI(I) = TH(I,K) + THPIXS_MID CONVEC3A.904
THP(I,K) = TH(I,K) + THPIXS_MID CONVEC3A.905
QPI(I) = Q(I,K) + QPIXS_MID CONVEC3A.906
QP(I,K) = Q(I,K) + QPIXS_MID CONVEC3A.907
C CONVEC3A.908
END IF ! IF(K.LT.NBL) END CONVEC3A.909
C CONVEC3A.910
XPK(I,K) = 0.0 CONVEC3A.911
FLX(I,K) = 0.0 CONVEC3A.912
BGMK(I) = .FALSE. CONVEC3A.913
DEPTH(I) = 0.0 CONVEC3A.914
C CONVEC3A.915
END IF ! IF(.NOT.BINIT(I)) END CONVEC3A.916
CL CONVEC3A.917
CL---------------------------------------------------------------------- CONVEC3A.918
CL FORM A BIT VECTOR OF POINTS FOR WHICH CONVECTION MAY BE POSSIBLE CONVEC3A.919
CL FROM LAYER K TO K+1 EITHER BECAUSE STABILITY IS LOW ENOUGH CONVEC3A.920
CL OR BECAUSE CONVECTION OCCURRING FROM LAYER K+1 TO K CONVEC3A.921
CL THIS BIT VECTOR IS USED IN THE FIRST COMPRESS OF THE DATA CONVEC3A.922
CL TO CALCULATE PARCEL BUOYANCY IN LAYER K+1 CONVEC3A.923
CL CONVEC3A.924
CL UM DOCUMENTATION PAPER P27 CONVEC3A.925
CL SECTION(3), EQUATION(16) CONVEC3A.926
CL---------------------------------------------------------------------- CONVEC3A.927
CL CONVEC3A.928
BCONV(I) = BINIT(I) .OR. CONVEC3A.929
* ((TH(I,K) - TH(I,K+1) + DELTHST CONVEC3A.930
* + MAX(0.0,(Q(I,K)-QSE(I,K+1)))*(LC/(CP*EXKP1(I)))) CONVEC3A.931
* .GT. 0.) CONVEC3A.932
*IF DEF,MPP AAD2F404.204
BCONV(I) = l_halo(I).AND.BCONV(I) AAD2F404.205
*ENDIF AAD2F404.206
70 CONTINUE CONVEC3A.933
C CONVEC3A.934
CL---------------------------------------------------------------------- CONVEC3A.935
CL READ INITIAL VALUES OF MOMENTUM AND TRACER INTO THE PARCEL CONVEC3A.936
CL---------------------------------------------------------------------- CONVEC3A.937
CL CONVEC3A.938
IF(L_MOM)THEN CONVEC3A.939
DO I=1,NPNTS CONVEC3A.940
IF(.NOT.BINIT(I))THEN CONVEC3A.941
UP(I,K)=U(I,K) CONVEC3A.942
VP(I,K) = V(I,K) CONVEC3A.943
END IF CONVEC3A.944
END DO CONVEC3A.945
END IF CONVEC3A.946
C CONVEC3A.947
IF(L_TRACER)THEN CONVEC3A.948
C CONVEC3A.949
DO KTRA = 1,NTRA CONVEC3A.950
DO I = 1,NPNTS CONVEC3A.951
IF(.NOT.BINIT(I))THEN CONVEC3A.952
TRAPI(I,KTRA) = TRACER(I,K,KTRA) CONVEC3A.953
TRAP(I,K,KTRA) = TRAPI(I,KTRA) CONVEC3A.954
END IF CONVEC3A.955
END DO CONVEC3A.956
END DO CONVEC3A.957
C CONVEC3A.958
END IF CONVEC3A.959
C CONVEC3A.960
CL CONVEC3A.961
CL---------------------------------------------------------------------- CONVEC3A.962
CL COMPRESS DOWN POINTS ON THE BASIS OF BIT VECTOR BCONV CONVEC3A.963
CL---------------------------------------------------------------------- CONVEC3A.964
CL CONVEC3A.965
NCONV = 0 CONVEC3A.966
DO 75 I=1,NPNTS CONVEC3A.970
IF(BCONV(I))THEN CONVEC3A.971
NCONV = NCONV + 1 CONVEC3A.972
INDEX1(NCONV) = I CONVEC3A.973
END IF CONVEC3A.974
75 CONTINUE CONVEC3A.975
C CONVEC3A.977
C---------------------------------------------------------------------- CONVEC3A.978
C WORK SPACE USAGE FOR FIRST COMPRESS ON BASIS OF SIMPLE CONVEC3A.979
C STABILITY TEST (SECTION (3), EQN(16)) CONVEC3A.980
C CONVEC3A.981
C REFERENCES TO WORK AND BWORK REFER TO STARTING ADDRESS CONVEC3A.982
C CONVEC3A.983
C LENGTH OF COMPRESSES DATA = NCONV CONVEC3A.984
C CONVEC3A.985
C WORK(1,1) = TH(#,K) CONVEC3A.986
C WORK(1,2) = TH(#,K+1) CONVEC3A.987
C WORK(1,3) = Q(#,K) CONVEC3A.988
C WORK(1,4) = Q(#,K+1) CONVEC3A.989
C WORK(1,5) = QSE(#,K+1) CONVEC3A.990
C WORK(1,6) = DQSTHKP1(#) CONVEC3A.991
C WORK(1,7) = THP(#,K) CONVEC3A.992
C WORK(1,8) = QP(#,K) CONVEC3A.993
C WORK(1,9) = PKP1(#) CONVEC3A.994
C WORK(1,10) = EXKP1(#) CONVEC3A.995
C WORK(1,11) = EKP14(#) CONVEC3A.996
C WORK(1,12) = EKP34(#) CONVEC3A.997
C WORK(1,13) = PARCEL POT. TEMPERATURE IN LAYER K+1 CONVEC3A.998
C WORK(1,14) = PARCEL MIXING RATIO IN LAYER K+1 CONVEC3A.999
C WORK(1,15) = EXCESS WATER VAPOUR IN PARCEL ABOVE CONVEC3A.1000
C SATURATION AFTER DRY ASCENT CONVEC3A.1001
C WORK(1,16) = PARCEL BUOYANCY IN LAYER K+1 CONVEC3A.1002
C WORK(1,17) = DELPKP12(#) CONVEC3A.1003
C WORK(1,18) = PSTAR(#) CONVEC3A.1004
C WORK(1,19) = FLX(#,K) CONVEC3A.1005
C WORK(1,20) = EMINDS(#) CONVEC3A.1006
C WORK(1,21) = FLXMAXK(#) CONVEC3A.1007
C WORK(1,22) = FLXMAX2(#) CONVEC3A.1008
C WORK(1,23) = U(#,K) CONVEC3A.1009
C WORK(1,24) = U(#,K+1) CONVEC3A.1010
C WORK(1,25) = V(#,K) CONVEC3A.1011
C WORK(1,26) = V(#,K+1) CONVEC3A.1012
C WORK(1,27) = UP(#,K) CONVEC3A.1013
C WORK(1,28) = VP(#,K) CONVEC3A.1014
C WORK(1,29) = PARCEL U IN LAYER K+1 CONVEC3A.1015
C WORK(1,30) = PARCEL V IN LAYER K+1 CONVEC3A.1016
C CONVEC3A.1017
C BWORK(1,1) = BWATER(INDEX1(I),K+1) CONVEC3A.1018
C BWORK(1,2) = .TRUE. IF PARCEL SATURATED IN LAYER K+1 CONVEC3A.1019
C BWORK(1,3) = .TRUE. IF CONVECTION INITIATE FROM LAYER K+1 CONVEC3A.1020
C BWORK(1,4) = BINIT(INDEX1(I)) CONVEC3A.1021
C---------------------------------------------------------------------- CONVEC3A.1022
C CONVEC3A.1023
IF (NCONV .NE. 0) THEN CONVEC3A.1024
DO 80 I=1,NCONV CONVEC3A.1025
WORK(I,1) = TH(INDEX1(I),K) CONVEC3A.1026
WORK(I,2) = TH(INDEX1(I),K+1) CONVEC3A.1027
WORK(I,3) = Q(INDEX1(I),K) CONVEC3A.1028
WORK(I,4) = Q(INDEX1(I),K+1) CONVEC3A.1029
WORK(I,5) = QSE(INDEX1(I),K+1) CONVEC3A.1030
WORK(I,6) = DQSTHKP1(INDEX1(I)) CONVEC3A.1031
WORK(I,7) = THP(INDEX1(I),K) CONVEC3A.1032
WORK(I,8) = QP(INDEX1(I),K) CONVEC3A.1033
WORK(I,9) = PKP1(INDEX1(I)) CONVEC3A.1034
WORK(I,10) = EXKP1(INDEX1(I)) CONVEC3A.1035
WORK(I,11) = EKP14(INDEX1(I)) CONVEC3A.1036
WORK(I,12) = EKP34(INDEX1(I)) CONVEC3A.1037
WORK(I,17) = DELPKP12(INDEX1(I)) CONVEC3A.1038
WORK(I,18) = PSTAR(INDEX1(I)) CONVEC3A.1039
WORK(I,19) = FLX(INDEX1(I),K) CONVEC3A.1040
WORK(I,20) = EMINDS(INDEX1(I)) CONVEC3A.1041
WORK(I,21) = FLXMAXK(INDEX1(I)) CONVEC3A.1042
WORK(I,22) = FLXMAX2(INDEX1(I)) CONVEC3A.1043
BWORK(I,1) = BWATER(INDEX1(I),K+1) CONVEC3A.1044
BWORK(I,4) = BINIT(INDEX1(I)) CONVEC3A.1045
L_SHALLOW_C(I) = L_SHALLOW(INDEX1(I)) CONVEC3A.1046
L_MID_C(I) = L_MID(INDEX1(I)) CONVEC3A.1047
C CONVEC3A.1048
80 CONTINUE CONVEC3A.1049
C CONVEC3A.1050
IF(L_MOM)THEN CONVEC3A.1051
DO I=1,NCONV CONVEC3A.1052
WORK(I,23) = U(INDEX1(I),K) CONVEC3A.1053
WORK(I,24) = U(INDEX1(I),K+1) CONVEC3A.1054
WORK(I,25) = V(INDEX1(I),K) CONVEC3A.1055
WORK(I,26) = V(INDEX1(I),K+1) CONVEC3A.1056
WORK(I,27) = UP(INDEX1(I),K) CONVEC3A.1057
WORK(I,28) = VP(INDEX1(I),K) CONVEC3A.1058
END DO CONVEC3A.1059
END IF CONVEC3A.1060
C CONVEC3A.1061
IF(L_TRACER)THEN CONVEC3A.1062
C CONVEC3A.1063
DO KTRA = 1,NTRA CONVEC3A.1064
DO I=1,NCONV CONVEC3A.1065
TRAEK_C(I,KTRA) = TRACER(INDEX1(I),K,KTRA) CONVEC3A.1066
TRAEKP1_C(I,KTRA) = TRACER(INDEX1(I),K+1,KTRA) CONVEC3A.1067
TRAPK_C(I,KTRA) = TRAP(INDEX1(I),K,KTRA) CONVEC3A.1068
END DO CONVEC3A.1069
END DO CONVEC3A.1070
C CONVEC3A.1071
END IF CONVEC3A.1072
C CONVEC3A.1073
IF ( K.LT.NBL) THEN CONVEC3A.1074
C CONVEC3A.1075
CL CONVEC3A.1076
CL-------------------------------------------------------------------- CONVEC3A.1077
CL CARRY OUT TEST ASCENT TO ASCERTAIN WHETHER DEEP CONVECTION OR CONVEC3A.1078
CL SHALLOW CONVECTION IS POSSIBLE. CONVEC3A.1079
CL CONVEC3A.1080
CL UM DOCUMENTATION PAPER P27-3. SECTION 2. CONVEC3A.1081
CL CONVEC3A.1082
CL CALCULATION ONLY CARRIED OUT FOR CONVECTION INITIATING WITHIN THE CONVEC3A.1083
CL BOUNDARY LAYER CONVEC3A.1084
CL-------------------------------------------------------------------- CONVEC3A.1085
CL CONVEC3A.1086
DO K_TEST=K,NBL ! LOOP OVER BOUNDARY LAYER LEVELS CONVEC3A.1087
C--------------------------------------------------------------------- CONVEC3A.1088
C SET COEFFICIENTS FOR CALCULATION OF ENTRAINMENT RATES CONVEC3A.1089
C--------------------------------------------------------------------- CONVEC3A.1090
IF(K_TEST.EQ.1)THEN CONVEC3A.1091
AEKP14 = AE1 CONVEC3A.1092
AEKP34 = AE2 CONVEC3A.1093
ELSE CONVEC3A.1094
AEKP14 = AE2 CONVEC3A.1095
AEKP34 = AE2 CONVEC3A.1096
END IF CONVEC3A.1097
C CONVEC3A.1098
C-------------------------------------------------------------------- CONVEC3A.1099
C SET VALUES FOR TEST ASCENT CONVEC3A.1100
C-------------------------------------------------------------------- CONVEC3A.1101
C CONVEC3A.1102
IF ( K_TEST .EQ. K ) THEN CONVEC3A.1103
C CONVEC3A.1104
DO I=1,NCONV ! 1ST COMPRESS LOOP CONVEC3A.1105
WORK2(I,1) = WORK(I,1) ! THEK CONVEC3A.1106
WORK2(I,2) = WORK(I,2) ! THEKP1 CONVEC3A.1107
WORK2(I,3) = WORK(I,3) ! QEK CONVEC3A.1108
WORK2(I,4) = WORK(I,4) ! QEKP1 CONVEC3A.1109
WORK2(I,5) = WORK(I,5) ! QSEKP1 CONVEC3A.1110
WORK2(I,6) = WORK(I,6) ! DQSEKP1 CONVEC3A.1111
WORK2(I,7) = WORK(I,7) ! THPK CONVEC3A.1112
WORK2(I,8) = WORK(I,8) ! QPK CONVEC3A.1113
WORK2(I,9) = WORK(I,9) ! PKP1 CONVEC3A.1114
WORK2(I,10) = WORK(I,10) ! EXKP1 CONVEC3A.1115
WORK2(I,11) = WORK(I,11) ! EKP14 CONVEC3A.1116
WORK2(I,12) = WORK(I,12) ! EKP34 CONVEC3A.1117
BWORK2(I,1) = BWORK(I,1) ! BWATER KP1 CONVEC3A.1118
BWORK2(I,3) = .FALSE. ! POINT WHERE CONVECTION CONVEC3A.1119
! HAS INITIATED FROM LAYER K CONVEC3A.1120
! OR ABOVE CONVEC3A.1121
WORK2(I,20) = WORK(I,20) ! EMINDS CONVEC3A.1122
C CONVEC3A.1123
END DO ! END OF 1ST COMPRESS LOOP CONVEC3A.1124
C CONVEC3A.1125
C CONVEC3A.1126
ELSE ! IF(K_TEST.NE.K) CONVEC3A.1127
C CONVEC3A.1128
DO I=1,NCONV ! 2ND COMPRESS LOOP CONVEC3A.1129
C CONVEC3A.1130
WORK2(I,1) = WORK2(I,2) ! THEK CONVEC3A.1131
WORK2(I,2) = TH(INDEX1(I),K_TEST+1) ! THEKP1 CONVEC3A.1132
WORK2(I,3) = WORK2(I,4) ! QEK CONVEC3A.1133
WORK2(I,4) = Q(INDEX1(I),K_TEST+1) ! QEKP1 CONVEC3A.1134
WORK2(I,5) = QSE(INDEX1(I),K_TEST+1) ! QSEKP1 CONVEC3A.1135
WORK2(I,7) = WORK2(I,13) ! THPK CONVEC3A.1136
WORK2(I,8) = WORK2(I,14) ! QPK CONVEC3A.1137
WORK2(I,9) = AK(K_TEST+1) + BK(K_TEST+1) CONVEC3A.1138
* *WORK(I,18) ! PKP1 CONVEC3A.1139
PU = WORK(I,18)*BKM12(K_TEST+2)+AKM12(K_TEST+2) CONVEC3A.1140
PL = WORK(I,18)*BKM12(K_TEST+1)+AKM12(K_TEST+1) CONVEC3A.1141
PM = WORK(I,18)*BK(K_TEST)+AK(K_TEST) CONVEC3A.1142
WORK2(I,10) = P_EXNER_C(EXNER(INDEX1(I),K_TEST+2), CONVEC3A.1143
* EXNER(INDEX1(I),K_TEST+1),PU,PL,KAPPA) ! EXKP1 CONVEC3A.1144
WORK2(I,11) = ENTCOEF * AEKP14 * PM * CONVEC3A.1145
* (PM-AKM12(K_TEST+1)-BKM12(K_TEST+1)* CONVEC3A.1146
* WORK(I,18))/(WORK(I,18)*WORK(I,18)) ! EKP14 CONVEC3A.1147
WORK2(I,12) = ENTCOEF *AEKP34 * (AKM12(K_TEST+1) CONVEC3A.1148
* +BKM12(K_TEST+1)*WORK(I,18))* CONVEC3A.1149
* (AKM12(K_TEST+1)+BKM12(K_TEST+1)* CONVEC3A.1150
* WORK(I,18)-WORK2(I,9))/(WORK(I,18)* CONVEC3A.1151
* WORK(I,18)) ! EKP34 CONVEC3A.1152
WORK2(I,20) = EMINDS(INDEX1(I)) ! EMINDS CONVEC3A.1153
BWORK2(I,1) = BWATER(INDEX1(I),K_TEST+1) ! BWATER KP1 CONVEC3A.1154
C CONVEC3A.1155
END DO ! END OF 2ND COMPRESS LOOP CONVEC3A.1156
C CONVEC3A.1157
CALL DQS_DTH
(WORK2(1,6),K_TEST+1,WORK2(1,2),WORK2(1,5), CONVEC3A.1158
* WORK2(1,10),NCONV) CONVEC3A.1159
C CONVEC3A.1160
END IF ! IF(K_TEST.EQ.K) END CONVEC3A.1161
C CONVEC3A.1162
C-------------------------------------------------------------------- CONVEC3A.1163
C CARRY OUT TEST ASCENT CONVEC3A.1164
C L_TRACER AND L_MOM(THE LOGICAL SWITCHES FOR INCLUSION OF TRACERS AND CONVEC3A.1165
C MOMENTUM ARE SET TO .FALSE. IN THIS CALL SINCE THIS ASCENT IS PURELY CONVEC3A.1166
C TO DIAGNOSE THE DEPTH OF THE INITIATED CONVECTION. THUS NOT CONVEC3A.1167
C INCLUDING THE TRACERS AND WINDS SAVES CPU TIME AND MEMORY. CONVEC3A.1168
C-------------------------------------------------------------------- CONVEC3A.1169
C CONVEC3A.1170
CALL LIFT_PAR
(NCONV,NPNTS,WORK2(1,13),WORK2(1,14),WORK2(1,15), CONVEC3A.1171
* BWORK2(1,2),BWORK2(1,1),WORK2(1,7),WORK2(1,8), CONVEC3A.1172
* WORK2(1,2),WORK2(1,4),WORK2(1,1),WORK2(1,3), CONVEC3A.1173
* WORK2(1,5),WORK2(1,6),WORK2(1,9),WORK2(1,10), CONVEC3A.1174
* WORK2(1,11),WORK2(1,12),.FALSE.,WORK2(1,29), CONVEC3A.1175
* WORK2(1,30),WORK2(1,27),WORK2(1,28),WORK2(1,23), CONVEC3A.1176
* WORK2(1,24),WORK2(1,25),WORK2(1,26),.FALSE.,NTRA, CONVEC3A.1177
* TRAPKP1_C2,TRAPK_C2,TRAEKP1_C2,TRAEK_C2, CONVEC3A.1178
* L_SHALLOW_C) CONVEC3A.1179
C CONVEC3A.1180
! Fujitsu vectorization directive GRB0F405.169
!OCL NOVREC GRB0F405.170
DO I=1,NCONV ! 1ST LOOP OVER CONVECTING POINTS CONVEC3A.1181
CL CONVEC3A.1182
CL--------------------------------------------------------------------- CONVEC3A.1183
CL CALCULATE BUOYANCY OF PARCEL IN LAYER K+1 CONVEC3A.1184
CL--------------------------------------------------------------------- CONVEC3A.1185
CL CONVEC3A.1186
WORK2(I,16) = WORK2(I,13)*(1.0 + CONVEC3A.1187
* C_VIRTUAL * WORK2(I,14)) CONVEC3A.1188
* - WORK2(I,2)*(1.0 + CONVEC3A.1189
* C_VIRTUAL * WORK2(I,4)) CONVEC3A.1190
C CONVEC3A.1191
C---------------------------------------------------------------------- CONVEC3A.1192
C INITIATE CONVECTION WHERE BUOYANCY IS LARGE ENOUGH CONVEC3A.1193
C---------------------------------------------------------------------- CONVEC3A.1194
C CONVEC3A.1195
IF ( .NOT.BWORK2(I,3) .AND. .NOT.BWORK(I,4) ) CONVEC3A.1196
* BWORK2(I,3) = WORK2(I,16) .GT. CONVEC3A.1197
* (WORK2(I,20)+XSBMIN) CONVEC3A.1198
C CONVEC3A.1199
C---------------------------------------------------------------------- CONVEC3A.1200
C CHECK TO SEE IF CONVECTION INITIATING BETWEEN LAYERS K AND NBL CONVEC3A.1201
C REACHES ZERO BUOYANCY BEFORE NBL+1 CONVEC3A.1202
C--------------------------------------------------------------------- CONVEC3A.1203
C CONVEC3A.1204
IF ( BWORK2(I,3) .AND. .NOT.BWORK(I,4) .AND. CONVEC3A.1205
* .NOT.L_SHALLOW_C(I).AND. WORK2(I,16) .LE. 0.0) THEN CONVEC3A.1206
L_SHALLOW_C(I) = .TRUE. CONVEC3A.1207
L_SHALLOW(INDEX1(I)) = L_SHALLOW_C(I) CONVEC3A.1208
C CONVEC3A.1209
C---------------------------------------------------------------------- CONVEC3A.1210
C IF IN TOP 2 LAYERS OF BOUNDARY LAYER, CALCULATE THE POTENTIAL CONVEC3A.1211
C TEMPERATURE OF AN UNDILUTE PARCEL FROM THE INITIAL CONVECTIVE CONVEC3A.1212
C LEVEL, (MIMICKING CODE IN ROUTINE TERM_CON) AND RESET L_SHALLOW CONVEC3A.1213
C TO FALSE IF THIS PARCEL IS STILL BUOYANT. CONVEC3A.1214
C---------------------------------------------------------------------- CONVEC3A.1215
C CONVEC3A.1216
IF(K_TEST.EQ.NBL.OR.K_TEST.EQ.NBL-1)THEN CONVEC3A.1217
IF(BWORK2(I,1))THEN CONVEC3A.1218
EL=LC CONVEC3A.1219
ELSE CONVEC3A.1220
EL=LC+LF CONVEC3A.1221
END IF CONVEC3A.1222
THVUNDI=(THPI(INDEX1(I))+(EL/(WORK2(I,10)*CP))*(QPI(INDEX1(I)) CONVEC3A.1223
* -WORK2(I,5))+((LC-EL)/(WORK2(I,10)*CP))*MAX(0.0, CONVEC3A.1224
* (QPI(INDEX1(I))-QSTICE)))*(1.0+C_VIRTUAL*WORK2(I,5)) CONVEC3A.1225
THVEKP1=(WORK2(I,2)*(1.0+C_VIRTUAL*WORK2(I,4))+XSBMIN) CONVEC3A.1226
IF(THVUNDI.GT.THVEKP1)THEN CONVEC3A.1227
L_SHALLOW_C(I)=.FALSE. CONVEC3A.1228
L_SHALLOW(INDEX1(I))=L_SHALLOW_C(I) CONVEC3A.1229
END IF CONVEC3A.1230
END IF ! IF(K_TEST.EQ.NBL.OR.K_TEST.EQ.NBL-1) END CONVEC3A.1231
BWORK2(I,3) = .FALSE. CONVEC3A.1232
END IF ! IF(BWORK2(I,3.AND..NOT.BWORK(I,4)...) END CONVEC3A.1233
C CONVEC3A.1234
END DO ! END OF 1ST I LOOP OVER CONVECTIVE POINTS CONVEC3A.1235
C CONVEC3A.1236
END DO ! END OF LOOP OVER BOUNDARY LAYER LEVELS CONVEC3A.1237
C CONVEC3A.1238
C---------------------------------------------------------------------- CONVEC3A.1239
C RESET INITIAL THETA AND Q OF THE PARCEL AND ENTRAINMENT/ CONVEC3A.1240
C DETRAINMENT RATES IF SHALLOW CONVECTION CONVEC3A.1241
C--------------------------------------------------------------------- CONVEC3A.1242
C CONVEC3A.1243
! Fujitsu vectorization directive GRB0F405.171
!OCL NOVREC GRB0F405.172
DO I=1,NCONV ! 2ND LOOP OVER CONVECTING POINTS CONVEC3A.1244
C CONVEC3A.1245
IF ( L_SHALLOW_C(I) ) THEN CONVEC3A.1246
C CONVEC3A.1247
IF (.NOT.BWORK(I,4)) THEN CONVEC3A.1248
C CONVEC3A.1249
IF ( L_SDXS .AND. K .EQ. 1 ) THEN ARN2F403.42
WORK(I,7) = WORK(I,1) + MAX(THPIXS_SHALLOW, CONVEC3A.1251
* T1_SD(INDEX1(I))/EXK(INDEX1(I))) CONVEC3A.1252
THPI(INDEX1(I)) = WORK(I,1) + MAX(THPIXS_SHALLOW, CONVEC3A.1253
* T1_SD(INDEX1(I))/EXK(INDEX1(I))) CONVEC3A.1254
WORK(I,8) = WORK(I,3) + MAX(QPIXS_SHALLOW,Q1_SD(INDEX1(I))) CONVEC3A.1255
QPI(INDEX1(I)) = WORK(I,3) + MAX(QPIXS_SHALLOW, CONVEC3A.1256
* Q1_SD(INDEX1(I))) CONVEC3A.1257
ELSE CONVEC3A.1258
WORK(I,7) = WORK(I,1) + THPIXS_SHALLOW CONVEC3A.1259
THPI(INDEX1(I)) = WORK(I,1) + THPIXS_SHALLOW CONVEC3A.1260
WORK(I,8) = WORK(I,3) + QPIXS_SHALLOW CONVEC3A.1261
QPI(INDEX1(I)) = WORK(I,3) + QPIXS_SHALLOW CONVEC3A.1262
END IF CONVEC3A.1263
C CONVEC3A.1264
END IF ! IF(.NOT.BWORK(I,4)) END CONVEC3A.1265
C CONVEC3A.1266
WORK(I,11) = WORK(I,11)*SH_FAC CONVEC3A.1267
EKP14(INDEX1(I)) = WORK(I,11) CONVEC3A.1268
WORK(I,12) = WORK(I,12)*SH_FAC CONVEC3A.1269
EKP34(INDEX1(I)) = WORK(I,12) CONVEC3A.1270
AMDETK(INDEX1(I)) = AMDETK(INDEX1(I))*SH_FAC CONVEC3A.1271
C CONVEC3A.1272
END IF ! IF(L_SHALLOW_C(I)) END CONVEC3A.1273
C CONVEC3A.1274
END DO ! END OF 2ND I LOOP OVER CONVECTING POINTS CONVEC3A.1275
C CONVEC3A.1276
END IF ! IF(K.LT.NBL) END CONVEC3A.1277
CL CONVEC3A.1278
CL--------------------------------------------------------------------- CONVEC3A.1279
CL LIFT PARCEL FROM LAYER K TO K+1 CONVEC3A.1280
CL CONVEC3A.1281
CL UM DOCUMENTATION PAPER P27 CONVEC3A.1282
CL SECTION (3) AND (4) CONVEC3A.1283
CL--------------------------------------------------------------------- CONVEC3A.1284
CL CONVEC3A.1285
CALL LIFT_PAR
(NCONV,NPNTS,WORK(1,13),WORK(1,14),WORK(1,15), CONVEC3A.1286
* BWORK(1,2),BWORK(1,1),WORK(1,7),WORK(1,8), CONVEC3A.1287
* WORK(1,2),WORK(1,4),WORK(1,1),WORK(1,3), CONVEC3A.1288
* WORK(1,5),WORK(1,6),WORK(1,9), CONVEC3A.1289
* WORK(1,10),WORK(1,11),WORK(1,12),L_MOM, CONVEC3A.1290
* WORK(1,29),WORK(1,30),WORK(1,27),WORK(1,28), CONVEC3A.1291
* WORK(1,23),WORK(1,24),WORK(1,25),WORK(1,26), CONVEC3A.1292
* L_TRACER,NTRA,TRAPKP1_C,TRAPK_C,TRAEKP1_C, CONVEC3A.1293
* TRAEK_C,L_SHALLOW_C) CONVEC3A.1294
C CONVEC3A.1295
DO 110 I=1,NCONV CONVEC3A.1296
CL CONVEC3A.1297
CL--------------------------------------------------------------------- CONVEC3A.1298
CL CALCULATE BUOYANCY OF PARCEL IN LAYER K+1 CONVEC3A.1299
CL--------------------------------------------------------------------- CONVEC3A.1300
CL CONVEC3A.1301
WORK(I,16) = WORK(I,13)*(1.0 + CONVEC3A.1302
* C_VIRTUAL * WORK(I,14)) CONVEC3A.1303
* - WORK(I,2)*(1.0 + CONVEC3A.1304
* C_VIRTUAL * WORK(I,4)) CONVEC3A.1305
C CONVEC3A.1306
C---------------------------------------------------------------------- CONVEC3A.1307
C INITIATE CONVECTION WHERE BUOYANCY IS LARGE ENOUGH CONVEC3A.1308
C---------------------------------------------------------------------- CONVEC3A.1309
C CONVEC3A.1310
BWORK(I,3) = .NOT.BWORK(I,4) .AND. WORK(I,16) .GT. CONVEC3A.1311
* (WORK(I,20)+ XSBMIN) CONVEC3A.1312
C CONVEC3A.1313
C---------------------------------------------------------------------- CONVEC3A.1314
C CALCULATE INITIAL MASSFLUX FROM LAYER K CONVEC3A.1315
C---------------------------------------------------------------------- CONVEC3A.1316
C CONVEC3A.1317
IF ( BWORK(I,3) ) THEN CONVEC3A.1318
C CONVEC3A.1319
IF(L_SHALLOW_C(I))THEN CONVEC3A.1320
C=C_SHALLOW CONVEC3A.1321
D=D_SHALLOW CONVEC3A.1322
ELSEIF(L_MID_C(I))THEN CONVEC3A.1323
C=C_MID CONVEC3A.1324
D=D_MID CONVEC3A.1325
ELSE CONVEC3A.1326
C=C_DEEP CONVEC3A.1327
D=D_DEEP CONVEC3A.1328
END IF CONVEC3A.1329
C CONVEC3A.1330
WORK(I,19) = 1.0E-3 * WORK(I,18) * CONVEC3A.1331
1 ( D + C * WORK(I,18) * CONVEC3A.1332
2 ((WORK(I,16) - XSBMIN) / WORK(I,17))) CONVEC3A.1333
C CONVEC3A.1334
END IF CONVEC3A.1335
110 CONTINUE CONVEC3A.1336
C CONVEC3A.1337
C---------------------------------------------------------------------- CONVEC3A.1338
C LIMIT MASSFLUX IN LOWEST CONVECTING LAYER TO BE <= MASS OF LAYER CONVEC3A.1339
C OR CONVEC3A.1340
C IF K=1 ADJUST ENTRAINMENT RATE IN BOTTOM HALF OF LAYER 2 SO CONVEC3A.1341
C NOT TO AFFECT THE MASS FLUX AT MID-POINT OF LAYER 2 CONVEC3A.1342
C---------------------------------------------------------------------- CONVEC3A.1343
C CONVEC3A.1344
IF ( K .EQ. 1 ) THEN CONVEC3A.1345
C CONVEC3A.1346
DO I=1,NCONV CONVEC3A.1347
C CONVEC3A.1348
C-------------------------------------------------------------------- CONVEC3A.1349
C CARRY OUT CALCULATION IF CONVECTION WAS INITIATED FROM LAYER 1 CONVEC3A.1350
C-------------------------------------------------------------------- CONVEC3A.1351
C CONVEC3A.1352
IF ( BWORK(I,3) ) THEN CONVEC3A.1353
C CONVEC3A.1354
C-------------------------------------------------------------------- CONVEC3A.1355
C CALCULATE MASS FLUX AT MID-POINT OF LAYER 2 USING STANDARD CONVEC3A.1356
C ENTRAINMENT RATES CONVEC3A.1357
C-------------------------------------------------------------------- CONVEC3A.1358
C CONVEC3A.1359
FLX2 = WORK(I,19) * (1.0 + WORK(I,11)) * (1.0 + WORK(I,12)) CONVEC3A.1360
C CONVEC3A.1361
C-------------------------------------------------------------------- CONVEC3A.1362
C IF MASS FLUX IN LAYER 2 EXCEEDS MASS OF LAYER THEN LIMIT MASS FLUX CONVEC3A.1363
C OVER A TIMESTEP TO MASS OF LAYER CONVEC3A.1364
C-------------------------------------------------------------------- CONVEC3A.1365
C CONVEC3A.1366
IF (WORK(I,19) .GT. WORK(I,21)) THEN CONVEC3A.1367
C CONVEC3A.1368
WORK(I,19) = WORK(I,21) CONVEC3A.1369
C CONVEC3A.1370
C-------------------------------------------------------------------- CONVEC3A.1371
C IF MASS FLUX AT MID-POINT OF LAYER 2 EXCEEDS THE MASS OF THE COLUMN CONVEC3A.1372
C DOWN TO THE SURFACE OVER THE TIMESTEP THEN LIMIT MASS FLUX CONVEC3A.1373
C-------------------------------------------------------------------- CONVEC3A.1374
C CONVEC3A.1375
IF ( FLX2 .GT. WORK(I,22)) FLX2 = WORK(I,22) CONVEC3A.1376
C CONVEC3A.1377
C-------------------------------------------------------------------- CONVEC3A.1378
C ADJUST ENTRAINMENT RATE IN BOTTOM HALF OF LAYER 2 CONVEC3A.1379
C-------------------------------------------------------------------- CONVEC3A.1380
C CONVEC3A.1381
WORK(I,12) = (FLX2/(WORK(I,19) * (1.0 + WORK(I,11)))) - 1.0 CONVEC3A.1382
END IF CONVEC3A.1383
C CONVEC3A.1384
END IF CONVEC3A.1385
END DO CONVEC3A.1386
C CONVEC3A.1387
C--------------------------------------------------------------------- CONVEC3A.1388
C RECALCULATE ASCENT FROM LAYER 1 TO 2 USING ADJUSTED ENTRAINMENT RATE CONVEC3A.1389
C--------------------------------------------------------------------- CONVEC3A.1390
C CONVEC3A.1391
CALL LIFT_PAR
(NCONV,NPNTS,WORK(1,13),WORK(1,14),WORK(1,15), CONVEC3A.1392
* BWORK(1,2),BWORK(1,1),WORK(1,7),WORK(1,8), CONVEC3A.1393
* WORK(1,2),WORK(1,4),WORK(1,1),WORK(1,3), CONVEC3A.1394
* WORK(1,5),WORK(1,6),WORK(1,9), CONVEC3A.1395
* WORK(1,10),WORK(1,11),WORK(1,12),L_MOM, CONVEC3A.1396
* WORK(1,29),WORK(1,30),WORK(1,27),WORK(1,28), CONVEC3A.1397
* WORK(1,23),WORK(1,24),WORK(1,25),WORK(1,26), CONVEC3A.1398
* L_TRACER,NTRA,TRAPKP1_C,TRAPK_C,TRAEKP1_C, CONVEC3A.1399
* TRAEK_C,L_SHALLOW_C) CONVEC3A.1400
C CONVEC3A.1401
DO I=1,NCONV CONVEC3A.1402
C CONVEC3A.1403
IF ( BWORK(I,3) ) THEN CONVEC3A.1404
CL CONVEC3A.1405
CL--------------------------------------------------------------------- CONVEC3A.1406
CL RECALCULATE BUOYANCY OF PARCEL IN LAYER K+1 CONVEC3A.1407
CL--------------------------------------------------------------------- CONVEC3A.1408
CL CONVEC3A.1409
WORK(I,16) = WORK(I,13)*(1.0 + CONVEC3A.1410
* C_VIRTUAL * WORK(I,14)) CONVEC3A.1411
* - WORK(I,2)*(1.0 + CONVEC3A.1412
* C_VIRTUAL * WORK(I,4)) CONVEC3A.1413
C CONVEC3A.1414
C---------------------------------------------------------------------- CONVEC3A.1415
C RESET MASK TO INITIATE CONVECTION WHERE BUOYANCY IS LARGE ENOUGH CONVEC3A.1416
C---------------------------------------------------------------------- CONVEC3A.1417
C CONVEC3A.1418
BWORK(I,3) = .NOT.BWORK(I,4) .AND. WORK(I,16) .GT. CONVEC3A.1419
* (WORK(I,20)+ XSBMIN) CONVEC3A.1420
C CONVEC3A.1421
BWORK(I,4) = BWORK(I,4) .OR. BWORK(I,3) CONVEC3A.1422
C CONVEC3A.1423
END IF CONVEC3A.1424
C CONVEC3A.1425
FLX(INDEX1(I),K) = WORK(I,19) CONVEC3A.1426
IF(FLG_UP_FLX) UP_FLUX(INDEX1(I),K)=WORK(I,19) API2F405.210
C CONVEC3A.1427
END DO CONVEC3A.1428
C CONVEC3A.1429
C---------------------------------------------------------------------- CONVEC3A.1430
C END OF CALCULATION FOR LAYER 1 CONVEC3A.1431
C---------------------------------------------------------------------- CONVEC3A.1432
C CONVEC3A.1433
ELSE CONVEC3A.1434
C CONVEC3A.1435
DO I=1,NCONV CONVEC3A.1436
C CONVEC3A.1437
C---------------------------------------------------------------------- CONVEC3A.1438
C IF MASS FLUX OUT OF THE INITIAL LAYER IS GREATER THAN THE MASS OF CONVEC3A.1439
C THE LAYER OVER THE TIMESTEP THEN LIMIT MASS FLUX TO MASSS OF LAYER CONVEC3A.1440
C---------------------------------------------------------------------- CONVEC3A.1441
C CONVEC3A.1442
IF (BWORK(I,3) .AND. WORK(I,19).GT.WORK(I,21)) CONVEC3A.1443
1 WORK(I,19) = WORK(I,21) CONVEC3A.1444
C CONVEC3A.1445
BWORK(I,4) = BWORK(I,4) .OR. BWORK(I,3) CONVEC3A.1446
C CONVEC3A.1447
FLX(INDEX1(I),K) = WORK(I,19) CONVEC3A.1448
IF(FLG_UP_FLX) UP_FLUX(INDEX1(I),K)=WORK(I,19) API2F405.211
C CONVEC3A.1449
END DO CONVEC3A.1450
C CONVEC3A.1451
END IF CONVEC3A.1452
C CONVEC3A.1453
CL CONVEC3A.1454
CL-------------------------------------------------------------------- CONVEC3A.1455
CL ZERO MIXING DETRAINMENT RATE WHEN CONVECTION STARTS FROM LAYER K CONVEC3A.1456
CL STORE DIAGNOSTIC LINKED TO INITIAL CONVECTIVE MASSFLUX FOR CONVEC3A.1457
CL CALCULATION OF FINAL CLOSURE FOR DEEP CONVECTION. CONVEC3A.1458
CL-------------------------------------------------------------------- CONVEC3A.1459
CL CONVEC3A.1460
DO I=1,NCONV CONVEC3A.1461
IF ( BWORK(I,3) )THEN CONVEC3A.1462
AMDETK(INDEX1(I))=0.0 CONVEC3A.1463
FLX_INIT(INDEX1(I))=WORK(I,19) CONVEC3A.1464
START_LEV(INDEX1(I))=K CONVEC3A.1465
FLXMAX_INIT(INDEX1(I))=WORK(I,21) CONVEC3A.1466
END IF CONVEC3A.1467
END DO CONVEC3A.1468
CL CONVEC3A.1469
CL-------------------------------------------------------------------- CONVEC3A.1470
CL COMPRESS DOWN THOSE POINTS WHICH ARE NOT BUOYANT IN LAYER K+1. CONVEC3A.1471
CL-------------------------------------------------------------------- CONVEC3A.1472
CL CONVEC3A.1473
NINIT = 0 CONVEC3A.1474
DO 115 I=1,NCONV CONVEC3A.1478
IF(BWORK(I,4))THEN CONVEC3A.1479
NINIT = NINIT + 1 CONVEC3A.1480
INDEX2(NINIT) = I CONVEC3A.1481
END IF CONVEC3A.1482
115 CONTINUE CONVEC3A.1483
C CONVEC3A.1485
C CONVEC3A.1486
C---------------------------------------------------------------------- CONVEC3A.1487
C WORK SPACE USAGE FOR SECOND COMPRESS ON BASIS OF WHETHER CONVEC3A.1488
C PARCEL A PARCEL STARTING FROM LAYER K IS BUOYANT IN LAYER CONVEC3A.1489
C K+1 OR IF CONVECTION ALREADY EXISTS IN LAYER K CONVEC3A.1490
C CONVEC3A.1491
C REFERENCES TO WORK, WORK2, BWORK AND BWORK2 CONVEC3A.1492
C REFER TO STARTING ADDRESS CONVEC3A.1493
C CONVEC3A.1494
C LENGTH OF COMPRESSES DATA = NINIT CONVEC3A.1495
C CONVEC3A.1496
C WORK2 AND BWORK2 ARE COMPRESSED DOWN FROM COMPRESSED CONVEC3A.1497
C ARRAYS STORED IN WORK AND BWORK AFTER FIST COMPRESS CONVEC3A.1498
C CONVEC3A.1499
C WORK2(1,1) = TH(#,K) CONVEC3A.1500
C WORK2(1,2) = TH(#,K+1) CONVEC3A.1501
C WORK2(1,3) = Q(#,K) CONVEC3A.1502
C WORK2(1,4) = Q(#,K+1) CONVEC3A.1503
C WORK2(1,5) = QSE(#,K+1) CONVEC3A.1504
C WORK2(1,6) = DQSTHKP1(#) CONVEC3A.1505
C WORK2(1,7) = THP(#,K) CONVEC3A.1506
C WORK2(1,8) = QP(#,K) CONVEC3A.1507
C WORK2(1,9) = PKP1(#) CONVEC3A.1508
C WORK2(1,10) = EXKP1(#) CONVEC3A.1509
C WORK2(1,11) = EKP14(#) CONVEC3A.1510
C WORK2(1,12) = EKP34(#) CONVEC3A.1511
C WORK2(1,13) = PARCEL POT. TEMPERATURE IN LAYER K+1 CONVEC3A.1512
C WORK2(1,14) = PARCEL MIXING RATIO IN LAYER K+1 CONVEC3A.1513
C WORK2(1,15) = EXCESS WATER VAPOUR IN PARCEL ABOVE CONVEC3A.1514
C SATURATION AFTER DRY ASCENT CONVEC3A.1515
C WORK2(1,16) = PARCEL BUOYANCY IN LAYER K+1 CONVEC3A.1516
C WORK2(1,17) = NOT USED IN THIS SECTION CONVEC3A.1517
C WORK2(1,18) = PSTAR(#) CONVEC3A.1518
C WORK2(1,19) = FLX(#,K) CONVEC3A.1519
C CONVEC3A.1520
C BWORK2(1,1) = BWATER(INDEX1(I),K+1) CONVEC3A.1521
C BWORK2(1,2) = .TRUE. IF PARCEL SATURATED IN LAYER K+1 CONVEC3A.1522
C BWORK2(1,3) = .TRUE. IF CONVECTION INITIATE FROM LAYER K+1 CONVEC3A.1523
C WORK2(1,23) = U(#,K) CONVEC3A.1524
C WORK2(1,24) = U(#,K+1) CONVEC3A.1525
C WORK2(1,25) = V(#,K) CONVEC3A.1526
C WORK2(1,26) = V(#,K+1) CONVEC3A.1527
C WORK2(1,27) = UP(#,K) CONVEC3A.1528
C WORK2(1,28) = VP(#,K) CONVEC3A.1529
C WORK2(1,29) = PARCEL U IN LAYER K+1 CONVEC3A.1530
C WORK2(1,30) = PARCEL V IN LAYER K+1 CONVEC3A.1531
C CONVEC3A.1532
C WORK AND BWORK NOW CONTAIN DATA COMPRESSED DOWN CONVEC3A.1533
C FROM FULL LENGTH VECTORS CONVEC3A.1534
C CONVEC3A.1535
C WORK(1,1) = not used in this section CONVEC3A.1536
C WORK(1,2) = QSE(#,K) CONVEC3A.1537
C WORK(1,3) = DQSTHK(#) CONVEC3A.1538
C WORK(1,4) = THPI(#) CONVEC3A.1539
C WORK(1,5) = QPI(#) CONVEC3A.1540
C WORK(1,6) = XPK(#,K+1) CONVEC3A.1541
C WORK(1,7) = not used in this section CONVEC3A.1542
C WORK(1,8) = DEPTH(#) CONVEC3A.1543
C WORK(1,9) = PRECIP(#,K+1) CONVEC3A.1544
C WORK(1,10) = DTHBYDT(#,K) CONVEC3A.1545
C WORK(1,11) = DQBYDT(#,K) CONVEC3A.1546
C WORK(1,12) = DTHBYDT(#,K+1) CONVEC3A.1547
C WORK(1,13) = DQBYDT(#,K+1) CONVEC3A.1548
C WORK(1,14) = AMDETK(#) CONVEC3A.1549
C WORK(1,15) = NOY USED IN THIS SECTION CONVEC3A.1550
C WORK(1,16) = PK(#) CONVEC3A.1551
C WORK(1,17) = EXK(#) CONVEC3A.1552
C WORK(1,18) = DELEXKP1(#) CONVEC3A.1553
C WORK(1,19) = DELPK(#) CONVEC3A.1554
C WORK(1,20) = DELPKP1(#) CONVEC3A.1555
C WORK(1,21) = CCW(#,K+1) CONVEC3A.1556
C WORK(1,22) = T1_SD(#) CONVEC3A.1557
C WORK(1,23) = Q1_SD(#) CONVEC3A.1558
C WORK(1,24) = DUBYDT(#,K) CONVEC3A.1559
C WORK(1,25) = DUBYDT(#,K+1) CONVEC3A.1560
C WORK(1,26) = DVBYDT(#,K) CONVEC3A.1561
C WORK(1,27) = DVBYDT(#,K+1) CONVEC3A.1562
C WORK(1,28) = EFLUX_U_UD(#) CONVEC3A.1563
C WORK(1,29) = EFLUX_V_UD(#) CONVEC3A.1564
C CONVEC3A.1565
C BWORK(1,1) = BGMK(#) CONVEC3A.1566
C BWORK(1,2) = BLAND(#) CONVEC3A.1567
C BWORK(1,3) = BTERM(#) CONVEC3A.1568
C BWORK(1,2) = BLAND(#) CONVEC3A.1569
C---------------------------------------------------------------------- CONVEC3A.1570
C CONVEC3A.1571
IF (NINIT .NE. 0) THEN CONVEC3A.1572
C CONVEC3A.1573
C----------------------------------------------------------------------- CONVEC3A.1574
C FIRST COMPRESS DOWN QUANTITIES FROM PREVIOUSLY COMPRESSED ARRAY CONVEC3A.1575
C----------------------------------------------------------------------- CONVEC3A.1576
C CONVEC3A.1577
DO 120 I=1,NINIT CONVEC3A.1578
WORK2(I,1) = WORK(INDEX2(I),1) CONVEC3A.1579
WORK2(I,2) = WORK(INDEX2(I),2) CONVEC3A.1580
WORK2(I,3) = WORK(INDEX2(I),3) CONVEC3A.1581
WORK2(I,4) = WORK(INDEX2(I),4) CONVEC3A.1582
WORK2(I,5) = WORK(INDEX2(I),5) CONVEC3A.1583
WORK2(I,6) = WORK(INDEX2(I),6) CONVEC3A.1584
WORK2(I,7) = WORK(INDEX2(I),7) CONVEC3A.1585
WORK2(I,8) = WORK(INDEX2(I),8) CONVEC3A.1586
WORK2(I,9) = WORK(INDEX2(I),9) CONVEC3A.1587
WORK2(I,10) = WORK(INDEX2(I),10) CONVEC3A.1588
WORK2(I,11) = WORK(INDEX2(I),11) CONVEC3A.1589
WORK2(I,12) = WORK(INDEX2(I),12) CONVEC3A.1590
WORK2(I,13) = WORK(INDEX2(I),13) CONVEC3A.1591
WORK2(I,14) = WORK(INDEX2(I),14) CONVEC3A.1592
WORK2(I,15) = WORK(INDEX2(I),15) CONVEC3A.1593
WORK2(I,16) = WORK(INDEX2(I),16) CONVEC3A.1594
WORK2(I,17) = WORK(INDEX2(I),17) CONVEC3A.1595
WORK2(I,18) = WORK(INDEX2(I),18) CONVEC3A.1596
WORK2(I,19) = WORK(INDEX2(I),19) CONVEC3A.1597
BWORK2(I,1) = BWORK(INDEX2(I),1) CONVEC3A.1598
BWORK2(I,2) = BWORK(INDEX2(I),2) CONVEC3A.1599
BWORK2(I,3) = BWORK(INDEX2(I),3) CONVEC3A.1600
L_SHALLOW_C2(I) = L_SHALLOW_C(INDEX2(I)) CONVEC3A.1601
L_MID_C2(I) = L_MID_C(INDEX2(I)) CONVEC3A.1602
120 CONTINUE CONVEC3A.1603
C CONVEC3A.1604
IF(L_MOM)THEN CONVEC3A.1605
DO I=1,NINIT CONVEC3A.1606
WORK2(I,23) = WORK(INDEX2(I),23) CONVEC3A.1607
WORK2(I,24) = WORK(INDEX2(I),24) CONVEC3A.1608
WORK2(I,25) = WORK(INDEX2(I),25) CONVEC3A.1609
WORK2(I,26) = WORK(INDEX2(I),26) CONVEC3A.1610
WORK2(I,27) = WORK(INDEX2(I),27) CONVEC3A.1611
WORK2(I,28) = WORK(INDEX2(I),28) CONVEC3A.1612
WORK2(I,29) = WORK(INDEX2(I),29) CONVEC3A.1613
WORK2(I,30) = WORK(INDEX2(I),30) CONVEC3A.1614
END DO CONVEC3A.1615
END IF CONVEC3A.1616
C CONVEC3A.1617
IF(L_TRACER)THEN CONVEC3A.1618
C CONVEC3A.1619
DO KTRA=1,NTRA CONVEC3A.1620
DO I=1,NINIT CONVEC3A.1621
TRAEK_C2(I,KTRA)=TRAEK_C(INDEX2(I),KTRA) CONVEC3A.1622
TRAEKP1_C2(I,KTRA)=TRAEKP1_C(INDEX2(I),KTRA) CONVEC3A.1623
TRAPK_C2(I,KTRA)=TRAPK_C(INDEX2(I),KTRA) CONVEC3A.1624
TRAPKP1_C2(I,KTRA)=TRAPKP1_C(INDEX2(I),KTRA) CONVEC3A.1625
END DO CONVEC3A.1626
END DO CONVEC3A.1627
C CONVEC3A.1628
END IF CONVEC3A.1629
C---------------------------------------------------------------------- CONVEC3A.1630
C COMPRESS DOWN REST OF DATA FROM FULL ARRAYS CONVEC3A.1631
C CONVEC3A.1632
C FIRST EXPAND BACK BWORK(1,2) (=BINIT) BACK TO FULL VECTORS CONVEC3A.1633
C---------------------------------------------------------------------- CONVEC3A.1634
C CONVEC3A.1635
CDIR$ IVDEP CONVEC3A.1636
! Fujitsu vectorization directive GRB0F405.173
!OCL NOVREC GRB0F405.174
DO 130 I=1,NCONV CONVEC3A.1637
BINIT(INDEX1(I)) = BWORK(I,4) CONVEC3A.1638
130 CONTINUE CONVEC3A.1639
C CONVEC3A.1640
NINIT = 0 CONVEC3A.1641
DO 135 I=1,NPNTS CONVEC3A.1645
IF(BINIT(I))THEN CONVEC3A.1646
NINIT = NINIT + 1 CONVEC3A.1647
INDEX3(NINIT) = I CONVEC3A.1648
END IF CONVEC3A.1649
135 CONTINUE CONVEC3A.1650
C CONVEC3A.1652
DO 140 I=1,NINIT CONVEC3A.1653
WORK(I,2) = QSE(INDEX3(I),K) CONVEC3A.1654
WORK(I,3) = DQSTHK(INDEX3(I)) CONVEC3A.1655
WORK(I,4) = THPI(INDEX3(I)) CONVEC3A.1656
WORK(I,5) = QPI(INDEX3(I)) CONVEC3A.1657
WORK(I,6) = XPK(INDEX3(I),K) CONVEC3A.1658
WORK(I,8) = DEPTH(INDEX3(I)) CONVEC3A.1659
CCA_2DC(I) = CCA_2D(INDEX3(I)) AJX0F404.265
ICCBC(I) = ICCB(INDEX3(I)) CONVEC3A.1661
ICCTC(I) = ICCT(INDEX3(I)) CONVEC3A.1662
TCWC(I) = TCW(INDEX3(I)) CONVEC3A.1663
CCLWPC(I) = CCLWP(INDEX3(I)) CONVEC3A.1664
LCCAC(I) = LCCA(INDEX3(I)) ! beware - LCCAC & LCBASEC CONVEC3A.1665
LCBASEC(I) = LCBASE(INDEX3(I)) ! are IN/OUT to lower levels CONVEC3A.1666
LCTOPC(I) = LCTOP(INDEX3(I)) CONVEC3A.1667
LCCLWPC(I) = LCCLWP(INDEX3(I)) CONVEC3A.1668
BWORK(I,1) = BGMK(INDEX3(I)) CONVEC3A.1669
BWORK(I,2) = BLAND(INDEX3(I)) CONVEC3A.1670
WORK(I,10) = DTHBYDT(INDEX3(I),K) CONVEC3A.1671
WORK(I,11) = DQBYDT(INDEX3(I),K) CONVEC3A.1672
WORK(I,12) = DTHBYDT(INDEX3(I),K+1) CONVEC3A.1673
WORK(I,13) = DQBYDT(INDEX3(I),K+1) CONVEC3A.1674
WORK(I,14) = AMDETK(INDEX3(I)) CONVEC3A.1675
WORK(I,16) = PK(INDEX3(I)) CONVEC3A.1676
WORK(I,17) = EXK(INDEX3(I)) CONVEC3A.1677
WORK(I,18) = DELEXKP1(INDEX3(I)) CONVEC3A.1678
WORK(I,19) = DELPK(INDEX3(I)) CONVEC3A.1679
WORK(I,20) = DELPKP1(INDEX3(I)) CONVEC3A.1680
WORK(I,22) = T1_SD(INDEX3(I)) CONVEC3A.1681
WORK(I,23) = Q1_SD(INDEX3(I)) CONVEC3A.1682
CAPE_C(I) = CAPE(INDEX3(I)) CONVEC3A.1683
DCPBYDT_C(I) = DCPBYDT(INDEX3(I)) CONVEC3A.1684
C CONVEC3A.1685
BWORK(I,4) = .TRUE. CONVEC3A.1686
140 CONTINUE CONVEC3A.1687
C CONVEC3A.1688
IF(L_MOM)THEN CONVEC3A.1689
DO I=1,NINIT CONVEC3A.1690
WORK(I,24) = DUBYDT(INDEX3(I),K) CONVEC3A.1691
WORK(I,25) = DUBYDT(INDEX3(I),K+1) CONVEC3A.1692
WORK(I,26) = DVBYDT(INDEX3(I),K) CONVEC3A.1693
WORK(I,27) = DVBYDT(INDEX3(I),K+1) CONVEC3A.1694
WORK(I,28) = EFLUX_U_UD(INDEX3(I)) CONVEC3A.1695
WORK(I,29) = EFLUX_V_UD(INDEX3(I)) CONVEC3A.1696
END DO CONVEC3A.1697
END IF CONVEC3A.1698
C CONVEC3A.1699
IF(L_TRACER)THEN CONVEC3A.1700
C CONVEC3A.1701
DO KTRA=1,NTRA CONVEC3A.1702
DO I=1,NINIT CONVEC3A.1703
DTRAEK_C(I,KTRA) = DTRABYDT(INDEX3(I),K,KTRA) CONVEC3A.1704
DTRAEKP1_C(I,KTRA) = DTRABYDT(INDEX3(I),K+1,KTRA) CONVEC3A.1705
END DO CONVEC3A.1706
END DO CONVEC3A.1707
C CONVEC3A.1708
END IF CONVEC3A.1709
C CONVEC3A.1710
CL CONVEC3A.1711
CL---------------------------------------------------------------------- CONVEC3A.1712
CL CALCULATE REST OF PARCEL ASCENT AND EFFECT OF CONVECTION CONVEC3A.1713
CL UPON THE LARGE-SCALE ATMOSPHERE CONVEC3A.1714
CL CONVEC3A.1715
CL SUBROUTINE CONVEC2 CONVEC3A.1716
CL CONVEC3A.1717
CL UM DOCUMENTATION PAPER P27 CONVEC3A.1718
CL SECTIONS (5),(6),(7),(8),(9),(10) CONVEC3A.1719
CL---------------------------------------------------------------------- CONVEC3A.1720
CL CONVEC3A.1721
CALL CONVEC2
(NINIT,NPNTS,NLEV,K,WORK2(1,1),WORK2(1,2),WORK2(1,3), CONVEC3A.1722
* WORK2(1,4),WORK2(1,5),WORK2(1,6),WORK2(1,18), CONVEC3A.1723
* WORK2(1,7),WORK2(1,8),WORK2(1,13),WORK2(1,14), CONVEC3A.1724
* WORK2(1,15),WORK2(1,16),WORK(1,2),WORK(1,3), CONVEC3A.1725
* WORK(1,4),WORK(1,5),WORK(1,6),WORK2(1,19), CONVEC3A.1726
* BWORK2(1,1),BWORK2(1,2),BWORK(1,1),BWORK2(1,3), CONVEC3A.1727
* BWORK(1,2),BWORK(1,3),WORK(1,8),WORK(1,9), CONVEC3A.1728
* WORK(1,10),WORK(1,11),WORK(1,12),WORK(1,13), CONVEC3A.1729
* BWORK(1,4),CCA_2DC,ICCBC,ICCTC,TCWC, AJX0F404.266
* WORK2(1,11),WORK2(1,12),WORK(1,14), CONVEC3A.1731
* WORK(1,16),WORK2(1,9),WORK(1,17),WORK2(1,10), CONVEC3A.1732
* WORK(1,18),WORK(1,19),WORK(1,20), CONVEC3A.1733
* CCLWPC,WORK(1,21),LCCAC,LCBASEC,LCTOPC,LCCLWPC, CONVEC3A.1734
* WORK(1,22),WORK(1,23),L_MOM,WORK2(1,23),WORK2(1,24), CONVEC3A.1735
* WORK2(1,25),WORK2(1,26),WORK2(1,27),WORK2(1,28), CONVEC3A.1736
* WORK2(1,29),WORK2(1,30),WORK(1,24),WORK(1,25), CONVEC3A.1737
* WORK(1,26),WORK(1,27),WORK(1,28),WORK(1,29), CONVEC3A.1738
* L_SHALLOW_C2,L_MID_C2, CONVEC3A.1739
* L_TRACER,NTRA,TRAEK_C2,TRAEKP1_C2,TRAPK_C2, CONVEC3A.1740
* TRAPKP1_C2,DTRAEK_C,DTRAEKP1_C,CAPE_C,DCPBYDT_C, ARN2F403.43
& L_XSCOMP,L_SDXS,L_CCW,MPARWTR,UD_FACTOR, AJX3F405.49
& DELTAK) AJX3F405.50
CL CONVEC3A.1742
CL--------------------------------------------------------------------- CONVEC3A.1743
CL EXPAND REQUIRED VECTORS BACK TO FULL FIELDS CONVEC3A.1744
CL---------------------------------------------------------------------- CONVEC3A.1745
CL CONVEC3A.1746
DO 145 I=1,NPNTS CONVEC3A.1747
THP(I,K+1) = 0.0 CONVEC3A.1748
QP(I,K+1) = 0.0 CONVEC3A.1749
XPK(I,K+1) = 0.0 CONVEC3A.1750
FLX(I,K+1)= 0.0 CONVEC3A.1751
DEPTH(I) = 0.0 CONVEC3A.1752
PRECIP(I,K+1) = 0.0 CONVEC3A.1753
BGMK(I) = .FALSE. CONVEC3A.1754
BTERM(I) = .FALSE. CONVEC3A.1755
BINIT(I) = .FALSE. CONVEC3A.1756
145 CONTINUE CONVEC3A.1757
C CONVEC3A.1758
IF(L_MOM)THEN CONVEC3A.1759
DO I=1,NPNTS CONVEC3A.1760
UP(I,K+1) = 0.0 CONVEC3A.1761
VP(I,K+1) = 0.0 CONVEC3A.1762
END DO CONVEC3A.1763
END IF CONVEC3A.1764
C CONVEC3A.1765
IF(L_TRACER)THEN CONVEC3A.1766
C CONVEC3A.1767
DO KTRA=1,NTRA CONVEC3A.1768
DO I=1,NPNTS CONVEC3A.1769
TRAP(I,K+1,KTRA) = 0.0 CONVEC3A.1770
END DO CONVEC3A.1771
END DO CONVEC3A.1772
C CONVEC3A.1773
END IF CONVEC3A.1774
C CONVEC3A.1775
CDIR$ IVDEP CONVEC3A.1776
! Fujitsu vectorization directive GRB0F405.175
!OCL NOVREC GRB0F405.176
DO 150 I=1,NINIT CONVEC3A.1777
THP(INDEX3(I),K+1) = WORK2(I,7) CONVEC3A.1778
QP(INDEX3(I),K+1) = WORK2(I,8) CONVEC3A.1779
XPK(INDEX3(I),K+1) = WORK(I,6) CONVEC3A.1780
FLX(INDEX3(I),K+1) = WORK2(I,19) CONVEC3A.1781
DEPTH(INDEX3(I)) = WORK(I,8) CONVEC3A.1782
PRECIP(INDEX3(I),K+1) = WORK(I,9) CONVEC3A.1783
DTHBYDT(INDEX3(I),K) = WORK(I,10) CONVEC3A.1784
DQBYDT(INDEX3(I),K) = WORK(I,11) CONVEC3A.1785
DTHBYDT(INDEX3(I),K+1) = WORK(I,12) CONVEC3A.1786
DQBYDT(INDEX3(I),K+1) = WORK(I,13) CONVEC3A.1787
CCA_2D(INDEX3(I)) = CCA_2DC(I) AJX0F404.268
ICCB(INDEX3(I)) = ICCBC(I) CONVEC3A.1789
ICCT(INDEX3(I)) = ICCTC(I) CONVEC3A.1790
TCW(INDEX3(I)) = TCWC(I) CONVEC3A.1791
CCLWP(INDEX3(I)) = CCLWPC(I) CONVEC3A.1792
LCCA(INDEX3(I)) = LCCAC(I) CONVEC3A.1793
LCBASE(INDEX3(I)) = LCBASEC(I) CONVEC3A.1794
LCTOP(INDEX3(I)) = LCTOPC(I) CONVEC3A.1795
LCCLWP(INDEX3(I)) = LCCLWPC(I) CONVEC3A.1796
CCW(INDEX3(I),K+1) = WORK(I,21) CONVEC3A.1797
CAPE(INDEX3(I)) = CAPE_C(I) CONVEC3A.1798
DCPBYDT(INDEX3(I)) = DCPBYDT_C(I) CONVEC3A.1799
C CONVEC3A.1800
BGMK(INDEX3(I)) = BWORK(I,1) CONVEC3A.1801
BTERM(INDEX3(I)) = BWORK(I,3) CONVEC3A.1802
BINIT(INDEX3(I)) = BWORK(I,4) CONVEC3A.1803
IF(FLG_UP_FLX) UP_FLUX(INDEX3(I),K+1)=WORK2(I,19) API2F405.212
IF(FLG_ENTR_UP) ENTRAIN_UP(INDEX3(I),K)=(1.0-DELTAK(I))* API2F405.213
& (1.0-WORK(I,14))*(WORK2(I,11)+WORK2(I,12)* API2F405.214
& (1.0+WORK2(I,11)))*FLX(INDEX3(I),K) API2F405.215
IF(FLG_DETR_UP) DETRAIN_UP(INDEX3(I),K)=-(WORK(I,14)+ API2F405.216
& DELTAK(I)*(1.0-WORK(I,14)))* API2F405.217
& FLX(INDEX3(I),K) API2F405.218
IF(BTERM(INDEX3(I))) THEN API2F405.219
! API2F405.220
! TERMINAL DETRAINMENT API2F405.221
! API2F405.222
IF(FLG_ENTR_UP) ENTRAIN_UP(INDEX3(I),K+1)=0.0 API2F405.223
IF(FLG_DETR_UP) DETRAIN_UP(INDEX3(I),K+1)=-(1.0-DELTAK(I))* API2F405.224
& FLX(INDEX3(I),K) API2F405.225
ENDIF API2F405.226
150 CONTINUE CONVEC3A.1804
C CONVEC3A.1805
IF(L_MOM)THEN CONVEC3A.1806
DO I=1,NINIT CONVEC3A.1807
UP(INDEX3(I),K+1) = WORK2(I,27) CONVEC3A.1808
VP(INDEX3(I),K+1) = WORK2(I,28) CONVEC3A.1809
DUBYDT(INDEX3(I),K) = WORK(I,24) CONVEC3A.1810
DVBYDT(INDEX3(I),K) = WORK(I,26) CONVEC3A.1811
DUBYDT(INDEX3(I),K+1) = WORK(I,25) CONVEC3A.1812
DVBYDT(INDEX3(I),K+1) = WORK(I,27) CONVEC3A.1813
EFLUX_U_UD(INDEX3(I)) = WORK(I,28) CONVEC3A.1814
EFLUX_V_UD(INDEX3(I)) = WORK(I,29) CONVEC3A.1815
END DO CONVEC3A.1816
END IF CONVEC3A.1817
C CONVEC3A.1818
IF(L_TRACER)THEN CONVEC3A.1819
C CONVEC3A.1820
DO KTRA=1,NTRA CONVEC3A.1821
DO I=1,NINIT CONVEC3A.1822
TRAP(INDEX3(I),K+1,KTRA)=TRAPK_C2(I,KTRA) CONVEC3A.1823
DTRABYDT(INDEX3(I),K,KTRA)=DTRAEK_C(I,KTRA) CONVEC3A.1824
DTRABYDT(INDEX3(I),K+1,KTRA)=DTRAEKP1_C(I,KTRA) CONVEC3A.1825
END DO CONVEC3A.1826
END DO CONVEC3A.1827
C CONVEC3A.1828
END IF CONVEC3A.1829
C CONVEC3A.1830
C CONVEC3A.1831
END IF CONVEC3A.1832
C CONVEC3A.1833
END IF CONVEC3A.1834
C CONVEC3A.1835
C------------------------------------------------------------------- CONVEC3A.1836
C ADJUSTMENT OF CLOSURE FOR DEEP CONVECTION CONVEC3A.1837
C CONVEC3A.1838
C UM DOCUMENTATION PAPER P27-3. SECTION 5. CONVEC3A.1839
C CONVEC3A.1840
C ADJUST INITIAL MASS FLUX SO THAT CAPE IS REMOVED BY CONVECTION CONVEC3A.1841
C OVER TIMESCALE CAPE_TS CONVEC3A.1842
C------------------------------------------------------------------- CONVEC3A.1843
C CONVEC3A.1844
C CONVEC3A.1845
DO I=1,NPNTS CONVEC3A.1846
IF(L_CAPE)THEN CONVEC3A.1847
IF(.NOT.L_SHALLOW(I).AND.BTERM(I))THEN CONVEC3A.1848
IF(DCPBYDT(I).GT.0.0)THEN CONVEC3A.1849
FLX_INIT_NEW(I)=FLX_INIT(I)*CAPE(I)/(CAPE_TS*DCPBYDT(I)) CONVEC3A.1850
IF(FLX_INIT_NEW(I).GT.FLXMAX_INIT(I))THEN CONVEC3A.1851
FLX_INIT_NEW(I)=FLXMAX_INIT(I) CONVEC3A.1852
END IF CONVEC3A.1853
END IF CONVEC3A.1854
END IF CONVEC3A.1855
END IF CONVEC3A.1856
IF(BTERM(I))THEN CONVEC3A.1857
CAPE_OUT(I)=CAPE(I) CONVEC3A.1858
CAPE(I)=0.0 CONVEC3A.1859
DCPBYDT(I)=0.0 CONVEC3A.1860
END IF CONVEC3A.1861
END DO CONVEC3A.1862
C CONVEC3A.1863
C--------------------------------------------------------------------- CONVEC3A.1864
C RESCALE Q1, Q2 MASS FLUX AND PRECIP FOR DEEP CONVECTION CONVEC3A.1865
C--------------------------------------------------------------------- CONVEC3A.1866
C CONVEC3A.1867
IF(L_CAPE)THEN CONVEC3A.1868
DO KT=1,K+1 CONVEC3A.1869
DO I=1,NPNTS CONVEC3A.1870
IF(KT.GE.START_LEV(I).AND..NOT.L_SHALLOW(I).AND.BTERM(I). CONVEC3A.1871
* AND.FLX_INIT_NEW(I).GT.0.0)THEN CONVEC3A.1872
IF(KT.EQ.DET_LEV(I))THEN API1F401.36
DTHBYDT(I,KT)=(DTHBYDT(I,KT) - DTHEF(I)) API1F401.37
* *FLX_INIT_NEW(I)/FLX_INIT(I) API1F401.38
DTHBYDT(I,KT) = DTHBYDT(I,KT) + DTHEF(I) API1F401.39
DQBYDT(I,KT)=(DQBYDT(I,KT) - DQF(I)) API1F401.40
* *FLX_INIT_NEW(I)/FLX_INIT(I) API1F401.41
DQBYDT(I,KT) = DQBYDT(I,KT) +DQF(I) API1F401.42
IF(L_MOM) THEN API1F405.7
DUBYDT(I,KT)=(DUBYDT(I,KT)-DUEF(I))* API1F405.8
& FLX_INIT_NEW(I)/FLX_INIT(I) API1F405.9
DUBYDT(I,KT)=DUBYDT(I,KT)+DUEF(I) API1F405.10
DVBYDT(I,KT)=(DVBYDT(I,KT)-DVEF(I))* API1F405.11
& FLX_INIT_NEW(I)/FLX_INIT(I) API1F405.12
DVBYDT(I,KT)=DVBYDT(I,KT)+DVEF(I) API1F405.13
ENDIF API1F405.14
ELSE API1F401.43
DTHBYDT(I,KT)=DTHBYDT(I,KT)*FLX_INIT_NEW(I)/FLX_INIT(I) API1F401.44
DQBYDT(I,KT)=DQBYDT(I,KT)*FLX_INIT_NEW(I)/FLX_INIT(I) API1F401.45
IF(L_MOM) THEN API1F405.15
DUBYDT(I,KT)=DUBYDT(I,KT)*FLX_INIT_NEW(I)/FLX_INIT(I) API1F405.16
DVBYDT(I,KT)=DVBYDT(I,KT)*FLX_INIT_NEW(I)/FLX_INIT(I) API1F405.17
ENDIF API1F405.18
END IF API1F401.46
FLX(I,KT)=FLX(I,KT)*FLX_INIT_NEW(I)/FLX_INIT(I) API1F401.47
IF(FLG_UP_FLX) UP_FLUX(I,KT)=FLX(I,KT) API2F405.227
IF(FLG_ENTR_UP) ENTRAIN_UP(I,KT)=ENTRAIN_UP(I,KT)* API2F405.228
& FLX_INIT_NEW(I)/FLX_INIT(I) API2F405.229
IF(FLG_DETR_UP) DETRAIN_UP(I,KT)=DETRAIN_UP(I,KT)* API2F405.230
& FLX_INIT_NEW(I)/FLX_INIT(I) API2F405.231
PRECIP(I,KT)=PRECIP(I,KT)*FLX_INIT_NEW(I)/FLX_INIT(I) API1F401.48
END IF CONVEC3A.1877
END DO CONVEC3A.1878
END DO CONVEC3A.1879
DO I=1,NPNTS API1F405.19
IF(.NOT.L_SHALLOW(I).AND.BTERM(I).AND. API1F405.20
& FLX_INIT_NEW(I).GT.0.0)THEN API1F405.21
IF(CCA_2D(I).GT.2.0E-5) CCA_2D(I)=CCA_2D(I)+ API1F405.22
& 0.06*LOG(FLX_INIT_NEW(I)/FLX_INIT(I)) API1F405.23
ENDIF API1F405.24
END DO API1F405.25
END IF CONVEC3A.1881
CL CONVEC3A.1882
CL--------------------------------------------------------------------- CONVEC3A.1883
CL DOWNDRAUGHT CALCULATION CONVEC3A.1884
CL CONVEC3A.1885
CL CARRIED OUT FOR THOSE CLOUD WHICH ARE TERMINATING CONVEC3A.1886
CL CONVEC3A.1887
CL SUBROUTINE DD_CALL CONVEC3A.1888
CL CONVEC3A.1889
CL UM DOCUMENTATION PAPER P27 CONVEC3A.1890
CL SECTION (11) CONVEC3A.1891
CL--------------------------------------------------------------------- CONVEC3A.1892
CL CONVEC3A.1893
C CONVEC3A.1894
NTERM = 0 CONVEC3A.1895
DO 160 I=1,NPNTS CONVEC3A.1896
IF (BTERM(I)) THEN CONVEC3A.1897
*IF DEF,SCMA AJC0F405.193
DO KT=1,NLEV AJC0F405.194
DTHUD(I,KT) = DTHBYDT(I,KT) AJC0F405.195
DQUD(I,KT) = DQBYDT(I,KT) AJC0F405.196
ENDDO AJC0F405.197
*ENDIF AJC0F405.198
NTERM = NTERM + 1 CONVEC3A.1898
DTHEF(I) = DTHBYDT(I,K+1) API1F401.49
DQF(I) = DQBYDT(I,K+1) API1F401.50
IF(L_MOM) THEN API1F405.26
DUEF(I)=DUBYDT(I,K+1) API1F405.27
DVEF(I)=DVBYDT(I,K+1) API1F405.28
ENDIF API1F405.29
API1F405.30
DET_LEV(I) = K+1 API1F401.51
END IF CONVEC3A.1899
160 CONTINUE CONVEC3A.1900
C CONVEC3A.1901
IF (NTERM .NE. 0) THEN CONVEC3A.1902
C CONVEC3A.1903
CALL DD_CALL
(NP_FIELD,NPNTS,K,THP(1,1),QP(1,1),TH(1,1), CONVEC3A.1904
* Q(1,1),DTHBYDT(1,1),DQBYDT(1,1),FLX(1,1), CONVEC3A.1905
* PSTAR,AK,BK,AKM12,BKM12,DELAK,DELBK,EXNER(1,1), CONVEC3A.1906
* PRECIP(1,1),RAIN,SNOW,ICCB,ICCT,BWATER(1,2), CONVEC3A.1907
* BTERM,BGMK,TIMESTEP,CCA_2D,NTERM,L_MOM,UP(1,1), AJX0F404.269
* VP(1,1),U(1,1),V(1,1),DUBYDT(1,1),DVBYDT(1,1), CONVEC3A.1909
* EFLUX_U_DD,EFLUX_V_DD, CONVEC3A.1910
* L_TRACER,NTRA,TRAP,TRACER,DTRABYDT,NLEV,TRLEV, GSS1F403.158
& recip_pstar, API2F405.232
& DWN_FLUX,FLG_DWN_FLX,ENTRAIN_DWN, API2F405.233
& FLG_ENTR_DWN,DETRAIN_DWN,FLG_DETR_DWN) API2F405.234
API2F405.235
C CONVEC3A.1912
C--------------------------------------------------------------------- CONVEC3A.1913
C ZERO CONVECTION START LEVEL IF CONVECTION TERMINATES CONVEC3A.1914
C--------------------------------------------------------------------- CONVEC3A.1915
C CONVEC3A.1916
DO I=1,NPNTS CONVEC3A.1917
IF(BTERM(I))THEN CONVEC3A.1918
START_LEV(I)=0.0 CONVEC3A.1919
END IF CONVEC3A.1920
END DO CONVEC3A.1921
C CONVEC3A.1922
C--------------------------------------------------------------------- CONVEC3A.1923
C ADJUSTMENT TO CLOUD BASE, TOP AND AMOUNT CONVEC3A.1924
C CONVEC3A.1925
C IF CLOUD BASE AND TOP ARE EQUAL THEN ERRORS OCCUR IN RADIATION SCHEME CONVEC3A.1926
C CONVEC3A.1927
C ONLY OCCURS IF CONVECTION SATURATES UPON FORCED DETRAINMENT CONVEC3A.1928
C CONVEC3A.1929
C WHEN OCCURS ZERO CLOUD BASE, TOP AND AMOUNT CONVEC3A.1930
C CONVEC3A.1931
C--------------------------------------------------------------------- CONVEC3A.1932
C CONVEC3A.1933
DO I=1,NPNTS CONVEC3A.1934
IF (BTERM(I) .AND. ICCB(I) .EQ. ICCT(I)) THEN CONVEC3A.1935
ICCB(I) = 0.0 CONVEC3A.1936
ICCT(I) = 0.0 CONVEC3A.1937
CCA_2D(I) = 0.0 AJX0F404.270
TCW(I) = 0.0 CONVEC3A.1939
CCLWP(I) = 0.0 CONVEC3A.1940
END IF CONVEC3A.1941
IF (BTERM(I) .AND. LCBASE(I) .EQ. LCTOP(I)) THEN CONVEC3A.1942
LCBASE(I) = 0 CONVEC3A.1943
LCTOP(I) = 0 CONVEC3A.1944
LCCA(I) = 0.0 CONVEC3A.1945
LCCLWP(I) = 0.0 CONVEC3A.1946
END IF CONVEC3A.1947
END DO CONVEC3A.1948
C CONVEC3A.1949
C--------------------------------------------------------------------- CONVEC3A.1950
C RESET BTERM TO FALSE CONVEC3A.1951
C--------------------------------------------------------------------- CONVEC3A.1952
C CONVEC3A.1953
DO 200 I=1,NPNTS CONVEC3A.1954
200 BTERM(I) = .FALSE. CONVEC3A.1955
C CONVEC3A.1956
END IF CONVEC3A.1957
CL CONVEC3A.1958
CL===================================================================== CONVEC3A.1959
CL END OF MAIN LOOP CONVEC3A.1960
CL===================================================================== CONVEC3A.1961
CL CONVEC3A.1962
60 CONTINUE CONVEC3A.1963
CL CONVEC3A.1964
CL--------------------------------------------------------------------- CONVEC3A.1965
CL BALANCE ENERGY BUDGET BY APPLYING CORRECTION TO THE TEMPERATURES CONVEC3A.1966
CL CONVEC3A.1967
CL SUBROUTINE COR_ENGY CONVEC3A.1968
CL CONVEC3A.1969
CL UM DOCUMENTATION PAPER P27 CONVEC3A.1970
CL SECTION (12) CONVEC3A.1971
CL--------------------------------------------------------------------- CONVEC3A.1972
CL CONVEC3A.1973
NCNLV = 0 CONVEC3A.1974
DO 210 I=1,NPNTS CONVEC3A.1978
IF(BCNLV(I))THEN CONVEC3A.1979
NCNLV = NCNLV + 1 CONVEC3A.1980
INDEX4(NCNLV) = I CONVEC3A.1981
END IF CONVEC3A.1982
210 CONTINUE CONVEC3A.1983
C CONVEC3A.1985
C CONVEC3A.1986
C---------------------------------------------------------------------- CONVEC3A.1987
C WORK SPACE USAGE FOR ENERGY CORRECTION CALCULATION CONVEC3A.1988
C CONVEC3A.1989
C REFERENCES TO WORK AND WORK2 CONVEC3A.1990
C REFER TO STARTING ADDRESS CONVEC3A.1991
C CONVEC3A.1992
C LENGTH OF COMPRESSES DATA = NCNLV CONVEC3A.1993
C CONVEC3A.1994
C WORK(1,1 TO NLEV) = DTHBYDT(#,1 TO NLEV) CONVEC3A.1995
C WORK(1,NLEV+1 TO 2*NLEV) = DQBYDT(#,1 TO NLEV) CONVEC3A.1996
C WORK2(1,1 TO NLEV+1) = EXNER(#,1 TO NLEV+1) CONVEC3A.1997
C WORK2(1,NLEV+2) = TH(#,1) CONVEC3A.1998
C WORK2(1,NLEV+3) = PSTAR(#) CONVEC3A.1999
C---------------------------------------------------------------------- CONVEC3A.2000
C CONVEC3A.2001
IF (NCNLV .NE. 0)THEN CONVEC3A.2002
C CONVEC3A.2009
CALL COR_ENGY
(NP_FIELD,NPNTS,NCNLV,NLEV,DTHBYDT,DQBYDT,SNOW, GSS1F403.160
* EXNER,PSTAR,DELAK,DELBK,AKM12,BKM12,INDEX4) GSS1F403.161
CL CONVEC3A.2026
IF (L_3D_CCA) THEN AJX0F404.271
CALL CALC_3D_CCA
(NP_FIELD,NPNTS,NLEV,NBL,ANVIL_FACTOR AJX0F404.272
& ,TOWER_FACTOR,AKM12,BKM12,ICCB,ICCT AJX0F404.273
& ,FREEZE_LEV,PSTAR,CCA_2D,CCA,L_CLOUD_DEEP) AJX3F405.51
ELSE AJX0F404.275
DO I=1,NPNTS AJX0F404.276
CCA(I,1)=CCA_2D(I) AJX0F404.277
ENDDO AJX0F404.278
ENDIF AJX0F404.279
CL--------------------------------------------------------------------- CONVEC3A.2027
CL UPDATE MODEL POTENTIAL TEMPERATURE, MIXING RATIO, U, V CONVEC3A.2028
CL AND TRACER WITH INCREMENTS DUE TO CONVECTION CONVEC3A.2029
CL--------------------------------------------------------------------- CONVEC3A.2030
CL CONVEC3A.2031
DO 250 K=1,NLEV CONVEC3A.2032
DO 250 I=1,NPNTS CONVEC3A.2033
*IF DEF,SCMA AJC0F405.199
DTHDD(I,K) = DTHBYDT(I,K) - DTHUD(I,K) AJC0F405.200
DQDD(I,K) = DQBYDT(I,K) - DQUD(I,K) AJC0F405.201
*ENDIF AJC0F405.202
TH(I,K) = TH(I,K) + DTHBYDT(I,K) * TIMESTEP CONVEC3A.2034
Q(I,K) = Q(I,K) + DQBYDT(I,K) * TIMESTEP CONVEC3A.2035
C AJX1F402.247
C--------------------------------------------------------------------- AJX1F402.248
C Calculation of gridbox mean CCW and CCWP, and CCA x conv. cloud AJX1F402.249
C base and top pressure. AJX1F402.250
C--------------------------------------------------------------------- AJX1F402.251
C AJX1F402.252
IF (CCA_2D(I) .NE. 0.0) THEN AJX0F404.280
IF (L_3D_CCA) THEN AJX0F404.281
GBMCCW(I,K) = CCA(I,K) * CCW(I,K) AJX0F404.282
DELPK(I) = -DELAK(K) - DELBK(K)*PSTAR(I) AJX4F405.6
GBMCCWP(I) = GBMCCWP(I) + CCW(I,K)*DELPK(I)*CCA(I,K)/G AJX4F405.7
IF (K.EQ.NLEV) THEN AJX0F404.284
ICCBPxCCA(I) = CCA(I,ICCB(I)) * AJX0F404.285
* (AK(ICCB(I)) + BK(ICCB(I)) * PSTAR(I)) AJX0F404.286
ICCTPxCCA(I) = CCA(I,ICCT(I)-1) * AJX0F404.287
* (AK(ICCT(I)) + BK(ICCT(I)) * PSTAR(I)) AJX0F404.288
ENDIF AJX0F404.289
ELSE AJX0F404.290
GBMCCW(I,K) = CCA_2D(I) * CCW(I,K) AJX0F404.291
IF (K.EQ.NLEV) THEN AJX0F404.292
GBMCCWP(I) = CCA_2D(I) * CCLWP(I) AJX0F404.293
ICCBPxCCA(I) = CCA_2D(I) * AJX0F404.294
* (AK(ICCB(I)) + BK(ICCB(I)) * PSTAR(I)) AJX0F404.295
ICCTPxCCA(I) = CCA_2D(I) * AJX0F404.296
* (AK(ICCT(I)) + BK(ICCT(I)) * PSTAR(I)) AJX0F404.297
END IF AJX0F404.298
ENDIF AJX0F404.299
ENDIF AJX1F402.262
250 CONTINUE CONVEC3A.2036
C CONVEC3A.2037
IF(L_TRACER)THEN CONVEC3A.2038
C CONVEC3A.2039
! AWO5F401.261
! BEFORE UPDATING THE TRACER FIELD, ADJUST THE TIMESTEP TO AWO5F401.262
! PREVENT ANY NEGATIVE VALUES INVADING THE TRACER FIELDS. AWO5F401.263
! NOTE THAT THE ADJUSTED TIMESTEP IS A FUNCTION OF GEOGRAPHICAL AWO5F401.264
! LOCATION AND THE PARTICULAR TRACER. AWO5F401.265
! AWO5F401.266
DO KTRA=1,NTRA AWO5F401.267
! AWO5F401.268
DO I=1,NPNTS AWO5F401.269
! AWO5F401.270
DO K=1,NLEV AWO5F401.271
! AWO5F401.272
STEP_TEST2(K) = DTRABYDT(I,K,KTRA) AWO5F401.273
STEP_TEST1(K) = ( 0.9999*ABS(TRACER(I,K,KTRA)) ) / AWO5F401.274
& ( ABS(STEP_TEST2(K)) + SAFETY_MARGIN ) AWO5F401.275
! AWO5F401.276
END DO ! END OF LEVEL (K) LOOP. AWO5F401.277
! AWO5F401.278
*IF DEF,CRAY,AND,-DEF,T3D GSS2F402.272
! Now use CRAY MINVAL function. Note: AWO5F401.280
! (a) It must be declared as an INTRINSIC function. AWO5F401.281
! (b) If there are no levels at which rate of change is negative AWO5F401.282
! (unlikely) MINVAL generates a huge number. The following AWO5F401.283
! statement then replaces that by the base value of the tstep. AWO5F401.284
! AWO5F401.285
LIMITED_STEP(I) = MINVAL(STEP_TEST1,1,STEP_TEST2.LT.0.0) AWO5F401.286
IF (LIMITED_STEP(I) .GT. TIMESTEP) THEN AWO5F401.287
LIMITED_STEP(I) = TIMESTEP AWO5F401.288
ENDIF AWO5F401.289
! AWO5F401.290
*ELSE AWO5F401.291
! AWO5F401.292
! The following fragment of code provides a standard Fortran AWO5F401.293
! alternative to the use of the Cray MINVAL function. AWO5F401.294
! AWO5F401.295
LIMITED_STEP(I) = TIMESTEP AWO5F401.296
DO K = 1,NLEV AWO5F401.297
IF( STEP_TEST2(K) .LT. 0.0 ) THEN AWO5F401.298
IF ( STEP_TEST1(K) .LT. LIMITED_STEP(I) ) THEN AWO5F401.299
LIMITED_STEP(I) = STEP_TEST1(K) AWO5F401.300
ENDIF AWO5F401.301
ENDIF AWO5F401.302
END DO AWO5F401.303
! AWO5F401.304
! End of alternative to MINVAL. AWO5F401.305
! AWO5F401.306
*ENDIF AWO5F401.307
! AWO5F401.308
! Diagnose the factor by which the tstep has been multiplied AWO5F401.309
! AWO5F401.310
REDUCTION_FACTOR(I,KTRA) = LIMITED_STEP(I)/TIMESTEP AWO5F401.311
! AWO5F401.312
END DO ! END OF LOCATION (I) LOOP. AWO5F401.313
! AWO5F401.314
! Now update tracer field using LIMITED STEP. AWO5F401.315
! We can reverse order of I and K loop now. AWO5F401.316
! AWO5F401.317
DO K=1,NLEV AWO5F401.318
DO I=1,NPNTS AWO5F401.319
TRACER(I,K,KTRA) = TRACER(I,K,KTRA) + DTRABYDT(I,K,KTRA) AWO5F401.320
& * LIMITED_STEP(I) AWO5F401.321
END DO AWO5F401.322
END DO AWO5F401.323
! AWO5F401.324
END DO ! END OF LOOP OVER TRACER TYPES (KTRA). AWO5F401.325
! AWO5F401.326
C CONVEC3A.2048
END IF CONVEC3A.2049
C CONVEC3A.2050
END IF CONVEC3A.2051
C CONVEC3A.2052
RETURN CONVEC3A.2053
END CONVEC3A.2054
C CONVEC3A.2055
*ENDIF CONVEC3A.2056