*IF DEF,A05_2A,OR,DEF,A05_2C ARJ1F402.18
C (c) CROWN COPYRIGHT 1995, METEOROLOGICAL OFFICE, All Rights Reserved. GTS2F400.14776
C GTS2F400.14777
C Use, duplication or disclosure of this code is subject to the GTS2F400.14778
C restrictions as set forth in the contract. GTS2F400.14779
C GTS2F400.14780
C Meteorological Office GTS2F400.14781
C London Road GTS2F400.14782
C BRACKNELL GTS2F400.14783
C Berkshire UK GTS2F400.14784
C RG12 2SZ GTS2F400.14785
C GTS2F400.14786
C If no contract has been raised with this copy of the code, the use, GTS2F400.14787
C duplication or disclosure of it is strictly prohibited. Permission GTS2F400.14788
C to do so must first be obtained in writing from the Head of Numerical GTS2F400.14789
C Modelling at the above address. GTS2F400.14790
C ******************************COPYRIGHT****************************** GTS2F400.14791
C GTS2F400.14792
! Subroutine GLUE_CONV-------------------------------------- GCONV_2A.3
! GCONV_2A.4
! Level 3 control routine GCONV_2A.5
! GCONV_2A.6
! Purpose: Calls CONVECT to calculate and add convection increments. GCONV_2A.7
! It is an extra level of Control routine to avoid the GCONV_2A.8
! use of *IF DEF around calls to different CONVECT routines GCONV_2A.9
! as per proposal of S. Foreman 22/8/94 for plug compatible GCONV_2A.10
! routines. GCONV_2A.11
! 2A version. Standard downdraught version. GCONV_2A.12
! GCONV_2A.13
! Code Description: GCONV_2A.14
! Language FORTRAN 77 + extensions. GCONV_2A.15
! This code is written to UMDP3 v6 programming standards. GCONV_2A.16
! GCONV_2A.17
! Author: P.Inness Reviewer: C. Wilson GCONV_2A.18
! GCONV_2A.19
! Modification History from U.M. version 4.0: GCONV_2A.20
! GCONV_2A.21
! Version Date GCONV_2A.22
! GCONV_2A.23
! 4.1 10/6/96 : Changed dimensions of momentum arrays API4F401.30
! to allow convection to be split into API4F401.31
! segments when momentum transports are API4F401.32
! used. API4F401.33
! 4.4 14/10/97 : Argument list changed to be consistent AJX0F404.145
! with CONV_CTL at vn4.4. J.M.Gregory AJX0F404.146
!LL 4.4 Oct 97 Add halo mask to stop redundant calculations AAD2F404.89
!LL Add arguments L_XSCOMP and LSDXS to fix AAD2F404.90
!LL argument mismatch AAD2F404.91
!LL Alan Dickinson AAD2F404.92
! API4F401.34
! System components covered : P27 GCONV_2A.24
! GCONV_2A.25
! System task : P0 GCONV_2A.26
! GCONV_2A.27
! Documentation: GCONV_2A.28
! GCONV_2A.29
! END ----------------------------------------------------------------- GCONV_2A.30
GCONV_2A.31
SUBROUTINE GLUE_CONV( 4,3GCONV_2A.32
& NP_FIELD,NPNTS,NLEV,NBL, GCONV_2A.33
& TH,Q,PSTAR,BLAND,U,V,TRACER, GCONV_2A.34
& DTHBYDT,DQBYDT,DUBYDT,DVBYDT, GCONV_2A.35
& RAIN,SNOW, GCONV_2A.36
& CCA,ICCB,ICCT,CCLWP,CCW, GCONV_2A.37
& ICCBPxCCA,ICCTPxCCA,GBMCCWP,GBMCCW, AJX1F402.58
& LCBASE,LCTOP,LCCA,LCCLWP, GCONV_2A.38
& CAPE, GCONV_2A.39
& EXNER,AK,BK,AKM12,BKM12,DELAK,DELBK, GCONV_2A.40
& TIMESTEP, GCONV_2A.41
& T1_SD,Q1_SD, GCONV_2A.42
& L_MOM,L_TRACER,L_CAPE, GCONV_2A.43
& NTRA,TRLEV,L_XSCOMP,L_SDXS AAD2F404.93
*IF DEF,SCMA AJC0F405.116
& ,DTHUD,DTHDD,DQUD,DQDD AJC0F405.117
*ENDIF AJC0F405.118
*IF DEF,MPP AAD2F404.94
& ,l_halo AAD2F404.95
*ENDIF AAD2F404.96
& ,N_CCA_LEV, L_3D_CCA, L_CCW, MPARWTR AJX0F404.147
& , ANVIL_FACTOR, TOWER_FACTOR, UD_FACTOR AJX3F405.58
& , L_CLOUD_DEEP, L_PHASE_LIM AJX3F405.59
& , UP_FLUX,FLG_UP_FLX,DWN_FLUX,FLG_DWN_FLX AJX3F405.60
& , ENTRAIN_UP, FLG_ENTR_UP,DETRAIN_UP,FLG_DETR_UP AJX3F405.61
& , ENTRAIN_DWN, FLG_ENTR_DWN,DETRAIN_DWN,FLG_DETR_DWN AJX3F405.62
& ) GCONV_2A.45
IMPLICIT NONE GCONV_2A.46
GCONV_2A.47
!---------------------------------------------------------------------- GCONV_2A.48
!Some of the following variables are 'dummy' as they are used in other GCONV_2A.49
! CONVECT versions GCONV_2A.50
!----------------------------------------------------------------------- GCONV_2A.51
!---------------------------------------------------------------------- GCONV_2A.52
! IN variables GCONV_2A.53
!--------------------------------------------------------------------- GCONV_2A.54
INTEGER NP_FIELD ! LENGTH OF DATA (ALSO USED TO GCONV_2A.55
! SPECIFY STARTING POINT OF GCONV_2A.56
! DATA PASSED IN) GCONV_2A.57
C GCONV_2A.58
INTEGER NPNTS ! IN FULL VECTOR LENGTH GCONV_2A.59
C GCONV_2A.60
INTEGER NLEV ! IN NUMBER OF MODEL LAYERS GCONV_2A.61
C GCONV_2A.62
INTEGER NBL ! IN NUMBER OF BOUNDARY LAYER LEVELS GCONV_2A.63
C GCONV_2A.64
INTEGER NTRA ! NUMBER OF TRACER FIELDS GCONV_2A.65
C GCONV_2A.66
INTEGER TRLEV ! NUMBER OF MODEL LEVELS ON WHICH GCONV_2A.67
! TRACERS ARE INCLUDED GCONV_2A.68
C GCONV_2A.69
LOGICAL BLAND(NP_FIELD) ! IN LAND/SEA MASK GCONV_2A.70
C GCONV_2A.71
LOGICAL L_TRACER ! IN SWITCH FOR INCLUSION OF TRACERS GCONV_2A.72
C GCONV_2A.73
LOGICAL L_MOM ! IN SWITCH FOR INCLUSION OF GCONV_2A.74
! MOMENTUM TRANSPORTS GCONV_2A.75
LOGICAL L_XSCOMP ! IN unused argument AAD2F404.97
LOGICAL L_SDXS ! IN unused argument AAD2F404.98
C GCONV_2A.76
LOGICAL L_CAPE ! IN SWITCH FOR USE OF CAPE CLOSURE GCONV_2A.77
! GCONV_2A.78
REAL PSTAR(NP_FIELD) ! IN SURFACE PRESSURE (PA) GCONV_2A.79
C GCONV_2A.80
REAL EXNER(NP_FIELD,NLEV+1) ! IN EXNER RATIO GCONV_2A.81
C GCONV_2A.82
REAL AK(NLEV), ! IN HYBRID CO-ORDINATE COEFFICIENTS GCONV_2A.83
* BK(NLEV) ! DEFINE PRESSURE AT MID-POINT GCONV_2A.84
! OF LAYER K GCONV_2A.85
C GCONV_2A.86
REAL AKM12(NLEV+1), ! IN HYBRID CO-ORDINATE COEFFICIENTS GCONV_2A.87
* BKM12(NLEV+1) ! TO DEFINE PRESSURE AT GCONV_2A.88
! LEVEL K-1/2 GCONV_2A.89
C GCONV_2A.90
REAL DELAK(NLEV), ! IN DIFFERENCE IN HYBRID CO-ORDINATE GCONV_2A.91
* DELBK(NLEV) ! COEFFICIENTS ACROSS LAYER K GCONV_2A.92
C GCONV_2A.93
REAL TIMESTEP ! IN MODEL TIMESTEP (SECS) GCONV_2A.94
C GCONV_2A.95
REAL U(NP_FIELD,NLEV) ! IN MODEL U FIELD (M/S) API4F401.35
C GCONV_2A.97
REAL V(NP_FIELD,NLEV) ! IN MODEL V FIELD (M/S) API4F401.36
C GCONV_2A.99
REAL T1_SD(NP_FIELD) ! IN Standard deviation of turbulent GCONV_2A.100
! fluctuations of layer 1 GCONV_2A.101
! temperature (K). GCONV_2A.102
REAL Q1_SD(NP_FIELD) ! IN Standard deviation of turbulent GCONV_2A.103
! fluctuations of layer 1 GCONV_2A.104
! humidity (kg/kg). GCONV_2A.105
*IF DEF,MPP AAD2F404.99
LOGICAL l_halo(NP_FIELD) ! IN Mask for halos AAD2F404.100
*ENDIF AAD2F404.101
! GCONV_2A.106
!---------------------------------------------------------------------- GCONV_2A.107
! INOUT variables GCONV_2A.108
!---------------------------------------------------------------------- GCONV_2A.109
REAL TH(NP_FIELD,NLEV) ! INOUT GCONV_2A.110
! IN MODEL POTENTIAL TEMPERATURE (K) GCONV_2A.111
! OUT MODEL POTENTIAL TEMPERATURE GCONV_2A.112
! AFTER CONVECTION (K) GCONV_2A.113
C GCONV_2A.114
REAL Q(NP_FIELD,NLEV) ! INOUT GCONV_2A.115
! IN MODEL MIXING RATIO (KG/KG) GCONV_2A.116
! OUT MODEL MIXING RATIO AFTER GCONV_2A.117
! AFTER CONVECTION (KG/KG) GCONV_2A.118
C GCONV_2A.119
REAL TRACER(NP_FIELD,TRLEV,NTRA)! INOUT GCONV_2A.120
! IN MODEL TRACER FIELDS (KG/KG) GCONV_2A.121
! OUT MODEL TRACER FIELDS AFTER GCONV_2A.122
! CONVECTION (KG/KG) GCONV_2A.123
C GCONV_2A.124
GCONV_2A.125
!---------------------------------------------------------------------- GCONV_2A.126
! OUT variables GCONV_2A.127
!---------------------------------------------------------------------- GCONV_2A.128
REAL DTHBYDT(NP_FIELD,NLEV) ! OUT INCREMENTS TO POTENTIAL GCONV_2A.129
! TEMPERATURE DUE TO CONVECTION GCONV_2A.130
! (K/S) GCONV_2A.131
C GCONV_2A.132
REAL DQBYDT(NP_FIELD,NLEV) ! OUT INCREMENTS TO MIXING RATIO GCONV_2A.133
! DUE TO CONVECTION (KG/KG/S) GCONV_2A.134
C GCONV_2A.135
REAL DUBYDT(NP_FIELD,NLEV) ! OUT INCREMENTS TO U DUE TO API4F401.37
! CONVECTIVE MOMENTUM TRANSPORT GCONV_2A.137
! (M/S**2) GCONV_2A.138
C GCONV_2A.139
REAL DVBYDT(NP_FIELD,NLEV) ! OUT INCREMENTS TO V DUE TO API4F401.38
! CONVECTIVE MOMENTUM TRANSPORT GCONV_2A.141
! (M/S**2) GCONV_2A.142
*IF DEF,SCMA AJC0F405.119
Real DTHUD(NP_FIELD,NLEV) AJC0F405.120
Real DTHDD(NP_FIELD,NLEV) AJC0F405.121
Real DQUD(NP_FIELD,NLEV) AJC0F405.122
Real DQDD(NP_FIELD,NLEV) AJC0F405.123
*ENDIF AJC0F405.124
C GCONV_2A.143
REAL RAIN(NP_FIELD) ! OUT SURFACE CONVECTIVE RAINFALL GCONV_2A.144
! (KG/M**2/S) GCONV_2A.145
C GCONV_2A.146
REAL SNOW(NP_FIELD) ! OUT SURFACE CONVECTIVE SNOWFALL GCONV_2A.147
! (KG/M**2/S) GCONV_2A.148
C GCONV_2A.149
REAL CCA(NP_FIELD) ! OUT CONVECTIVE CLOUD AMOUNT (%) GCONV_2A.150
C GCONV_2A.151
INTEGER ICCB(NP_FIELD) ! OUT CONVECTIVE CLOUD BASE LEVEL GCONV_2A.152
C GCONV_2A.153
INTEGER ICCT(NP_FIELD) ! OUT CONVECTIVE CLOUD TOP LEVEL GCONV_2A.154
C GCONV_2A.155
REAL CCLWP(NP_FIELD) ! OUT CONDENSED WATER PATH (KG/M**2) GCONV_2A.156
C GCONV_2A.157
REAL CCW(NP_FIELD,NLEV) ! OUT CONVECTIVE CLOUD LIQUID WATER GCONV_2A.158
! (G/KG) ON MODEL LEVELS GCONV_2A.159
C GCONV_2A.160
REAL ICCBPxCCA(NP_FIELD) ! OUT CONV. CLD BASE PRESSURE x CCA AJX1F402.59
C AJX1F402.60
REAL ICCTPxCCA(NP_FIELD) ! OUT CONV. CLD TOP PRESSURE x CCA AJX1F402.61
C AJX1F402.62
REAL GBMCCWP(NP_FIELD) ! OUT GRIDBOX MEAN CCWP AJX1F402.63
C AJX1F402.64
REAL GBMCCW(NP_FIELD,NLEV) ! OUT GRIDBOX MEAN CCW AJX1F402.65
C AJX1F402.66
REAL LCCA(NP_FIELD) ! OUT LOWEST CONV.CLOUD AMOUNT (%) GCONV_2A.161
C GCONV_2A.162
INTEGER LCBASE(NP_FIELD) ! OUT LOWEST CONV.CLOUD BASE LEVEL GCONV_2A.163
C GCONV_2A.164
INTEGER LCTOP(NP_FIELD) ! OUT LOWEST CONV.CLOUD TOP LEVEL GCONV_2A.165
C GCONV_2A.166
REAL LCCLWP(NP_FIELD) ! OUT CONDENSED WATER PATH (KG/M**2) GCONV_2A.167
! FOR LOWEST CONV.CLOUD GCONV_2A.168
C GCONV_2A.169
REAL CAPE(NPNTS) ! OUT MODEL VALUES OF CONVECTIVE GCONV_2A.170
! AVAILABLE POTENTIAL ENERGY GCONV_2A.171
! FOR DIAGNOSTIC OUTPUT GCONV_2A.172
GCONV_2A.173
! External subroutines called GCONV_2A.174
GCONV_2A.175
EXTERNAL GCONV_2A.176
& CONVECT GCONV_2A.177
GCONV_2A.178
! Local variables GCONV_2A.179
GCONV_2A.180
REAL MPARWTR ! \ AJX0F404.149
&, ANVIL_FACTOR ! \ DUMMY variables added to match AJX3F405.63
&, TOWER_FACTOR ! / argument list AJX0F404.151
&, UD_FACTOR ! / AJX3F405.64
! AJX0F404.152
INTEGER N_CCA_LEV ! DUMMY AJX0F404.153
! AJX0F404.154
LOGICAL L_3D_CCA !\ DUMMY variables added to match arg. AJX3F405.65
&, L_CCW ! \ list passed in from CONV_CTL AJX3F405.66
&, L_CLOUD_DEEP ! / AJX3F405.67
&, L_PHASE_LIM !/ AJX3F405.68
! AJX3F405.69
LOGICAL FLG_UP_FLX ! Dummy variable to match CONV_CTL arg list AJX3F405.70
! AJX3F405.71
LOGICAL FLG_DWN_FLX ! " " AJX3F405.72
! AJX3F405.73
LOGICAL FLG_ENTR_UP ! " " AJX3F405.74
! AJX3F405.75
LOGICAL FLG_ENTR_DWN ! " " AJX3F405.76
! AJX3F405.77
LOGICAL FLG_DETR_UP ! " " AJX3F405.78
! AJX3F405.79
LOGICAL FLG_DETR_DWN ! " " AJX3F405.80
! AJX3F405.81
REAL UP_FLUX(NP_FIELD,NLEV) ! " " AJX3F405.82
! AJX3F405.83
REAL DWN_FLUX(NP_FIELD,NLEV) ! " " AJX3F405.84
! AJX3F405.85
REAL ENTRAIN_UP(NP_FIELD,NLEV) ! " " AJX3F405.86
! AJX3F405.87
REAL DETRAIN_UP(NP_FIELD,NLEV) ! " " AJX3F405.88
! AJX3F405.89
REAL ENTRAIN_DWN(NP_FIELD,NLEV) ! " " AJX3F405.90
! AJX3F405.91
REAL DETRAIN_DWN(NP_FIELD,NLEV) ! " " AJX3F405.92
GCONV_2A.181
!--------------- SECTION 5 CONVECTION ------------------------ GCONV_2A.182
GCONV_2A.183
! 5.2 Call CONVECT to calculate and add convection increments GCONV_2A.184
GCONV_2A.185
CALL CONVECT
( GCONV_2A.186
& NP_FIELD,NPNTS,NLEV, GCONV_2A.187
& TH,Q,PSTAR,BLAND, GCONV_2A.188
& DTHBYDT,DQBYDT, GCONV_2A.189
& RAIN,SNOW, GCONV_2A.190
& CCA,ICCB,ICCT,CCLWP,CCW, GCONV_2A.191
& ICCBPxCCA,ICCTPxCCA,GBMCCWP,GBMCCW, AJX1F402.67
& LCBASE,LCTOP,LCCA,LCCLWP, GCONV_2A.192
& CAPE, GCONV_2A.193
& EXNER,AK,BK,AKM12,BKM12,DELAK,DELBK, GCONV_2A.194
& TIMESTEP GCONV_2A.195
*IF DEF,SCMA AJC0F405.125
& ,DTHUD,DTHDD,DQUD,DQDD AJC0F405.126
*ENDIF AJC0F405.127
*IF DEF,MPP AAD2F404.102
& , l_halo AAD2F404.103
*ENDIF AAD2F404.104
& ) GCONV_2A.196
GCONV_2A.197
RETURN GCONV_2A.198
END GCONV_2A.199
*ENDIF GCONV_2A.200