*IF DEF,A03_3A,OR,DEF,A03_5A,OR,DEF,A03_5B,OR,DEF,A03_7A,OR,DEF,A03_6A ARN1F404.2
C ******************************COPYRIGHT****************************** GTS2F400.10603
C (c) CROWN COPYRIGHT 1995, METEOROLOGICAL OFFICE, All Rights Reserved. GTS2F400.10604
C GTS2F400.10605
C Use, duplication or disclosure of this code is subject to the GTS2F400.10606
C restrictions as set forth in the contract. GTS2F400.10607
C GTS2F400.10608
C Meteorological Office GTS2F400.10609
C London Road GTS2F400.10610
C BRACKNELL GTS2F400.10611
C Berkshire UK GTS2F400.10612
C RG12 2SZ GTS2F400.10613
C GTS2F400.10614
C If no contract has been raised with this copy of the code, the use, GTS2F400.10615
C duplication or disclosure of it is strictly prohibited. Permission GTS2F400.10616
C to do so must first be obtained in writing from the Head of Numerical GTS2F400.10617
C Modelling at the above address. GTS2F400.10618
C ******************************COPYRIGHT****************************** GTS2F400.10619
C GTS2F400.10620
C*LL SUBROUTINE TR_MIX ------------------------------------------------ TRMIX2C.3
CLL TRMIX2C.4
CLL Purpose: Calculate tracer flux and pass through to IMP_MIX to solve TRMIX2C.5
CLL TRMIX2C.6
CLL Suitable for single column use; activate *IF definition IBM. TRMIX2C.7
CLL TRMIX2C.8
CLL SDJ <- Programmers of some or all of previous code or changes TRMIX2C.9
CLL TRMIX2C.10
CLL Model Modification history: TRMIX2C.11
CLL version Date TRMIX2C.12
CLL TRMIX2C.13
CLL 3.4 18/10/94 *DECK inserted into UM version 3.4. S Jackson TRMIX2C.14
CLL 4.1 02/05/96 Surface emissions and dry deposition coefficients AJS1F401.1496
CLL added as input arguments; surface deposition flux AJS1F401.1497
CLL added as output argument. M.Woodage AJS1F401.1498
CLL 4.2 Oct. 96 T3E migration - *DEF CRAY removed GSS1F402.85
CLL S J Swarbrick GSS1F402.86
CLL 4.5 Jul. 98 Kill the IBM specific lines (JCThil) AJC1F405.42
CLL TRMIX2C.15
CLL Programming standard: UM Documentation Paper No 4, Version 2, TRMIX2C.16
CLL dated 18/1/90 TRMIX2C.17
CLL TRMIX2C.18
CLL System component covered: P244 TRMIX2C.19
CLL TRMIX2C.20
CLL Project task: P24 TRMIX2C.21
CLL TRMIX2C.22
CLL Documentation: UM Documentation Paper No 24. TRMIX2C.23
CLL TRMIX2C.24
C*---------------------------------------------------------------------- TRMIX2C.25
C*L Arguments :- TRMIX2C.26
SUBROUTINE TR_MIX ( 17,3TRMIX2C.27
& P_FIELD,BL_LEVELS,FIRST_ROW,ROW_LENGTH,N_ROWS TRMIX2C.28
&,DELTA_AK,DELTA_BK TRMIX2C.29
&,GAMMA_RHOKH_RDZ,RHOKH_1 TRMIX2C.30
&,PSTAR,TIMESTEP TRMIX2C.31
&,F_FIELD,FIELD TRMIX2C.32
&,SURF_EM,RES_FACTOR,SURF_DEP_FLUX AJS1F401.1499
&,NRML TRMIX2C.33
&,ERROR,LTIMER TRMIX2C.34
&) TRMIX2C.35
TRMIX2C.36
IMPLICIT NONE TRMIX2C.37
INTEGER TRMIX2C.38
& P_FIELD ! IN No. of points in P-grid. TRMIX2C.39
&,BL_LEVELS ! IN No. of atmospheric levels for TRMIX2C.43
C ! which boundary layer fluxes are TRMIX2C.44
C ! calculated. TRMIX2C.45
&,FIRST_ROW ! IN First row of data to be treated, TRMIX2C.46
C ! referred to P-grid (must be > 1 TRMIX2C.48
C ! since "polar" rows are never TRMIX2C.49
C ! treated). TRMIX2C.50
&,ROW_LENGTH ! IN No. of points in latitude row. TRMIX2C.54
&,N_ROWS ! IN No. of rows of data to be TRMIX2C.58
C ! treated, referred to P-grid. TRMIX2C.59
C ! FIRST_ROW+N_ROWS-1 must be less TRMIX2C.61
C ! than P_ROWS, since "polar" rows TRMIX2C.62
C ! are never treated. TRMIX2C.63
REAL TRMIX2C.67
& DELTA_AK(BL_LEVELS) ! IN Difference of hybrid 'A' across TRMIX2C.68
C ! boundary layers (K-1/2 to K+1/2) TRMIX2C.69
C ! (upper minus lower). TRMIX2C.70
&,DELTA_BK(BL_LEVELS) ! IN Difference of hybrid 'B' across TRMIX2C.71
C ! boundary layers (K-1/2 to K+1/2) TRMIX2C.72
C ! (upper minus lower). TRMIX2C.73
&,GAMMA_RHOKH_RDZ(P_FIELD,2:BL_LEVELS) TRMIX2C.74
C ! IN Mixing coeff. above surface TRMIX2C.75
C ! = GAMMA(K)*RHOKH(,K)*RDZ(K) TRMIX2C.76
C ! for K>=2 (from KMKH). TRMIX2C.77
&,RHOKH_1(P_FIELD) ! IN Surface exchange coeff. TRMIX2C.78
C ! from P243 (SF_EXCH) TRMIX2C.79
&,PSTAR(P_FIELD) ! IN Surface pressure (Pa). TRMIX2C.80
&,TIMESTEP ! IN Timestep in seconds. TRMIX2C.81
&,SURF_EM(P_FIELD) ! IN, Surface emissions in kg/m2/s AJS1F401.1500
&,RES_FACTOR(P_FIELD) ! IN, dry dep coeff=Ra/(Ra+Rb+Rc) AJS1F401.1501
C TRMIX2C.82
REAL TRMIX2C.83
& F_FIELD(P_FIELD,BL_LEVELS) ! OUT Flux of tracer in kg/m2/s. TRMIX2C.84
&,FIELD(P_FIELD,BL_LEVELS) ! INOUT Tracer amount in kg/kg. TRMIX2C.85
&,SURF_DEP_FLUX(P_FIELD) ! OUT, surface deposn flux (kg/m2/s) AJS1F401.1502
C TRMIX2C.86
INTEGER TRMIX2C.87
& NRML(P_FIELD) ! IN The number of model layers TRMIX2C.88
C ! in the unstable rapidly mixing TRMIX2C.89
C ! layer. Zero if surface layer TRMIX2C.90
C ! is stable. TRMIX2C.91
&,ERROR ! OUT 1 if bad arguments, else 0. TRMIX2C.92
C TRMIX2C.93
LOGICAL TRMIX2C.94
& LTIMER ! IN Logical switch for TIMER TRMIX2C.95
C ! diagnostics TRMIX2C.96
C* TRMIX2C.97
C*L External references :- TRMIX2C.98
EXTERNAL IMP_MIX,TIMER TRMIX2C.99
C* TRMIX2C.100
C*L Local and other symbolic constants :- TRMIX2C.101
*CALL C_G
TRMIX2C.102
*CALL C_GAMMA
TRMIX2C.103
C* TRMIX2C.104
C*L Workspace :- TRMIX2C.105
C TRMIX2C.106
REAL TRMIX2C.108
& RHOK_DEP(P_FIELD) ! Surface deposition coeficient AJS1F401.1503
C* TRMIX2C.121
C Local scalars :- TRMIX2C.122
INTEGER TRMIX2C.123
& P_POINTS ! Number of points on P-grid TRMIX2C.124
&,P1 ! First point in P-grid TRMIX2C.125
&,P_ROWS ! Number of rows in P-grid TRMIX2C.126
&,I ! Loop counter (horizontal field index). TRMIX2C.127
&,K ! Loop counter (vertical index). TRMIX2C.128
&,KM1 ! K minus 1. TRMIX2C.129
&,KP1 ! K plus 1. TRMIX2C.130
C TRMIX2C.131
C----------------------------------------------------------------------- TRMIX2C.132
CL 0. Check that the scalars input to define the grid are consistent. TRMIX2C.133
C See comments to routine SF_EXCH for details. TRMIX2C.134
C----------------------------------------------------------------------- TRMIX2C.135
C TRMIX2C.136
IF (LTIMER) THEN TRMIX2C.137
CALL TIMER
('TRMIX ',3) TRMIX2C.138
ENDIF TRMIX2C.139
C----------------------------------------------------------------------- TRMIX2C.140
CL Set pointers, etc. TRMIX2C.141
C----------------------------------------------------------------------- TRMIX2C.142
C TRMIX2C.143
P_POINTS = N_ROWS * ROW_LENGTH TRMIX2C.144
P1 = 1 + (FIRST_ROW-1)*ROW_LENGTH TRMIX2C.145
P_ROWS = N_ROWS TRMIX2C.146
C TRMIX2C.147
TRMIX2C.148
ERROR=0 TRMIX2C.149
C TRMIX2C.150
C TRMIX2C.151
C----------------------------------------------------------------------- TRMIX2C.152
CL 1. Calculate flux of tracer: TRMIX2C.153
C----------------------------------------------------------------------- TRMIX2C.154
CL 1.1 Above the surface TRMIX2C.155
C----------------------------------------------------------------------- TRMIX2C.156
C TRMIX2C.157
DO 1 K=2,BL_LEVELS TRMIX2C.158
DO 11 I=P1,P1+P_POINTS-1 TRMIX2C.159
F_FIELD(I,K) = - (GAMMA_RHOKH_RDZ(I,K) / GAMMA(K)) * TRMIX2C.160
& (FIELD(I,K) - FIELD(I,K-1)) TRMIX2C.161
11 CONTINUE TRMIX2C.162
1 CONTINUE TRMIX2C.163
C TRMIX2C.164
C----------------------------------------------------------------------- TRMIX2C.165
CL 1.2 At the surface: (i) set surface flux equal to input emissions AJS1F401.1505
CL (should be passed in as ancillary file, else ZERO) AJS1F401.1506
CL (ii) Use input resistance factors to calculate AJS1F401.1507
CL surface deposition (if ZERO then no dry deposition) AJS1F401.1508
C----------------------------------------------------------------------- TRMIX2C.171
C TRMIX2C.172
DO 21 I=P1,P1+P_POINTS-1 TRMIX2C.173
F_FIELD(I,1) = SURF_EM(I) ! Inject surface emissions AJS1F401.1509
RHOK_DEP(I) = RES_FACTOR(I) * RHOKH_1(I) TRMIX2C.176
SURF_DEP_FLUX(I) = -RHOK_DEP(I) * FIELD(I,1) TRMIX2C.177
RHOK_DEP(I) = GAMMA(1) * RHOK_DEP(I) TRMIX2C.178
21 CONTINUE TRMIX2C.179
C TRMIX2C.180
C----------------------------------------------------------------------- TRMIX2C.181
CL 2. Call routine IMPL_CAL to calculate incrememnts to tracer field TRMIX2C.182
CL and suface deposition flux for output AJS1F401.1510
C----------------------------------------------------------------------- TRMIX2C.183
C TRMIX2C.184
CALL IMP_MIX
( TRMIX2C.185
& P_FIELD,P1,P_POINTS,BL_LEVELS,DELTA_AK,DELTA_BK TRMIX2C.186
&,GAMMA_RHOKH_RDZ,RHOK_DEP TRMIX2C.187
&,PSTAR,TIMESTEP TRMIX2C.188
&,F_FIELD,SURF_DEP_FLUX,FIELD TRMIX2C.189
&,NRML TRMIX2C.190
&,ERROR,LTIMER TRMIX2C.191
& ) TRMIX2C.192
TRMIX2C.193
! AJS1F401.1511
TRMIX2C.194
IF (LTIMER) THEN TRMIX2C.195
CALL TIMER
('TRMIX ',4) TRMIX2C.196
ENDIF TRMIX2C.197
TRMIX2C.198
RETURN TRMIX2C.199
END TRMIX2C.200
*ENDIF TRMIX2C.201