*IF DEF,CONTROL,AND,DEF,ATMOS CONV_CT1.2
C ******************************COPYRIGHT****************************** GTS2F400.1351
C (c) CROWN COPYRIGHT 1995, METEOROLOGICAL OFFICE, All Rights Reserved. GTS2F400.1352
C GTS2F400.1353
C Use, duplication or disclosure of this code is subject to the GTS2F400.1354
C restrictions as set forth in the contract. GTS2F400.1355
C GTS2F400.1356
C Meteorological Office GTS2F400.1357
C London Road GTS2F400.1358
C BRACKNELL GTS2F400.1359
C Berkshire UK GTS2F400.1360
C RG12 2SZ GTS2F400.1361
C GTS2F400.1362
C If no contract has been raised with this copy of the code, the use, GTS2F400.1363
C duplication or disclosure of it is strictly prohibited. Permission GTS2F400.1364
C to do so must first be obtained in writing from the Head of Numerical GTS2F400.1365
C Modelling at the above address. GTS2F400.1366
C ******************************COPYRIGHT****************************** GTS2F400.1367
C GTS2F400.1368
CLL Subroutine CONV_CTL---------------------------------------------- CONV_CT1.3
CLL CONV_CT1.4
CLL Purpose: Calls CONVECT to calculate and add convection increments. RB300993.17
CLL CONVECT may be called less frequently than every timestep. In this RB300993.18
CLL case, on a 'convection timestep' (L_CONVECT=.TRUE.) increments and RB300993.19
CLL other diagnostics are saved in arrays in COMDECK TYPCNVI, and on RB300993.20
CLL 'non-convection timesteps' the saved values are retrieved and the RB300993.21
CLL increments added in this routine (instead of in CONVECT). RB300993.22
CLL CONV_CT1.6
CLL Level 2 control routine CONV_CT1.7
CLL version for CRAY YMP CONV_CT1.8
CLL CONV_CT1.9
CLL C.Wilson <- programmer of some or all of previous code or changes CONV_CT1.10
CLL CONV_CT1.11
CLL Model Modification history from model version 3.0: CONV_CT1.12
CLL version Date CONV_CT1.13
CLL 3.1 2/02/93 : added comdeck CHSUNITS to define NUNITS for i/o RS030293.153
CLL 3.2 13/07/93 Changed CHARACTER*(*) to CHARACTER*(80) for TS150793.38
CLL portability. Author Tracey Smith. TS150793.39
CLL 3.2 13/04/93 Dynamic allocation of main arrays. R.T.H.Barnes. @DYALLOC.792
CLL 3.2 8/07/93 : added convective cloud condensed water diagnostic PI080793.1
CLL : P Inness PI080793.2
CLL 3.3 24/11/93 : New code for total rain/snow/PPN rate diags. (TCJ) TJ241193.7
CLL 3.3 30/09/93 Option on frequency of convection scheme calls, RB300993.23
CLL 3.4 22/06/94 DEF EMCORR replaced by LOGICAL LEMCORR GSS1F304.750
CLL S.J.Swarbrick GSS1F304.751
CLL using COMDECKs ARGCNVI,TYPCNVI. R.T.H.Barnes. RB300993.24
CLL 3.4 11/03/94 Add lowest conv.cloud diagnostics. R.T.H.Barnes. ARN2F304.238
CLL ARN2F304.239
CLL 3.4 26/07/94 Created diagnostic for Total accumulations. ASW2F304.1
CLL S.A.Woltering. ASW2F304.2
CLL 3.4 03/06/94 : Added fluctuations of T1,Q1 from boundary layer ARN2F304.240
CLL : C Wilson ARN2F304.241
CLL 3.4 06/08/94: Code restructured to improve efficiency on C90 by AAD1F304.46
CLL enabling parallel segmentation of calls to CONVECT. AAD1F304.47
CLL Authors: A.Dickinson, D.Salmond, Reviewer: R.Barnes AAD1F304.48
CLL 3.5 28/03/95: Sub-model changes : Remove run time constants ADR1F305.64
CLL from Atmos Dump headers. D. Robinson ADR1F305.65
! 3.5 9/5/95 MPP code: Change updateable area P.Burton APB1F305.264
CLL 3.5 05/06/95 Chgs to SI & STINDEX arrays. RTHBarnes GRB4F305.71
CLL 4.0 21/04/95: Correction to convective cloud on model layers API1F400.1
CLL diagnostic. Pete Inness. API1F400.2
CLL 4.0 05/05/95 Added atmospheric tracers for tracer transports API2F400.257
CLL in convection. API2F400.258
CLL Added U and V for momentum transport by convection API2F400.259
CLL including interpolation onto p-grid for increment API2F400.260
CLL calculations. Arrays for convective momentum API2F400.261
CLL transports dimensioned by len_mom to minimise API2F400.262
CLL memory usage if CMT not required. API2F400.263
CLL Convective momentum transports will only function API2F400.264
CLL if convection is called every timestep. API2F400.265
CLL Added CAPE diagnostic API2F400.266
CLL CALL to CONVECT now made through glue routine API2F400.267
CLL GLUE_CONV API2F400.268
CLL Pete Inness. API2F400.269
CLL 4.1 13/05/96 Add creation of total tracer array (free + sulphur AWO5F401.31
CLL cycle tracers) for passing to tracer transport AWO5F401.32
CLL routine CONVECT. AWO5F401.33
CLL Call SCONSCV to wet scavenge Sulphur Cycle tracers AWO5F401.34
CLL M Woodage AWO5F401.35
CLL 4.1 10/6/96 : changed dimensions of momentum arrays and API4F401.4
CLL added pointers in call to glue routines in API4F401.5
CLL order to allow convection to be split into API4F401.6
CLL segments when using momentum transports. API4F401.7
CLL Pete Inness API4F401.8
CLL 4.1 23/5/96 References to A_REALHD(30) replaced by correct API3F401.1
CLL variable SECS_PER_STEPim(atmos_im) in momentum API3F401.2
CLL transport calculations. API3F401.3
CLL Pete Inness API3F401.4
! 4.1 23/05/96 MPP Changes. D. Robinson. APBDF401.2
CLL 4.2 26/9/96 Addition of four new diagnostics:- (i) Gridbox AJX1F402.1
CLL mean conv. cld water, (ii) Gidbox mean conv. cld AJX1F402.2
CLL water path, (iii) conv. cld base pressure times AJX1F402.3
CLL CCA and (iv) conv. cld top pressure times CCA. AJX1F402.4
CLL J.M.Cairns AJX1F402.5
!LL 4.3 10/02/97 Added PPX arguments to COPY_DIAG P.Burton GPB1F403.555
!LL 4.3 12/02/97 Added PPX arguments to EXTDIAG P.Burton GPB1F403.556
!LL 4.3 22/01/97 MPP Changes for Convective Momentum Transport. ADR5F403.1
!LL D. Robinson. ADR5F403.2
!LL 4.4 05/07/97 FLUX_DIAG args changed. S.D.Mullerworth GSM3F404.33
!LL 4.4 03/07/97 Zero CAPE array so no NaNs are output to STASH GPB1F404.174
!LL P.Burton GPB1F404.175
! 4.4 30/09/97 Change calls to SCONSCV for S Cycle vars to pass AWO1F404.90
! in logical for below cloud scavenging, and CCA. AWO1F404.91
! Prevent unnecessary calls to SCONSCV. AWO1F404.92
! (M Woodage) AWO1F404.93
!LL 4.4 26/09/97 Provision for 3D convective cloud amount (on model AJX0F404.98
!LL levels). 3D if L_3D_CCA=.T. else 2D. J.M.Gregory AJX0F404.99
!LL 4.4 Oct 97 Add halo mask to stop redundant calculations AAD2F404.45
!LL Alan Dickinson AAD2F404.46
!LL 4.5 06/01/98 Added code to call load balancing routine for T3E APB1F405.1
!LL P.Burton APB1F405.2
CLL 4.5 Jul. 98 Kill the IBM specific lines (JCThil) AJC1F405.35
!LL 4.5 19/05/98 Allow 3A or 3B physics to be chosen with optimised AJX1F405.6
!LL version of convection (3C). Julie Gregory AJX1F405.7
!LL 4.5 19/03/98 Add NH3, 3 soot vars and interactive CO2 to AJX1F405.8
!LL TOT_TRACERS array for passing to tracer transport AJX1F405.9
!LL routine in CONVECT. M Woodage AJX1F405.10
!LL Call SCONSCV to wet scavenge NH3 (for S Cycle). AJX1F405.11
!LL Add diagnostics for wet scavenging as fluxes per AJX1F405.12
!LL sec for S Cycle variables. M Woodage AJX1F405.13
!LL 4.5 12/03/98 Aged soot declared and passed to SCONSCV for AJX1F405.14
!LL scavenging. Units of scavenged soot converted to AJX1F405.15
!LL SI before writing to STASH. Luke Robinson. AJX1F405.16
!LL 4.5 01/05/98 Restrict murk aerosol calculations to aerosol APC0F405.768
!LL levels=boundary levels. P.Clark APC0F405.769
!LL 4.5 05/05/98 Add Fujitsu vectorization directives. GRB0F405.164
!LL RBarnes@ecmwf.int GRB0F405.165
CLL CONV_CT1.14
CLL Programming standard: CONV_CT1.15
CLL CONV_CT1.16
CLL system components covered : P1 CONV_CT1.17
CLL CONV_CT1.18
CLL system task : P0 CONV_CT1.19
CLL CONV_CT1.20
CLL Documentation: Unified Model documentation paper No P0 CONV_CT1.21
CLL version number 11 dated (26/11/90) CONV_CT1.22
CLLEND ----------------------------------------------------------------- CONV_CT1.23
C*L Arguments CONV_CT1.24
CONV_CT1.25
SUBROUTINE CONV_CTL(DTHETA_DT,CONV_RAIN,CONV_SNOW, 1,62CONV_CT1.26
& LS_RAIN,LS_SNOW, TJ241193.8
& T1_SD,Q1_SD,P_FIELDDA,P_LEVELSDA,Q_LEVELSDA,len_mom, API2F400.270
& TRAY_LEN, AWO5F401.36
& MPARWTR,ANVIL_FACTOR,TOWER_FACTOR,UD_FACTOR, AJX3F405.133
& INT5, API2F400.271
*CALL ARGSIZE
@DYALLOC.795
*CALL ARGD1
@DYALLOC.796
*CALL ARGDUMA
@DYALLOC.797
*CALL ARGDUMO
@DYALLOC.798
*CALL ARGDUMW
GKR1F401.197
*CALL ARGSTS
@DYALLOC.799
*CALL ARGPTRA
@DYALLOC.800
*CALL ARGPTRO
@DYALLOC.801
*CALL ARGCONA
@DYALLOC.802
*CALL ARGCNVI
RB300993.25
*CALL ARGPPX
GKR0F305.919
*CALL ARGFLDPT
APBDF401.3
& ICODE,CMESSAGE) @DYALLOC.803
CONV_CT1.28
IMPLICIT NONE CONV_CT1.29
CONV_CT1.30
*CALL CMAXSIZE
@DYALLOC.804
*CALL CSUBMODL
GSS1F305.923
*CALL TYPSIZE
@DYALLOC.805
*CALL TYPD1
@DYALLOC.806
*CALL TYPDUMA
@DYALLOC.807
*CALL TYPDUMO
@DYALLOC.808
*CALL TYPDUMW
GKR1F401.198
*CALL TYPSTS
@DYALLOC.809
*CALL TYPPTRA
@DYALLOC.810
*CALL TYPPTRO
@DYALLOC.811
*CALL TYPCONA
@DYALLOC.812
*CALL TYPCNVI
RB300993.26
*CALL PPXLOOK
GKR0F305.920
*CALL TYPFLDPT
APBDF401.4
@DYALLOC.813
INTEGER CONV_CT1.31
& INT5, ! Dummy variable replacing STASH_MAXLEN(5) CONV_CT1.32
& ICODE, ! Return code : 0 Normal Exit CONV_CT1.33
C ! : >0 Error CONV_CT1.34
& P_FIELDDA, ! IN: Extra copy of P_FIELD for dynamic alloc @DYALLOC.816
& P_LEVELSDA, ! and P_LEVELS @DYALLOC.817
& Q_LEVELSDA ! and Q_LEVELS @DYALLOC.818
& ,len_mom ! dimension for convective momentum API2F400.272
C ! transport arrays. API2F400.273
INTEGER TRAY_LEN ! dimension for total tracer array TOT_TRACERS AWO5F401.37
CONV_CT1.37
REAL CONV_CT1.38
& DTHETA_DT(P_FIELDDA,Q_LEVELSDA), @DYALLOC.819
& LS_RAIN(P_FIELD), ! IN - LS rainfall rate from LSPP_CTL TJ241193.9
& LS_SNOW(P_FIELD), ! IN - LS snowfall rate from LSPP_CTL TJ241193.10
& CONV_RAIN(P_FIELDDA), @DYALLOC.820
& CONV_SNOW(P_FIELDDA) @DYALLOC.821
& ,T1_SD(P_FIELDDA) !fluctuations in T level 1 from b.layer ARN2F304.243
& ,Q1_SD(P_FIELDDA) !fluctuations in Q level 1 from B.layer ARN2F304.244
& ,MPARWTR ! IN Reservoir of convective cloud water left AJX0F404.101
! ! in a layer after conv. precip. AJX0F404.102
& ,ANVIL_FACTOR! IN Needed for calculation of cloud amount on AJX0F404.103
& ,TOWER_FACTOR! model levels if L_3D_CCA = .T. AJX0F404.104
& ,UD_FACTOR ! IN Used in calculation of water path seen by AJX3F405.134
! ! radiation of L_CCW is true. AJX3F405.135
CONV_CT1.42
CHARACTER*80 TS150793.40
& CMESSAGE ! Error message if return code >0 CONV_CT1.44
ARN2F304.245
C Local storage ARN2F304.246
INTEGER ARN2F304.247
& LCBASE(P_FIELDDA), ! level of lowest conv.cloud base ARN2F304.248
& LCTOP(P_FIELDDA) ! level of lowest conv.cloud top ARN2F304.249
*IF DEF,MPP AAD2F404.47
LOGICAL l_halo(P_FIELDDA) ! Mask for halos AAD2F404.48
*ENDIF AAD2F404.49
REAL ARN2F304.250
& CCW(P_FIELDDA,Q_LEVELSDA), ! conv.condensed cloud water ARN2F304.251
& CCA2D(P_FIELDDA), ! conv cloud amt on single level to AJX0F404.105
! ! pass to SCONSCV routine. AJX0F404.106
& LCCA(P_FIELDDA), ! lowest conv.cloud cover fraction ARN2F304.252
& LCCLWP(P_FIELDDA), ! lowest conv.cloud liquid water path AJX1F402.6
& ICCBPxCCA(P_FIELDDA), ! P-lev. of conv. cld base x CCA AJX1F402.7
& ICCTPxCCA(P_FIELDDA), ! P-lev. of conv. cld top x CCA AJX1F402.8
& GBMCCWP(P_FIELDDA), ! gridbox mean CCWP AJX1F402.9
& GBMCCW(P_FIELDDA,Q_LEVELSDA) ! gridbox mean CCW AJX1F402.10
& ,CAPE(P_FIELDDA), ! CONVECTIVE AVAILABLE API2F400.274
C ! POTENTIAL ENERGY API2F400.275
& U_P(len_mom,Q_LEVELSDA), ! U FIELD INTERPOLATED API2F400.276
C ! ONTO P GRID MINUS API2F400.277
C ! THE POLAR ROWS. API2F400.278
& V_P(len_mom,Q_LEVELSDA), ! V FIELD INTERPOLATED API2F400.279
C ! ONTO P GRID MINUS API2F400.280
C ! THE POLAR ROWS. API2F400.281
& DU_DT(len_mom,Q_LEVELSDA), ! INCREMENTS TO U API2F400.282
C ! FIELD INTERPOLATED API2F400.283
C ! ONTO THE P GRID API2F400.284
& DV_DT(len_mom,Q_LEVELSDA), ! INCREMENTS TO V API2F400.285
C ! FIELD INTERPOLATED API2F400.286
C ! ONTO THE P GRID API2F400.287
& DUDT_U(len_mom), ! INCREMENTS TO U API2F400.288
C ! ON THE UV GRID API2F400.289
& DVDT_U(len_mom) ! INCREMENTS TO V API2F400.290
C ! ON THE UV GRID API2F400.291
REAL TOT_TRACERS(TRAY_LEN) ! Total tracer array AWO5F401.38
! ! (free + sulphur cycle) AWO5F401.39
REAL CONSCVGD_TRACER(P_FIELDDA) ! column total of scvnged tracer AWO5F401.40
! AWO5F401.41
! Call comdeck containing scavng coeffs KRAIN_,KSNOW_ for Sulphur Cycle AWO5F401.42
*CALL C_SULCON
AWO5F401.43
! Call comdeck containing scavenging coeffs KRAIN_ & KSNOW_ for soot AWO5F405.355
*CALL C_ST_CON
AWO5F405.356
! AWO5F405.357
CONV_CT1.45
*IF DEF,MPP APB1F305.265
! Parameters and Common blocks APB1F305.266
*CALL PARVARS
APB1F305.267
*ENDIF APB1F305.268
*CALL CHSUNITS
RS030293.154
*CALL CCONTROL
CONV_CT1.47
*CALL CHISTORY
GDR3F305.16
*CALL C_MDI
CONV_CT1.52
*CALL C_R_CP
CONV_CT1.53
*CALL C_LHEAT
GSS1F304.752
*CALL CTIME
ADR1F305.66
CONV_CT1.57
CL External subroutines called CONV_CT1.58
CONV_CT1.59
EXTERNAL CONV_CT1.60
& GLUE_CONV,COPYDIAG,COPYDIAG_3D,TIMER,STASH API2F400.292
& ,FLUX_DIAG GSS1F304.753
& ,SET_LEVELS_LIST,EXTDIAG,ICAO_HT CONV_CT1.65
& ,CON_SCAV APC3F304.30
& ,SCONSCV AWO5F401.44
CONV_CT1.66
CL Dynamically allocated area for stash processing CONV_CT1.67
CONV_CT1.68
REAL CONV_CT1.69
& STASHWORK(INT5) CONV_CT1.70
CONV_CT1.71
C Local variables CONV_CT1.72
CONV_CT1.73
INTEGER CONV_CT1.74
& I,J,K, API2F400.293
& ROWS, CONV_CT1.76
& JS,JS_LOCAL(MAX_NO_OF_SEGS), AAD1F304.49
& FIRST_POINT,FP_LOCAL(MAX_NO_OF_SEGS), AAD1F304.50
& FP_UV_LOCAL(MAX_NO_OF_SEGS), API4F401.9
& TOTAL_SEGS, APB1F405.3
& LAST_POINT, CONV_CT1.79
& STEP, CONV_CT1.80
& SEG_POINTS,SP_LOCAL(MAX_NO_OF_SEGS), AAD1F304.51
& LEVEL, CONV_CT1.82
& POINTS, API2F400.294
& NTRA_TMP, API2F400.295
& TRLEV_TMP, API2F400.296
& NU_FIELD,NP_FIELD API2F400.297
& ,IM_IDENT ! internal model identifier GRB4F305.72
& ,IM_INDEX ! internal model index for STASH arrays GRB4F305.73
*IF DEF,MPP,AND,DEF,T3E APB1F405.4
INTEGER APB1F405.5
& MAX_SIZE(2) ! 1 - maximum size of segment APB1F405.6
! ! 2 - maximum value of P_FIELD APB1F405.7
&, info ! GCOM return code APB1F405.8
*ENDIF APB1F405.9
CONV_CT1.84
LOGICAL CONV_CT1.85
& LIST(P_LEVELSDA), ! Levels list for diagnostics API2F400.298
& L_TRACER ! Switch for inclusion of tracers API2F400.299
CONV_CT1.87
REAL CONV_CT1.88
& PU,PL CONV_CT1.89
*CALL P_EXNERC
CONV_CT1.90
CONV_CT1.91
CL CONV_CT1.92
CL --- SECTION 5 --- CONVECTION ------------------------ CONV_CT1.93
CL CONV_CT1.94
CL 5.0 Initialisation CONV_CT1.95
GRB4F305.74
C Set up internal model identifier and STASH index GRB4F305.75
im_ident = atmos_im GRB4F305.76
im_index = internal_model_index(im_ident) GRB4F305.77
CONV_CT1.96
! Set up grid pointers APBDF401.5
FIRST_POINT = START_POINT_INC_HALO APBDF401.6
LAST_POINT = END_P_POINT_INC_HALO APBDF401.7
POINTS = LAST_POINT-FIRST_POINT+1 APBDF401.8
JS = FIRST_POINT-1 APBDF401.10
*IF DEF,MPP AAD2F404.50
DO i=1,ROW_LENGTH AAD2F404.51
l_halo(i)=.FALSE. AAD2F404.52
ENDDO AAD2F404.53
AAD2F404.54
DO i=1+LAST_POINT,P_FIELD AAD2F404.55
l_halo(i)=.FALSE. AAD2F404.56
ENDDO AAD2F404.57
AAD2F404.58
DO i=FIRST_POINT,LAST_POINT AAD2F404.59
l_halo(i)=.NOT. AAD2F404.60
& (MOD(i,ROW_LENGTH).EQ.1).or.(MOD(i,ROW_LENGTH).EQ.0) AAD2F404.61
ENDDO AAD2F404.62
AAD2F404.63
*ENDIF AAD2F404.64
APBDF401.11
CONV_CT1.102
C If a convection timestep, call convetion scheme. RB300993.27
C Save increments, unless called every timestep (A_CONV_STEP=1). RB300993.28
RB300993.29
IF (L_CONVECT) THEN RB300993.30
RB300993.31
C Initialise output arrays to zero. CONV_CT1.103
CONV_CT1.104
DO I=1,P_FIELD CONV_CT1.105
CONV_RAIN(I) = 0.0 CONV_CT1.106
CONV_SNOW(I) = 0.0 CONV_CT1.107
LCBASE(I) = 0 ARN2F304.254
LCTOP(I) = 0 ARN2F304.255
LCCA(I) = 0.0 ARN2F304.256
LCCLWP(I) = 0.0 ARN2F304.257
*IF DEF,MPP GPB1F404.176
CAPE(I)=0.0 GPB1F404.177
*ENDIF GPB1F404.178
END DO CONV_CT1.108
CONV_CT1.109
! API2F405.1
! INITIALIZE STASH ARRAY API2F405.2
! API2F405.3
DO I=1,INT5 API2F405.4
STASHWORK(I)=0.0 API2F405.5
END DO API2F405.6
C Interpolate U and V onto P-grid for convection calculations API2F400.302
C API2F400.303
IF(L_MOM)THEN API2F400.304
ADR5F403.3
NU_FIELD = LAST_U_VALID_PT-FIRST_VALID_PT+1 ADR5F403.4
NP_FIELD = NU_FIELD-ROW_LENGTH ADR5F403.5
ROWS = NU_FIELD/ROW_LENGTH ADR5F403.6
ADR5F403.7
DO K=1,Q_LEVELS ADR5F403.8
ADR5F403.9
! Interpolate u/v fields from U/V to P grid. ADR5F403.10
CALL UV_TO_P
(D1(JU(K)+FIRST_VALID_PT-1), ADR5F403.11
& U_P(FIRST_VALID_PT+ROW_LENGTH,K), ADR5F403.12
& NU_FIELD,NP_FIELD,ROW_LENGTH,ROWS) ADR5F403.13
ADR5F403.14
CALL UV_TO_P
(D1(JV(K)+FIRST_VALID_PT-1), ADR5F403.15
& V_P(FIRST_VALID_PT+ROW_LENGTH,K), ADR5F403.16
& NU_FIELD,NP_FIELD,ROW_LENGTH,ROWS) ADR5F403.17
ADR5F403.18
! Initialise rest of U_P/V_P. ADR5F403.19
DO I=1,FIRST_VALID_PT+ROW_LENGTH-1 ADR5F403.20
U_P(I,K) = 0.0 ADR5F403.21
V_P(I,K) = 0.0 ADR5F403.22
ENDDO ADR5F403.23
DO I=END_P_POINT_INC_HALO+1,LEN_MOM ADR5F403.24
U_P(I,K) = 0.0 ADR5F403.25
V_P(I,K) = 0.0 ADR5F403.26
ENDDO ADR5F403.27
ADR5F403.28
ENDDO ADR5F403.29
ADR5F403.30
END IF API2F400.314
CL 5.1 CALL CONVECT VIA GLUE ROUTINE FOR REQUIRED VERSION API2F400.315
C API2F400.316
C If no tracers are being updated set number of tracers and tracer API2F400.317
C levels to 1 to minimise storage requirements.(Arrays cannot be API2F400.318
C initialised with dimensions of zero.) API2F400.319
C API2F400.320
! AWO5F401.45
IF (L_SULPC_SO2 .OR. L_SOOT .OR. L_CO2_INTERACTIVE) THEN AWO5F405.55
! AWO5F405.56
L_TRACER = .TRUE. AWO5F405.57
TRLEV_TMP= P_LEVELS AWO5F405.58
! AWO5F405.59
NTRA_TMP = 0 !Initialise to zero AWO5F405.60
! AWO5F405.61
IF (L_SULPC_SO2) THEN AWO5F405.62
DO I = 1, P_FIELD*P_LEVELS AWO5F405.63
TOT_TRACERS( NTRA_TMP*P_FIELD*P_LEVELS + I ) = AWO5F405.64
& D1(JSO2(1)+I-1) AWO5F405.65
ENDDO AWO5F405.66
NTRA_TMP = NTRA_TMP + 1 AWO5F405.67
! AWO5F405.68
DO I = 1, P_FIELD*P_LEVELS AWO5F405.69
TOT_TRACERS( NTRA_TMP*P_FIELD*P_LEVELS + I ) = AWO5F405.70
& D1(JSO4_AITKEN(1)+I-1) AWO5F405.71
ENDDO AWO5F405.72
NTRA_TMP = NTRA_TMP + 1 AWO5F405.73
! AWO5F405.74
DO I = 1, P_FIELD*P_LEVELS AWO5F405.75
TOT_TRACERS( NTRA_TMP*P_FIELD*P_LEVELS + I ) = AWO5F405.76
& D1(JSO4_ACCU(1)+I-1) AWO5F405.77
ENDDO AWO5F405.78
NTRA_TMP = NTRA_TMP + 1 AWO5F405.79
! AWO5F405.80
DO I = 1, P_FIELD*P_LEVELS AWO5F405.81
TOT_TRACERS( NTRA_TMP*P_FIELD*P_LEVELS + I ) = AWO5F405.82
& D1(JSO4_DISS(1)+I-1) AWO5F405.83
ENDDO AWO5F405.84
NTRA_TMP = NTRA_TMP + 1 AWO5F405.85
! AWO5F405.86
IF (L_SULPC_DMS) THEN AWO5F405.87
DO I = 1, P_FIELD*P_LEVELS AWO5F405.88
TOT_TRACERS( NTRA_TMP*P_FIELD*P_LEVELS + I ) = AWO5F405.89
& D1(JDMS(1)+I-1) AWO5F405.90
ENDDO AWO5F405.91
NTRA_TMP = NTRA_TMP + 1 AWO5F405.92
ENDIF ! L_SULPC_DMS AWO5F405.93
! AWO5F405.94
IF (L_SULPC_NH3) THEN AWO5F405.95
DO I = 1, P_FIELD*P_LEVELS AWO5F405.96
TOT_TRACERS( NTRA_TMP*P_FIELD*P_LEVELS + I ) = AWO5F405.97
& D1(JNH3(1)+I-1) AWO5F405.98
ENDDO AWO5F405.99
NTRA_TMP = NTRA_TMP + 1 AWO5F405.100
ENDIF ! L_SULPC_NH3 AWO5F405.101
AWO5F405.102
ENDIF ! L_SULPC_SO2 AWO5F405.103
! AWO5F405.104
IF (L_SOOT) THEN AWO5F405.105
DO I = 1, P_FIELD*P_LEVELS AWO5F405.106
TOT_TRACERS( NTRA_TMP*P_FIELD*P_LEVELS + I ) = AWO5F405.107
& D1(JSOOT_NEW(1)+I-1) AWO5F405.108
ENDDO AWO5F405.109
NTRA_TMP = NTRA_TMP + 1 AWO5F405.110
! AWO5F405.111
DO I = 1, P_FIELD*P_LEVELS AWO5F405.112
TOT_TRACERS( NTRA_TMP*P_FIELD*P_LEVELS + I ) = AWO5F405.113
& D1(JSOOT_AGD(1)+I-1) AWO5F405.114
ENDDO AWO5F405.115
NTRA_TMP = NTRA_TMP + 1 AWO5F405.116
! AWO5F405.117
DO I = 1, P_FIELD*P_LEVELS AWO5F405.118
TOT_TRACERS( NTRA_TMP*P_FIELD*P_LEVELS + I ) = AWO5F405.119
& D1(JSOOT_CLD(1)+I-1) AWO5F405.120
ENDDO AWO5F405.121
NTRA_TMP = NTRA_TMP + 1 AWO5F405.122
! AWO5F405.123
ENDIF ! L_SOOT AWO5F405.124
! AWO5F405.125
IF (L_CO2_INTERACTIVE) THEN AWO5F405.126
DO I = 1, P_FIELD*P_LEVELS AWO5F405.127
TOT_TRACERS( NTRA_TMP*P_FIELD*P_LEVELS + I ) = AWO5F405.128
& D1(JCO2(1)+I-1) AWO5F405.129
ENDDO AWO5F405.130
NTRA_TMP = NTRA_TMP + 1 AWO5F405.131
! AWO5F405.132
ENDIF ! L_CO2_INTERACTIVE AWO5F405.133
! AWO5F405.134
IF (TR_VARS .GE. 1) THEN AWO5F405.135
DO I = 1, P_FIELD*TR_LEVELS*TR_VARS AWO5F405.136
TOT_TRACERS( NTRA_TMP*P_FIELD*P_LEVELS + I ) = AWO5F405.137
& D1(JTRACER(1,1)+I-1) AWO5F405.138
ENDDO AWO5F405.139
NTRA_TMP = NTRA_TMP + TR_VARS AWO5F405.140
ENDIF ! TR_VARS AWO5F405.141
! AWO5F405.142
! AWO5F401.58
ELSE ! no S Cycle, soot or CO2 vars AWO5F405.143
! AWO5F401.94
IF (TR_VARS.GE.1) THEN AWO5F401.95
L_TRACER=.TRUE. AWO5F405.144
NTRA_TMP=TR_VARS AWO5F405.145
TRLEV_TMP=TR_LEVELS AWO5F405.146
DO I=1,P_FIELD*TR_LEVELS*TR_VARS AWO5F401.96
TOT_TRACERS(I)=D1(JTRACER(1,1)+I-1) AWO5F401.97
END DO AWO5F401.98
ELSE ! If no tracers, then set TOT_TRACERS array to zero AWO5F401.99
! Set all these variables to "null" values when sulphur/soot/CO2 cycle AWO5F405.147
! not present: AWO5F405.148
L_TRACER=.FALSE. AWO5F405.149
NTRA_TMP=1 AWO5F405.150
TRLEV_TMP=1 AWO5F405.151
DO I=1,P_FIELD AWO5F401.100
TOT_TRACERS(I) = 0.0 AWO5F401.101
END DO AWO5F401.102
END IF AWO5F401.103
! AWO5F401.104
END IF ! end L_SULPC_SO2, L_SOOT, L_CO2_INTERACTIVE AWO5F405.152
! AWO5F401.106
C API2F400.330
CONV_CT1.111
TOTAL_SEGS=NCPU*A_CONVECT_SEGMENTS APB1F405.10
STEP=POINTS/TOTAL_SEGS APB1F405.11
CONV_CT1.118
IF(LTIMER) THEN CONV_CT1.119
CALL TIMER
('CONVECT ',3) CONV_CT1.120
END IF CONV_CT1.121
CONV_CT1.122
*IF DEF,MPP,AND,DEF,T3E APB1F405.12
MAX_SIZE(1)=0 APB1F405.13
*ENDIF APB1F405.14
DO I = 1,TOTAL_SEGS APB1F405.15
SEG_POINTS = STEP AAD1F304.54
IF (I.EQ.TOTAL_SEGS) THEN APB1F405.16
SEG_POINTS = POINTS-STEP*(TOTAL_SEGS-1) APB1F405.17
END IF AAD1F304.57
*IF DEF,MPP,AND,DEF,T3E APB1F405.18
MAX_SIZE(1)=MAX(MAX_SIZE(1),SEG_POINTS) APB1F405.19
*ENDIF APB1F405.20
FP_LOCAL(I) = FIRST_POINT AAD1F304.58
IF(L_MOM)THEN API4F401.12
FP_UV_LOCAL(I) = FIRST_POINT ADR5F403.31
ELSE API4F401.14
FP_UV_LOCAL(I) = 1 API4F401.15
END IF API4F401.16
JS_LOCAL(I) = JS AAD1F304.59
SP_LOCAL(I) = SEG_POINTS AAD1F304.60
FIRST_POINT = FIRST_POINT+STEP AAD1F304.61
JS = JS+STEP AAD1F304.62
ENDDO AAD1F304.63
*IF DEF,MPP,AND,DEF,T3E APB1F405.21
APB1F405.22
MAX_SIZE(2)=P_FIELD APB1F405.23
APB1F405.24
! Find the maximum segment size and P_FIELD over all processors. APB1F405.25
! This will be used to dimension the local arrays we APB1F405.26
! copy other processor's data into. APB1F405.27
APB1F405.28
CALL GC_IMAX(
2,nproc,info,MAX_SIZE) APB1F405.29
APB1F405.30
! And call the routine that will redistribute the data and call APB1F405.31
! the convection APB1F405.32
APB1F405.33
CALL T3E_LOAD_BAL_CONV
( APB1F405.34
! Segment information APB1F405.35
& TOTAL_SEGS,MAX_SIZE(1),MAX_SIZE(2), APB1F405.36
& FP_LOCAL,SP_LOCAL, APB1F405.37
! Size and control parameters APB1F405.38
& P_FIELD,Q_LEVELS,BL_LEVELS, APB1F405.39
! Primary data APB1F405.40
& D1(JTHETA(1)),D1(JQ(1)),D1(JPSTAR),D1(JLAND), APB1F405.41
& U_P,V_P,TOT_TRACERS, APB1F405.42
! Output data APB1F405.43
& DTHETA_DT,STASHWORK(SI(204,5,im_index)), APB1F405.44
& DU_DT,DV_DT,CONV_RAIN,CONV_SNOW, APB1F405.45
! JCC? pointers are for convective cloud amount, base, top & APB1F405.46
! liquid water path respectively. APB1F405.47
& D1(JCCA(1)),ID1(JCCB),ID1(JCCT),D1(JCCLWP), APB1F405.48
& CCW,ICCBPxCCA,ICCTPxCCA,GBMCCWP,GBMCCW, APB1F405.49
& LCBASE,LCTOP,LCCA,LCCLWP,CAPE, APB1F405.50
! other data input APB1F405.51
& D1(JP_EXNER(1)), APB1F405.52
& A_LEVDEPC(JAK),A_LEVDEPC(JBK),AKH,BKH, APB1F405.53
& A_LEVDEPC(JDELTA_AK),A_LEVDEPC(JDELTA_BK), APB1F405.54
& SECS_PER_STEPim(atmos_im), APB1F405.55
& T1_SD,Q1_SD, APB1F405.56
& L_MOM,L_TRACER,L_CAPE,NTRA_TMP,TRLEV_TMP,L_XSCOMP,L_SDXS, APB1F405.57
& l_halo, APB1F405.58
& N_CCA_LEV,L_3D_CCA,L_CCW,MPARWTR,ANVIL_FACTOR,TOWER_FACTOR, APB1F405.59
& UD_FACTOR, APB1F405.60
& L_CLOUD_DEEP,L_PHASE_LIM, APB1F405.61
& STASHWORK(SI(250,5,IM_INDEX)),SF(250,5), APB1F405.62
& STASHWORK(SI(251,5,IM_INDEX)),SF(251,5), APB1F405.63
& STASHWORK(SI(252,5,IM_INDEX)),SF(252,5), APB1F405.64
& STASHWORK(SI(253,5,IM_INDEX)),SF(253,5), APB1F405.65
& STASHWORK(SI(254,5,IM_INDEX)),SF(254,5), APB1F405.66
& STASHWORK(SI(255,5,IM_INDEX)),SF(255,5) APB1F405.67
& ) APB1F405.68
APB1F405.69
*ELSE APB1F405.70
*IF DEF,MACRO AAD1F304.64
CFPP$ CNCALL AAD1F304.65
*ENDIF AAD1F304.66
DO I = 1,TOTAL_SEGS APB1F405.71
CALL GLUE_CONV
( API2F400.331
C size and control parameters CONV_CT1.125
& P_FIELD,SP_LOCAL(I),Q_LEVELS,BL_LEVELS, API2F400.332
C primary data CONV_CT1.127
& D1(JTHETA(1)+JS_LOCAL(I)),D1(JQ(1)+JS_LOCAL(I)), AAD1F304.69
& D1(JPSTAR+JS_LOCAL(I)),D1(JLAND+JS_LOCAL(I)), AAD1F304.70
& U_P(FP_UV_LOCAL(I),1),V_P(FP_UV_LOCAL(I),1), API4F401.17
& TOT_TRACERS(FP_LOCAL(I)), AWO5F401.107
C output data CONV_CT1.130
& DTHETA_DT(FP_LOCAL(I),1), AAD1F304.71
& STASHWORK(SI(204,5,im_index)+JS_LOCAL(I)), GRB4F305.78
& DU_DT(FP_UV_LOCAL(I),1),DV_DT(FP_UV_LOCAL(I),1), API4F401.18
& CONV_RAIN(FP_LOCAL(I)),CONV_SNOW(FP_LOCAL(I)), AAD1F304.73
& D1(JCCA(1)+JS_LOCAL(I)),ID1(JCCB+JS_LOCAL(I)), AJX0F404.107
& ID1(JCCT+JS_LOCAL(I)),D1(JCCLWP+JS_LOCAL(I)), AAD1F304.75
C JCC. pointers are for conv.cloud amount, base, top & liquid water path RB300993.34
C respectively. N.B. ID1 is same as D1 array but for integer values. RB300993.35
& CCW(FP_LOCAL(I),1), AJX1F402.11
& ICCBPxCCA(FP_LOCAL(I)),ICCTPxCCA(FP_LOCAL(I)), AJX1F402.12
& GBMCCWP(FP_LOCAL(I)),GBMCCW(FP_LOCAL(I),1), AJX1F402.13
& LCBASE(FP_LOCAL(I)),LCTOP(FP_LOCAL(I)), AJX1F402.14
& LCCA(FP_LOCAL(I)),LCCLWP(FP_LOCAL(I)), ARN2F304.260
& CAPE(FP_LOCAL(I)), API2F400.336
C other data input CONV_CT1.136
& D1(JP_EXNER(1)+JS_LOCAL(I)), AAD1F304.76
& A_LEVDEPC(JAK),A_LEVDEPC(JBK),AKH,BKH, CONV_CT1.138
& A_LEVDEPC(JDELTA_AK), CONV_CT1.139
& A_LEVDEPC(JDELTA_BK),SECS_PER_STEPim(atmos_im) ADR1F305.67
& ,T1_SD(FP_LOCAL(I)),Q1_SD(FP_LOCAL(I)) ARN2F304.258
& ,L_MOM,L_TRACER,L_CAPE,NTRA_TMP,TRLEV_TMP,L_XSCOMP ARN2F403.1
& ,L_SDXS ARN2F403.2
*IF DEF,MPP AAD2F404.65
& ,l_halo(FP_LOCAL(I)) AAD2F404.66
*ENDIF AAD2F404.67
& ,N_CCA_LEV, L_3D_CCA, L_CCW, MPARWTR AJX0F404.108
& ,ANVIL_FACTOR,TOWER_FACTOR,UD_FACTOR AJX3F405.136
& ,L_CLOUD_DEEP,L_PHASE_LIM AJX3F405.137
& ,STASHWORK(SI(250,5,IM_INDEX)+JS_LOCAL(I)),SF(250,5) AJX3F405.138
& ,STASHWORK(SI(251,5,IM_INDEX)+JS_LOCAL(I)),SF(251,5) AJX3F405.139
& ,STASHWORK(SI(252,5,IM_INDEX)+JS_LOCAL(I)),SF(252,5) AJX3F405.140
& ,STASHWORK(SI(253,5,IM_INDEX)+JS_LOCAL(I)),SF(253,5) AJX3F405.141
& ,STASHWORK(SI(254,5,IM_INDEX)+JS_LOCAL(I)),SF(254,5) AJX3F405.142
& ,STASHWORK(SI(255,5,IM_INDEX)+JS_LOCAL(I)),SF(255,5) AJX3F405.143
& ) CONV_CT1.148
END DO AAD1F304.77
*ENDIF APB1F405.72
IF(LTIMER) THEN CONV_CT1.151
CALL TIMER
('CONVECT ',4) CONV_CT1.152
END IF CONV_CT1.153
CONV_CT1.154
API2F400.338
C Put increments to u and v due to convection back on API2F400.339
C the UV grid and add them to the u and v fields. API2F400.340
C API2F400.341
IF(L_MOM)THEN API2F400.342
ADR5F403.32
! Reinitialise local variables. ADR5F403.33
FIRST_POINT = START_POINT_NO_HALO ADR5F403.34
LAST_POINT = END_U_POINT_NO_HALO ADR5F403.35
NU_FIELD = LAST_POINT-FIRST_POINT+1 ADR5F403.36
NP_FIELD = NU_FIELD+ROW_LENGTH ADR5F403.37
ROWS = NP_FIELD/ROW_LENGTH ADR5F403.38
ADR5F403.39
*IF DEF,MPP ADR5F403.40
AAD2F404.68
CALL SWAPBOUNDS
(DU_DT,ROW_LENGTH,tot_P_ROWS, AAD2F404.69
& EW_Halo,NS_Halo,Q_LEVELS) AAD2F404.70
CALL SWAPBOUNDS
(DV_DT,ROW_LENGTH,tot_P_ROWS, AAD2F404.71
& EW_Halo,NS_Halo,Q_LEVELS) AAD2F404.72
*ENDIF ADR5F403.46
ADR5F403.47
DO K=1,Q_LEVELS ADR5F403.48
ADR5F403.49
! Interpolate u/v increments from P to U/V grid. ADR5F403.50
CALL P_TO_UV
(DU_DT(FIRST_POINT,K),DUDT_U(FIRST_POINT), ADR5F403.51
& NP_FIELD,NU_FIELD,ROW_LENGTH,ROWS) ADR5F403.52
ADR5F403.53
CALL P_TO_UV
(DV_DT(FIRST_POINT,K),DVDT_U(FIRST_POINT), ADR5F403.54
& NP_FIELD,NU_FIELD,ROW_LENGTH,ROWS) ADR5F403.55
ADR5F403.56
! Add u/v increments to u/v fields. ADR5F403.57
! Fujitsu vectorization directive GRB0F405.166
!OCL NOVREC GRB0F405.167
DO I=FIRST_POINT,LAST_POINT ADR5F403.58
D1(JU(K)+I-1) = D1(JU(K)+I-1) ADR5F403.59
& + DUDT_U(I)*SECS_PER_STEPim(atmos_im) ADR5F403.60
D1(JV(K)+I-1) = D1(JV(K)+I-1) ADR5F403.61
& + DVDT_U(I)*SECS_PER_STEPim(atmos_im) ADR5F403.62
ENDDO ADR5F403.63
ADR5F403.64
ENDDO ADR5F403.65
ADR5F403.66
*IF DEF,MPP ADR5F403.67
! Update haloes for u/v fields. ADR5F403.68
CALL SWAPBOUNDS
(D1(JU(1)),ROW_LENGTH,tot_U_ROWS, ADR5F403.69
& EW_Halo,NS_Halo,Q_LEVELS) ADR5F403.70
CALL SWAPBOUNDS
(D1(JV(1)),ROW_LENGTH,tot_U_ROWS, ADR5F403.71
& EW_Halo,NS_Halo,Q_LEVELS) ADR5F403.72
*ENDIF ADR5F403.73
ADR5F403.74
END IF API2F400.358
! AWO5F401.108
! If free, CO2, soot S Cycle tracers present, put TOT_TRACERS values AWO5F405.153
! back into D1 locations AWO5F405.154
! AWO5F405.155
IF (L_TRACER) THEN AWO5F405.156
! AWO5F405.157
NTRA_TMP = 0 !Reset to zero AWO5F405.158
! AWO5F405.159
IF (L_SULPC_SO2) THEN AWO5F405.160
DO I = 1, P_FIELD*P_LEVELS AWO5F405.161
D1(JSO2(1)+I-1) = AWO5F405.162
& TOT_TRACERS( NTRA_TMP*P_FIELD*P_LEVELS + I ) AWO5F405.163
ENDDO AWO5F405.164
NTRA_TMP = NTRA_TMP + 1 AWO5F405.165
! AWO5F405.166
DO I = 1, P_FIELD*P_LEVELS AWO5F405.167
D1(JSO4_AITKEN(1)+I-1) = AWO5F405.168
& TOT_TRACERS( NTRA_TMP*P_FIELD*P_LEVELS + I ) AWO5F405.169
ENDDO AWO5F405.170
NTRA_TMP = NTRA_TMP + 1 AWO5F405.171
! AWO5F405.172
DO I = 1, P_FIELD*P_LEVELS AWO5F405.173
D1(JSO4_ACCU(1)+I-1) = AWO5F405.174
& TOT_TRACERS( NTRA_TMP*P_FIELD*P_LEVELS + I ) AWO5F405.175
ENDDO AWO5F405.176
NTRA_TMP = NTRA_TMP + 1 AWO5F405.177
! AWO5F405.178
DO I = 1, P_FIELD*P_LEVELS AWO5F405.179
D1(JSO4_DISS(1)+I-1) = AWO5F405.180
& TOT_TRACERS( NTRA_TMP*P_FIELD*P_LEVELS + I ) AWO5F405.181
ENDDO AWO5F405.182
NTRA_TMP = NTRA_TMP + 1 AWO5F405.183
! AWO5F405.184
IF (L_SULPC_DMS) THEN AWO5F405.185
DO I = 1, P_FIELD*P_LEVELS AWO5F405.186
D1(JDMS(1)+I-1) = AWO5F405.187
& TOT_TRACERS( NTRA_TMP*P_FIELD*P_LEVELS + I ) AWO5F405.188
ENDDO AWO5F405.189
NTRA_TMP = NTRA_TMP + 1 AWO5F405.190
ENDIF ! L_SULPC_DMS AWO5F405.191
! AWO5F405.192
IF (L_SULPC_NH3) THEN AWO5F405.193
DO I = 1, P_FIELD*P_LEVELS AWO5F405.194
D1(JNH3(1)+I-1) = AWO5F405.195
& TOT_TRACERS( NTRA_TMP*P_FIELD*P_LEVELS + I ) AWO5F405.196
ENDDO AWO5F405.197
NTRA_TMP = NTRA_TMP + 1 AWO5F405.198
ENDIF ! L_SULPC_NH3 AWO5F405.199
! AWO5F405.200
ENDIF ! L_SULPC_SO2 AWO5F405.201
! AWO5F405.202
IF (L_SOOT) THEN AWO5F405.203
DO I = 1, P_FIELD*P_LEVELS AWO5F405.204
D1(JSOOT_NEW(1)+I-1) = AWO5F405.205
& TOT_TRACERS( NTRA_TMP*P_FIELD*P_LEVELS + I ) AWO5F405.206
ENDDO AWO5F405.207
NTRA_TMP = NTRA_TMP + 1 AWO5F405.208
! AWO5F405.209
DO I = 1, P_FIELD*P_LEVELS AWO5F405.210
D1(JSOOT_AGD(1)+I-1) = AWO5F405.211
& TOT_TRACERS( NTRA_TMP*P_FIELD*P_LEVELS + I ) AWO5F405.212
ENDDO AWO5F405.213
NTRA_TMP = NTRA_TMP + 1 AWO5F405.214
! AWO5F405.215
DO I = 1, P_FIELD*P_LEVELS AWO5F405.216
D1(JSOOT_CLD(1)+I-1) = AWO5F405.217
& TOT_TRACERS( NTRA_TMP*P_FIELD*P_LEVELS + I ) AWO5F405.218
ENDDO AWO5F405.219
NTRA_TMP = NTRA_TMP + 1 AWO5F405.220
! AWO5F405.221
ENDIF ! L_SOOT AWO5F405.222
! AWO5F405.223
IF (L_CO2_INTERACTIVE) THEN AWO5F405.224
DO I = 1, P_FIELD*P_LEVELS AWO5F405.225
D1(JCO2(1)+I-1) = AWO5F405.226
& TOT_TRACERS( NTRA_TMP*P_FIELD*P_LEVELS + I ) AWO5F405.227
ENDDO AWO5F405.228
NTRA_TMP = NTRA_TMP + 1 AWO5F405.229
ENDIF ! L_CO2_INTERACTIVE AWO5F405.230
! AWO5F405.231
IF (TR_VARS .GE. 1) THEN AWO5F405.232
DO I = 1, P_FIELD*TR_LEVELS*TR_VARS AWO5F405.233
D1(JTRACER(1,1)+I-1) = AWO5F405.234
& TOT_TRACERS( NTRA_TMP*P_FIELD*P_LEVELS + I ) AWO5F405.235
ENDDO AWO5F405.236
NTRA_TMP = NTRA_TMP + TR_VARS AWO5F405.237
ENDIF ! TR_VARS AWO5F405.238
AWO5F405.239
ENDIF ! End L_TRACER AWO5F405.240
! AWO5F405.241
C Reinitialise local variables. RB300993.36
RB300993.37
FIRST_POINT = START_POINT_INC_HALO APBDF401.12
LAST_POINT = END_P_POINT_INC_HALO APBDF401.13
POINTS = LAST_POINT-FIRST_POINT+1 APBDF401.14
ROWS = POINTS/ROW_LENGTH APBDF401.15
RB300993.38
IF (A_CONV_STEP.GT.1) THEN ! If convection not called every RB300993.39
C timestep, save increments & other output fields when it is called. RB300993.40
RB300993.41
DO J = 1,Q_LEVELS RB300993.42
DO I = 1,P_FIELD RB300993.43
C save convective increments to temperature and mixing ratio RB300993.44
CNVINCS(I,J,1) = DTHETA_DT(I,J) RB300993.45
CNVINCS(I,J,2) = GRB4F305.79
& STASHWORK(SI(204,5,im_index)+I-1+(J-1)*P_FIELD) GRB4F305.80
C save convective cloud water RB300993.47
CNV_CCW(I,J) = CCW(I,J) RB300993.48
END DO RB300993.49
END DO RB300993.50
DO I = 1,P_FIELD RB300993.51
CNV_RAIN(I) = CONV_RAIN(I) RB300993.52
CNV_SNOW(I) = CONV_SNOW(I) RB300993.53
CNV_LB(I) = LCBASE(I) ARN2F304.262
CNV_LT(I) = LCTOP(I) ARN2F304.263
CNV_LA(I) = LCCA(I) ARN2F304.264
CNV_LP(I) = LCCLWP(I) ARN2F304.265
END DO RB300993.54
END IF RB300993.55
RB300993.56
C If not a convection timestep, copy saved fields into proper arrays RB300993.57
C and add increments to TH & Q as in subroutine CONVECT RB300993.58
RB300993.59
ELSE ! L_CONVECT RB300993.60
RB300993.61
C Copy saved fields into proper arrays. RB300993.62
RB300993.63
DO J = 1,Q_LEVELS RB300993.64
DO I = 1,P_FIELD RB300993.65
C convective increments to temperature and mixing ratio RB300993.66
DTHETA_DT(I,J) = CNVINCS(I,J,1) RB300993.67
STASHWORK(SI(204,5,im_index)+I-1+(J-1)*P_FIELD) = GRB4F305.81
& CNVINCS(I,J,2) GRB4F305.82
C convective cloud water RB300993.69
CCW(I,J) = CNV_CCW(I,J) RB300993.70
END DO RB300993.71
END DO RB300993.72
DO I = 1,P_FIELD RB300993.73
CONV_RAIN(I) = CNV_RAIN(I) RB300993.74
CONV_SNOW(I) = CNV_SNOW(I) RB300993.75
LCBASE(I) = CNV_LB(I) ARN2F304.266
LCTOP(I) = CNV_LT(I) ARN2F304.267
LCCA(I) = CNV_LA(I) ARN2F304.268
LCCLWP(I) = CNV_LP(I) ARN2F304.269
END DO RB300993.76
RB300993.77
C Update model potential temperature and mixing ratio RB300993.78
C with saved increments due to convection. RB300993.79
RB300993.80
DO J = 1,Q_LEVELS RB300993.81
DO I = FIRST_POINT,LAST_POINT RB300993.82
D1(JTHETA(J)+I-1) = D1(JTHETA(J)+I-1) + ADR1F305.68
& CNVINCS(I,J,1)*SECS_PER_STEPim(atmos_im) ADR1F305.69
D1(JQ(J)+I-1) = D1(JQ(J)+I-1) + ADR1F305.70
& CNVINCS(I,J,2)*SECS_PER_STEPim(atmos_im) ADR1F305.71
END DO RB300993.86
END DO RB300993.87
RB300993.88
END IF ! L_CONVECT RB300993.89
CONV_CT1.164
C APC3F304.31
C Do we need to scavenge aerosol convectively? APC3F304.32
C APC3F304.33
IF (L_MURK_SOURCE) THEN APC3F304.34
CALL CON_SCAV
( APC3F304.35
& SECS_PER_STEPim(atmos_im), ADR1F305.72
& P_FIELD,POINTS,A_INTHD(13), ! Boundary layer levels APC0F405.770
& ID1(JCCB+FIRST_POINT-1), APC3F304.38
& ID1(JCCT+FIRST_POINT-1), APC3F304.39
& CONV_RAIN(FIRST_POINT),CONV_SNOW(FIRST_POINT), APC3F304.40
& D1(JMURK(1)+FIRST_POINT-1)) APC3F304.41
ENDIF APC3F304.42
! AWO5F401.152
IF ( L_SULPC_SO2 .OR. L_SOOT ) THEN AWO5F405.358
! Add loop to cater for cases when conv anvils (3D cloud amount) are AJX0F404.110
! switched ON (L_3D_CCA=.T.) and OFF (L_3D_CCA=.F.) Julie Gregory AJX0F404.111
IF (L_3D_CCA) THEN AJX0F404.112
DO I=1,P_FIELD AJX0F404.113
LEVEL=ID1(JCCB+I-1) AJX0F404.114
IF (LEVEL .GT. 0) THEN AJX0F404.115
CCA2D(I)=D1(JCCA(LEVEL)+I-1) AJX0F404.116
ELSE AJX0F404.117
CCA2D(I)=0.0 AJX0F404.118
ENDIF AJX0F404.119
ENDDO AJX0F404.120
ELSE AJX0F404.121
DO I=1,P_FIELD AJX0F404.122
CCA2D(I)=D1(JCCA(1)+I-1) AJX0F404.123
ENDDO AJX0F404.124
ENDIF AJX0F404.125
ENDIF AWO5F405.359
! AWO5F401.154
IF (L_SULPC_SO2) THEN AWO5F405.360
! Scavenge SO2 AWO5F401.155
IF (KRAIN_SO2.GT.0.0 .OR. KSNOW_SO2.GT.0.0) THEN AWO1F404.94
CALL SCONSCV
( D1(JSO2(1)), AWO5F401.156
& SECS_PER_STEPim(atmos_im), AWO5F401.157
& TR_LEVELS, AWO5F401.158
& P_FIELD, AWO5F401.159
& FIRST_POINT,LAST_POINT, AWO5F401.160
& ID1(JCCB),ID1(JCCT), AWO5F401.161
& .TRUE.,CCA2D, AWO1F404.95
& CONV_RAIN,CONV_SNOW, AWO5F401.162
& KRAIN_SO2,KSNOW_SO2, AWO5F401.163
& CONSCVGD_TRACER, AWO5F401.164
& A_LEVDEPC(JDELTA_AK), AWO5F401.165
& A_LEVDEPC(JDELTA_BK), AWO5F401.166
& P_LEVELS,D1(JPSTAR) AWO5F401.167
& ) AWO5F401.168
ELSE AWO1F404.96
DO I=1,P_FIELD AWO1F404.97
CONSCVGD_TRACER(I)=0.0 AWO1F404.98
END DO AWO1F404.99
END IF AWO1F404.100
! AWO5F401.169
! Write scavenged SO2 to STASHWORK array AWO5F401.170
! (the whole field is copied including 0'S in N and S polar rows) AWO5F401.171
! AWO5F401.172
IF(SF(227,5)) THEN AWO5F401.173
CALL COPYDIAG
(STASHWORK(SI(227,5,im_index)),CONSCVGD_TRACER, AWO5F401.174
& FIRST_POINT,LAST_POINT,P_FIELD,ROW_LENGTH, GPB1F403.557
& im_ident,5,227, GPB1F403.558
*CALL ARGPPX
GPB1F403.559
& ICODE,CMESSAGE) GPB1F403.560
GPB1F403.561
IF (ICODE .GT. 0) GOTO 9999 GPB1F403.562
END IF AWO5F401.176
! Extra copy of scavenged SO2 for flux diagnostic AWO5F405.242
IF (SF(238,5)) THEN AWO5F405.243
CALL COPYDIAG
(STASHWORK(SI(238,5,im_index)),CONSCVGD_TRACER, AWO5F405.244
& FIRST_POINT,LAST_POINT,P_FIELD,ROW_LENGTH, AWO5F405.245
& im_ident,5,238, AWO5F405.246
*CALL ARGPPX
AWO5F405.247
& ICODE,CMESSAGE) AWO5F405.248
AWO5F405.249
IF (ICODE .GT. 0) GOTO 9999 AWO5F405.250
! AWO5F405.251
! Convert amount scavenged per tstep to flux per sec AWO5F405.252
DO I=1,P_FIELD AWO5F405.253
STASHWORK(SI(238,5,im_index)+I-1)= AWO5F405.254
& STASHWORK(SI(238,5,im_index)+I-1)/SECS_PER_STEPim(atmos_im) AWO5F405.255
END DO AWO5F405.256
END IF AWO5F405.257
! AWO5F405.258
! AWO5F401.177
! Scavenge NH3 if present AWO5F405.259
IF (L_SULPC_NH3) THEN AWO5F405.260
! AWO5F405.261
IF ( (KRAIN_NH3.GT.0.0) .OR. (KSNOW_NH3.GT.0.0) ) THEN AWO5F405.262
CALL SCONSCV
( D1(JNH3(1)), AWO5F405.263
& SECS_PER_STEPim(atmos_im), AWO5F405.264
& TR_LEVELS, AWO5F405.265
& P_FIELD, AWO5F405.266
& FIRST_POINT,LAST_POINT, AWO5F405.267
& ID1(JCCB),ID1(JCCT), AWO5F405.268
& .TRUE.,CCA2D, AWO5F405.269
& CONV_RAIN,CONV_SNOW, AWO5F405.270
& KRAIN_NH3,KSNOW_NH3, AWO5F405.271
& CONSCVGD_TRACER, AWO5F405.272
& A_LEVDEPC(JDELTA_AK), AWO5F405.273
& A_LEVDEPC(JDELTA_BK), AWO5F405.274
& P_LEVELS,D1(JPSTAR) AWO5F405.275
& ) AWO5F405.276
ELSE AWO5F405.277
DO I=1,P_FIELD AWO5F405.278
CONSCVGD_TRACER(I)=0.0 AWO5F405.279
END DO AWO5F405.280
END IF AWO5F405.281
! AWO5F405.282
! Write scavenged NH3 to STASHWORK array AWO5F405.283
! (the whole field is copied including 0'S in N and S polar rows) AWO5F405.284
! AWO5F405.285
IF(SF(237,5)) THEN AWO5F405.286
CALL COPYDIAG
(STASHWORK(SI(237,5,im_index)),CONSCVGD_TRACER, AWO5F405.287
& FIRST_POINT,LAST_POINT,P_FIELD,ROW_LENGTH, AWO5F405.288
& im_ident,5,237, AWO5F405.289
*CALL ARGPPX
AWO5F405.290
& ICODE,CMESSAGE) AWO5F405.291
AWO5F405.292
IF (ICODE .GT. 0) GOTO 9999 AWO5F405.293
! AWO5F405.294
! Convert amount scavenged per tstep to flux per sec AWO5F405.295
DO I=1,P_FIELD AWO5F405.296
STASHWORK(SI(237,5,im_index)+I-1)= AWO5F405.297
& STASHWORK(SI(237,5,im_index)+I-1)/SECS_PER_STEPim(atmos_im) AWO5F405.298
END DO AWO5F405.299
END IF AWO5F405.300
! AWO5F405.301
END IF ! end L_SULPC_NH3 condition AWO5F405.302
! AWO5F405.303
C Scavenge SO4_AITKEN mode AWO5F401.178
IF (KRAIN_SO4AIT.GT.0.0 .OR. KSNOW_SO4AIT.GT.0.0) THEN AWO1F404.101
CALL SCONSCV
( D1(JSO4_AITKEN(1)), AWO5F401.179
& SECS_PER_STEPim(atmos_im), AWO5F401.180
& TR_LEVELS, AWO5F401.181
& P_FIELD, AWO5F401.182
& FIRST_POINT,LAST_POINT, AWO5F401.183
& ID1(JCCB),ID1(JCCT), AWO5F401.184
& .FALSE.,CCA2D, AWO1F404.102
& CONV_RAIN,CONV_SNOW, AWO5F401.185
& KRAIN_SO4AIT,KSNOW_SO4AIT, AWO5F401.186
& CONSCVGD_TRACER, AWO5F401.187
& A_LEVDEPC(JDELTA_AK), AWO5F401.188
& A_LEVDEPC(JDELTA_BK), AWO5F401.189
& P_LEVELS,D1(JPSTAR) AWO5F401.190
& ) AWO5F401.191
ELSE AWO1F404.103
DO I=1,P_FIELD AWO1F404.104
CONSCVGD_TRACER(I)=0.0 AWO1F404.105
END DO AWO1F404.106
END IF AWO1F404.107
! AWO5F401.192
! Write scavenged SO4AIT to STASHWORK array AWO5F401.193
! AWO5F401.194
IF(SF(228,5)) THEN ! SO4AIT AWO5F401.195
CALL COPYDIAG
(STASHWORK(SI(228,5,im_index)),CONSCVGD_TRACER, AWO5F401.196
& FIRST_POINT,LAST_POINT,P_FIELD,ROW_LENGTH, GPB1F403.563
& im_ident,5,228, GPB1F403.564
*CALL ARGPPX
GPB1F403.565
& ICODE,CMESSAGE) GPB1F403.566
GPB1F403.567
IF (ICODE .GT. 0) GOTO 9999 GPB1F403.568
END IF AWO5F401.198
! Extra copy of scavenged SO4_AIT for flux diagnostic AWO5F405.304
IF(SF(239,5)) THEN AWO5F405.305
CALL COPYDIAG
(STASHWORK(SI(239,5,im_index)),CONSCVGD_TRACER, AWO5F405.306
& FIRST_POINT,LAST_POINT,P_FIELD,ROW_LENGTH, AWO5F405.307
& im_ident,5,239, AWO5F405.308
*CALL ARGPPX
AWO5F405.309
& ICODE,CMESSAGE) AWO5F405.310
AWO5F405.311
IF (ICODE .GT. 0) GOTO 9999 AWO5F405.312
! AWO5F405.313
! Convert amount scavenged per tstep to flux per sec AWO5F405.314
DO I=1,P_FIELD AWO5F405.315
STASHWORK(SI(239,5,im_index)+I-1)= AWO5F405.316
& STASHWORK(SI(239,5,im_index)+I-1)/SECS_PER_STEPim(atmos_im) AWO5F405.317
END DO AWO5F405.318
END IF AWO5F405.319
! AWO5F405.320
! AWO5F401.199
C Scavenge SO4_ACCU mode AWO5F401.200
IF (KRAIN_SO4ACC.GT.0.0 .OR. KSNOW_SO4ACC.GT.0.0) THEN AWO1F404.108
CALL SCONSCV
( D1(JSO4_ACCU(1)), AWO5F401.201
& SECS_PER_STEPim(atmos_im), AWO5F401.202
& TR_LEVELS, AWO5F401.203
& P_FIELD, AWO5F401.204
& FIRST_POINT,LAST_POINT, AWO5F401.205
& ID1(JCCB),ID1(JCCT), AWO5F401.206
& .FALSE.,CCA2D, AWO1F404.109
& CONV_RAIN,CONV_SNOW, AWO5F401.207
& KRAIN_SO4ACC,KSNOW_SO4ACC, AWO5F401.208
& CONSCVGD_TRACER, AWO5F401.209
& A_LEVDEPC(JDELTA_AK), AWO5F401.210
& A_LEVDEPC(JDELTA_BK), AWO5F401.211
& P_LEVELS,D1(JPSTAR) AWO5F401.212
& ) AWO5F401.213
ELSE AWO1F404.110
DO I=1,P_FIELD AWO1F404.111
CONSCVGD_TRACER(I)=0.0 AWO1F404.112
END DO AWO1F404.113
END IF AWO1F404.114
! AWO5F401.214
! Write scavenged SO4ACC to STASHWORK array AWO5F401.215
! AWO5F401.216
IF(SF(229,5)) THEN ! SO4ACC AWO5F401.217
CALL COPYDIAG
(STASHWORK(SI(229,5,im_index)),CONSCVGD_TRACER, AWO5F401.218
& FIRST_POINT,LAST_POINT,P_FIELD,ROW_LENGTH, GPB1F403.569
& im_ident,5,229, GPB1F403.570
*CALL ARGPPX
GPB1F403.571
& ICODE,CMESSAGE) GPB1F403.572
GPB1F403.573
IF (ICODE .GT. 0) GOTO 9999 GPB1F403.574
END IF AWO5F401.220
! AWO5F405.321
IF(SF(240,5)) THEN AWO5F405.322
CALL COPYDIAG
(STASHWORK(SI(240,5,im_index)),CONSCVGD_TRACER, AWO5F405.323
& FIRST_POINT,LAST_POINT,P_FIELD,ROW_LENGTH, AWO5F405.324
& im_ident,5,240, AWO5F405.325
*CALL ARGPPX
AWO5F405.326
& ICODE,CMESSAGE) AWO5F405.327
AWO5F405.328
IF (ICODE .GT. 0) GOTO 9999 AWO5F405.329
! AWO5F405.330
! Convert amount scavenged per tstep to flux per sec AWO5F405.331
DO I=1,P_FIELD AWO5F405.332
STASHWORK(SI(240,5,im_index)+I-1)= AWO5F405.333
& STASHWORK(SI(240,5,im_index)+I-1)/SECS_PER_STEPim(atmos_im) AWO5F405.334
END DO AWO5F405.335
END IF AWO5F405.336
! AWO5F405.337
! AWO5F401.221
C Scavenge SO4_DISS mode AWO5F401.222
IF (KRAIN_SO4DIS.GT.0.0 .OR. KSNOW_SO4DIS.GT.0.0) THEN AWO1F404.115
CALL SCONSCV
( D1(JSO4_DISS(1)), AWO5F401.223
& SECS_PER_STEPim(atmos_im), AWO5F401.224
& TR_LEVELS, AWO5F401.225
& P_FIELD, AWO5F401.226
& FIRST_POINT,LAST_POINT, AWO5F401.227
& ID1(JCCB),ID1(JCCT), AWO5F401.228
& .FALSE.,CCA2D, AWO1F404.116
& CONV_RAIN,CONV_SNOW, AWO5F401.229
& KRAIN_SO4DIS,KSNOW_SO4DIS, AWO5F401.230
& CONSCVGD_TRACER, AWO5F401.231
& A_LEVDEPC(JDELTA_AK), AWO5F401.232
& A_LEVDEPC(JDELTA_BK), AWO5F401.233
& P_LEVELS,D1(JPSTAR) AWO5F401.234
& ) AWO5F401.235
ELSE AWO1F404.117
DO I=1,P_FIELD AWO1F404.118
CONSCVGD_TRACER(I)=0.0 AWO1F404.119
END DO AWO1F404.120
END IF AWO1F404.121
! AWO5F401.236
! Write scavenged SO4DIS to STASHWORK array AWO5F401.237
! AWO5F401.238
IF(SF(230,5)) THEN ! SO4DIS AWO5F401.239
CALL COPYDIAG
(STASHWORK(SI(230,5,im_index)),CONSCVGD_TRACER, AWO5F401.240
& FIRST_POINT,LAST_POINT,P_FIELD,ROW_LENGTH, GPB1F403.575
& im_ident,5,230, GPB1F403.576
*CALL ARGPPX
GPB1F403.577
& ICODE,CMESSAGE) GPB1F403.578
GPB1F403.579
IF (ICODE .GT. 0) GOTO 9999 GPB1F403.580
END IF AWO5F401.242
! Extra copy of scavenged SO4_DIS for flux diagnostic AWO5F405.338
IF(SF(241,5)) THEN AWO5F405.339
CALL COPYDIAG
(STASHWORK(SI(241,5,im_index)),CONSCVGD_TRACER, AWO5F405.340
& FIRST_POINT,LAST_POINT,P_FIELD,ROW_LENGTH, AWO5F405.341
& im_ident,5,241, AWO5F405.342
*CALL ARGPPX
AWO5F405.343
& ICODE,CMESSAGE) AWO5F405.344
AWO5F405.345
IF (ICODE .GT. 0) GOTO 9999 AWO5F405.346
! AWO5F405.347
! Convert amount scavenged per tstep to flux per sec AWO5F405.348
DO I=1,P_FIELD AWO5F405.349
STASHWORK(SI(241,5,im_index)+I-1)= AWO5F405.350
& STASHWORK(SI(241,5,im_index)+I-1)/SECS_PER_STEPim(atmos_im) AWO5F405.351
END DO AWO5F405.352
END IF AWO5F405.353
! AWO5F405.354
! AWO5F401.243
! AWO5F401.244
END IF ! end L_SULPC_SO2 condition AWO5F401.245
! AWO5F405.361
C Scavenge soot AWO5F405.362
IF (L_SOOT) THEN AWO5F405.363
IF ( (KRAIN_AGEDSOOT.GT.0.0) .OR. (KSNOW_AGEDSOOT.GT.0.0) ) AWO5F405.364
& THEN AWO5F405.365
AWO5F405.366
CALL SCONSCV
( D1(JSOOT_AGD(1)), !INOUT AWO5F405.367
& SECS_PER_STEPim(atmos_im), AWO5F405.368
& TR_LEVELS, AWO5F405.369
& P_FIELD, AWO5F405.370
& FIRST_POINT,LAST_POINT, AWO5F405.371
& ID1(JCCB),ID1(JCCT), AWO5F405.372
& .FALSE.,CCA2D, AWO5F405.373
& CONV_RAIN,CONV_SNOW, AWO5F405.374
& KRAIN_AGEDSOOT,KSNOW_AGEDSOOT, AWO5F405.375
& CONSCVGD_TRACER, AWO5F405.376
& A_LEVDEPC(JDELTA_AK), AWO5F405.377
& A_LEVDEPC(JDELTA_BK), AWO5F405.378
& P_LEVELS,D1(JPSTAR) AWO5F405.379
& ) AWO5F405.380
ELSE AWO5F405.381
DO I=1,P_FIELD AWO5F405.382
CONSCVGD_TRACER(I)=0.0 AWO5F405.383
END DO AWO5F405.384
ENDIF AWO5F405.385
! AWO5F405.386
! Convert units of flux of convectively scavenged soot AWO5F405.387
! from kg/m2/ts to kg/m2/s. AWO5F405.388
! AWO5F405.389
DO I=FIRST_POINT,LAST_POINT AWO5F405.390
CONSCVGD_TRACER(I) = CONSCVGD_TRACER(I) AWO5F405.391
& /SECS_PER_STEPim(atmos_im) AWO5F405.392
END DO AWO5F405.393
AWO5F405.394
! Write scavenged soot to STASHWORK array AWO5F405.395
! AWO5F405.396
IF(SF(242,5)) THEN ! Soot convective wet dep flux AWO5F405.397
CALL COPYDIAG
(STASHWORK(SI(242,5,im_index)), AWO5F405.398
& CONSCVGD_TRACER, AWO5F405.399
& FIRST_POINT,LAST_POINT,P_FIELD,ROW_LENGTH, AWO5F405.400
& im_ident,5,242, AWO5F405.401
*CALL ARGPPX
AWO5F405.402
& ICODE,CMESSAGE) AWO5F405.403
END IF AWO5F405.404
! AWO5F405.405
ENDIF ! L_SOOT AWO5F405.406
! AWO5F405.407
IF (LEMCORR) THEN GSS1F304.754
C CONV_CT1.166
C ADD CONVECTIVE RAIN AND SNOW AT THE SURFACE TO THE CONV_CT1.167
C DIABATIC HEATING FOR USE IN THE ENERGY CORRECTION CONV_CT1.168
C PROCEDURE CONV_CT1.169
C CONV_CT1.170
IF (LTIMER) THEN CONV_CT1.171
CALL TIMER
('FLX_DIAG',3) CONV_CT1.172
END IF CONV_CT1.173
C CONV_CT1.174
CALL FLUX_DIAG
(CONV_RAIN,COS_P_LATITUDE, APB5F401.138
& P_FIELD,FIRST_POINT,POINTS, APB5F401.139
& LC,SECS_PER_STEPim(atmos_im),D1(JNET_FLUX)) GSM3F404.34
CALL FLUX_DIAG
(CONV_SNOW,COS_P_LATITUDE, APB5F401.141
& P_FIELD,FIRST_POINT,POINTS, APB5F401.142
& (LC+LF),SECS_PER_STEPim(atmos_im),D1(JNET_FLUX)) GSM3F404.35
C CONV_CT1.181
IF (LTIMER) THEN CONV_CT1.182
CALL TIMER
('FLX_DIAG',4) CONV_CT1.183
END IF CONV_CT1.184
C CONV_CT1.185
END IF ! LEMCORR GSS1F304.755
CONV_CT1.187
CL 5.2 Diagnostic processing CONV_CT1.188
CONV_CT1.189
CL Copy diagnostic information to STASHWORK for STASH processing CONV_CT1.190
CONV_CT1.191
C Item 201 Convective rainfall,resolve to accumulate over timestep CONV_CT1.192
CONV_CT1.193
IF(SF(201,5)) THEN CONV_CT1.194
CALL COPYDIAG
(STASHWORK(SI(201,5,im_index)),CONV_RAIN, GRB4F305.83
& FIRST_POINT,LAST_POINT,P_FIELD,ROW_LENGTH, GPB1F403.581
& im_ident,5,201, GPB1F403.582
*CALL ARGPPX
GPB1F403.583
& ICODE,CMESSAGE) GPB1F403.584
GPB1F403.585
IF (ICODE .GT. 0) GOTO 9999 GPB1F403.586
CONV_CT1.197
DO I=1,P_FIELD CONV_CT1.198
STASHWORK(SI(201,5,im_index)+I-1)= GRB4F305.84
& STASHWORK(SI(201,5,im_index)+I-1)*SECS_PER_STEPim(a_im) ADR1F305.75
END DO CONV_CT1.201
END IF CONV_CT1.202
CONV_CT1.203
C Item 202 Convective Snowfall, resolve to accumulate overtimestep. CONV_CT1.204
CONV_CT1.205
IF(SF(202,5)) THEN CONV_CT1.206
CALL COPYDIAG
(STASHWORK(SI(202,5,im_index)),CONV_SNOW, GRB4F305.85
& FIRST_POINT,LAST_POINT,P_FIELD,ROW_LENGTH, GPB1F403.587
& im_ident,5,202, GPB1F403.588
*CALL ARGPPX
GPB1F403.589
& ICODE,CMESSAGE) GPB1F403.590
GPB1F403.591
IF (ICODE .GT. 0) GOTO 9999 GPB1F403.592
CONV_CT1.209
DO I=1,P_FIELD CONV_CT1.210
STASHWORK(SI(202,5,im_index)+I-1)= GRB4F305.86
& STASHWORK(SI(202,5,im_index)+I-1)*SECS_PER_STEPim(a_im) ADR1F305.76
END DO CONV_CT1.213
END IF CONV_CT1.214
CONV_CT1.215
C Item 203 THETA increments from convection RB300993.90
CONV_CT1.217
PI080793.7
IF(SF(203,5)) THEN CONV_CT1.218
CALL COPYDIAG_3D
(STASHWORK(SI(203,5,im_index)),DTHETA_DT, GRB4F305.87
& FIRST_POINT,LAST_POINT,P_FIELD,ROW_LENGTH,Q_LEVELS, CONV_CT1.220
& STLIST(1,STINDEX(1,203,5,im_index)),LEN_STLIST,STASH_LEVELS, GRB4F305.88
& NUM_STASH_LEVELS+1, GPB1F403.593
& im_ident,5,203, GPB1F403.594
*CALL ARGPPX
GPB1F403.595
& ICODE,CMESSAGE) GPB1F403.596
IF(ICODE.GT.0) THEN CONV_CT1.223
RETURN CONV_CT1.224
END IF CONV_CT1.225
END IF CONV_CT1.226
CONV_CT1.227
IF(L_MOM) THEN API2F405.7
! Item 256 U increments from convection (ON P GRID) API2F405.8
IF(SF(256,5)) THEN API2F405.9
CALL COPYDIAG_3D
(STASHWORK(SI(256,5,im_index)),DU_DT, API2F405.10
& FIRST_POINT,LAST_POINT,P_FIELD,ROW_LENGTH,Q_LEVELS, API2F405.11
& STLIST(1,STINDEX(1,256,5,im_index)),LEN_STLIST,STASH_LEVELS, API2F405.12
& NUM_STASH_LEVELS+1, API2F405.13
& im_ident,5,256, API2F405.14
*CALL ARGPPX
API2F405.15
& ICODE,CMESSAGE) API2F405.16
IF(ICODE.GT.0) THEN API2F405.17
RETURN API2F405.18
END IF API2F405.19
END IF API2F405.20
! Item 257 V increments from convection (ON P GRID) API2F405.21
API2F405.22
API2F405.23
IF(SF(257,5)) THEN API2F405.24
CALL COPYDIAG_3D
(STASHWORK(SI(257,5,im_index)),DV_DT, API2F405.25
& FIRST_POINT,LAST_POINT,P_FIELD,ROW_LENGTH,Q_LEVELS, API2F405.26
& STLIST(1,STINDEX(1,257,5,im_index)),LEN_STLIST,STASH_LEVELS, API2F405.27
& NUM_STASH_LEVELS+1, API2F405.28
& im_ident,5,257, API2F405.29
*CALL ARGPPX
API2F405.30
& ICODE,CMESSAGE) API2F405.31
IF(ICODE.GT.0) THEN API2F405.32
RETURN API2F405.33
END IF API2F405.34
END IF API2F405.35
END IF ! if(l_mom) API2F405.36
C Item 205 Convective rainfall rates CONV_CT1.228
CONV_CT1.229
IF(SF(205,5)) THEN CONV_CT1.230
CALL COPYDIAG
(STASHWORK(SI(205,5,im_index)),CONV_RAIN, GRB4F305.89
& FIRST_POINT,LAST_POINT,P_FIELD,ROW_LENGTH, GPB1F403.597
& im_ident,5,205, GPB1F403.598
*CALL ARGPPX
GPB1F403.599
& ICODE,CMESSAGE) GPB1F403.600
GPB1F403.601
IF (ICODE .GT. 0) GOTO 9999 GPB1F403.602
END IF CONV_CT1.233
CONV_CT1.234
C Item 206 Convective snowfall rates CONV_CT1.235
CONV_CT1.236
IF(SF(206,5)) THEN CONV_CT1.237
CALL COPYDIAG
(STASHWORK(SI(206,5,im_index)),CONV_SNOW, GRB4F305.90
& FIRST_POINT,LAST_POINT,P_FIELD,ROW_LENGTH, GPB1F403.603
& im_ident,5,206, GPB1F403.604
*CALL ARGPPX
GPB1F403.605
& ICODE,CMESSAGE) GPB1F403.606
GPB1F403.607
IF (ICODE .GT. 0) GOTO 9999 GPB1F403.608
END IF CONV_CT1.240
CONV_CT1.241
C Item 207 Convective cloud base as pressure CONV_CT1.242
C or item 210 Convective cloud base as height CONV_CT1.243
CONV_CT1.244
IF(SF(207,5).OR.SF(210,5)) THEN CONV_CT1.245
DO I=1,P_FIELD CONV_CT1.246
LEVEL=ID1(JCCB+I-1) ! integer value of conv.cloud base in D1 RB300993.91
IF(LEVEL.EQ.0) THEN CONV_CT1.248
STASHWORK(SI(207,5,im_index)+I-1)=RMDI GRB4F305.91
ELSE CONV_CT1.250
STASHWORK(SI(207,5,im_index)+I-1) GRB4F305.92
& =AKH(LEVEL)+BKH(LEVEL)*D1(JPSTAR+I-1) CONV_CT1.252
END IF CONV_CT1.253
END DO CONV_CT1.254
END IF CONV_CT1.255
CONV_CT1.256
C Item 208 Convective cloud top as pressure CONV_CT1.257
C or item 211 Convective cloud top as height CONV_CT1.258
CONV_CT1.259
IF(SF(208,5).OR.SF(211,5)) THEN CONV_CT1.260
DO I=1,P_FIELD CONV_CT1.261
LEVEL=ID1(JCCT+I-1) ! integer value of conv.cloud top in D1 RB300993.92
IF(LEVEL.EQ.0) THEN CONV_CT1.263
STASHWORK(SI(208,5,im_index)+I-1)=RMDI GRB4F305.93
ELSE CONV_CT1.265
STASHWORK(SI(208,5,im_index)+I-1) GRB4F305.94
& =AKH(LEVEL)+BKH(LEVEL)*D1(JPSTAR+I-1) CONV_CT1.267
END IF CONV_CT1.268
END DO CONV_CT1.269
END IF CONV_CT1.270
CONV_CT1.271
C Item 209 Temperature CONV_CT1.272
CONV_CT1.273
IF(SF(209,5)) THEN CONV_CT1.274
CALL SET_LEVELS_LIST
(P_LEVELS,25, GRB4F305.95
& STLIST(1,STINDEX(1,209,5,im_index)), GRB4F305.96
& LIST,STASH_LEVELS,NUM_STASH_LEVELS+1,ICODE,CMESSAGE) CONV_CT1.276
IF (ICODE.GT.0) RETURN CONV_CT1.277
CONV_CT1.278
LEVEL=0 CONV_CT1.279
DO J=1,P_LEVELS CONV_CT1.280
IF(LIST(J)) THEN CONV_CT1.281
LEVEL=LEVEL+1 CONV_CT1.282
DO I=1,P_FIELD CONV_CT1.283
PU=D1(JPSTAR+I-1)*BKH(J+1) + AKH(J+1) CONV_CT1.284
PL=D1(JPSTAR+I-1)*BKH(J) + AKH(J) CONV_CT1.285
STASHWORK(SI(209,5,im_index)+(LEVEL-1)*P_FIELD+I-1) = GRB4F305.97
& D1(JTHETA(J)+I-1)* CONV_CT1.287
& P_EXNER_C( D1(JP_EXNER(J+1)+I-1),D1(JP_EXNER(J)+I-1), CONV_CT1.288
& PU,PL,KAPPA ) CONV_CT1.289
END DO CONV_CT1.290
END IF CONV_CT1.291
END DO CONV_CT1.292
END IF CONV_CT1.293
CONV_CT1.294
C Item 210 ICAO height of convective cloud base CONV_CT1.295
CONV_CT1.296
IF(SF(210,5))THEN CONV_CT1.297
CALL ICAO_HT
(STASHWORK(SI(207,5,im_index)),P_FIELD, GRB4F305.98
& STASHWORK(SI(210,5,im_index))) GRB4F305.99
ENDIF CONV_CT1.299
CONV_CT1.300
C Item 211 ICAO height of convective cloud top CONV_CT1.301
IF(SF(211,5))THEN CONV_CT1.302
CALL ICAO_HT
(STASHWORK(SI(208,5,im_index)),P_FIELD, GRB4F305.100
& STASHWORK(SI(211,5,im_index))) GRB4F305.101
ENDIF CONV_CT1.304
CONV_CT1.305
C CONV_CT1.306
C CALCULATE CONVECTIVE CLOUD AMOUNT OF EVERY LEVEL CONV_CT1.307
C CONV_CT1.308
IF (SF(212,5)) THEN CONV_CT1.309
DO J=1,Q_LEVELS CONV_CT1.310
DO I=1,P_FIELD CONV_CT1.311
C conv.cloud base and top are integer values in D1 array, hence use ID1 RB300993.93
IF ( J.GE.ID1(JCCB+I-1) .AND. J.LT.ID1(JCCT+I-1) ) THEN API1F400.3
IF (L_3D_CCA) THEN AJX0F404.126
STASHWORK(SI(212,5,im_index)+I-1+(J-1)*P_FIELD)= AJX0F404.127
& D1(JCCA(J)+I-1) AJX0F404.128
ELSE AJX0F404.129
STASHWORK(SI(212,5,im_index)+I-1+(J-1)*P_FIELD)= AJX0F404.130
& D1(JCCA(1)+I-1) AJX0F404.131
ENDIF AJX0F404.132
ELSE CONV_CT1.314
STASHWORK(SI(212,5,im_index)+I-1+(J-1)*P_FIELD) = 0.0 GRB4F305.103
END IF CONV_CT1.316
END DO CONV_CT1.317
END DO CONV_CT1.318
END IF PI080793.8
PI080793.9
C Item 213 CONVECTIVE CLOUD LIQUID WATER PI080793.10
PI080793.11
PI080793.12
IF(SF(213,5)) THEN PI080793.13
CALL COPYDIAG_3D
(STASHWORK(SI(213,5,im_index)),CCW, GRB4F305.104
& FIRST_POINT,LAST_POINT,P_FIELD,ROW_LENGTH,Q_LEVELS, PI080793.15
& STLIST(1,STINDEX(1,213,5,im_index)),LEN_STLIST,STASH_LEVELS, GRB4F305.105
& NUM_STASH_LEVELS+1, GPB1F403.609
& im_ident,5,213, GPB1F403.610
*CALL ARGPPX
GPB1F403.611
& ICODE,CMESSAGE) GPB1F403.612
IF(ICODE.GT.0) THEN PI080793.18
RETURN PI080793.19
END IF PI080793.20
END IF CONV_CT1.319
TJ241193.11
C Item 214 Total rainfall rate (LS plus CONV) TJ241193.12
TJ241193.13
IF(SF(214,5))THEN TJ241193.14
DO I=1,P_FIELD TJ241193.15
STASHWORK(SI(214,5,im_index)+I-1)=LS_RAIN(I)+CONV_RAIN(I) GRB4F305.106
ENDDO TJ241193.17
ENDIF TJ241193.18
TJ241193.19
C Item 215 Total snowfall rate (LS plus CONV) TJ241193.20
TJ241193.21
IF(SF(215,5))THEN TJ241193.22
DO I=1,P_FIELD TJ241193.23
STASHWORK(SI(215,5,im_index)+I-1)=LS_SNOW(I)+CONV_SNOW(I) GRB4F305.107
ENDDO TJ241193.25
ENDIF TJ241193.26
TJ241193.27
C Item 216 Total precipitation rate (LS plus CONV, rain plus snow) TJ241193.28
TJ241193.29
IF(SF(216,5))THEN TJ241193.30
DO I=1,P_FIELD TJ241193.31
STASHWORK(SI(216,5,im_index)+I-1)= GRB4F305.108
& LS_RAIN(I)+LS_SNOW(I)+CONV_RAIN(I)+CONV_SNOW(I) TJ241193.33
ENDDO TJ241193.34
ENDIF TJ241193.35
API2F400.359
C Item 217 Convective Available Potential Energy API2F400.360
API2F400.361
IF(SF(217,5))THEN API2F400.362
DO I=1,P_FIELD API2F400.363
STASHWORK(SI(217,5,im_index)+I-1)=CAPE(I) API2F400.364
ENDDO API2F400.365
ENDIF API2F400.366
C Item 226 Total rainfall,resolve to accumulate over timestep ASW2F304.3
ASW2F304.4
IF(SF(226,5)) THEN ASW2F304.5
ASW2F304.6
DO I=1,P_FIELD ASW2F304.7
STASHWORK(SI(226,5,im_index)+I-1)= GRB4F305.109
& (LS_RAIN(I)+LS_SNOW(I)+CONV_RAIN(I)+CONV_SNOW(I)) ASW2F304.9
& *SECS_PER_STEPim(atmos_im) ! * by t/s ADR1F305.77
END DO ASW2F304.11
END IF ASW2F304.12
CONV_CT1.320
CL Extend remaining diagnostic information to full field CONV_CT1.321
CL for STASH processing CONV_CT1.322
CONV_CT1.323
CALL EXTDIAG
(STASHWORK,SI(1,5,im_index),SF(1,5),204,204, GRB4F305.110
& INT5,ROW_LENGTH, CONV_CT1.325
& STLIST,LEN_STLIST,STINDEX(1,1,5,im_index),2,STASH_LEVELS, GRB4F305.111
& NUM_STASH_LEVELS+1, STASH_PSEUDO_LEVELS, CONV_CT1.327
& NUM_STASH_PSEUDO, GPB1F403.1306
& im_ident,5, GPB1F403.1307
*CALL ARGPPX
GPB1F403.1308
& ICODE,CMESSAGE) GPB1F403.1309
CONV_CT1.329
IF(ICODE.GT.0) THEN CONV_CT1.330
RETURN CONV_CT1.331
END IF ARN2F304.270
ARN2F304.271
! API2F405.37
! item 250 updraught mass flux API2F405.38
! API2F405.39
CALL EXTDIAG
(STASHWORK,SI(1,5,im_index),SF(1,5),250,250, API2F405.40
& INT5,ROW_LENGTH, API2F405.41
& STLIST,LEN_STLIST,STINDEX(1,1,5,im_index),2,STASH_LEVELS, API2F405.42
& NUM_STASH_LEVELS+1, STASH_PSEUDO_LEVELS, API2F405.43
& NUM_STASH_PSEUDO, API2F405.44
& im_ident,5, API2F405.45
*CALL ARGPPX
API2F405.46
& ICODE, CMESSAGE) API2F405.47
API2F405.48
IF(ICODE.GT.0) THEN API2F405.49
RETURN API2F405.50
END IF API2F405.51
! API2F405.52
! item 251 downdraught mass flux API2F405.53
! API2F405.54
CALL EXTDIAG
(STASHWORK,SI(1,5,im_index),SF(1,5),251,251, API2F405.55
& INT5,ROW_LENGTH, API2F405.56
& STLIST,LEN_STLIST,STINDEX(1,1,5,im_index),2,STASH_LEVELS, API2F405.57
& NUM_STASH_LEVELS+1, STASH_PSEUDO_LEVELS, API2F405.58
& NUM_STASH_PSEUDO, API2F405.59
& im_ident,5, API2F405.60
*CALL ARGPPX
API2F405.61
& ICODE, CMESSAGE) API2F405.62
API2F405.63
IF(ICODE.GT.0) THEN API2F405.64
RETURN API2F405.65
END IF API2F405.66
! API2F405.67
! item 252 updraught entrainment rate per level API2F405.68
! API2F405.69
CALL EXTDIAG
(STASHWORK,SI(1,5,im_index),SF(1,5),252,252, API2F405.70
& INT5,ROW_LENGTH, API2F405.71
& STLIST,LEN_STLIST,STINDEX(1,1,5,im_index),2,STASH_LEVELS, API2F405.72
& NUM_STASH_LEVELS+1, STASH_PSEUDO_LEVELS, API2F405.73
& NUM_STASH_PSEUDO, API2F405.74
& im_ident,5, API2F405.75
*CALL ARGPPX
API2F405.76
& ICODE, CMESSAGE) API2F405.77
API2F405.78
IF(ICODE.GT.0) THEN API2F405.79
RETURN API2F405.80
END IF API2F405.81
! API2F405.82
! item 253 updraught detrainment per level API2F405.83
! API2F405.84
CALL EXTDIAG
(STASHWORK,SI(1,5,im_index),SF(1,5),253,253, API2F405.85
& INT5,ROW_LENGTH, API2F405.86
& STLIST,LEN_STLIST,STINDEX(1,1,5,im_index),2,STASH_LEVELS, API2F405.87
& NUM_STASH_LEVELS+1, STASH_PSEUDO_LEVELS, API2F405.88
& NUM_STASH_PSEUDO, API2F405.89
& im_ident,5, API2F405.90
*CALL ARGPPX
API2F405.91
& ICODE, CMESSAGE) API2F405.92
API2F405.93
IF(ICODE.GT.0) THEN API2F405.94
RETURN API2F405.95
END IF API2F405.96
! API2F405.97
! item 254 downdraught entrainment rate per level API2F405.98
! API2F405.99
CALL EXTDIAG
(STASHWORK,SI(1,5,im_index),SF(1,5),254,254, API2F405.100
& INT5,ROW_LENGTH, API2F405.101
& STLIST,LEN_STLIST,STINDEX(1,1,5,im_index),2,STASH_LEVELS, API2F405.102
& NUM_STASH_LEVELS+1, STASH_PSEUDO_LEVELS, API2F405.103
& NUM_STASH_PSEUDO, API2F405.104
& im_ident,5, API2F405.105
*CALL ARGPPX
API2F405.106
& ICODE, CMESSAGE) API2F405.107
API2F405.108
IF(ICODE.GT.0) THEN API2F405.109
RETURN API2F405.110
END IF API2F405.111
! API2F405.112
! item 255 downdraught detrainment rate per level API2F405.113
! API2F405.114
CALL EXTDIAG
(STASHWORK,SI(1,5,im_index),SF(1,5),255,255, API2F405.115
& INT5,ROW_LENGTH, API2F405.116
& STLIST,LEN_STLIST,STINDEX(1,1,5,im_index),2,STASH_LEVELS, API2F405.117
& NUM_STASH_LEVELS+1, STASH_PSEUDO_LEVELS, API2F405.118
& NUM_STASH_PSEUDO, API2F405.119
& im_ident,5, API2F405.120
*CALL ARGPPX
API2F405.121
& ICODE, CMESSAGE) API2F405.122
API2F405.123
IF(ICODE.GT.0) THEN API2F405.124
RETURN API2F405.125
END IF API2F405.126
API2F405.127
C Item 218 lowest convective cloud base level ARN2F304.272
ARN2F304.273
IF(SF(218,5)) THEN ARN2F304.274
DO I=1,P_FIELD ARN2F304.275
STASHWORK(SI(218,5,im_index)+I-1) = LCBASE(I) GRB4F305.112
END DO ARN2F304.277
END IF ARN2F304.278
ARN2F304.279
C Item 219 lowest convective cloud top level ARN2F304.280
ARN2F304.281
IF(SF(219,5)) THEN ARN2F304.282
DO I=1,P_FIELD ARN2F304.283
STASHWORK(SI(219,5,im_index)+I-1) = LCTOP(I) GRB4F305.113
END DO ARN2F304.285
END IF ARN2F304.286
ARN2F304.287
C Item 222 lowest convective cloud base as pressure ARN2F304.288
C or item 224 lowest convective cloud base as height ARN2F304.289
ARN2F304.290
IF(SF(222,5).OR.SF(224,5)) THEN ARN2F304.291
DO I=1,P_FIELD ARN2F304.292
LEVEL=LCBASE(I) ARN2F304.293
IF(LEVEL.EQ.0) THEN ARN2F304.294
STASHWORK(SI(222,5,im_index)+I-1)=RMDI GRB4F305.114
ELSE ARN2F304.296
STASHWORK(SI(222,5,im_index)+I-1) GRB4F305.115
& =AKH(LEVEL)+BKH(LEVEL)*D1(JPSTAR+I-1) ARN2F304.298
END IF ARN2F304.299
END DO ARN2F304.300
END IF ARN2F304.301
ARN2F304.302
C Item 223 lowest convective cloud top as pressure ARN2F304.303
C or item 225 lowest convective cloud top as height ARN2F304.304
ARN2F304.305
IF(SF(223,5).OR.SF(225,5)) THEN ARN2F304.306
DO I=1,P_FIELD ARN2F304.307
LEVEL=LCTOP(I) ARN2F304.308
IF(LEVEL.EQ.0) THEN ARN2F304.309
STASHWORK(SI(223,5,im_index)+I-1)=RMDI GRB4F305.116
ELSE ARN2F304.311
STASHWORK(SI(223,5,im_index)+I-1) GRB4F305.117
& =AKH(LEVEL)+BKH(LEVEL)*D1(JPSTAR+I-1) ARN2F304.313
END IF ARN2F304.314
END DO ARN2F304.315
END IF ARN2F304.316
ARN2F304.317
C Item 224 ICAO height of convective cloud base ARN2F304.318
ARN2F304.319
IF(SF(224,5))THEN ARN2F304.320
CALL ICAO_HT
(STASHWORK(SI(222,5,im_index)),P_FIELD, GRB4F305.118
& STASHWORK(SI(224,5,im_index))) GRB4F305.119
ENDIF ARN2F304.322
ARN2F304.323
C Item 225 ICAO height of convective cloud top ARN2F304.324
IF(SF(225,5))THEN ARN2F304.325
CALL ICAO_HT
(STASHWORK(SI(223,5,im_index)),P_FIELD, GRB4F305.120
& STASHWORK(SI(225,5,im_index))) GRB4F305.121
ENDIF ARN2F304.327
ARN2F304.328
C Item 220 Convective fraction of lowest cloud ARN2F304.329
ARN2F304.330
IF(SF(220,5)) THEN ARN2F304.331
CALL COPYDIAG
(STASHWORK(SI(220,5,im_index)),LCCA, GRB4F305.122
& FIRST_POINT,LAST_POINT,P_FIELD,ROW_LENGTH, GPB1F403.613
& im_ident,5,220, GPB1F403.614
*CALL ARGPPX
GPB1F403.615
& ICODE,CMESSAGE) GPB1F403.616
GPB1F403.617
IF (ICODE .GT. 0) GOTO 9999 GPB1F403.618
END IF ARN2F304.334
ARN2F304.335
C Item 221 Convective liquid water path of lowest cloud ARN2F304.336
ARN2F304.337
IF(SF(221,5)) THEN ARN2F304.338
CALL COPYDIAG
(STASHWORK(SI(221,5,im_index)),LCCLWP, GRB4F305.123
& FIRST_POINT,LAST_POINT,P_FIELD,ROW_LENGTH, GPB1F403.619
& im_ident,5,221, GPB1F403.620
*CALL ARGPPX
GPB1F403.621
& ICODE,CMESSAGE) GPB1F403.622
GPB1F403.623
IF (ICODE .GT. 0) GOTO 9999 GPB1F403.624
END IF CONV_CT1.332
C AJX1F402.15
C Item 231 CCA times conv. cld base pressure AJX1F402.16
C AJX1F402.17
IF(SF(231,5)) THEN AJX1F402.18
CALL COPYDIAG
(STASHWORK(SI(231,5,im_index)),ICCBPxCCA, AJX1F402.19
& FIRST_POINT,LAST_POINT,P_FIELD,ROW_LENGTH, GPB1F403.625
& im_ident,5,231, GPB1F403.626
*CALL ARGPPX
GPB1F403.627
& ICODE,CMESSAGE) GPB1F403.628
GPB1F403.629
IF (ICODE .GT. 0) GOTO 9999 GPB1F403.630
ENDIF AJX1F402.21
C AJX1F402.22
C Item 232 CCA times conv. cld top pressure AJX1F402.23
C AJX1F402.24
IF(SF(232,5)) THEN AJX1F402.25
CALL COPYDIAG
(STASHWORK(SI(232,5,im_index)),ICCTPxCCA, AJX1F402.26
& FIRST_POINT,LAST_POINT,P_FIELD,ROW_LENGTH, GPB1F403.631
& im_ident,5,232, GPB1F403.632
*CALL ARGPPX
GPB1F403.633
& ICODE,CMESSAGE) GPB1F403.634
GPB1F403.635
IF (ICODE .GT. 0) GOTO 9999 GPB1F403.636
ENDIF AJX1F402.28
C AJX1F402.29
C Item 233 Gridbox mean conv. cld water AJX1F402.30
C AJX1F402.31
IF(SF(233,5)) THEN AJX1F402.32
CALL COPYDIAG_3D
(STASHWORK(SI(233,5,im_index)),GBMCCW, AJX1F402.33
& FIRST_POINT,LAST_POINT,P_FIELD,ROW_LENGTH,Q_LEVELS, AJX1F402.34
& STLIST(1,STINDEX(1,233,5,im_index)),LEN_STLIST,STASH_LEVELS, AJX1F402.35
& NUM_STASH_LEVELS+1, GPB1F403.637
& im_ident,5,233, GPB1F403.638
*CALL ARGPPX
GPB1F403.639
& ICODE,CMESSAGE) GPB1F403.640
IF(ICODE.GT.0) THEN AJX1F402.37
RETURN AJX1F402.38
ENDIF AJX1F402.39
ENDIF AJX1F402.40
C AJX1F402.41
C Item 234 Gridbox mean conv. cld water path AJX1F402.42
C AJX1F402.43
IF(SF(234,5)) THEN AJX1F402.44
CALL COPYDIAG
(STASHWORK(SI(234,5,im_index)),GBMCCWP, AJX1F402.45
& FIRST_POINT,LAST_POINT,P_FIELD,ROW_LENGTH, GPB1F403.641
& im_ident,5,234, GPB1F403.642
*CALL ARGPPX
GPB1F403.643
& ICODE,CMESSAGE) GPB1F403.644
GPB1F403.645
IF (ICODE .GT. 0) GOTO 9999 GPB1F403.646
ENDIF AJX1F402.47
CONV_CT1.333
CL Call STASH to process output CONV_CT1.334
CONV_CT1.335
IF(LTIMER) THEN CONV_CT1.336
CALL TIMER
('STASH ',3) CONV_CT1.337
END IF CONV_CT1.338
CONV_CT1.339
CALL STASH
(a_sm,a_im,5,STASHWORK, GKR0F305.921
*CALL ARGSIZE
@DYALLOC.829
*CALL ARGD1
@DYALLOC.830
*CALL ARGDUMA
@DYALLOC.831
*CALL ARGDUMO
@DYALLOC.832
*CALL ARGDUMW
GKR1F401.199
*CALL ARGSTS
@DYALLOC.833
*CALL ARGPPX
GKR0F305.922
& ICODE,CMESSAGE) @DYALLOC.837
CONV_CT1.341
IF(LTIMER) THEN CONV_CT1.342
CALL TIMER
('STASH ',4) CONV_CT1.343
END IF CONV_CT1.344
CONV_CT1.345
9999 CONTINUE GPB1F403.647
RETURN CONV_CT1.346
END CONV_CT1.347
*ENDIF CONV_CT1.348