*IF DEF,A05_3B GCONV_3B.2
C ******************************COPYRIGHT****************************** GCONV_3B.3
C (c) CROWN COPYRIGHT 1997, METEOROLOGICAL OFFICE, All Rights Reserved. GCONV_3B.4
C GCONV_3B.5
C Use, duplication or disclosure of this code is subject to the GCONV_3B.6
C restrictions as set forth in the contract. GCONV_3B.7
C GCONV_3B.8
C Meteorological Office GCONV_3B.9
C London Road GCONV_3B.10
C BRACKNELL GCONV_3B.11
C Berkshire UK GCONV_3B.12
C RG12 2SZ GCONV_3B.13
C GCONV_3B.14
C If no contract has been raised with this copy of the code, the use, GCONV_3B.15
C duplication or disclosure of it is strictly prohibited. Permission GCONV_3B.16
C to do so must first be obtained in writing from the Head of Numerical GCONV_3B.17
C Modelling at the above address. GCONV_3B.18
C ******************************COPYRIGHT****************************** GCONV_3B.19
C GCONV_3B.20
! Subroutine GLUE_CONV-------------------------------------- GCONV_3B.21
! GCONV_3B.22
! Level 3 control routine GCONV_3B.23
! GCONV_3B.24
! Purpose: Calls CONVECT to calculate and add convection increments. GCONV_3B.25
! It is an extra level of Control routine to avoid the GCONV_3B.26
! use of *IF DEF around calls to different CONVECT routines GCONV_3B.27
! as per proposal of S. Foreman 22/8/94 for plug compatible GCONV_3B.28
! routines. GCONV_3B.29
! Test version with tracers, momentum transports, CAPE closure. GCONV_3B.30
! GCONV_3B.31
! Code Description: GCONV_3B.32
! Language FORTRAN 77 + extensions. GCONV_3B.33
! This code is written to UMDP3 v6 programming standards. GCONV_3B.34
! GCONV_3B.35
! Author: P.Inness Reviewer: C. Wilson GCONV_3B.36
! GCONV_3B.37
! Modification History: GCONV_3B.38
! GCONV_3B.39
! Version Date GCONV_3B.40
! GCONV_3B.41
! 4.3 03/02/97 New deck sdjackson GCONV_3B.42
! 4.4 26/09/97 Provision for 3D conv cloud amount and rain AJX0F404.188
! out before calculation of water path. J.M.G AJX0F404.189
!LL 4.4 Oct 97 Add halo mask to stop redundant calculations AAD2F404.132
!LL Alan Dickinson AAD2F404.133
! GCONV_3B.43
! System components covered : P27 GCONV_3B.44
! GCONV_3B.45
! System task : P0 GCONV_3B.46
! GCONV_3B.47
! Documentation: GCONV_3B.48
! GCONV_3B.49
! END ----------------------------------------------------------------- GCONV_3B.50
GCONV_3B.51
SUBROUTINE GLUE_CONV( 4,3GCONV_3B.52
& NP_FIELD,NPNTS,NLEV,NBL, GCONV_3B.53
& TH,Q,PSTAR,BLAND,U,V,TRACER, GCONV_3B.54
& DTHBYDT,DQBYDT,DUBYDT,DVBYDT, GCONV_3B.55
& RAIN,SNOW, GCONV_3B.56
& CCA,ICCB,ICCT,CCLWP,CCW, GCONV_3B.57
& ICCBPxCCA,ICCTPxCCA,GBMCCWP,GBMCCW, GCONV_3B.58
& LCBASE,LCTOP,LCCA,LCCLWP, GCONV_3B.59
& CAPE, GCONV_3B.60
& EXNER,AK,BK,AKM12,BKM12,DELAK,DELBK, GCONV_3B.61
& TIMESTEP, GCONV_3B.62
& T1_SD,Q1_SD, GCONV_3B.63
& L_MOM,L_TRACER,L_CAPE,NTRA,TRLEV,L_XSCOMP, GCONV_3B.64
& L_SDXS GCONV_3B.65
*IF DEF,SCMA AJC0F405.141
C For Observational forcing AJC0F405.142
& ,DTHUD,DTHDD,DQUD,DQDD AJC0F405.143
*ENDIF AJC0F405.144
*IF DEF,MPP AAD2F404.134
& ,l_halo AAD2F404.135
*ENDIF AAD2F404.136
& ,N_CCA_LEV, L_3D_CCA, L_CCW, MPARWTR AJX0F404.190
& , ANVIL_FACTOR, TOWER_FACTOR, UD_FACTOR, L_CLOUD_DEEP AJX3F405.115
& , L_PHASE_LIM, UP_FLUX,FLG_UP_FLX,DWN_FLUX,FLG_DWN_FLX AJX3F405.116
& , ENTRAIN_UP, FLG_ENTR_UP,DETRAIN_UP,FLG_DETR_UP,ENTRAIN_DWN AJX3F405.117
& , FLG_ENTR_DWN,DETRAIN_DWN,FLG_DETR_DWN AJX3F405.118
& ) GCONV_3B.66
IMPLICIT NONE GCONV_3B.67
GCONV_3B.68
!---------------------------------------------------------------------- GCONV_3B.69
!Some of the following variables are 'dummy' as they are used in other GCONV_3B.70
! CONVECT versions GCONV_3B.71
!----------------------------------------------------------------------- GCONV_3B.72
!---------------------------------------------------------------------- GCONV_3B.73
! IN variables GCONV_3B.74
!--------------------------------------------------------------------- GCONV_3B.75
INTEGER NP_FIELD ! LENGTH OF DATA (ALSO USED TO GCONV_3B.76
! SPECIFY STARTING POINT OF GCONV_3B.77
! DATA PASSED IN) GCONV_3B.78
C GCONV_3B.79
INTEGER NPNTS ! IN FULL VECTOR LENGTH GCONV_3B.80
C GCONV_3B.81
INTEGER NLEV ! IN NUMBER OF MODEL LAYERS GCONV_3B.82
C GCONV_3B.83
INTEGER NBL ! IN NUMBER OF BOUNDARY LAYER LEVELS GCONV_3B.84
C GCONV_3B.85
INTEGER NTRA ! NUMBER OF TRACER FIELDS GCONV_3B.86
C GCONV_3B.87
INTEGER TRLEV ! NUMBER OF MODEL LEVELS ON WHICH GCONV_3B.88
! TRACERS ARE INCLUDED GCONV_3B.89
INTEGER N_CCA_LEV ! IN Number of convective cloud levels AJX0F404.192
C GCONV_3B.90
LOGICAL BLAND(NP_FIELD) ! IN LAND/SEA MASK GCONV_3B.91
C GCONV_3B.92
LOGICAL L_TRACER ! IN SWITCH FOR INCLUSION OF TRACERS GCONV_3B.93
C GCONV_3B.94
LOGICAL L_MOM ! IN SWITCH FOR INCLUSION OF GCONV_3B.95
! MOMENTUM TRANSPORTS GCONV_3B.96
C GCONV_3B.97
LOGICAL L_XSCOMP ! IN SWITCH FOR ALLOWING COMPENSATING GCONV_3B.98
! COOLING AND DRYING OF THE GCONV_3B.99
! ENVIRONMENT IN INITIATING LAYER GCONV_3B.100
C GCONV_3B.101
LOGICAL L_SDXS ! IN SWITCH FOR ALLOWING PARCEL EXCESS GCONV_3B.102
! TO BE SET TO S.D. OF TURBULENT GCONV_3B.103
! FLUCTUATIONS IN LOWEST MODEL GCONV_3B.104
! LAYER GCONV_3B.105
LOGICAL L_CAPE ! IN SWITCH FOR USE OF CAPE CLOSURE GCONV_3B.106
C GCONV_3B.107
LOGICAL L_3D_CCA ! IN SWITCH FOR USE OF 3D CLOUD AMOUNT AJX0F404.193
C AJX0F404.194
LOGICAL L_CCW ! IN IF .TRUE. THEN PRECIP NOT INC. IN AJX0F404.195
! ! CONV. CLOUD WATER PATH. AJX0F404.196
! AJX3F405.119
LOGICAL L_CLOUD_DEEP ! IN If TRUE then use depth criterion AJX3F405.120
! ! to determine existence of anvils AJX3F405.121
! AJX3F405.122
LOGICAL L_PHASE_LIM ! IN DUMMY variable added to match AJX3F405.123
! ! argument lists. AJX3F405.124
C AJX0F404.197
REAL PSTAR(NP_FIELD) ! IN SURFACE PRESSURE (PA) GCONV_3B.108
C GCONV_3B.109
REAL EXNER(NP_FIELD,NLEV+1) ! IN EXNER RATIO GCONV_3B.110
C GCONV_3B.111
REAL AK(NLEV), ! IN HYBRID CO-ORDINATE COEFFICIENTS GCONV_3B.112
* BK(NLEV) ! DEFINE PRESSURE AT MID-POINT GCONV_3B.113
! OF LAYER K GCONV_3B.114
C GCONV_3B.115
REAL AKM12(NLEV+1), ! IN HYBRID CO-ORDINATE COEFFICIENTS GCONV_3B.116
* BKM12(NLEV+1) ! TO DEFINE PRESSURE AT GCONV_3B.117
! LEVEL K-1/2 GCONV_3B.118
C GCONV_3B.119
REAL DELAK(NLEV), ! IN DIFFERENCE IN HYBRID CO-ORDINATE GCONV_3B.120
* DELBK(NLEV) ! COEFFICIENTS ACROSS LAYER K GCONV_3B.121
C GCONV_3B.122
REAL TIMESTEP ! IN MODEL TIMESTEP (SECS) GCONV_3B.123
C GCONV_3B.124
REAL U(NP_FIELD,NLEV) ! IN MODEL U FIELD (M/S) GCONV_3B.125
C GCONV_3B.126
REAL V(NP_FIELD,NLEV) ! IN MODEL V FIELD (M/S) GCONV_3B.127
C GCONV_3B.128
REAL T1_SD(NP_FIELD) ! IN Standard deviation of turbulent GCONV_3B.129
C ! fluctuations of layer 1 GCONV_3B.130
C ! temperature (K). GCONV_3B.131
REAL Q1_SD(NP_FIELD) ! IN Standard deviation of turbulent GCONV_3B.132
C ! fluctuations of layer 1 GCONV_3B.133
C ! humidity (kg/kg). GCONV_3B.134
REAL MPARWTR ! IN Reservoir of convective cloud water AJX0F404.198
! ! left in a layer after conv. precip. AJX0F404.199
REAL ANVIL_FACTOR ! IN used in calculation of cloud amount AJX0F404.200
& ,TOWER_FACTOR ! on model levels if L_3D_CCA = .T. AJX0F404.201
! AJX3F405.125
REAL UD_FACTOR ! IN Factor used in calculation of CCWP AJX3F405.126
! ! for radiation, if L_CCW is true. AJX3F405.127
! AJX3F405.128
*IF DEF,MPP AAD2F404.138
LOGICAL l_halo(NP_FIELD) ! IN Mask for halos AAD2F404.139
*ENDIF AAD2F404.140
LOGICAL FLG_UP_FLX ! STASH FLAG FOR UPDRAUGHT MASS FLUX API2F405.156
C GCONV_3B.135
LOGICAL FLG_DWN_FLX ! STASH FLAG FOR DOWNDRAGHT MASS FLUX API2F405.157
! API2F405.158
LOGICAL FLG_ENTR_UP ! STASH FLAG FOR UPDRAUGHT ENTRAINMENT API2F405.159
! API2F405.160
LOGICAL FLG_ENTR_DWN ! STASH FLAG FOR DOWNDRAUGHT ENTRAINMN API2F405.161
! API2F405.162
LOGICAL FLG_DETR_UP ! STASH FLAG FOR UPDRAUGHT DETRAINMENT API2F405.163
! API2F405.164
LOGICAL FLG_DETR_DWN ! STASH FLAG FOR DOWNDRAUGHT DETRAINMN API2F405.165
! API2F405.166
!---------------------------------------------------------------------- GCONV_3B.136
! INOUT variables GCONV_3B.137
!---------------------------------------------------------------------- GCONV_3B.138
REAL TH(NP_FIELD,NLEV) ! INOUT GCONV_3B.139
! IN MODEL POTENTIAL TEMPERATURE (K) GCONV_3B.140
! OUT MODEL POTENTIAL TEMPERATURE GCONV_3B.141
! AFTER CONVECTION (K) GCONV_3B.142
C GCONV_3B.143
REAL Q(NP_FIELD,NLEV) ! INOUT GCONV_3B.144
! IN MODEL MIXING RATIO (KG/KG) GCONV_3B.145
! OUT MODEL MIXING RATIO AFTER GCONV_3B.146
! AFTER CONVECTION (KG/KG) GCONV_3B.147
C GCONV_3B.148
REAL TRACER(NP_FIELD,TRLEV,NTRA)! INOUT GCONV_3B.149
! IN MODEL TRACER FIELDS (KG/KG) GCONV_3B.150
! OUT MODEL TRACER FIELDS AFTER GCONV_3B.151
! CONVECTION (KG/KG) GCONV_3B.152
C GCONV_3B.153
GCONV_3B.154
!---------------------------------------------------------------------- GCONV_3B.155
! OUT variables GCONV_3B.156
!---------------------------------------------------------------------- GCONV_3B.157
REAL DTHBYDT(NP_FIELD,NLEV) ! OUT INCREMENTS TO POTENTIAL GCONV_3B.158
! TEMPERATURE DUE TO CONVECTION GCONV_3B.159
! (K/S) GCONV_3B.160
C GCONV_3B.161
REAL DQBYDT(NP_FIELD,NLEV) ! OUT INCREMENTS TO MIXING RATIO GCONV_3B.162
! DUE TO CONVECTION (KG/KG/S) GCONV_3B.163
C GCONV_3B.164
REAL DUBYDT(NP_FIELD,NLEV) ! OUT INCREMENTS TO U DUE TO GCONV_3B.165
! CONVECTIVE MOMENTUM TRANSPORT GCONV_3B.166
! (M/S**2) GCONV_3B.167
C GCONV_3B.168
REAL DVBYDT(NP_FIELD,NLEV) ! OUT INCREMENTS TO V DUE TO GCONV_3B.169
! CONVECTIVE MOMENTUM TRANSPORT GCONV_3B.170
! (M/S**2) GCONV_3B.171
*IF DEF,SCMA AJC0F405.145
Real DTHUD(NP_FIELD,NLEV) AJC0F405.146
Real DTHDD(NP_FIELD,NLEV) AJC0F405.147
Real DQUD(NP_FIELD,NLEV) AJC0F405.148
Real DQDD(NP_FIELD,NLEV) AJC0F405.149
*ENDIF AJC0F405.150
C GCONV_3B.172
REAL RAIN(NP_FIELD) ! OUT SURFACE CONVECTIVE RAINFALL GCONV_3B.173
! (KG/M**2/S) GCONV_3B.174
C GCONV_3B.175
REAL SNOW(NP_FIELD) ! OUT SURFACE CONVECTIVE SNOWFALL GCONV_3B.176
! (KG/M**2/S) GCONV_3B.177
C GCONV_3B.178
REAL CCA(NP_FIELD,N_CCA_LEV) ! OUT CONVECTIVE CLOUD AMOUNT (%) AJX0F404.202
! ! 2D or 3D depending on L_3D_CCA AJX0F404.203
C GCONV_3B.180
INTEGER ICCB(NP_FIELD) ! OUT CONVECTIVE CLOUD BASE LEVEL GCONV_3B.181
C GCONV_3B.182
INTEGER ICCT(NP_FIELD) ! OUT CONVECTIVE CLOUD TOP LEVEL GCONV_3B.183
C GCONV_3B.184
REAL CCLWP(NP_FIELD) ! OUT CONDENSED WATER PATH (KG/M**2) GCONV_3B.185
C GCONV_3B.186
REAL CCW(NP_FIELD,NLEV) ! OUT CONVECTIVE CLOUD LIQUID WATER GCONV_3B.187
! (G/KG) ON MODEL LEVELS GCONV_3B.188
C GCONV_3B.189
REAL ICCBPxCCA(NP_FIELD) ! OUT CONV. CLD BASE PRESSURE x CCA GCONV_3B.190
C GCONV_3B.191
REAL ICCTPxCCA(NP_FIELD) ! OUT CONV. CLD TOP PRESSURE x CCA GCONV_3B.192
C GCONV_3B.193
REAL GBMCCWP(NP_FIELD) ! OUT GRIDBOX MEAN CCWP GCONV_3B.194
C GCONV_3B.195
REAL GBMCCW(NP_FIELD,NLEV) ! OUT GRIDBOX MEAN CCW GCONV_3B.196
C GCONV_3B.197
REAL LCCA(NP_FIELD) ! OUT LOWEST CONV.CLOUD AMOUNT (%) GCONV_3B.198
C GCONV_3B.199
INTEGER LCBASE(NP_FIELD) ! OUT LOWEST CONV.CLOUD BASE LEVEL GCONV_3B.200
C GCONV_3B.201
INTEGER LCTOP(NP_FIELD) ! OUT LOWEST CONV.CLOUD TOP LEVEL GCONV_3B.202
C GCONV_3B.203
REAL LCCLWP(NP_FIELD) ! OUT CONDENSED WATER PATH (KG/M**2) GCONV_3B.204
! FOR LOWEST CONV.CLOUD GCONV_3B.205
C GCONV_3B.206
REAL CAPE(NPNTS) ! OUT MODEL VALUES OF CONVECTIVE GCONV_3B.207
! AVAILABLE POTENTIAL ENERGY GCONV_3B.208
! API2F405.167
REAL UP_FLUX(NP_FIELD,NLEV) ! OUT UPDRAUGHT MASS FLUX API2F405.168
! API2F405.169
REAL DWN_FLUX(NP_FIELD,NLEV) ! OUT DOWNDRAUGHT MASS FLUX API2F405.170
! API2F405.171
REAL ENTRAIN_UP(NP_FIELD,NLEV) ! OUT FRACTIOAL ENTRAINMENT RATE F API2F405.172
! UPDRAUGHTS API2F405.173
! API2F405.174
REAL DETRAIN_UP(NP_FIELD,NLEV) ! OUT FRACTIONAL DETRAINMEN RATE API2F405.175
! UPDRAUGHTS API2F405.176
! API2F405.177
REAL ENTRAIN_DWN(NP_FIELD,NLEV) ! OUT FRACTIONAL DETRAINMENT RATE API2F405.178
! DOWNDRAUGHTS API2F405.179
! API2F405.180
REAL DETRAIN_DWN(NP_FIELD,NLEV) ! OUT FRACTIONAL DETRAINMENT RATE API2F405.181
API2F405.182
! FOR DIAGNOSTIC OUTPUT GCONV_3B.209
GCONV_3B.210
! External subroutines called GCONV_3B.211
GCONV_3B.212
EXTERNAL GCONV_3B.213
& CONVECT GCONV_3B.214
GCONV_3B.215
! Local variables GCONV_3B.216
GCONV_3B.217
GCONV_3B.218
!--------------- SECTION 5 CONVECTION ------------------------ GCONV_3B.219
GCONV_3B.220
! 5.2 Call CONVECT to calculate and add convection increments GCONV_3B.221
GCONV_3B.222
CALL CONVECT
( GCONV_3B.223
& NP_FIELD,NPNTS,NLEV,NBL, GCONV_3B.224
& TH,Q,PSTAR,BLAND,U,V,TRACER, GCONV_3B.225
& DTHBYDT,DQBYDT,DUBYDT,DVBYDT, GCONV_3B.226
& RAIN,SNOW, GCONV_3B.227
& CCA,ICCB,ICCT,CCLWP,CCW, GCONV_3B.228
& ICCBPxCCA,ICCTPxCCA,GBMCCWP,GBMCCW, GCONV_3B.229
& LCBASE,LCTOP,LCCA,LCCLWP, GCONV_3B.230
& CAPE, GCONV_3B.231
& EXNER,AK,BK,AKM12,BKM12,DELAK,DELBK, GCONV_3B.232
& TIMESTEP, GCONV_3B.233
& T1_SD,Q1_SD, GCONV_3B.234
& L_MOM,L_TRACER,L_CAPE,NTRA,TRLEV,L_XSCOMP, GCONV_3B.235
& L_SDXS GCONV_3B.236
& ,N_CCA_LEV,L_3D_CCA,L_CCW,MPARWTR AJX0F404.204
& ,ANVIL_FACTOR ,TOWER_FACTOR AJX0F404.205
*IF DEF,SCMA AJC0F405.151
& ,DTHUD,DTHDD,DQUD,DQDD AJC0F405.152
*ENDIF AJC0F405.153
*IF DEF,MPP AAD2F404.141
& ,l_halo AAD2F404.142
*ENDIF AAD2F404.143
& ,UD_FACTOR, L_CLOUD_DEEP AJX3F405.129
& ,UP_FLUX,FLG_UP_FLX,DWN_FLUX,FLG_DWN_FLX,ENTRAIN_UP AJX3F405.130
& ,FLG_ENTR_UP,DETRAIN_UP,FLG_DETR_UP,ENTRAIN_DWN AJX3F405.131
& ,FLG_ENTR_DWN,DETRAIN_DWN,FLG_DETR_DWN AJX3F405.132
& ) GCONV_3B.237
GCONV_3B.238
RETURN GCONV_3B.239
END GCONV_3B.240
*ENDIF GCONV_3B.241