*IF DEF,A03_7A BL_IC7A.2
C *****************************COPYRIGHT****************************** BL_IC7A.3
C (c) CROWN COPYRIGHT 1997, METEOROLOGICAL OFFICE, All Rights Reserved. BL_IC7A.4
C BL_IC7A.5
C Use, duplication or disclosure of this code is subject to the BL_IC7A.6
C restrictions as set forth in the contract. BL_IC7A.7
C BL_IC7A.8
C Meteorological Office BL_IC7A.9
C London Road BL_IC7A.10
C BRACKNELL BL_IC7A.11
C Berkshire UK BL_IC7A.12
C RG12 2SZ BL_IC7A.13
C BL_IC7A.14
C If no contract has been raised with this copy of the code, the use, BL_IC7A.15
C duplication or disclosure of it is strictly prohibited. Permission BL_IC7A.16
C to do so must first be obtained in writing from the Head of Numerical BL_IC7A.17
C Modelling at the above address. BL_IC7A.18
C ******************************COPYRIGHT****************************** BL_IC7A.19
!!! Subroutine BL_INTCT ------------------------------------------- BL_IC7A.20
!!! BL_IC7A.21
!!! Purpose : Intermediate control level to call requested version of BL_IC7A.22
!!! BDY_LAYR with the appropriate arguments. BL_IC7A.23
!!! BL_IC7A.24
!!! Level 3 control routine BL_IC7A.25
!!! version for CRAY YMP BL_IC7A.26
!!! BL_IC7A.27
!!! Model Modification history: BL_IC7A.28
!!! version Date BL_IC7A.29
!!! 4.3 2/2/97 new deck. S Jackson BL_IC7A.30
!!! 4.4 25/6/97 Modified for MOSES II tile model. R Essery BL_IC7A.31
!!! 4.4 18/09/97 Extra arguments RAD_HR and RADHR_DIM1 for BDYLYR6A BL_IC7A.32
!!! Cyndy Bunton BL_IC7A.33
!!! 4.4 24/11/97 Move grid definitions up from BDY_LAYR. R.A.Betts BL_IC7A.34
!!! 4.5 24/4/98 New diagnostics ZHT and BL_TYPE_1 to _6 for ARN0F405.169
!!! BDYLYR6A R.N.B.Smith ARN0F405.170
!!! 4.5 Jul. 98 Kill the IBM specific lines. (JCThil) AJC1F405.312
!!! 4.5 24/06/98 Output TILE_FRAC as diagnostic. R.A.Betts ABX1F405.750
!!! 4.5 07/09/98 Output GPP_FT and RESP_P_FT as diagnostics. ABX1F405.751
!!! Richard Betts ABX1F405.752
!!! BL_IC7A.35
!!! Programming standard : unified model documentation paper No 3 BL_IC7A.36
!!! BL_IC7A.37
!!! System components covered : P24 BL_IC7A.38
!!! BL_IC7A.39
!!! System task : P0 BL_IC7A.40
!!! BL_IC7A.41
!!!END ----------------------------------------------------------------- BL_IC7A.42
! Arguments :- BL_IC7A.43
SUBROUTINE BL_INTCT ( 2,8BL_IC7A.44
BL_IC7A.45
! IN values defining field dimensions and subset to be processed : BL_IC7A.46
& P_FIELD,U_FIELD,LAND_FIELD,LAND_FIELD_TRIF,NPFT_TRIF, ABX1F405.753
& P_ROWS,FIRST_ROW,N_ROWS,ROW_LENGTH, BL_IC7A.48
BL_IC7A.49
! IN values defining vertical grid of model atmosphere : BL_IC7A.50
& BL_LEVELS,P_LEVELS,AK,BK,AKH,BKH,DELTA_AK,DELTA_BK, BL_IC7A.51
& EXNER, BL_IC7A.52
BL_IC7A.53
! IN soil/vegetation/land surface data : BL_IC7A.54
& LAND_MASK,GATHER,LAND_INDEX, BL_IC7A.59
& ST_LEVELS,SM_LEVELS,CANHT,CANOPY,CATCH,HCAP, BL_IC7A.60
& HCON,LAI,LAYER_DEPTH, BL_IC7A.61
& LYING_SNOW,RESIST,ROOTD,SMC,SMVCCL,SMVCST,SMVCWT, BL_IC7A.63
& VFRAC,Z0V,SIL_OROG_LAND,L_Z0_OROG, BL_IC7A.64
& HO2R2_OROG, BL_IC7A.65
BL_IC7A.66
! IN sea/sea-ice data : BL_IC7A.67
& DI,ICE_FRACT,U_0,V_0, BL_IC7A.68
BL_IC7A.69
! IN cloud data : BL_IC7A.70
& CF,QCF,QCL, BL_IC7A.71
& CCA,CCB,CCT, BL_IC7A.72
BL_IC7A.73
! IN everything not covered so far : BL_IC7A.74
& RAD_HR,RADHR_DIM1, BL_IC7A.75
& CO2_MMR,PHOTOSYNTH_ACT_RAD,PSTAR,RADNET, BL_IC7A.76
& TIMESTEP,L_RMBL,L_BL_LSPICE,L_MOM,L_MIXLEN, BL_IC7A.77
BL_IC7A.78
! INOUT data : BL_IC7A.79
& GS,Q,STHF,STHU,T,T_DEEP_SOIL,TI,TSTAR,U,V,Z0MSEA, BL_IC7A.80
BL_IC7A.81
! OUT Diagnostic not requiring STASH flags : BL_IC7A.82
& CD,CH,E_SEA,ETRAN,FQW,FTL,GPP,H_SEA, BL_IC7A.83
& NPP,RESP_P,RHOKH,RHOKM,RIB,SEA_ICE_HTF, BL_IC7A.84
& TAUX,TAUY,VSHR,ZHT, ARN0F405.171
& EPOT,FSMC, ANG1F405.48
BL_IC7A.86
! OUT diagnostic requiring STASH flags : BL_IC7A.87
& FME,SICE_MLT_HTF,SNOMLT_SURF_HTF,LATENT_HEAT, BL_IC7A.88
& Q1P5M,T1P5M,U10M,V10M, BL_IC7A.89
! (IN) STASH flags :- BL_IC7A.90
& SFME,SIMLT,SMLT,SLH,SQ1P5,ST1P5,SU10,SV10, BL_IC7A.91
BL_IC7A.92
! OUT data required for tracer mixing : BL_IC7A.93
& RHO_ARESIST,ARESIST,RESIST_B, BL_IC7A.94
& NRML, BL_IC7A.95
BL_IC7A.96
! OUT data required for 4D_VAR : BL_IC7A.97
& RHO_CD_MODV1,RHO_KM, BL_IC7A.98
BL_IC7A.99
! OUT data required elsewhere in UM system : BL_IC7A.100
& BL_TYPE_1,BL_TYPE_2,BL_TYPE_3,BL_TYPE_4,BL_TYPE_5,BL_TYPE_6, ARN0F405.172
& ECAN,EI,ES,EXT,SNOWMELT, BL_IC7A.101
& SURF_HT_FLUX,ZH,T1_SD,Q1_SD,ERROR, BL_IC7A.102
BL_IC7A.103
! Additional arguments for 7A boundary layer (MOSES II) BL_IC7A.104
! IN BL_IC7A.107
& L_PHENOL,L_TRIFFID,L_NEG_TSTAR, ABX1F405.754
& CANHT_FT,CANOPY_TILE,CATCH_TILE,CS,LAI_FT, BL_IC7A.108
& FRAC,SNOW_FRAC,RAD_NO_SNOW,RAD_SNOW,TSNOW,Z0V_TILE, BL_IC7A.109
& CO2_3D,CO2_DIM,L_CO2_INTERACTIVE, ACN1F405.114
! INOUT BL_IC7A.110
& TSTAR_TILE, BL_IC7A.111
& G_LEAF_ACC,NPP_FT_ACC,RESP_W_FT_ACC,RESP_S_ACC, BL_IC7A.112
! OUT BL_IC7A.113
& ECAN_TILE,ESOIL_TILE,FTL_TILE, BL_IC7A.114
& G_LEAF,GPP_FT,NPP_FT,RESP_P_FT,RESP_S,RESP_W_FT, ABX1F405.755
& RHO_ARESIST_TILE,ARESIST_TILE,RESIST_B_TILE, BL_IC7A.116
& RIB_TILE,SNOW_SURF_HTF,SOIL_SURF_HTF, BL_IC7A.117
& TILE_INDEX,TILE_PTS,TILE_FRAC, ABX1F405.756
BL_IC7A.118
! LOGICAL LTIMER BL_IC7A.119
& LTIMER BL_IC7A.120
&) BL_IC7A.121
IMPLICIT NONE BL_IC7A.122
BL_IC7A.123
! Inputs :- BL_IC7A.124
BL_IC7A.125
! (a) Defining horizontal grid and subset thereof to be processed. BL_IC7A.126
! Checked for consistency in BDY_LAYR. BL_IC7A.128
! All dimensions set to 1 for single column model. BL_IC7A.130
BL_IC7A.132
INTEGER BL_IC7A.133
& P_FIELD ! IN No. of P-points in whole grid BL_IC7A.134
! ! (for dimensioning only). BL_IC7A.135
&,U_FIELD ! IN No. of UV-points in whole grid. BL_IC7A.136
&,LAND_FIELD ! IN No. of land points in whole grid. BL_IC7A.137
&,LAND_FIELD_TRIF ! IN For dimensioning land fields ABX1F405.757
! ! available only with TRIFFID ABX1F405.758
! ! Set to LAND_FIELD when TRIFFID on, ABX1F405.759
! ! set to 1 when TRIFFID off. ABX1F405.760
&,NPFT_TRIF ! IN For dimensioning PFT fields ABX1F405.761
! ! available only with TRIFFID ABX1F405.762
! ! Set to NPFT when TRIFFID on, ABX1F405.763
! ! set to 1 when TRIFFID off. ABX1F405.764
&,P_ROWS ! IN No. of P-rows in whole grid BL_IC7A.138
! ! (for dimensioning only). BL_IC7A.139
&,FIRST_ROW ! IN First row of data to be treated, BL_IC7A.140
! ! referred to P-grid. BL_IC7A.141
&,N_ROWS ! IN No. of rows of data to be BL_IC7A.142
! ! treated, referred to P-grid. BL_IC7A.143
&,ROW_LENGTH ! IN No. of points in one row. BL_IC7A.144
BL_IC7A.145
! (b) Defining vertical grid of model atmosphere. BL_IC7A.146
BL_IC7A.147
INTEGER BL_IC7A.148
& BL_LEVELS ! IN Max. no. of "boundary" levels BL_IC7A.149
! ! allowed.Assumed <= 30 for dim- BL_IC7A.150
! ! sioning of GAMMA in common deck BL_IC7A.151
! ! C_GAMMA used in SF_EXCH and KMKH BL_IC7A.152
&,P_LEVELS ! IN Total no. of vertical levels in BL_IC7A.153
! ! the model atmosphere. BL_IC7A.154
&,RADHR_DIM1 ! IN Dimension for RAD_HR BL_IC7A.155
REAL BL_IC7A.156
& AK(P_LEVELS) ! IN Hybrid 'A' for all levels. BL_IC7A.157
&,BK(P_LEVELS) ! IN Hybrid 'B' for all levels. BL_IC7A.158
&,AKH(P_LEVELS+1) ! IN Hybrid 'A' for layer interfaces. BL_IC7A.159
&,BKH(P_LEVELS+1) ! IN Hybrid 'B' for layer interfaces. BL_IC7A.160
&,DELTA_AK(P_LEVELS) ! IN Difference of hybrid 'A' across BL_IC7A.161
! ! layers (K-1/2 to K+1/2). BL_IC7A.162
! ! NB: Upper minus lower. BL_IC7A.163
&,DELTA_BK(P_LEVELS) ! IN Difference of hybrid 'B' across BL_IC7A.164
! ! layers (K-1/2 to K+1/2). BL_IC7A.165
! ! NB: Upper minus lower. BL_IC7A.166
&,EXNER(P_FIELD,BL_LEVELS+1)! IN Exner function. EXNER(,K) is BL_IC7A.167
! ! value for LOWER BOUNDARY of BL_IC7A.168
! ! level K. BL_IC7A.169
BL_IC7A.170
! (c) Soil/vegetation/land surface parameters (mostly constant). BL_IC7A.171
BL_IC7A.172
LOGICAL BL_IC7A.173
& LAND_MASK(P_FIELD) ! IN T if land, F elsewhere. BL_IC7A.174
&,L_CO2_INTERACTIVE ACN1F405.115
&,L_Z0_OROG ! IN T to use simple orog.roughness BL_IC7A.175
! ! treatment in SF_EXCH BL_IC7A.176
&,GATHER ! IN T if gather to sea-ice points BL_IC7A.178
! ! in SF_EXCH. Saves a lot of un- BL_IC7A.179
! ! necessary calculations if there BL_IC7A.180
! ! are relatively few sea-ice points BL_IC7A.181
BL_IC7A.182
INTEGER BL_IC7A.183
& LAND_INDEX(P_FIELD) ! IN LAND_INDEX(I)=J => the Jth BL_IC7A.184
! ! point in P_FIELD is the Ith BL_IC7A.185
! ! land point. BL_IC7A.186
BL_IC7A.188
*CALL NSTYPES
BL_IC7A.189
BL_IC7A.190
INTEGER BL_IC7A.191
& ST_LEVELS ! IN No. of deep soil temp. levels BL_IC7A.192
&,SM_LEVELS ! IN No. of soil moisture levels BL_IC7A.193
&,CO2_DIM ! number of points in CO2 field. ACN1F405.116
BL_IC7A.194
REAL BL_IC7A.195
& CANHT_FT(LAND_FIELD,NPFT) ! IN Canopy height (m) BL_IC7A.196
&,CANOPY_TILE(LAND_FIELD,NTYPE-1) BL_IC7A.197
! ! IN Surface/canopy water for snow-free BL_IC7A.198
! ! land tiles (kg per sq m) BL_IC7A.199
&,CATCH_TILE(LAND_FIELD,NTYPE-1) BL_IC7A.200
! ! IN Surface/canopy water capacity of BL_IC7A.201
! ! snow-free land tiles (kg per sq m) BL_IC7A.202
&,CS(LAND_FIELD) ! IN Soil carbon (kg C/m2). BL_IC7A.203
&,HCON(LAND_FIELD) ! IN Soil thermal conductivity (W/m/K). BL_IC7A.204
&,HO2R2_OROG(LAND_FIELD) ! IN Dummy used only in version 3A. BL_IC7A.205
&,LAI_FT(LAND_FIELD,NPFT) ! IN Leaf area index BL_IC7A.206
&,LYING_SNOW(P_FIELD) ! IN Lying snow (kg per sq m). BL_IC7A.207
! ! Must be global for coupled model, BL_IC7A.209
! ! ie dimension P_FIELD not LAND_FIEL BL_IC7A.210
&,SIL_OROG_LAND(LAND_FIELD) ! IN Silhouette area of unresolved BL_IC7A.212
! ! orography per unit horizontal area BL_IC7A.213
! ! on land points only. BL_IC7A.214
&,SMVCCL(LAND_FIELD) ! IN Critical volumetric SMC (cubic m BL_IC7A.215
! ! per cubic m of soil). BL_IC7A.216
&,SMVCST(LAND_FIELD) ! IN Volumetric saturation point (cubic BL_IC7A.217
! ! per cubic m of soil). BL_IC7A.218
&,SMVCWT(LAND_FIELD) ! IN Volumetric wilting point (cubic m BL_IC7A.219
! ! per cubic m of soil). BL_IC7A.220
&,STHF(LAND_FIELD,SM_LEVELS)! IN Frozen soil moisture content of BL_IC7A.221
! ! each layer as a fraction of BL_IC7A.222
! ! saturation. BL_IC7A.223
&,STHU(LAND_FIELD,SM_LEVELS)! IN Unfrozen soil moisture content of BL_IC7A.224
! ! each layer as a fraction of BL_IC7A.225
! ! saturation. BL_IC7A.226
&,FRAC(LAND_FIELD,NTYPE) ! IN Tile fracs excluding snow cover BL_IC7A.227
&,SNOW_FRAC(LAND_FIELD) ! IN Snow fraction. BL_IC7A.228
&,TSNOW(LAND_FIELD) ! IN Snow surface layer temp. (K). BL_IC7A.229
&,Z0V(P_FIELD) ! IN GBM snow-free roughness length (m) BL_IC7A.230
! ! NB:UM uses same storage for Z0MSEA BL_IC7A.231
! ! so for sea points this is INOUT. BL_IC7A.232
&,Z0V_TILE(LAND_FIELD,NTYPE)! IN Tile roughness lengths (m). BL_IC7A.233
BL_IC7A.234
! (d) Sea/sea-ice data. BL_IC7A.235
BL_IC7A.236
REAL BL_IC7A.237
& DI(P_FIELD) ! IN "Equivalent thickness" of sea-ice BL_IC7A.238
! ! (m). BL_IC7A.239
&,ICE_FRACT(P_FIELD) ! IN Fraction of gridbox covered by BL_IC7A.240
! ! sea-ice (decimal fraction). BL_IC7A.241
&,U_0(U_FIELD) ! IN W'ly component of surface current BL_IC7A.242
! ! (metres per second). BL_IC7A.243
&,V_0(U_FIELD) ! IN S'ly component of surface current BL_IC7A.244
! ! (metres per second). BL_IC7A.245
BL_IC7A.246
! (e) Cloud data. BL_IC7A.247
BL_IC7A.248
REAL BL_IC7A.249
& CF(P_FIELD,BL_LEVELS) ! IN Cloud fraction (decimal). BL_IC7A.250
&,QCF(P_FIELD,BL_LEVELS) ! IN Cloud ice (kg per kg air) BL_IC7A.251
&,QCL(P_FIELD,BL_LEVELS) ! IN Cloud liquid water (kg/kg air). BL_IC7A.252
&,CCA(P_FIELD) ! IN Convective Cloud Amount (decimal). BL_IC7A.253
BL_IC7A.254
INTEGER BL_IC7A.255
& CCB(P_FIELD) ! IN Convective Cloud Base BL_IC7A.256
&,CCT(P_FIELD) ! IN Convective Cloud Top BL_IC7A.257
BL_IC7A.258
! (f) Atmospheric + any other data not covered so far, incl control. BL_IC7A.259
BL_IC7A.260
REAL BL_IC7A.261
& CO2_MMR ! IN CO2 Mass Mixing Ratio BL_IC7A.262
&,CO2_3D(CO2_DIM) ! 3D CO2 field if required. ACN1F405.117
&,PHOTOSYNTH_ACT_RAD(P_FIELD)! IN Net downward shortwave radiation BL_IC7A.263
! ! in band 1 (w/m2). BL_IC7A.264
&,PSTAR(P_FIELD) ! IN Surface pressure (Pascals). BL_IC7A.265
+,RADNET(P_FIELD) ! IN Surface net radiation (W/sq m, BL_IC7A.266
C ! positive downwards). BL_IC7A.267
&,RAD_NO_SNOW(P_FIELD) ! IN Surface net radiation, snow-free BL_IC7A.268
! ! fraction of gridbox. BL_IC7A.269
&,RAD_SNOW(P_FIELD) ! IN Surface net radiation, snow- BL_IC7A.270
! ! covered fraction of gridbox. BL_IC7A.271
+,RAD_HR(RADHR_DIM1,BL_LEVELS) BL_IC7A.272
! ! IN Radiative heating rates BL_IC7A.273
! ! - not used in A03_7A. BL_IC7A.274
&,TIMESTEP ! IN Timestep (seconds). BL_IC7A.275
BL_IC7A.276
LOGICAL BL_IC7A.277
& LTIMER ! IN Logical switch for TIMER diags BL_IC7A.278
&,L_RMBL ! IN T to use rapidly mixing BL_IC7A.279
! ! boundary scheme in IMPL_CAL BL_IC7A.280
&,L_BL_LSPICE ! IN Use if 3A large scale precip BL_IC7A.281
&,L_MOM ! IN Switch for convective momentum BL_IC7A.282
! ! transport. BL_IC7A.283
&,L_PHENOL ! IN Indicates whether phenology in use ABX1F405.765
&,L_TRIFFID ! IN Indicates whether TRIFFID in use. ABX1F405.766
&,L_NEG_TSTAR ! IN Switch for -ve TSTAR error check ABX1F405.767
BL_IC7A.284
! STASH flags :- BL_IC7A.285
BL_IC7A.286
LOGICAL BL_IC7A.287
& SFME ! IN Flag for FME (q.v.). BL_IC7A.288
&,SMLT ! IN Flag for SICE_MLT_HTF (q.v.) BL_IC7A.289
&,SIMLT ! IN Flag BL_IC7A.290
&,SLH ! IN Flag for LATENT_HEAT (q.v.) BL_IC7A.291
&,SQ1P5 ! IN Flag for Q1P5M (q.v.) BL_IC7A.292
&,ST1P5 ! IN Flag for T1P5M (q.v.) BL_IC7A.293
&,SU10 ! IN Flag for U10M (q.v.) BL_IC7A.294
&,SV10 ! IN Flag for V10M (q.v.) BL_IC7A.295
BL_IC7A.296
! In/outs :- BL_IC7A.297
BL_IC7A.298
REAL BL_IC7A.299
& GS(LAND_FIELD) ! INOUT "Stomatal" conductance to BL_IC7A.300
! ! evaporation (m/s). BL_IC7A.301
&,Q(P_FIELD,BL_LEVELS) ! INOUT Input:specific humidity BL_IC7A.302
! ! ( kg water per kg air). BL_IC7A.303
! ! Output:total water content BL_IC7A.304
! ! (Q)(kg water per kg air). BL_IC7A.305
&,T(P_FIELD,BL_LEVELS) ! INOUT Input:atmospheric temp(K) BL_IC7A.306
! ! Output:liquid/frozen water BL_IC7A.307
! ! temperature (TL) (K) BL_IC7A.308
&,T_DEEP_SOIL(LAND_FIELD,ST_LEVELS) BL_IC7A.309
! ! INOUT Deep soil temperatures (K). BL_IC7A.310
&,TI(P_FIELD) ! INOUT Sea-ice surface layer BL_IC7A.311
! ! temperature (K) BL_IC7A.312
&,TSTAR(P_FIELD) ! INOUT Surface temperature (K). BL_IC7A.313
&,TSTAR_TILE(LAND_FIELD,NTYPE) BL_IC7A.314
! ! INOUT Surface tile temperature BL_IC7A.315
&,U(U_FIELD,BL_LEVELS) ! INOUT W'ly wind component (m/s). BL_IC7A.316
&,V(U_FIELD,BL_LEVELS) ! INOUT S'ly wind component (m/s). BL_IC7A.317
&,Z0MSEA(P_FIELD) ! INOUT Sea-surface roughness BL_IC7A.318
! ! length for momentum (m). BL_IC7A.319
! ! NB: same storage is used BL_IC7A.320
! ! for Z0V, so the intent is BL_IC7A.321
! ! IN for land points. BL_IC7A.322
BL_IC7A.323
! Accumulation prognostics for PHENOLOGY and TRIFFID. ABX1F405.768
! NPP_FT_ACC, RESP_W_FT_ACC and RESP_S_ACC are only allocated D1 space ABX1F405.769
! when TRIFFID is in use, so their dimensions here are set accordingly. ABX1F405.770
ABX1F405.771
REAL ABX1F405.772
& G_LEAF_ACC(LAND_FIELD,NPFT) ! INOUT Accumulated G_LEAF ABX1F405.773
&,NPP_FT_ACC(LAND_FIELD_TRIF,NPFT_TRIF)! INOUT Accumulated NPP_FT ABX1F405.774
&,RESP_W_FT_ACC(LAND_FIELD_TRIF,NPFT_TRIF) ! INOUT Accum RESP_W_FT ABX1F405.775
&,RESP_S_ACC(LAND_FIELD_TRIF) ! INOUT Accumulated RESP_S ABX1F405.776
ABX1F405.777
BL_IC7A.332
! Outputs :- BL_IC7A.333
BL_IC7A.334
!-1 Diagnostic (or effectively so - includes coupled model requisites):- BL_IC7A.335
BL_IC7A.336
INTEGER BL_IC7A.337
& TILE_INDEX(LAND_FIELD,NTYPE) BL_IC7A.338
! ! OUT Index of tile points. BL_IC7A.339
&,TILE_PTS(NTYPE) ! OUT Number of tile points. BL_IC7A.340
BL_IC7A.341
! (a) Calculated anyway (use STASH space from higher level) :- BL_IC7A.342
BL_IC7A.343
REAL BL_IC7A.344
& CD(P_FIELD) ! OUT Turbulent surface exchange (bulk BL_IC7A.345
! ! transfer) coefficient for BL_IC7A.346
! ! momentum. BL_IC7A.347
&,CH(P_FIELD) ! OUT Turbulent surface exchange (bulk BL_IC7A.348
! ! transfer) coefficient for heat BL_IC7A.349
! ! and/or moisture. BL_IC7A.350
&,ECAN(P_FIELD) ! OUT Gridbox mean evaporation from BL_IC7A.351
! ! canopy / surface store (kg/m2/s). BL_IC7A.352
! ! Zero over sea. BL_IC7A.353
&,E_SEA(P_FIELD) ! OUT Evaporation from sea times leads BL_IC7A.354
! ! fraction. Zero over land. BL_IC7A.355
! ! (kg per square metre per sec). BL_IC7A.356
&,EPOT(P_FIELD) ! Dummy. ANG1F405.49
&,ESOIL_TILE(LAND_FIELD,NTYPE-1) BL_IC7A.357
! OUT ES for snow-free land tiles BL_IC7A.358
&,FQW(P_FIELD,BL_LEVELS) ! OUT Moisture flux between layers BL_IC7A.359
! ! (kg per square metre per sec). BL_IC7A.360
! ! FQW(,1) is total water flux BL_IC7A.361
! ! from surface, 'E'. BL_IC7A.362
&,FSMC(LAND_FIELD) ! Dummy. ANG1F405.50
&,FTL(P_FIELD,BL_LEVELS) ! OUT FTL(,K) contains net turbulent BL_IC7A.363
! ! sensible heat flux into layer K BL_IC7A.364
! ! from below; so FTL(,1) is the BL_IC7A.365
! ! surface sensible heat, H. (W/m2) BL_IC7A.366
&,FTL_TILE(LAND_FIELD,NTYPE) BL_IC7A.367
! ! OUT Surface FTL for land tiles BL_IC7A.368
&,G_LEAF(LAND_FIELD,NPFT) ! OUT Leaf turnover rate (/360days). ABX1F405.778
&,GPP(LAND_FIELD) ! OUT Gross primary productivity BL_IC7A.370
! ! (kg C/m2/s). BL_IC7A.371
&,GPP_FT(LAND_FIELD,NPFT) ! OUT Gross primary productivity ABX1F405.779
! ! on PFTs (kg C/m2/s). ABX1F405.780
&,H_SEA(P_FIELD) ! OUT Surface sensible heat flux over BL_IC7A.372
! ! sea times leads fraction. (W/m2) BL_IC7A.373
&,NPP(LAND_FIELD) ! OUT Net primary productivity BL_IC7A.374
! ! (kg C/m2/s). BL_IC7A.375
&,NPP_FT(LAND_FIELD,NPFT) ! OUT Net primary productivity BL_IC7A.376
! ! (kg C/m2/s). BL_IC7A.377
&,RESP_P(LAND_FIELD) ! OUT Plant respiration (kg C/m2/s). BL_IC7A.378
&,RESP_P_FT(LAND_FIELD,NPFT) ! OUT Plant respiration on PFTs ABX1F405.781
! ! (kg C/m2/s). ABX1F405.782
ABX1F405.783
&,RESP_S(LAND_FIELD) ! OUT Soil respiration (kg C/m2/s). BL_IC7A.379
&,RESP_W_FT(LAND_FIELD,NPFT)! OUT Wood maintenance respiration BL_IC7A.380
! ! (kg C/m2/s). BL_IC7A.381
&,RHOKH(P_FIELD,BL_LEVELS) ! OUT Exchange coeffs for moisture. BL_IC7A.382
&,RHOKM(U_FIELD,BL_LEVELS) ! OUT Exchange coefficients for BL_IC7A.383
! ! momentum (on UV-grid, with 1st BL_IC7A.384
! ! and last rows undefined (or, at BL_IC7A.385
! ! present, set to "missing data")). BL_IC7A.386
&,RIB(P_FIELD) ! OUT Bulk Richardson number for lowest BL_IC7A.387
! ! layer. BL_IC7A.388
&,RIB_TILE(LAND_FIELD,NTYPE)! OUT RIB for land tiles. BL_IC7A.389
&,SEA_ICE_HTF(P_FIELD) ! OUT Heat flux through sea-ice (W per BL_IC7A.390
! ! sq m, positive downwards). BL_IC7A.391
&,SMC(LAND_FIELD) ! OUT Available moisture in the BL_IC7A.392
! ! soil profile (mm). BL_IC7A.393
&,SURF_HT_FLUX(P_FIELD) ! OUT Net downward heat flux at surface BL_IC7A.394
! ! over land or sea-ice fraction of BL_IC7A.395
! ! gridbox (W/m2) BL_IC7A.396
&,TAUX(U_FIELD,BL_LEVELS) ! OUT W'ly component of surface wind BL_IC7A.397
! ! stress (N/sq m).(On UV-grid with BL_IC7A.398
! ! first and last rows undefined or BL_IC7A.399
! ! at present, set to 'missing data' BL_IC7A.400
&,TAUY(U_FIELD,BL_LEVELS) ! OUT S'ly component of surface wind BL_IC7A.401
! ! stress (N/sq m). On UV-grid; BL_IC7A.402
! ! comments as per TAUX. BL_IC7A.403
&,TILE_FRAC(LAND_FIELD,NTYPE) ABX1F405.784
! ! OUT Tile fractions adjusted for snow. ABX1F405.785
! ! 1 to NTYPE-1: snow-free fraction. ABX1F405.786
! ! NTYPE:land-ice plus snow fraction. ABX1F405.787
&,VSHR(P_FIELD) ! OUT Magnitude of surface-to-lowest BL_IC7A.404
! ! atm level wind shear (m per s). BL_IC7A.405
&,RHO_CD_MODV1(P_FIELD) ! OUT Surface air density * drag coef. BL_IC7A.406
! ! mod(v1 - v0) before interpolation. BL_IC7A.407
&,RHO_KM(P_FIELD,2:BL_LEVELS)! OUT Air density * turbulent mixing BL_IC7A.408
! ! coef. for momentum before BL_IC7A.409
&,RHO_ARESIST(P_FIELD) ! OUT, RHOSTAR*CD_STD*VSHR for SCYCLE BL_IC7A.410
&,ARESIST(P_FIELD) ! OUT, 1/(CD_STD*VSHR) for SCYCLE BL_IC7A.411
&,RESIST_B(P_FIELD) ! OUT,(1/CH-1/CD_STD)/VSHR for SCYCLE BL_IC7A.412
&,RHO_ARESIST_TILE(LAND_FIELD,NTYPE) BL_IC7A.413
! ! OUT RHOSTAR*CD_STD*VSHR on land tiles BL_IC7A.414
&,ARESIST_TILE(LAND_FIELD,NTYPE) BL_IC7A.415
! ! OUT 1/(CD_STD*VSHR) on land tiles BL_IC7A.416
&,RESIST_B_TILE(LAND_FIELD,NTYPE) BL_IC7A.417
! ! OUT (1/CH-1/CD_STD)/VSHR on land tiles BL_IC7A.418
! BL_IC7A.419
INTEGER BL_IC7A.420
& NRML(P_FIELD) ! OUT Number of model layers in the BL_IC7A.421
! ! Rapidly Mixing Layer; diagnosed BL_IC7A.422
! ! in SF_EXCH and KMKH and used in BL_IC7A.423
! ! IMPL_CAL, SF_EVAP and TR_MIX. BL_IC7A.424
BL_IC7A.425
! (b) Not passed between lower-level routines (not in workspace at this BL_IC7A.426
! level) :- BL_IC7A.427
BL_IC7A.428
REAL BL_IC7A.429
& FME(P_FIELD) ! OUT Wind mixing "power" (W per sq m). BL_IC7A.430
&,SICE_MLT_HTF(P_FIELD) ! OUT Heat flux due to melting of sea- BL_IC7A.431
! ! ice (Watts per sq metre). BL_IC7A.432
&,SNOMLT_SURF_HTF(P_FIELD) BL_IC7A.433
&,LATENT_HEAT(P_FIELD) ! OUT Surface latent heat flux, +ve BL_IC7A.434
! ! upwards (Watts per sq m). BL_IC7A.435
&,Q1P5M(P_FIELD) ! OUT Q at 1.5 m (kg water per kg air). BL_IC7A.436
&,T1P5M(P_FIELD) ! OUT T at 1.5 m (K). BL_IC7A.437
&,U10M(U_FIELD) ! OUT U at 10 m (m per s). BL_IC7A.438
&,V10M(U_FIELD) ! OUT V at 10 m (m per s). BL_IC7A.439
&,ZHT(P_FIELD) ! OUT Dummy (diagnostics for BDYLYR6A) ARN0F405.173
&,BL_TYPE_1(P_FIELD) ! OUT Dummy (diagnostics for BDYLYR6A) ARN0F405.174
&,BL_TYPE_2(P_FIELD) ! OUT Dummy (diagnostics for BDYLYR6A) ARN0F405.175
&,BL_TYPE_3(P_FIELD) ! OUT Dummy (diagnostics for BDYLYR6A) ARN0F405.176
&,BL_TYPE_4(P_FIELD) ! OUT Dummy (diagnostics for BDYLYR6A) ARN0F405.177
&,BL_TYPE_5(P_FIELD) ! OUT Dummy (diagnostics for BDYLYR6A) ARN0F405.178
&,BL_TYPE_6(P_FIELD) ! OUT Dummy (diagnostics for BDYLYR6A) ARN0F405.179
ARN0F405.180
BL_IC7A.440
!-2 Genuinely output, needed by other atmospheric routines :- BL_IC7A.441
BL_IC7A.442
REAL BL_IC7A.443
& ECAN_TILE(LAND_FIELD,NTYPE-1) BL_IC7A.444
! OUT ECAN for snow-free land tiles BL_IC7A.445
&,EI(P_FIELD) ! OUT Sublimation from lying snow or sea-ice BL_IC7A.446
! ! (kg/m2/s). BL_IC7A.447
&,ES(P_FIELD) ! OUT Surface evapotranspiration from soil BL_IC7A.448
! ! moisture store (kg/m2/s). BL_IC7A.449
&,EXT(LAND_FIELD,SM_LEVELS) BL_IC7A.450
! ! OUT Extraction of water from each soil layer BL_IC7A.451
! ! (kg/m2/s). BL_IC7A.452
&,SNOWMELT(P_FIELD) BL_IC7A.453
! ! OUT Snowmelt (kg/m/s). BL_IC7A.454
&,SNOW_SURF_HTF(LAND_FIELD) BL_IC7A.455
! ! OUT Net downward heat flux at BL_IC7A.456
! ! snow surface (W/m2). BL_IC7A.457
&,SOIL_SURF_HTF(LAND_FIELD) BL_IC7A.458
! ! OUT Net downward heat flux at BL_IC7A.459
! ! snow-free land surface (W/m2). BL_IC7A.460
&,ZH(P_FIELD) ! OUT Height above surface of top of boundary BL_IC7A.461
! ! layer (metres). BL_IC7A.462
&,T1_SD(P_FIELD) ! OUT Standard deviation of turbulent fluctuations BL_IC7A.463
! ! of layer 1 temperature; for use in BL_IC7A.464
! ! initiating convection. BL_IC7A.465
&,Q1_SD(P_FIELD) ! OUT Standard deviation of turbulent fluctuations BL_IC7A.466
! ! of layer 1 humidity; for use in initiating BL_IC7A.467
! ! convection. BL_IC7A.468
BL_IC7A.469
INTEGER BL_IC7A.470
& ERROR ! OUT 0 - AOK; BL_IC7A.471
! ! 1 to 7 - bad grid definition detected; BL_IC7A.473
BL_IC7A.477
! Local variables BL_IC7A.478
REAL BL_IC7A.479
& GS_TILE(LAND_FIELD,NTYPE)! LOCAL Surface conductance for BL_IC7A.480
! ! land tiles BL_IC7A.481
&,WT_EXT(LAND_FIELD,SM_LEVELS) BL_IC7A.482
! ! LOCAL Fraction of evapotranspiration BL_IC7A.483
! ! which is extracted from each BL_IC7A.484
! ! soil layer. BL_IC7A.485
&,Z1(P_FIELD) ! LOCAL Height of lowest level (m). BL_IC7A.486
INTEGER BL_IC7A.491
& TILE_INDEX_S(LAND_FIELD,NTYPE) BL_IC7A.492
! ! LOCAL Index for TILE_FRAC. BL_IC7A.493
&,TILE_PTS_S(NTYPE) ! LOCAL Number of points for TILE_FRAC. BL_IC7A.494
BL_IC7A.495
INTEGER BL_IC7A.496
& I ! LOCAL P-point index BL_IC7A.497
&,L ! LOCAL Land point index BL_IC7A.498
&,N ! LOCAL Tile index BL_IC7A.499
&,N_P_ROWS ! LOCAL No of P-rows being processed. BL_IC7A.500
&,N_U_ROWS ! LOCAL No of UV-rows being processed. BL_IC7A.501
&,P_POINTS ! LOCAL No of P-points being processed. BL_IC7A.502
&,P1 ! LOCAL First P-point to be processed. BL_IC7A.503
&,LAST_POINT ! LOCAL Last P-point to be processed. BL_IC7A.504
&,LAND1 ! LOCAL First land-point to be processed BL_IC7A.505
! ! 1 <= LAND1 <= LAND_FIELD BL_IC7A.506
&,LAND_PTS ! LOCAL No of land points processed. BL_IC7A.507
&,U_POINTS ! LOCAL No of UV-points being processed. BL_IC7A.508
&,U1 ! LOCAL First UV-point to be processed. BL_IC7A.509
BL_IC7A.510
REAL ABX1F405.788
& SECS_PER_360DAYS ! LOCAL Number of seconds in 360 days ABX1F405.789
ABX1F405.790
PARAMETER(SECS_PER_360DAYS=31104000.0) ABX1F405.791
ABX1F405.792
BL_IC7A.511
BL_IC7A.512
! Dummy variables not used by MOSES II BL_IC7A.513
REAL BL_IC7A.514
& CANHT(LAND_FIELD) BL_IC7A.515
&,CANOPY(LAND_FIELD) BL_IC7A.516
&,CATCH(LAND_FIELD) BL_IC7A.517
&,ETRAN(P_FIELD) BL_IC7A.518
&,HCAP(LAND_FIELD) BL_IC7A.519
&,LAI(LAND_FIELD) BL_IC7A.520
&,LAYER_DEPTH(SM_LEVELS) BL_IC7A.521
&,RESIST(LAND_FIELD) BL_IC7A.522
&,ROOTD(LAND_FIELD) BL_IC7A.523
&,VFRAC(LAND_FIELD) BL_IC7A.524
LOGICAL BL_IC7A.525
& L_MIXLEN BL_IC7A.526
BL_IC7A.527
! External subroutines called ABX1F405.793
EXTERNAL ABX1F405.794
& TILEPTS ! Calculates number of points occupied by each ABX1F405.795
! ! tile and their indices on the land field ABX1F405.796
&,VSHR_Z1 ! Calculates level 1 windspeed and height. ABX1F405.797
&,PHYSIOL ! Models plant physiology ABX1F405.798
&,BDY_LAYR ! Models surface fluxes and boundary layer processes ABX1F405.799
ABX1F405.800
*IF -DEF,SCMA AJC1F405.313
!----------------------------------------------------------------------- BL_IC7A.529
!! 0. Verify grid/subset definitions. Arakawa 'B' grid with P-rows at BL_IC7A.530
!! extremes is assumed. Extreme-most P-rows are ignored; extreme- BL_IC7A.531
!! most UV-rows are used only for interpolation and are not updated. BL_IC7A.532
!----------------------------------------------------------------------- BL_IC7A.533
BL_IC7A.534
IF ( BL_LEVELS.LT.1 .OR. SM_LEVELS.LT.1 .OR. P_ROWS.LT.3 ) THEN BL_IC7A.535
ERROR = 1 BL_IC7A.536
GOTO999 BL_IC7A.537
*IF -DEF,MPP BL_IC7A.538
ELSEIF ( U_FIELD .NE. (P_ROWS-1)*ROW_LENGTH ) THEN BL_IC7A.539
*ELSE BL_IC7A.540
ELSEIF ( U_FIELD .NE. P_ROWS*ROW_LENGTH ) THEN BL_IC7A.541
*ENDIF BL_IC7A.542
ERROR = 2 BL_IC7A.543
GOTO999 BL_IC7A.544
ELSEIF ( P_FIELD .NE. P_ROWS*ROW_LENGTH ) THEN BL_IC7A.545
ERROR = 3 BL_IC7A.546
GOTO999 BL_IC7A.547
ELSEIF ( FIRST_ROW.LE.1 .OR. FIRST_ROW.GE.P_ROWS ) THEN BL_IC7A.548
ERROR = 4 BL_IC7A.549
GOTO999 BL_IC7A.550
ELSEIF ( N_ROWS.LE.0 ) THEN BL_IC7A.551
ERROR = 5 BL_IC7A.552
GOTO999 BL_IC7A.553
*IF -DEF,MPP BL_IC7A.554
ELSEIF ( (FIRST_ROW+N_ROWS) .GT. P_ROWS ) THEN BL_IC7A.555
*ELSE BL_IC7A.556
ELSEIF ( (FIRST_ROW+N_ROWS-1) .GT. P_ROWS ) THEN BL_IC7A.557
*ENDIF BL_IC7A.558
ERROR = 6 BL_IC7A.559
GOTO999 BL_IC7A.560
ELSEIF ( LAND_FIELD.GT.P_FIELD ) THEN BL_IC7A.561
ERROR = 7 BL_IC7A.562
GOTO999 BL_IC7A.563
ENDIF BL_IC7A.564
BL_IC7A.565
!----------------------------------------------------------------------- BL_IC7A.566
!! Set pointers, etc. BL_IC7A.567
!----------------------------------------------------------------------- BL_IC7A.568
BL_IC7A.569
N_P_ROWS = N_ROWS BL_IC7A.570
N_U_ROWS = N_ROWS + 1 BL_IC7A.571
BL_IC7A.572
P_POINTS = N_P_ROWS * ROW_LENGTH BL_IC7A.573
U_POINTS = N_U_ROWS * ROW_LENGTH BL_IC7A.574
BL_IC7A.575
P1 = 1 + (FIRST_ROW-1)*ROW_LENGTH BL_IC7A.576
U1 = 1 + (FIRST_ROW-2)*ROW_LENGTH BL_IC7A.577
BL_IC7A.578
LAST_POINT = P1 + P_POINTS - 1 BL_IC7A.579
BL_IC7A.580
!----------------------------------------------------------------------- BL_IC7A.581
!! Set compressed land point pointers. BL_IC7A.582
!----------------------------------------------------------------------- BL_IC7A.583
BL_IC7A.584
LAND1=0 BL_IC7A.585
DO I=1,P1+P_POINTS-1 BL_IC7A.586
IF (LAND_INDEX(I).GE.P1) THEN BL_IC7A.587
LAND1 = I BL_IC7A.588
GOTO2 BL_IC7A.589
ENDIF BL_IC7A.590
ENDDO BL_IC7A.591
2 CONTINUE BL_IC7A.592
BL_IC7A.593
LAND_PTS=0 BL_IC7A.594
DO I=P1,P1+P_POINTS-1 BL_IC7A.595
IF (LAND_MASK(I)) LAND_PTS = LAND_PTS + 1 BL_IC7A.596
ENDDO BL_IC7A.597
BL_IC7A.598
*ELSE BL_IC7A.599
BL_IC7A.600
!----------------------------------------------------------------------- BL_IC7A.601
!! 0. Check grid definition arguments. This is single column model, so BL_IC7A.602
!! horizontal dimensions should all be 1. BL_IC7A.603
!----------------------------------------------------------------------- BL_IC7A.604
BL_IC7A.605
IF ( BL_LEVELS.LT.1 .OR. SM_LEVELS.LT.1) THEN BL_IC7A.606
ERROR = 1 BL_IC7A.607
GOTO999 BL_IC7A.608
ENDIF BL_IC7A.614
BL_IC7A.615
!----------------------------------------------------------------------- BL_IC7A.616
!! Set pointers, etc. Again most are 1 for single column model. BL_IC7A.617
!----------------------------------------------------------------------- BL_IC7A.618
BL_IC7A.619
N_P_ROWS = N_ROWS AJC1F405.314
N_U_ROWS = N_ROWS AJC1F405.315
AJC1F405.316
P_POINTS = N_P_ROWS * ROW_LENGTH AJC1F405.317
U_POINTS = N_U_ROWS * ROW_LENGTH AJC1F405.318
AJC1F405.319
P1 = 1 AJC1F405.320
U1 = 1 AJC1F405.321
AJC1F405.322
LAST_POINT = P1 + P_POINTS - 1 AJC1F405.323
AJC1F405.324
!--------------------------------------------------------------------- AJC1F405.325
!! Set compressed land point pointers. AJC1F405.326
!--------------------------------------------------------------------- AJC1F405.327
AJC1F405.328
LAND1=0 AJC1F405.329
DO I=1,P1+P_POINTS-1 AJC1F405.330
IF (LAND_INDEX(I).GE.P1) THEN AJC1F405.331
LAND1 = I AJC1F405.332
GOTO2 AJC1F405.333
ENDIF AJC1F405.334
ENDDO AJC1F405.335
2 CONTINUE AJC1F405.336
AJC1F405.337
LAND_PTS=0 AJC1F405.338
DO I=P1,P1+P_POINTS-1 AJC1F405.339
IF (LAND_MASK(I)) LAND_PTS = LAND_PTS + 1 AJC1F405.340
ENDDO AJC1F405.341
*ENDIF BL_IC7A.631
BL_IC7A.632
!----------------------------------------------------------------------- BL_IC7A.633
! Call TILEPTS to calculate TILE_PTS and TILE_INDEX BL_IC7A.634
!----------------------------------------------------------------------- BL_IC7A.635
CALL TILEPTS
(P_FIELD,LAND_FIELD,LAND1,LAND_PTS, BL_IC7A.636
& FRAC,TILE_PTS,TILE_INDEX) BL_IC7A.637
BL_IC7A.638
BL_IC7A.639
BL_IC7A.640
!----------------------------------------------------------------------- BL_IC7A.641
! Call MOSES II physiology routine to calculate surface conductances BL_IC7A.642
! and carbon fluxes. BL_IC7A.643
! VSHR_Z1 provides level 1 windspeed and height. BL_IC7A.644
!----------------------------------------------------------------------- BL_IC7A.645
BL_IC7A.646
CALL VSHR_Z1
( BL_IC7A.647
& P_FIELD,U_FIELD,LTIMER, BL_IC7A.648
& N_ROWS,FIRST_ROW,ROW_LENGTH, BL_IC7A.650
& AKH,BKH,EXNER,PSTAR,Q,QCF,QCL,T,U,V,U_0,V_0, BL_IC7A.652
& VSHR,Z1 BL_IC7A.653
& ) BL_IC7A.654
BL_IC7A.655
BL_IC7A.656
CALL PHYSIOL
( BL_IC7A.657
& LAND_FIELD,LAND_PTS,LAND1, BL_IC7A.658
& LAND_INDEX, BL_IC7A.660
& P_FIELD,SM_LEVELS,TILE_PTS,TILE_INDEX, BL_IC7A.662
& CO2_MMR,CO2_3D,CO2_DIM,L_CO2_INTERACTIVE, ACN1F405.118
& CS,FRAC,CANHT_FT,PHOTOSYNTH_ACT_RAD, ACN1F405.119
& LAI_FT,PSTAR,Q,STHU,TIMESTEP,T_DEEP_SOIL,TSTAR_TILE, BL_IC7A.664
& SMVCCL,SMVCST,SMVCWT,VSHR,Z0V_TILE,Z1, BL_IC7A.665
& G_LEAF,GS,GS_TILE,GPP,GPP_FT,NPP,NPP_FT, ABX1F405.801
& RESP_P,RESP_P_FT,RESP_S,RESP_W_FT,SMC,WT_EXT ABX1F405.802
& ) BL_IC7A.668
BL_IC7A.669
!---------------------------------------------------------------------- ABX1F405.803
! Increment accumulation of leaf turnover rate. ABX1F405.804
! This is required for leaf phenology and/or TRIFFID, either of ABX1F405.805
! which can be enabled independently of the other. ABX1F405.806
!---------------------------------------------------------------------- ABX1F405.807
IF (L_PHENOL.OR.L_TRIFFID) THEN ABX1F405.808
DO N=1,NPFT ABX1F405.809
DO L=LAND1,LAND1+LAND_PTS-1 ABX1F405.810
G_LEAF_ACC(L,N) = G_LEAF_ACC(L,N) + ABX1F405.811
& G_LEAF(L,N)*(TIMESTEP/SECS_PER_360DAYS) ABX1F405.812
ENDDO ABX1F405.813
ENDDO ABX1F405.814
ENDIF ABX1F405.815
ABX1F405.816
!---------------------------------------------------------------------- ABX1F405.817
! Increment accumulation prognostics for TRIFFID ABX1F405.818
!---------------------------------------------------------------------- ABX1F405.819
IF (L_TRIFFID) THEN ABX1F405.820
DO N=1,NPFT ABX1F405.821
DO L=LAND1,LAND1+LAND_PTS-1 ABX1F405.822
NPP_FT_ACC(L,N) = NPP_FT_ACC(L,N) + NPP_FT(L,N)*TIMESTEP ABX1F405.823
RESP_W_FT_ACC(L,N) = RESP_W_FT_ACC(L,N) ABX1F405.824
& + RESP_W_FT(L,N)*TIMESTEP ABX1F405.825
ENDDO ABX1F405.826
ENDDO ABX1F405.827
DO L=LAND1,LAND1+LAND_PTS-1 ABX1F405.828
RESP_S_ACC(L) = RESP_S_ACC(L) + RESP_S(L)*TIMESTEP ABX1F405.829
ENDDO ABX1F405.830
ENDIF ABX1F405.831
ABX1F405.832
BL_IC7A.685
!----------------------------------------------------------------------- BL_IC7A.686
! Calculate modified snow-free tile fractions for all but the ice tile BL_IC7A.687
!----------------------------------------------------------------------- BL_IC7A.688
DO N=1,NTYPE-1 BL_IC7A.689
DO L=1,LAND_FIELD ABX1F405.833
TILE_FRAC(L,N) = (1. - SNOW_FRAC(L))*FRAC(L,N) BL_IC7A.691
ENDDO BL_IC7A.692
ENDDO BL_IC7A.693
BL_IC7A.694
!----------------------------------------------------------------------- BL_IC7A.695
! Calculate the areal fraction of an "ice plus snow" tile by adding the BL_IC7A.696
! snow-covered fractions of all other tiles onto the areal fraction of BL_IC7A.697
! the land-ice tile BL_IC7A.698
!----------------------------------------------------------------------- BL_IC7A.699
N = NTYPE BL_IC7A.700
DO L=1,LAND_FIELD ABX1F405.834
TILE_FRAC(L,N) = FRAC(L,N) + SNOW_FRAC(L)*(1-FRAC(L,N)) BL_IC7A.702
ENDDO BL_IC7A.703
BL_IC7A.704
!----------------------------------------------------------------------- BL_IC7A.705
! Call TILEPTS to calculate TILE_PTS_S and TILE_INDEX_S BL_IC7A.706
!----------------------------------------------------------------------- BL_IC7A.707
CALL TILEPTS
(P_FIELD,LAND_FIELD,LAND1,LAND_PTS, BL_IC7A.708
& TILE_FRAC,TILE_PTS_S,TILE_INDEX_S) BL_IC7A.709
BL_IC7A.710
!----------------------------------------------------------------------- BL_IC7A.711
! Call boundary layer routine carrying-out tile calculations on BL_IC7A.712
! snow-modified tiles BL_IC7A.713
!----------------------------------------------------------------------- BL_IC7A.714
BL_IC7A.715
CALL BDY_LAYR
( BL_IC7A.716
BL_IC7A.717
! IN values defining field dimensions and subset to be processed : BL_IC7A.718
& P_FIELD,U_FIELD,LAND_FIELD, BL_IC7A.719
& P_ROWS,FIRST_ROW,N_ROWS,ROW_LENGTH, BL_IC7A.720
& N_P_ROWS,N_U_ROWS,P_POINTS,P1,LAND1,LAND_PTS,U_POINTS,U1, BL_IC7A.721
BL_IC7A.722
! IN values defining vertical grid of model atmosphere : BL_IC7A.723
& BL_LEVELS,P_LEVELS,AK,BK,AKH,BKH,DELTA_AK,DELTA_BK, BL_IC7A.724
& EXNER, BL_IC7A.725
BL_IC7A.726
! IN soil/vegetation/land surface data : BL_IC7A.727
& LAND_INDEX, BL_IC7A.729
& LAND_MASK,L_Z0_OROG, BL_IC7A.731
& NTYPE,TILE_INDEX_S,TILE_PTS_S,SM_LEVELS, BL_IC7A.732
& CANOPY_TILE,CATCH_TILE,GS_TILE,HCON,HO2R2_OROG,LYING_SNOW, BL_IC7A.733
& SIL_OROG_LAND,SMC,SMVCST,STHF,STHU, BL_IC7A.734
& TILE_FRAC,WT_EXT,Z0V,Z0V_TILE, BL_IC7A.735
BL_IC7A.736
! IN sea/sea-ice data : BL_IC7A.737
& DI,ICE_FRACT,U_0,V_0, BL_IC7A.738
BL_IC7A.739
! IN cloud data : BL_IC7A.740
& CF,QCF,QCL,CCA,CCB,CCT, BL_IC7A.741
BL_IC7A.742
! IN everything not covered so far : BL_IC7A.743
& PSTAR,RAD_NO_SNOW,RAD_SNOW,TIMESTEP,VSHR, BL_IC7A.744
& L_RMBL,L_BL_LSPICE,L_MOM,L_NEG_TSTAR, ABX1F405.835
BL_IC7A.746
! IN STASH flags :- BL_IC7A.747
& SFME,SIMLT,SMLT,SLH,SQ1P5,ST1P5,SU10,SV10, BL_IC7A.748
BL_IC7A.749
! INOUT data : BL_IC7A.750
& Q,T,T_DEEP_SOIL,TSNOW,TI,TSTAR,TSTAR_TILE, BL_IC7A.751
& U,V,Z0MSEA, BL_IC7A.752
BL_IC7A.753
! OUT Diagnostic not requiring STASH flags : BL_IC7A.754
& CD,CH,ECAN,E_SEA,ESOIL_TILE,FQW, BL_IC7A.755
& FTL,FTL_TILE,H_SEA,RHOKH,RHOKM, BL_IC7A.756
& RIB,RIB_TILE,SEA_ICE_HTF,SURF_HT_FLUX,TAUX,TAUY, BL_IC7A.757
BL_IC7A.758
! OUT diagnostic requiring STASH flags : BL_IC7A.759
& FME,SICE_MLT_HTF,SNOMLT_SURF_HTF,LATENT_HEAT, BL_IC7A.760
& Q1P5M,T1P5M,U10M,V10M, BL_IC7A.761
BL_IC7A.762
! OUT data required for tracer mixing : BL_IC7A.763
& RHO_ARESIST,ARESIST,RESIST_B, BL_IC7A.764
& RHO_ARESIST_TILE,ARESIST_TILE,RESIST_B_TILE, BL_IC7A.765
& NRML, BL_IC7A.766
BL_IC7A.767
! OUT data required for 4D_VAR : BL_IC7A.768
& RHO_CD_MODV1,RHO_KM, BL_IC7A.769
BL_IC7A.770
! OUT data required elsewhere in UM system : BL_IC7A.771
& ECAN_TILE,EI,ES,EXT,SNOWMELT,ZH, BL_IC7A.772
& SOIL_SURF_HTF,SNOW_SURF_HTF, BL_IC7A.773
& T1_SD,Q1_SD,ERROR, BL_IC7A.774
BL_IC7A.775
! LOGICAL LTIMER BL_IC7A.776
& LTIMER BL_IC7A.777
& ) BL_IC7A.778
BL_IC7A.779
999 CONTINUE ! Branch for error exit. BL_IC7A.780
BL_IC7A.781
RETURN BL_IC7A.782
END BL_IC7A.783
BL_IC7A.784
*ENDIF BL_IC7A.785