*IF DEF,CONTROL,AND,DEF,ATMOS ATMPHY1.2
C ******************************COPYRIGHT****************************** GTS2F400.379
C (c) CROWN COPYRIGHT 1995, METEOROLOGICAL OFFICE, All Rights Reserved. GTS2F400.380
C GTS2F400.381
C Use, duplication or disclosure of this code is subject to the GTS2F400.382
C restrictions as set forth in the contract. GTS2F400.383
C GTS2F400.384
C Meteorological Office GTS2F400.385
C London Road GTS2F400.386
C BRACKNELL GTS2F400.387
C Berkshire UK GTS2F400.388
C RG12 2SZ GTS2F400.389
C GTS2F400.390
C If no contract has been raised with this copy of the code, the use, GTS2F400.391
C duplication or disclosure of it is strictly prohibited. Permission GTS2F400.392
C to do so must first be obtained in writing from the Head of Numerical GTS2F400.393
C Modelling at the above address. GTS2F400.394
C ******************************COPYRIGHT****************************** GTS2F400.395
C GTS2F400.396
CLL Subroutine ATM_PHYS ATMPHY1.3
CLL ATMPHY1.4
CLL Purpose : to perform a single physics timestep including calculation ATMPHY1.5
CLL of cloud amounts and water content, astronomy if at the start ATMPHY1.6
CLL of a day, radiation if at a radiation timestep(seprate ATMPHY1.7
CLL choices for shortwave and longwave), boundary layer, ATMPHY1.8
CLL large scale rain, convection, surface hydrology, vertical ATMPHY1.9
CLL diffusion,and gravity wave drag. Diagnostics (including ATMPHY1.10
CLL output for other models) are calculated and passed to STASH ATMPHY1.11
CLL for processing ATMPHY1.12
CLL ATMPHY1.13
CLL level 2 control routine ATMPHY1.14
CLL version for Cray YMP ATMPHY1.15
CLL ATMPHY1.16
CLL C.Wilson <- programmer of some or all of previous code or changes ATMPHY1.17
CLL ATMPHY1.18
CLL Model Modification history from model version 3.0: ATMPHY1.19
CLL version Date ATMPHY1.20
CLL 3.1 22/01/93 Add debugging code under *DEF BITCOM12 to assist TJ270193.68
CLL bit compare tests across new releases of the model. TJ270193.69
CLL 3.1 2/02/93 : added comdeck CHSUNITS to define NUNITS for i/o. RS030293.93
CLL 3.1 08/02/93 Pass H_SWBANDS to RAD_CTL for portability AD080293.9
CLL Author: A. Dickinson Reviewer: C. Wilson AD080293.10
CLL 3.2 13/07/93 Changed CHARACTER*(*) to CHARACTER*(80) for TS150793.10
CLL portability and correct calls to TIMER - first TS150793.11
CLL argument should be an 8 character name. TS150793.12
CLL Author: Tracey Smith. TS150793.13
CLL 3.2 08/04/93 Dynamic allocation of main arrays. R T H Barnes @DYALLOC.325
CLL 3.3 24/11/93 Add code to enable diagnosis of total rainfall TJ241193.1
CLL and snowfall and total ppn rates in CONV_CTL. TJ241193.2
CLL Author: T. Johns Reviewer: R. Stratton TJ241193.3
CLL 3.3 20/10/93 Add code to enable STASH output of energy-cor diags TJ201093.1
CLL Author: T. Johns Reviewer: C. Wilson TJ201093.2
CLL 3.3 30/09/93 Option on frequency of convection scheme calls, RB300993.1
CLL using COMDECKS ARGCNVI,TYPCNVI. R.T.H.Barnes. RB300993.2
!LL 4.0 22/11/94 Add two extra work arrays to pass Qc and bs from AYY2F400.68
!LL LS_CLD routine to LS_PPN routine; WORKB, WORKC. AYY2F400.69
!LL Author: A. Bushell AYY2F400.70
CLL 3.4 19/10/94 Extra argument DS_LEVELS added to call to HYDRCTL ACB1F304.1
CLL for multilayer hydrology. ACB1F304.2
CLL Author: C.Bunton Reviewer: J.Lean ACB1F304.3
CLL 3.4 26/08/94 fluctuations of T1 and Q1 passed from BL_CTL to ARN2F304.225
CLL CONV_CTL;WORK9,WORK10 added C Wilson ARN2F304.226
CLL ATMPHY1.21
CLL 3.4 23/06/94 Option in sec. 5 to skip CONV_CTL if frequency GSS1F304.1176
CLL of convection calls is zero GSS1F304.1177
CLL DEF BITCOM12 replaced by LOGICAL L_WRIT_PHY GSS1F304.1178
CLL Time step control mechanism for WRITD1 added GSS1F304.1179
CLL LOGICAL LLINTS passed to ENG_MASS_DIAG GSS1F304.1180
CLL DEF EMCORR replaced by LOGICAL LEMCORR GSS1F304.1181
CLL Argument LWHITBROM passed to ENG_MASS_DIAG GSS1F304.1182
CLL S.J.Swarbrick GSS1F304.1183
CLL 3.5 27/03/95 Sub-Model changes : Remove Run Time constants ADR1F305.31
CLL from Atmos Dump Headers. D. Robinson. ADR1F305.32
CLL 3.5 9/5/95 MPP code: Change updateable area, AJS1F400.181
CLL add halo updates P.Burton AJS1F400.182
CLL 3.5 05/06/95 Chgs to STASH_MAXLEN array. RTHBarnes AJS1F400.183
CLL TJ201093.3
CLL 4.0 14/2/95 OPTION TO INCLUDE TRACER ADVECTION OF THETAL AND QT AJS1F401.165
CLL INSTEAD OF STANDARD HEUN ADVECTION AJS1F401.166
CLL 4.0 6/08/95 Added extra arguments ASURF and SNOWMELT AJS1F400.184
CLL to calls to BL_CTL and HYDR_CTL for AJS1F400.185
CLL use with Penman-Monteith code J.Smith AJS1F400.186
CLL 4.0 07/11/95 Added variable len_mom to reduce dimensions AJS1F401.167
CLL of convective momentum transport arrays when API2F400.2
CLL not required. Pete Inness. API2F400.3
CLL 4.1 29/05/96 Calculate dim TRAY_LEN of total tracer array (sulph AWO5F401.1
CLL and free tracers) for CONV_CTL. MJWoodage. AWO5F401.2
! AWO1F401.1
CLL 4.1 09/06/96 Add new section 17 control routine CHEM_CTL to do AWO1F401.2
CLL Sulphur Cycle chemistry. This converts SO2 to 3 modes AWO1F401.3
CLL of Sulphate aerosol, and converts DMS to SO2 and MSA. AWO1F401.4
CLL M J Woodage. AWO1F401.5
CLL 4.1 10/6/96 Changed size of len-mom for consistency. API4F401.1
CLL Pete Inness API4F401.2
! 4.1 20/05/96 Added TYPFLDPT arguments to physics routines APB1F401.2
! which allows many of the differences between APB1F401.3
! MPP and "normal" code to be at top level APB1F401.4
! Now calls multi-level version of POLAR APB1F401.5
! P.Burton APB1F401.6
CLL 4.1 6/2/96 Extra arguments added to CALLs to BL_CTL AJS1F401.168
CLL and HYDR_CTL required by MOSES scheme J.Smith AJS1F401.169
CLL 4.1 17/1/96 Band 1 total downward surface SW passed from AJS1F401.170
CLL CLDCTL and RAD_CTL into BL_CTL. R.A.Betts AJS1F401.171
CLL 4.1 22/05/96 Replaced *DEF FAST with FRADIO to allow fast GGH3F401.1
CLL radiation i/o code to be used. G Henderson GGH3F401.2
CLL 4.4 May 1997 New section for interactive vegetation. R.A.Betts ABX1F404.277
!LL 4.3 14/04/97 Change WRITD1 to DUMPCTL1 calls for MPP. K Rogers GKR4F403.175
CLL 4.3 15/05/97 Initialise temperature and moisture fluctuations ARR0F403.10
CLL in WORK9,WORK10 passed from BL to convection. ARR0F403.11
!LL 4.4 05/09/97 Ensure sulphur tracers' halos OK at end of timestep GSM6F404.10
!LL S.D.Mullerworth GSM6F404.11
CLL R.Rawlins. ARR0F403.12
!LL 4.4 05/09/97 Net flux prognostic to speed up energy correction GSM3F404.18
!LL on MPP. S.D.Mullerworth GSM3F404.19
! 4.4 30/06/97 If 2A cloud/ 3A precip pass CFL not Qc in WORKB. AYY1F404.1
! If 2A cloud/ 3A precip pass CFF not bs in WORKC. AYY1F404.2
! Author: A. Bushell AYY1F404.3
! AYY1F404.4
CLL 4.4 29/10/97 Extra arguments added to CALLs to BL_CTL ARE1F404.14
CLL and HYDR_CTL for MOSES II. R. Essery ARE1F404.15
CLL 4.4 29/10/97 Modified for MOSES II and prognostic snow albedo ARE2F404.1
CLL scheme. R. Essery ARE2F404.2
CLL 4.4 26/09/97 Pass MPARWTR, ANVIL_FACTOR and TOWER_FACTOR to AJX0F404.1
CLL CONV_CTL. J.M.Gregory AJX0F404.2
CLL 4.4 Sept 97 Do not call polar updating if mixed phase precip ADM2F404.267
CLL is used. Damian Wilson. ADM2F404.268
!!! 4.4 18/09/97 RADHEAT passed through RAD_CTL, CLD_CTL, BL_CTL in ARN1F404.79
!!! WORKF for A03_6A ARN1F404.80
!LL 4.5 24/03/98 Allow for NH3, soot vars and interactive CO2 AWO5F405.5
!LL tracers in calcn of TRAY_LEN for CONV_CTL AWO5F405.6
!LL Call SWAPBOUNDS for NH3 if present. M Woodage AWO5F405.7
!LL 4.5 Apr 1998 Set SOOT_DIM1 and SOOT_DIM2 and pass soot AWO5F405.8
!LL to RAD_CTL Luke Robinson AWO5F405.9
!LL 4.5 29/09/98 Set QTOT_DIM1,QTOT_DIM2 and pass to LSPP_CTL AWO5F405.10
!LL for use with soot or S Cycle M Woodage AWO5F405.11
!LL 4.5 26/05/98 Call SWAPBOUNDS for 3 soot modes if used. AWO5F405.12
!LL Call CHEM_CTL if either soot or Sulphur Cycle AWO5F405.13
!LL are used. AWO5F405.14
!LL Pass fresh and aged soot into CHEM_CTL. AWO5F405.15
!LL Luke Robinson AWO5F405.16
!LL 4.5 16/06/98 Pass run time constant UD_FACTOR (updraught factor) AJX3F405.144
!LL to CONV_CTL for use in CLOUDW. Julie Gregory. AJX3F405.145
CLL 4.5 15/07/98 Add code to dimension CO2 variable depending on ACN2F405.19
CLL use or not of interactive carbon cycle. C.D.Jones ACN2F405.20
CLL 4.5 13/05/98 New array created for area cloud parametrization, ASK1F405.96
CLL passed into radiation and layer cloud. S. Cusack ASK1F405.97
!LL 4.5 24/09/98 Extra DUMPCTL after HYDR_CTL for WRITD1 use. GDR8F405.72
!LL D. Robinson. GDR8F405.73
!LL 4.5 05/05/98 Add Fujitsu vectorization directives. GRB0F405.15
!LL RBarnes@ecmwf.int GRB0F405.16
!LL GRB0F405.17
CLL Programming Standard : Unified Model Documentation paper number 3 ATMPHY1.22
CLL System components covered : P2 ATMPHY1.23
CLL System task : P0 ATMPHY1.24
CLL Documentation : Unified Model Documentation paper No P0, ATMPHY1.25
CLL version No 12 dated 07/12/90 ATMPHY1.26
C AJS1F401.172
C AJS1F401.173
CLLEND----------------------------------------------------------------- ATMPHY1.27
CL arguments @DYALLOC.326
ATMPHY1.28
SUBROUTINE ATM_PHYS( 1,76@DYALLOC.327
& P_FIELDDA,LAND_FIELDDA,SM_LEVELSDA, AJS1F401.174
& TILE_FIELDDA, ARE1F404.16
& ROW_LENGTHDA,P_LEVELSDA,Q_LEVELSDA,BL_LEVELSDA, ARN1F404.81
& L_RADHEAT,RADHEAT_DIM1, ARN1F404.82
*CALL ARGSIZE
@DYALLOC.329
*CALL ARGD1
@DYALLOC.330
*CALL ARGDUMA
@DYALLOC.331
*CALL ARGDUMO
@DYALLOC.332
*CALL ARGDUMW
GKR1F401.172
*CALL ARGSTS
@DYALLOC.333
*CALL ARGPTRA
@DYALLOC.334
*CALL ARGPTRO
@DYALLOC.335
*CALL ARGCONA
@DYALLOC.336
*CALL ARGCNVI
RB300993.3
*CALL ARGPPX
GKR0F305.888
*CALL ARGFLDPT
APB1F401.7
*IF DEF,FRADIO GGH3F401.3
& RADINCS, @DYALLOC.338
*ENDIF @DYALLOC.339
& ICODE,CMESSAGE,WRITD1_TEST) GSS1F304.1184
ATMPHY1.34
IMPLICIT NONE ATMPHY1.35
ATMPHY1.36
*CALL CMAXSIZE
@DYALLOC.340
*CALL CSUBMODL
GSS1F305.920
*CALL TYPSIZE
@DYALLOC.341
*CALL TYPD1
@DYALLOC.342
*CALL TYPDUMA
@DYALLOC.343
*CALL TYPDUMO
@DYALLOC.344
*CALL TYPDUMW
GKR1F401.173
*CALL TYPSTS
@DYALLOC.345
*CALL TYPPTRA
@DYALLOC.346
*CALL TYPPTRO
@DYALLOC.347
*CALL TYPCONA
@DYALLOC.348
*CALL TYPCNVI
RB300993.4
*CALL PPXLOOK
GKR0F305.889
! All TYPFLDPT arguments are intent IN APB1F401.8
*CALL TYPFLDPT
APB1F401.9
*IF DEF,FRADIO GGH3F401.4
*CALL CRADINCS
@DYALLOC.350
*ENDIF @DYALLOC.351
INTEGER ! Extra copies of lengths for @DYALLOC.352
& P_FIELDDA, ! dynamic allocation: P_FIELD @DYALLOC.353
& SM_LEVELSDA, ! dynamic allocation: SM_LEVELS AJS1F401.176
& LAND_FIELDDA, ! dynamic allocation: LAND_FIELD AJS1F401.177
& TILE_FIELDDA, ! and LAND_FIELD for tiled diags ARE1F404.17
& ROW_LENGTHDA, ! and ROW_LENGTH @DYALLOC.354
& P_LEVELSDA, ! and P_LEVELS @DYALLOC.355
& Q_LEVELSDA, ! and Q_LEVELS @DYALLOC.356
& BL_LEVELSDA, ! and BL_LEVELS ARN1F404.83
& RADHEAT_DIM1, ! Required for array dimensions ARN1F404.84
! ! for RADHEAT ARN1F404.85
& ICODE ! Return code : 0 Normal exit ATMPHY1.41
! : >0 Error condition GSS1F304.1185
CHARACTER*80 CMESSAGE TS150793.15
ATMPHY1.45
LOGICAL L_RADHEAT ! Flag for version of Section 3. ARN1F404.86
*CALL CHSUNITS
RS030293.94
*CALL CCONTROL
ATMPHY1.46
*CALL CPHYSCON
@DYALLOC.357
*CALL CTIME
ATMPHY1.51
*CALL CHISTORY
GDR3F305.7
*CALL C_GLOBAL
GSS1F304.1186
*CALL C_WRITD
GSS1F304.1187
*CALL CRUNTIMC
ADR1F305.33
*CALL NSTYPES
ARE1F404.18
ATMPHY1.53
CL Locally dynamically allocated work area for interfacing between ATMPHY1.54
CL sections ATMPHY1.55
ATMPHY1.56
REAL ATMPHY1.57
& WORK1(P_FIELDDA,Q_LEVELSDA), @DYALLOC.358
& WORK2(P_FIELDDA), @DYALLOC.359
& WORK3(P_FIELDDA), @DYALLOC.360
& WORK4(P_FIELDDA), @DYALLOC.361
& WORK5(P_FIELDDA), @DYALLOC.362
& WORK6(P_FIELDDA), @DYALLOC.363
& WORK7(P_FIELDDA), @DYALLOC.364
& WORK8(P_FIELDDA), ARN2F304.227
& WORK9(P_FIELDDA), ARN2F304.228
& WORK10(P_FIELDDA) ARN2F304.229
& ,WORK11(P_FIELDDA) AJS1F401.178
& ,WORK12(P_FIELDDA) AJS1F401.179
& ,WORK13(LAND_FIELDDA,SM_LEVELSDA) ! AJS1F401.180
& ,WORK14(P_FIELDDA) ! AJS1F401.181
& ,WORK15(P_FIELDDA) ! AJS1F401.182
& ,LSCLD_AREA(P_FIELDDA,Q_LEVELSDA) ASK1F405.98
! Cloud area in layer ASK1F405.99
& ,WORKB(P_FIELDDA,Q_LEVELSDA) ! Qc from Sec9 to Sec4 AYY2F400.71
! when Sec9.2A (=> Sec4.3A) is chosen CFL from Sec9 to Sec4 AYY1F404.5
& ,WORKC(P_FIELDDA,Q_LEVELSDA) ! bs from Sec9 to Sec4 AYY2F400.72
! when Sec9.2A (=> Sec4.3A) is chosen CFF from Sec9 to Sec4 AYY1F404.6
& ,WORKF(RADHEAT_DIM1,BL_LEVELSDA) ARN1F404.87
! ! Radiative heating rates in the ARN1F404.88
! ! bottom BL_LEVELS layers ARN1F404.89
! ! from Secs. 1 & 2 or 9 to Sec.3 ARN1F404.90
ATMPHY1.66
REAL ARE2F404.3
& RAD_NO_SNOW(P_FIELDDA) ! Surface net radiation, snow-free ARE2F404.4
C ! fraction of gridbox ARE2F404.5
& ,RAD_SNOW(P_FIELDDA) ! Surface net radiation, snow-covered ARE2F404.6
C ! fraction of gridbox ARE2F404.7
ARE2F404.8
ATMPHY1.67
REAL ARE1F404.19
& ECAN_TILE(TILE_FIELDDA,NTYPE-1)! Canopy evaporation from ARE1F404.20
! ! snow-free land tiles ARE1F404.21
& ,SNOW_FRAC(TILE_FIELDDA) ! Fraction of snow cover. ARE1F404.22
& ,SOIL_SURF_HTF(TILE_FIELDDA)! Net downward surface heat flux ARE1F404.23
! ! (W/m2) - snow-free land. ARE1F404.24
& ,SNOW_SURF_HTF(TILE_FIELDDA)! Net downward surface heat flux ARE1F404.25
! ! (W/m2) - snow. ARE1F404.26
ARE1F404.27
INTEGER ADB1F401.1
& TILE_PTS(NTYPE) ! Number of land points which ARE1F404.28
! ! include the nth surface type. ARE1F404.29
& ,TILE_INDEX(TILE_FIELDDA,NTYPE) ARE1F404.30
! ! Indices of land points which ARE1F404.31
! ! include the nth surface type. ARE1F404.32
ARE1F404.33
INTEGER ARE1F404.34
& SULP_DIM1,SULP_DIM2 ! Required for array dimensions in RAD_C ADB1F401.2
& ,CO2_DIM1, CO2_DIM2 ! Req'd for array dims in RAD_CTL ACN2F405.21
& ,LSPICE_DIM1,LSPICE_DIM2 ! Required for ADM0F405.305
! array dimensions in LSPP_CT1 ADM0F405.306
& ,SOOT_DIM1,SOOT_DIM2 ! Required for ALR3F405.1
! array dimensions in RAD_CTL ALR3F405.2
& ,QTOT_DIM1,QTOT_DIM2 ! array dimensions for LSPP_CT1 ALR3F405.3
INTEGER ATMPHY1.68
& TOT_LEVELS ! Required for dimensioning workspace in CLD_CTL @DYALLOC.366
& ,len_mom ! Required for array dimensions in CONV_CTL API2F400.4
& , NLALBS ! Required for array dimensions in & below AWI1F403.117
& , W1236_DIM ! RAD_CTL AWI1F403.118
& , SAL_DIM ! Required for array dimensions in & below RAD_CT ARE2F404.9
INTEGER ! Required for array dimension in CONV_CTL AWO5F401.3
& TRAY_LEN AWO5F401.4
& ,NTRA_FLD !local counter for no. of tracers AWO5F405.17
! AWO5F401.5
ATMPHY1.70
REAL ATMPHY1.73
& N_POLAR_VALUES(ROW_LENGTHDA,P_LEVELSDA+3*Q_LEVELSDA), @DYALLOC.367
& S_POLAR_VALUES(ROW_LENGTHDA,P_LEVELSDA+3*Q_LEVELSDA) @DYALLOC.368
ATMPHY1.76
ATMPHY1.77
C*L external subroutine calls ATMPHY1.78
ATMPHY1.79
EXTERNAL CLD_CTL, ATMPHY1.80
& ENG_MASS_DIAG,CAL_ENG_MASS_CORR,ADD_ENG_CORR,ENG_CTL, GSS1F304.1188
& TIMER,VDF_CTL,GWAV_CTL,RAD_CTL,BL_CTL, ATMPHY1.84
& LSPP_CTL,CONV_CTL,HYDR_CTL,POLAR,STASH ATMPHY1.85
&, CHEM_CTL,DUMPCTL GKR4F403.176
ATMPHY1.86
C* ATMPHY1.87
C Local variables ATMPHY1.88
ATMPHY1.89
ATMPHY1.90
INTEGER DMS_LEN ! Size of DMS array AWO1F401.7
REAL COZENANG(P_FIELDDA) ! COS ZENITH ANGLE AWO1F401.8
INTEGER ATMPHY1.91
& ICON, ! Loop counter for section 5 - convection GSS1F304.1190
& I, ATMPHY1.93
& J, AJS1F401.183
& L, ARE1F404.35
& N, ARE1F404.36
& FIRST_POINT, ATMPHY1.97
& LAST_POINT, ATMPHY1.98
& I1, ATMPHY1.99
& I2, ATMPHY1.100
& K,II,IIQCL,IIQCF,ITOLQ,ITOLQCL,ITOLQCF, ATD1F400.90
& IQNEG(P_FIELDDA),IQCLNEG(P_FIELDDA),IQCFNEG(P_FIELDDA), ATD1F400.91
& LEVEL, ATMPHY1.101
& IM_IDENT, ! internal model identifier GRB4F305.18
& IM_INDEX, ! internal model index for STASH arrays GRB4F305.19
& STASHLEN ! Length of STASHWORK needed by current section ATMPHY1.102
& ,A_STEP GDR5F305.15
*IF DEF,GLOBAL,AND,DEF,MPP APB1F305.7
INTEGER I_off APB1F305.8
*ENDIF APB1F305.9
REAL ATMPHY1.104
& SNOWDEPTH, ARE1F404.37
& TOT_MASS_FINAL, ATMPHY1.105
& TOT_ENERGY_FINAL, ATMPHY1.106
& PART_TOT_MASS ATMPHY1.107
ATMPHY1.109
REAL ATMPHY1.110
& PU,PL ATMPHY1.111
*CALL P_EXNERC
ATMPHY1.112
*CALL C_SOILH
ARE1F404.38
ATMPHY1.113
INTEGER ABX1F404.278
& PHENOL_CALL
! indicates whether phenology is to be called ABX1F404.279
&,TRIFFID_CALL ! indicates whether TRIFFID is to be called ABX1F404.280
&,NSTEP_TRIF ! Number of atmospheric timesteps between calls to ABX1F404.281
C ! TRIFFID vegetation model. ABX1F404.282
ABX1F404.283
A_STEP = STEPim(atmos_im) GDR5F305.16
GDR5F305.17
im_ident = atmos_im GRB4F305.20
im_index = internal_model_index(im_ident) GRB4F305.21
GRB4F305.22
CL Internal structure including subroutine calls: ATMPHY1.114
CL set pointer shift and length for physics calculations ATMPHY1.115
CL exclude all except one polar point and to exclude N-S boundary rows ATMPHY1.116
CL in limited area model. ATMPHY1.117
!L WARNING: On current model grid, POLAR points pose problems for u-, v- AYY2F400.73
!L and momentum- related variables and many physics schemes AYY2F400.74
!L only operate over interior rows for this reason. Schemes AYY2F400.75
!L with purely thermodynamic variables can be calculated at all AYY2F400.76
!L points, eg. LS_CLD, but may not be. Users concerned about AYY2F400.77
!L behaviour at polar points should check inside individual AYY2F400.78
!L control subroutines for indexing and are advised to seek AYY2F400.79
!L advice before attempting changes in this area. AYY2F400.80
ATMPHY1.118
FIRST_POINT=FIRST_VALID_PT APB1F401.10
LAST_POINT=LAST_P_VALID_PT APB1F401.11
ATMPHY1.121
ATMPHY1.122
*IF DEF,A03_7A ARE1F404.39
C---------------------------------------------------------------------- ARE1F404.40
C Diagnose fractional snow cover for MOSES II ARE1F404.41
C---------------------------------------------------------------------- ARE1F404.42
DO L=1,TILE_FIELDDA ARE1F404.43
SNOW_FRAC(L) = 0. ARE1F404.44
SNOWDEPTH = D1(JSNODEP+LAND_LIST(L)-1) ARE1F404.45
IF ( SNOWDEPTH .GT. 0. ) THEN ARE1F404.46
SNOW_FRAC(L) = MIN ( 1. , SNOWDEPTH / (RHO_SNOW*DEFF_SNOW) ) ARE1F404.47
SNOW_FRAC(L) = MAX ( SNOW_FRAC(L), 1E-3 ) ARE1F404.48
ENDIF ARE1F404.49
ENDDO ARE1F404.50
ARE1F404.51
*ENDIF ARE1F404.52
CL -- SECTION 9 -- ENERGY ADJUSTMENT AND CLOUD AMOUNT CALCULATIONS --- ATMPHY1.123
CL local workspace definitions ATMPHY1.124
CL WORK1 holds cloud amount ATMPHY1.125
CL WORK6 holds surface net down radiation flux (at radiation timesteps). ATMPHY1.126
CL WORK15 holds total downward surface shortwave (band 1) AJS1F401.184
! WORKB holds Qc, approximate gridbox mean deviation from saturation, AYY1F404.7
! When 2A version chosen, holds CFL Liquid cloud fraction. AYY1F404.8
! WORKC holds maximum moisture fluctuation in-cloud bs, AYY1F404.9
! When 2A version chosen, holds CFF Frozen cloud fraction. AYY1F404.10
!! WORKF holds radiative heating rates for the bottom BL_LEVELS layers ARN1F404.91
CL ATMPHY1.127
ATMPHY1.128
ATMPHY1.130
C Convert potential temperature to temperature ATMPHY1.131
ATMPHY1.132
DO LEVEL=1,P_LEVELS ATMPHY1.133
! Fujitsu vectorization directive GRB0F405.18
!OCL NOVREC GRB0F405.19
DO I=FIRST_POINT,LAST_POINT ATMPHY1.134
PU=D1(JPSTAR+I-1)*BKH(LEVEL+1) + AKH(LEVEL+1) ATMPHY1.135
PL=D1(JPSTAR+I-1)*BKH(LEVEL) + AKH(LEVEL) ATMPHY1.136
D1(JTHETA(LEVEL)+I-1)=D1(JTHETA(LEVEL)+I-1)* ATMPHY1.137
& P_EXNER_C( D1(JP_EXNER(LEVEL+1)+I-1),D1(JP_EXNER(LEVEL)+I-1), ATMPHY1.138
& PU,PL,KAPPA ) ATMPHY1.139
END DO ATMPHY1.140
END DO ATMPHY1.141
ATMPHY1.142
C Set length of STASHWORK array for CLD_CTL, which may be used for ATMPHY1.143
C Section 9 diagnostics in all timesteps and Section 1 ones if the ATMPHY1.144
C timestep is not a full SW timestep. ATMPHY1.145
ATMPHY1.146
IF ( L_SW_RADIATE ) THEN ATMPHY1.147
STASHLEN = STASH_MAXLEN(9,im_index) GRB4F305.23
ELSE ATMPHY1.149
STASHLEN = MAX(STASH_MAXLEN(1,im_index), GRB4F305.24
& STASH_MAXLEN(9,im_index)) GRB4F305.25
ENDIF ATMPHY1.151
TOT_LEVELS = P_LEVELS+3*Q_LEVELS ! Used for dimensioning workspace @DYALLOC.369
ATMPHY1.152
IF(LTIMER) THEN ATMPHY1.153
CALL TIMER
('CLD_CTL ',3) ATMPHY1.154
END IF ATMPHY1.155
ATMPHY1.156
CALL CLD_CTL
(WORK1,WORK6,WORK15,LSCLD_AREA ASK1F405.100
& ,RAD_NO_SNOW,RAD_SNOW,SNOW_FRAC ARE2F404.10
& ,WORKB,WORKC,N_POLAR_VALUES,S_POLAR_VALUES AJS1F401.186
& ,WORKF,BL_LEVELS,L_RADHEAT,RADHEAT_DIM1 ARN1F404.92
& ,P_FIELD,P_LEVELS,Q_LEVELS,ROW_LENGTH,TOT_LEVELS,STASHLEN, AYY2F400.84
*CALL ARGSIZE
@DYALLOC.372
*CALL ARGD1
@DYALLOC.373
*CALL ARGDUMA
@DYALLOC.374
*CALL ARGDUMO
@DYALLOC.375
*CALL ARGDUMW
GKR1F401.174
*CALL ARGSTS
@DYALLOC.376
*CALL ARGPTRA
@DYALLOC.377
*CALL ARGPTRO
@DYALLOC.378
*CALL ARGCONA
@DYALLOC.379
*CALL ARGPPX
GKR0F305.890
*CALL ARGFLDPT
APBHF401.1
*IF DEF,FRADIO GGH3F401.5
& RADINCS, @DYALLOC.381
*ENDIF @DYALLOC.382
& COZENANG, AWO1F401.9
& ICODE,CMESSAGE) @DYALLOC.383
IF (L_WRIT_PHY .AND. GSS1F304.1192
& (A_STEP.LE.T_WRITD1_END .OR. T_WRITD1_END .EQ. 0)) THEN GSS1F304.1193
GSS1F304.1194
IF (A_STEP.EQ.T_WRITD1_START .OR. GSS1F304.1195
& WRITD1_TEST.GT.WRITD1_TEST_PREV) THEN GSS1F304.1196
GSS1F304.1197
CALL DUMPCTL
( GKR4F403.177
*CALL ARGSIZE
GKR4F403.178
*CALL ARGD1
GKR4F403.179
*CALL ARGDUMA
GKR4F403.180
*CALL ARGDUMO
GKR4F403.181
*CALL ARGDUMW
GKR4F403.182
*CALL ARGCONA
GKR4F403.183
*CALL ARGPTRA
GKR4F403.184
*CALL ARGSTS
GKR4F403.185
*CALL ARGPPX
GKR4F403.186
& atmos_sm,0,.TRUE.,'af_cld_ctl',a_step, GIE1F405.5
& ICODE,CMESSAGE) GKR4F403.188
GSS1F304.1199
END IF GSS1F304.1200
GSS1F304.1201
END IF GSS1F304.1202
TJ270193.77
IF(LTIMER) THEN ATMPHY1.161
CALL TIMER
('CLD_CTL ',4) ATMPHY1.162
END IF ATMPHY1.163
ATMPHY1.164
IF(ICODE.GT.0) RETURN ATMPHY1.165
ATMPHY1.166
ATMPHY1.167
IF (LEMCORR) THEN GSS1F304.1203
GSM3F404.20
IF (LFLUX_RESET) THEN GSM3F404.21
! Reinitialise net flux field at beginning of period GSM3F404.22
DO I=1,P_FIELD GSM3F404.23
D1(JNET_FLUX+I-1)=0.0 GSM3F404.24
ENDDO GSM3F404.25
ENDIF GSM3F404.26
GSM3F404.27
GSS1F304.1204
IF(LTIMER) THEN ATMPHY1.169
CALL TIMER
('ADJ_ENGY',3) ATMPHY1.170
END IF ATMPHY1.171
ATMPHY1.172
CALL ADD_ENG_CORR
(A_REALHD(21),D1(JTHETA(1)),P_FIELD,P_FIELD, ATMPHY1.173
& P_LEVELS,SECS_PER_STEPim(atmos_im), ADR1F305.34
& A_REALHD(19),A_REALHD(18)) ADR1F305.35
TJ201093.5
CALL ENG_CTL
(STASH_MAXLEN(14,im_index),A_REALHD(21), GRB4F305.26
*CALL ARGSIZE
TJ201093.7
*CALL ARGD1
TJ201093.8
*CALL ARGDUMA
TJ201093.9
*CALL ARGDUMO
TJ201093.10
*CALL ARGDUMW
GKR1F401.175
*CALL ARGSTS
TJ201093.11
*CALL ARGPTRA
TJ201093.12
*CALL ARGPTRO
TJ201093.13
*CALL ARGCONA
TJ201093.14
*CALL ARGPPX
GKR0F305.891
& ICODE,CMESSAGE) TJ201093.15
TJ201093.16
IF (ICODE.GT.0) THEN TJ201093.17
RETURN TJ201093.18
ENDIF TJ201093.19
ATMPHY1.176
IF(LTIMER) THEN ATMPHY1.177
CALL TIMER
('ADJ_ENGY',4) ATMPHY1.178
END IF ATMPHY1.179
ATMPHY1.181
END IF ! LEMCORR GSS1F304.1205
ATMPHY1.184
C ----------------------------------------------------- ATMPHY1.185
ATMPHY1.186
C --- SECTION 1+2 RADIATION ------------------------------------ ATMPHY1.187
ATMPHY1.188
CL Local workspace allocation ATMPHY1.189
CL WORK1 holds cloud amount ATMPHY1.190
CL WORK2 holds sine of true latitude ATMPHY1.191
CL WORK3 holds fraction of time a point is sunlit ATMPHY1.192
CL WORK4 holds the cosine of the solar zenith angle (zero at night). WI200893.38
CL WORK5 holds net downward solar flux at the top of the atmosphere. ATMPHY1.194
CL WORK6 holds surface net down radiation flux ATMPHY1.195
CL WORK7 holds list of daylight points ATMPHY1.196
CL WORK8 holds a logical switch defining daylight points ATMPHY1.197
CL WORK15 holds total downward surface shortwave (band 1) AJS1F401.187
!! WORKF holds radiative heating rates for bottom BL_LEVELS layers ARN1F404.93
ATMPHY1.198
IF(L_SW_RADIATE.OR.L_LW_RADIATE) THEN ATMPHY1.199
C Set length of STASHWORK array for sections 1&2 ATMPHY1.200
ATMPHY1.201
STASHLEN=MAX(STASH_MAXLEN(1,im_index),STASH_MAXLEN(2,im_index)) GRB4F305.27
ATMPHY1.203
ATMPHY1.204
! Set dimensions of _SULPHATE arrays for passing to RAD_CTL ADB1F401.3
! (avoids wasting space if aerosol not required) ADB1F401.4
IF (L_USE_SULPC_DIRECT .OR. L_USE_SULPC_INDIRECT_SW AAJ1F404.7
& .OR. L_USE_SULPC_INDIRECT_LW) THEN AAJ1F404.8
SULP_DIM1 = P_FIELDDA ADB1F401.6
SULP_DIM2 = P_LEVELSDA ADB1F401.7
ELSE ADB1F401.8
SULP_DIM1 = 1 ADB1F401.9
SULP_DIM2 = 1 ADB1F401.10
END IF ADB1F401.11
! ACN2F405.22
! Similarly for carbon cycle ACN2F405.23
IF (L_CO2_INTERACTIVE) THEN ACN2F405.24
CO2_DIM1 = P_FIELDDA ACN2F405.25
CO2_DIM2 = P_LEVELSDA ACN2F405.26
ELSE ACN2F405.27
CO2_DIM1 = 1 ACN2F405.28
CO2_DIM2 = 1 ACN2F405.29
END IF ACN2F405.30
AWI1F403.119
! Set dimensions of soot arrays for passing to RAD_CTL ALR3F405.4
! (avoids wasting space if soot not required) ALR3F405.5
IF (L_USE_SOOT_DIRECT) THEN ALR3F405.6
SOOT_DIM1 = P_FIELDDA ALR3F405.7
SOOT_DIM2 = P_LEVELSDA ALR3F405.8
ELSE ALR3F405.9
SOOT_DIM1 = 1 ALR3F405.10
SOOT_DIM2 = 1 ALR3F405.11
END IF ALR3F405.12
! Similar for land surface albedos - different values are needed for AWI1F403.120
! direct & diffuse sunlight if the HadCM2 approximate treatment of AWI1F403.121
! sulphate aerosol is being used: AWI1F403.122
IF ( L_H2_SULPH ) THEN AWI1F403.123
NLALBS = 2 AWI1F403.124
ELSE AWI1F403.125
NLALBS = 1 AWI1F403.126
ENDIF AWI1F403.127
AWI1F403.128
! And if in addition this diagnostic is requested, extra workspace AWI1F403.129
! must be defined in & below RAD_CTL AWI1F403.130
IF ( SF(236,1) ) THEN AWI1F403.131
W1236_DIM = P_FIELD AWI1F403.132
ELSE AWI1F403.133
W1236_DIM = 1 AWI1F403.134
ENDIF AWI1F403.135
ARE2F404.11
! Extra workspace required if prognostic snow albedo scheme is used ARE2F404.12
IF ( L_SNOW_ALBEDO ) THEN ARE2F404.13
SAL_DIM = P_FIELD ARE2F404.14
ELSE ARE2F404.15
SAL_DIM = 1 ARE2F404.16
ENDIF ARE2F404.17
! ADB1F401.12
IF(LTIMER) THEN ATMPHY1.205
CALL TIMER
('RAD_CTL',3) ATMPHY1.206
END IF ATMPHY1.207
ATMPHY1.208
CALL RAD_CTL
(WORK1,WORK2,WORK3,WORK4,WORK5,WORK6,WORK7,WORK8, ATMPHY1.209
& LSCLD_AREA, ASK1F405.101
& RAD_NO_SNOW,RAD_SNOW,SNOW_FRAC, ARE2F404.18
& WORK15,WORKF, ARN1F404.94
& P_FIELD,P_LEVELS,Q_LEVELS,OZONE_LEVELS,CLOUD_LEVELS, ARN1F404.95
& BL_LEVELS,L_RADHEAT,RADHEAT_DIM1, ARN1F404.96
& H_SWBANDS, STASHLEN, CO2_DIM1, CO2_DIM2, ACN2F405.31
& SULP_DIM1, SULP_DIM2, SOOT_DIM1, SOOT_DIM2, ALR3F405.13
& NLALBS, W1236_DIM, SAL_DIM, ALR3F405.14
*CALL ARGSIZE
@DYALLOC.386
*CALL ARGD1
@DYALLOC.387
*CALL ARGDUMA
@DYALLOC.388
*CALL ARGDUMO
@DYALLOC.389
*CALL ARGDUMW
GKR1F401.176
*CALL ARGSTS
@DYALLOC.390
*CALL ARGPTRA
@DYALLOC.391
*CALL ARGPTRO
@DYALLOC.392
*CALL ARGCONA
@DYALLOC.393
*CALL ARGPPX
GKR0F305.892
*CALL ARGFLDPT
APBBF401.1
*IF DEF,FRADIO GGH3F401.6
& RADINCS, @DYALLOC.395
*ENDIF @DYALLOC.396
& ICODE,CMESSAGE) @DYALLOC.397
ATMPHY1.211
DO I=1,P_FIELD ! SAVE WORK4, WHICH IS RETURNED BY RADCNTL AWO1F401.10
COZENANG(I)=WORK4(I) AWO1F401.11
ENDDO AWO1F401.12
IF (L_WRIT_PHY .AND. GSS1F304.1206
& (A_STEP.LE.T_WRITD1_END .OR. T_WRITD1_END .EQ. 0)) THEN GSS1F304.1207
TJ270193.81
IF (A_STEP.EQ.T_WRITD1_START .OR. GSS1F304.1208
& WRITD1_TEST.GT.WRITD1_TEST_PREV) THEN GSS1F304.1209
GSS1F304.1210
CALL DUMPCTL
( GKR4F403.189
*CALL ARGSIZE
GKR4F403.190
*CALL ARGD1
GKR4F403.191
*CALL ARGDUMA
GKR4F403.192
*CALL ARGDUMO
GKR4F403.193
*CALL ARGDUMW
GKR4F403.194
*CALL ARGCONA
GKR4F403.195
*CALL ARGPTRA
GKR4F403.196
*CALL ARGSTS
GKR4F403.197
*CALL ARGPPX
GKR4F403.198
& atmos_sm,0,.TRUE.,'af_rad_ctl',a_step, GIE1F405.6
& ICODE,CMESSAGE) GKR4F403.200
GSS1F304.1212
END IF GSS1F304.1213
GSS1F304.1214
END IF GSS1F304.1215
GSS1F304.1216
IF(LTIMER) THEN ATMPHY1.212
CALL TIMER
('RAD_CTL',4) ATMPHY1.213
END IF ATMPHY1.214
ATMPHY1.215
ATMPHY1.216
IF(ICODE.GT.0) RETURN ATMPHY1.217
END IF ATMPHY1.218
C ------------------------------------------------------------ ATMPHY1.220
ATMPHY1.221
CL--- SECTION 3 --- BOUNDARY LAYER & SURFACE ---------- ATMPHY1.222
ATMPHY1.223
CL WORK1 holds cloud amount ATMPHY1.224
CL WORK2 holds snow sublimation ATMPHY1.225
CL WORK3 holds canopy evaporation ATMPHY1.226
CL WORK4 holds soil evaporation ATMPHY1.227
CL WORK6 holds surface net down radiation flux ATMPHY1.228
CL WORK9 holds fluctuations in T1 ARN2F304.230
CL WORK10 holds fluctuations in Q1 ARN2F304.231
CL WORK5,7,8 used as workspace in boundary layer routine ATMPHY1.229
CL WORK12 holds snowmelt AJS1F400.190
CL WORK13 holds extraction of moisture AJS1F401.189
CL WORK14 holds surface heat flux AJS1F401.190
CL WORK15 holds total downward surface shortwave (band 1) AJS1F401.191
! WORKB holds Qc, approximate gridbox mean deviation from saturation, AYY1F404.11
! When 2A cloud scheme chosen, holds CFL Liquid cloud fraction. AYY1F404.12
! WORKC holds maximum moisture fluctuation in-cloud bs, AYY1F404.13
! When 2A cloud scheme chosen, holds CFF Frozen cloud fraction. AYY1F404.14
!! WORKF holds radiative heating rates for the bottom BL_LEVELS layers ARN1F404.97
AJS1F401.192
AJS1F401.193
! Initialise temperature and moisture fluctuations passed from BL to ARR0F403.13
! convection in WORK9,WORK10 arrays to avoid uninitialised data being ARR0F403.14
! accessed in convection. If the fluctuations are calculated ARR0F403.15
! consistently in SF_EXCH within BL, this initialisation should not be ARR0F403.16
! needed, but MPP halos complicate the issue. ARR0F403.17
DO I=1,P_FIELD ARR0F403.18
WORK9(I)=0.0 ARR0F403.19
WORK10(I)=0.0 ARR0F403.20
ENDDO ARR0F403.21
ATMPHY1.230
IF(LTIMER) THEN ATMPHY1.231
CALL TIMER
('BL_CTL',5) GPB1F401.23
CALL TIMER
('BL_CTL ',3) TS150793.16
END IF ATMPHY1.233
ATMPHY1.234
CALL BL_CTL
(WORK1,WORK2,WORK12,WORK3,WORK13,WORK4, AJS1F401.194
& WORK14,WORK6,WORK9,WORK10,WORK5, AJS1F401.195
& WORK7,WORK8,WORK15,WORKB,WORKC, AJS1F401.196
& WORKF,RADHEAT_DIM1, ARN1F404.98
& P_FIELD,Q_LEVELS,BL_LEVELS, AJS1F401.197
& ST_LEVELS,SM_LEVELS,STASH_MAXLEN(3,im_index), AJS1F401.198
& LAND_FIELD, AJS1F401.199
& TILE_FIELDDA,TILE_PTS,TILE_INDEX, ARE1F404.53
& RAD_NO_SNOW,RAD_SNOW,SNOW_FRAC, ARE1F404.54
& ECAN_TILE,SNOW_SURF_HTF,SOIL_SURF_HTF, ARE1F404.55
*CALL ARGSIZE
@DYALLOC.399
*CALL ARGD1
@DYALLOC.400
*CALL ARGDUMA
@DYALLOC.401
*CALL ARGDUMO
@DYALLOC.402
*CALL ARGDUMW
GKR1F401.177
*CALL ARGSTS
@DYALLOC.403
*CALL ARGPTRA
@DYALLOC.404
*CALL ARGPTRO
@DYALLOC.405
*CALL ARGCONA
@DYALLOC.406
*CALL ARGPPX
GKR0F305.893
*CALL ARGFLDPT
APBGF401.18
& ICODE,CMESSAGE) @DYALLOC.407
ATMPHY1.238
IF (L_WRIT_PHY .AND. GSS1F304.1217
& (A_STEP.LE.T_WRITD1_END .OR. T_WRITD1_END .EQ. 0)) THEN GSS1F304.1218
TJ270193.85
IF (A_STEP.EQ.T_WRITD1_START .OR. GSS1F304.1219
& WRITD1_TEST.GT.WRITD1_TEST_PREV) THEN GSS1F304.1220
GSS1F304.1221
CALL DUMPCTL
( GKR4F403.201
*CALL ARGSIZE
GKR4F403.202
*CALL ARGD1
GKR4F403.203
*CALL ARGDUMA
GKR4F403.204
*CALL ARGDUMO
GKR4F403.205
*CALL ARGDUMW
GKR4F403.206
*CALL ARGCONA
GKR4F403.207
*CALL ARGPTRA
GKR4F403.208
*CALL ARGSTS
GKR4F403.209
*CALL ARGPPX
GKR4F403.210
& atmos_sm,0,.TRUE.,'af_bl_ctl_',a_step, GIE1F405.7
& ICODE,CMESSAGE) GKR4F403.212
GSS1F304.1223
END IF GSS1F304.1224
GSS1F304.1225
END IF GSS1F304.1226
GSS1F304.1227
IF(LTIMER) THEN ATMPHY1.239
CALL TIMER
('BL_CTL ',4) TS150793.17
CALL TIMER
('BL_CTL',6) GPB1F401.24
END IF ATMPHY1.241
ATMPHY1.242
IF(ICODE.GT.0) THEN ATMPHY1.243
RETURN ATMPHY1.244
END IF ATMPHY1.245
ATMPHY1.246
CL WORK2,WORK3,WORK4 carried forward to Hydrology ATMPHY1.247
CL WORK9,WORK10 carried forward to convection ARN2F304.234
ATMPHY1.248
! AWO1F401.13
!--------------------------------------------------------------------- AWO1F401.14
! AWO1F401.15
!------------ SECTION 17 SULPHUR CYCLE CHEMISTRY ------------------- AWO1F401.16
! AWO1F401.17
! Call to CHEM_CTL if Sulphur Cycle or Soot have been requested ALR2F405.1
! AWO1F401.19
IF (L_SULPC_SO2 .OR. L_SOOT) THEN ALR2F405.2
! AWO1F401.21
IF (LTIMER) THEN AWO1F401.22
CALL TIMER
('CHEM_CTL',3) AWO1F401.23
END IF AWO1F401.24
! AWO1F401.25
IF (L_SULPC_DMS) THEN AWO1F401.26
DMS_LEN=P_FIELD*P_LEVELS AWO1F401.27
ELSE AWO1F401.28
DMS_LEN=1 AWO1F401.29
END IF ! END L_SULPC_DMS IF AWO1F401.30
! AWO1F401.31
! AWO1F401.32
CALL CHEM_CTL
(WORK1, ! Cloud fraction AWO1F401.33
& DMS_LEN, AWO1F401.34
& Q_LEVELS,P_LEVELS,P_FIELD,ROW_LENGTH, AWO1F401.35
& COZENANG,STASH_MAXLEN(17,im_index), AWO1F401.36
*CALL ARGSIZE
AWO1F401.37
*CALL ARGD1
AWO1F401.38
*CALL ARGDUMA
AWO1F401.39
*CALL ARGDUMO
AWO1F401.40
*CALL ARGSTS
AWO1F401.41
*CALL ARGPTRA
AWO1F401.42
*CALL ARGPTRO
AWO1F401.43
*CALL ARGCONA
AWO1F401.44
*CALL ARGPPX
AWO1F401.45
*CALL ARGFLDPT
AWO1F401.46
& ICODE,CMESSAGE) AWO1F401.47
! AWO1F401.48
IF(LTIMER) THEN AWO1F401.49
CALL TIMER
('CHEM_CTL',4) AWO1F401.50
END IF AWO1F401.51
! AWO1F401.52
IF(ICODE.GT.0) THEN AWO1F401.53
RETURN AWO1F401.54
END IF AWO1F401.55
! AWO1F401.56
ENDIF ! End of L_SULPC_SO2 or L_SOOT test ALR2F405.3
! AWO1F401.58
C ----------------------------------------------------- ATMPHY1.249
ATMPHY1.250
CL--- SECTION 4 --- STRATIFORM PRECIPITATION ---------- ATMPHY1.251
ATMPHY1.252
CL local workspace definitions ATMPHY1.253
CL WORK1 holds cloud amount ATMPHY1.254
CL WORK5 holds large scale rain ATMPHY1.255
CL WORK6 holds large scale snow ATMPHY1.256
! WORKB holds Qc, approximate gridbox mean deviation from saturation, AYY1F404.15
! When 2A cloud scheme chosen, holds CFL Liquid cloud fraction. AYY1F404.16
! WORKC holds maximum moisture fluctuation in-cloud bs, AYY1F404.17
! When 2A cloud scheme chosen, holds CFF Frozen cloud fraction. AYY1F404.18
! AYY1F404.19
! Set dimensions of QTOTAL array, required only for S Cycle or Soot AWO4F405.1
IF (L_SULPC_SO2 .OR. L_SOOT) THEN AWO4F405.2
QTOT_DIM1 = P_FIELDDA AWO4F405.3
QTOT_DIM2 = Q_LEVELSDA AWO4F405.4
ELSE AWO4F405.5
QTOT_DIM1 = 1 AWO4F405.6
QTOT_DIM2 = 1 AWO4F405.7
END IF AWO4F405.8
! AWO4F405.9
! Only allow dynamic allocation of full space for arrays for 3D ADM0F405.307
! precipitation diagnostics if they are being used. Otherwise save space ADM0F405.308
! and give them a minimum size of 1 by 1. ADM0F405.309
IF ( SF(222,4) .OR. SF(223,4) .OR. SF(224,4) .OR. SF(225,4) ) THEN ADM0F405.310
LSPICE_DIM1 = P_FIELDDA ADM0F405.311
LSPICE_DIM2 = Q_LEVELSDA ADM0F405.312
ELSE ADM0F405.313
LSPICE_DIM1 = 1 ADM0F405.314
LSPICE_DIM2 = 1 ADM0F405.315
END IF ADM0F405.316
! ADM0F405.317
IF(LTIMER) THEN ATMPHY1.259
CALL TIMER
('LSPP_CTL',3) ATMPHY1.260
END IF ATMPHY1.261
ATMPHY1.262
CALL LSPP_CTL
(WORK1,WORK5,WORK6,WORKB,WORKC, AYY2F400.90
& P_FIELD,Q_LEVELS,STASH_MAXLEN(4,im_index), GRB4F305.29
& QTOT_DIM1,QTOT_DIM2, AWO4F405.10
& LSPICE_DIM1,LSPICE_DIM2, ADM0F405.318
*CALL ARGSIZE
@DYALLOC.410
*CALL ARGD1
@DYALLOC.411
*CALL ARGDUMA
@DYALLOC.412
*CALL ARGDUMO
@DYALLOC.413
*CALL ARGDUMW
GKR1F401.178
*CALL ARGSTS
@DYALLOC.414
*CALL ARGPTRA
@DYALLOC.415
*CALL ARGPTRO
@DYALLOC.416
*CALL ARGCONA
@DYALLOC.417
*CALL ARGPPX
GKR0F305.894
*CALL ARGFLDPT
APBCF401.1
& ICODE,CMESSAGE) ATMPHY1.264
ATMPHY1.265
IF (L_WRIT_PHY .AND. GSS1F304.1228
& (A_STEP.LE.T_WRITD1_END .OR. T_WRITD1_END .EQ. 0)) THEN GSS1F304.1229
TJ270193.89
IF (A_STEP.EQ.T_WRITD1_START .OR. GSS1F304.1230
& WRITD1_TEST.GT.WRITD1_TEST_PREV) THEN GSS1F304.1231
GSS1F304.1232
CALL DUMPCTL
( GKR4F403.213
*CALL ARGSIZE
GKR4F403.214
*CALL ARGD1
GKR4F403.215
*CALL ARGDUMA
GKR4F403.216
*CALL ARGDUMO
GKR4F403.217
*CALL ARGDUMW
GKR4F403.218
*CALL ARGCONA
GKR4F403.219
*CALL ARGPTRA
GKR4F403.220
*CALL ARGSTS
GKR4F403.221
*CALL ARGPPX
GKR4F403.222
& atmos_sm,0,.TRUE.,'af_lsppctl',a_step, GIE1F405.8
& ICODE,CMESSAGE) GKR4F403.224
GSS1F304.1234
END IF GSS1F304.1235
GSS1F304.1236
END IF GSS1F304.1237
GSS1F304.1238
IF(LTIMER) THEN ATMPHY1.266
CALL TIMER
('LSPP_CTL',4) ATMPHY1.267
END IF ATMPHY1.268
ATMPHY1.269
IF(ICODE.GT.0) THEN ATMPHY1.270
RETURN ATMPHY1.271
END IF ATMPHY1.272
ATMPHY1.273
CL convert temperature to potential temperature ATMPHY1.274
ATMPHY1.275
DO LEVEL=1,P_LEVELS ATMPHY1.276
! Fujitsu vectorization directive GRB0F405.20
!OCL NOVREC GRB0F405.21
DO I=FIRST_POINT,LAST_POINT ATMPHY1.277
PU=D1(JPSTAR+I-1)*BKH(LEVEL+1) + AKH(LEVEL+1) ATMPHY1.278
PL=D1(JPSTAR+I-1)*BKH(LEVEL) + AKH(LEVEL) ATMPHY1.279
D1(JTHETA(LEVEL)+I-1)=D1(JTHETA(LEVEL)+I-1)/ ATMPHY1.280
& P_EXNER_C( D1(JP_EXNER(LEVEL+1)+I-1),D1(JP_EXNER(LEVEL)+I-1), ATMPHY1.281
& PU,PL,KAPPA ) ATMPHY1.282
END DO ATMPHY1.283
END DO ATMPHY1.284
ATMPHY1.285
ATMPHY1.286
C ----------------------------------------------------- ATMPHY1.287
ATMPHY1.288
CL --- SECTION 5 --- CONVECTION ------------------------ ATMPHY1.289
ATMPHY1.290
CL local workspace definitions ATMPHY1.291
CL WORK1 holds dtheta/dt ATMPHY1.292
CL WORK5 holds large scale rain (input for diagnostic purposes) TJ241193.4
CL WORK6 holds large scale snow (input for diagnostic purposes) TJ241193.5
CL WORK7 holds CON_RAIN ATMPHY1.293
CL WORK8 holds CON_SNOW ATMPHY1.294
CL WORK9 holds fluctuations in T1 from boundary layer ARN2F304.235
CL WORK10 holds fluctuations in Q1 from boundary layer ARN2F304.236
ATMPHY1.295
ATMPHY1.296
IF (A_CONV_STEP .EQ. 0) THEN ! Skip CONV_CTL if convection GSS1F304.1239
DO ICON = 1,P_FIELDDA ! calling frequency is zero GSS1F304.1240
WORK7(ICON) = 0.0 GSS1F304.1241
WORK8(ICON) = 0.0 GSS1F304.1242
END DO GSS1F304.1243
ELSE GSS1F304.1244
GSS1F304.1245
IF(LTIMER) THEN ATMPHY1.297
CALL TIMER
('CONVECT',5) GPB1F401.25
CALL TIMER
('CONV_CTL',3) ATMPHY1.298
END IF ATMPHY1.299
ATMPHY1.300
! set up array dimension size for convective momentum transport API2F400.5
! arrays in CONV_CTL. If convective momentum transports are not API2F400.6
! required, set dimension to 1 to reduce memory useage. API2F400.7
IF(L_MOM)THEN API2F400.8
len_mom=P_FIELD API4F401.3
ELSE API2F400.10
len_mom=1 API2F400.11
END IF API2F400.12
! AWO5F401.6
! Set up array dimensions for total tracer array (free + sulphur cycle AWO5F401.7
! tracers) so that convective transport of all tracers is done AWO5F401.8
! AWO5F401.9
IF ( (L_SULPC_SO2 .OR. L_SOOT .OR. L_CO2_INTERACTIVE) .AND. AWO5F405.18
& (TR_VARS.GE.1) .AND. AWO5F405.19
& (TR_LEVELS .NE. P_LEVELS) ) THEN ! exit AWO5F401.11
WRITE(6,*) 'TR_LEVELS .NE. P_LEVELS, CANNOT CALL CONV_CT1'
AWO5F401.12
RETURN AWO5F401.13
END IF AWO5F401.14
IF ( (L_CO2_INTERACTIVE) .AND. (TR_VARS.GE.1) .AND. ACN2F405.32
& (TR_LEVELS .NE. P_LEVELS) ) THEN ! exit ACN2F405.33
WRITE(6,*) 'TR_LEVELS .NE. P_LEVELS, CANNOT CALL CONV_CT1'
ACN2F405.34
RETURN ACN2F405.35
END IF ACN2F405.36
! ACN2F405.37
! AWO5F401.15
IF (L_SULPC_SO2 .OR. L_SOOT .OR. L_CO2_INTERACTIVE) THEN AWO5F405.20
NTRA_FLD = 0 !Initialise to zero AWO5F405.21
! AWO5F405.22
IF (L_SULPC_SO2) THEN AWO5F405.23
NTRA_FLD = NTRA_FLD + 4 !Add SO2 + 3 SO4 modes AWO5F405.24
IF (L_SULPC_NH3) THEN AWO5F405.25
NTRA_FLD = NTRA_FLD + 1 !Add NH3 field AWO5F405.26
END IF AWO5F405.27
IF (L_SULPC_DMS) THEN AWO5F405.28
NTRA_FLD = NTRA_FLD + 1 !Add DMS field AWO5F405.29
END IF AWO5F405.30
END IF AWO5F405.31
! AWO5F405.32
IF (L_SOOT) THEN AWO5F405.33
NTRA_FLD = NTRA_FLD + 3 !Add 3 modes of soot AWO5F405.34
END IF AWO5F405.35
! AWO5F405.36
IF (L_CO2_INTERACTIVE) THEN AWO5F405.37
NTRA_FLD = NTRA_FLD + 1 !Add CO2 field AWO5F405.38
END IF AWO5F405.39
! AWO5F405.40
TRAY_LEN = P_FIELD * P_LEVELS * (NTRA_FLD+TR_VARS) AWO5F405.41
! AWO5F405.42
ELSE AWO5F401.22
IF (TR_VARS .EQ. 0) THEN AWO5F401.23
TRAY_LEN = P_FIELD ! consistent with CONVECT AWO5F401.24
ELSE AWO5F401.25
TRAY_LEN = P_FIELD*TR_LEVELS*TR_VARS AWO5F401.26
ENDIF AWO5F401.27
ENDIF AWO5F401.28
! AWO5F401.29
CALL CONV_CTL
(WORK1,WORK7,WORK8, RB300993.5
& WORK5,WORK6, TJ241193.6
& WORK9,WORK10,P_FIELD,P_LEVELS,Q_LEVELS,len_mom, API2F400.13
& TRAY_LEN, AWO5F401.30
& MPARWTR,ANVIL_FACTOR,TOWER_FACTOR,UD_FACTOR, AJX3F405.146
& STASH_MAXLEN(5,im_index), GRB4F305.31
*CALL ARGSIZE
@DYALLOC.422
*CALL ARGD1
@DYALLOC.423
*CALL ARGDUMA
@DYALLOC.424
*CALL ARGDUMO
@DYALLOC.425
*CALL ARGDUMW
GKR1F401.179
*CALL ARGSTS
@DYALLOC.426
*CALL ARGPTRA
@DYALLOC.427
*CALL ARGPTRO
@DYALLOC.428
*CALL ARGCONA
@DYALLOC.429
*CALL ARGCNVI
RB300993.6
*CALL ARGPPX
GKR0F305.895
*CALL ARGFLDPT
APBDF401.1
& ICODE,CMESSAGE) ATMPHY1.302
ATMPHY1.303
IF (L_WRIT_PHY .AND. GSS1F304.1246
& (A_STEP.LE.T_WRITD1_END .OR. T_WRITD1_END .EQ. 0)) THEN GSS1F304.1247
GSS1F304.1248
IF (A_STEP.EQ.T_WRITD1_START .OR. GSS1F304.1249
& WRITD1_TEST.GT.WRITD1_TEST_PREV) THEN GSS1F304.1250
GSS1F304.1251
CALL DUMPCTL
( GKR4F403.225
*CALL ARGSIZE
GKR4F403.226
*CALL ARGD1
GKR4F403.227
*CALL ARGDUMA
GKR4F403.228
*CALL ARGDUMO
GKR4F403.229
*CALL ARGDUMW
GKR4F403.230
*CALL ARGCONA
GKR4F403.231
*CALL ARGPTRA
GKR4F403.232
*CALL ARGSTS
GKR4F403.233
*CALL ARGPPX
GKR4F403.234
& atmos_sm,0,.TRUE.,'af_convctl',a_step, GIE1F405.9
& ICODE,CMESSAGE) GKR4F403.236
GSS1F304.1253
END IF GSS1F304.1254
GSS1F304.1255
END IF GSS1F304.1256
TJ270193.93
IF(LTIMER) THEN ATMPHY1.304
CALL TIMER
('CONV_CTL',4) ATMPHY1.305
CALL TIMER
('CONVECT',6) GPB1F401.26
END IF ATMPHY1.306
ATMPHY1.307
IF(ICODE.GT.0) THEN ATMPHY1.308
RETURN ATMPHY1.309
END IF ATMPHY1.310
ATMPHY1.311
END IF ! End of 'skip CONV_CTL' option GSS1F304.1257
GSS1F304.1258
C ----------------------------------------------------- ATMPHY1.312
ATMPHY1.313
CL ----------- SECTION 8 - HYDROLOGY ------------------ ATMPHY1.314
ATMPHY1.315
CL local workspace definitions ATMPHY1.316
CL WORK2 holds snow sublimation ATMPHY1.317
CL WORK3 holds canopy evaporation ATMPHY1.318
CL WORK4 holds surface evaporation AJS1F401.200
CL WORK5 holds large scale rain ATMPHY1.320
CL WORK6 holds large scale snow ATMPHY1.321
CL WORK7 holds convective rain ATMPHY1.322
CL WORK8 holds convective snow ATMPHY1.323
CL WORK12 holds snow melt AJS1F401.201
CL WORK13 holds extraction AJS1F401.202
CL WORK14 holds surface heat flux AJS1F401.203
ATMPHY1.325
IF(LTIMER) THEN ATMPHY1.326
CALL TIMER
('HYDR_CTL',3) ATMPHY1.327
END IF ATMPHY1.328
ATMPHY1.329
CALL HYDR_CTL
(WORK2,WORK12,WORK3,WORK13, AJS1F401.204
& WORK4,WORK14,WORK5,WORK6, AJS1F401.205
& WORK7,WORK8,LAND_FIELD,STASH_MAXLEN(8,im_index), AJS1F400.196
& ST_LEVELS,SM_LEVELS, AJS1F401.206
& TILE_FIELDDA,TILE_PTS,TILE_INDEX, ARE1F404.56
& ECAN_TILE,SNOW_FRAC,SOIL_SURF_HTF,SNOW_SURF_HTF, ARE1F404.57
*CALL ARGSIZE
@DYALLOC.431
*CALL ARGD1
@DYALLOC.432
*CALL ARGDUMA
@DYALLOC.433
*CALL ARGDUMO
@DYALLOC.434
*CALL ARGDUMW
GKR1F401.180
*CALL ARGSTS
@DYALLOC.435
*CALL ARGPTRA
@DYALLOC.436
*CALL ARGPTRO
@DYALLOC.437
*CALL ARGCONA
@DYALLOC.438
*CALL ARGPPX
GKR0F305.896
*CALL ARGFLDPT
APBFF401.1
& ICODE,CMESSAGE) @DYALLOC.439
ATMPHY1.332
IF(LTIMER) THEN ATMPHY1.333
CALL TIMER
('HYDR_CTL',4) ATMPHY1.334
END IF ATMPHY1.335
ATMPHY1.336
IF(ICODE.GT.0) THEN ATMPHY1.337
RETURN ATMPHY1.338
END IF ATMPHY1.339
ATMPHY1.340
C ----------------------------------------------------- ATMPHY1.341
ATMPHY1.342
IF (L_WRIT_PHY .AND. GDR8F405.74
& (A_STEP.LE.T_WRITD1_END .OR. T_WRITD1_END .EQ. 0)) THEN GDR8F405.75
GDR8F405.76
IF (A_STEP.EQ.T_WRITD1_START .OR. GDR8F405.77
& WRITD1_TEST.GT.WRITD1_TEST_PREV) THEN GDR8F405.78
GDR8F405.79
CALL DUMPCTL
( GDR8F405.80
*CALL ARGSIZE
GDR8F405.81
*CALL ARGD1
GDR8F405.82
*CALL ARGDUMA
GDR8F405.83
*CALL ARGDUMO
GDR8F405.84
*CALL ARGDUMW
GDR8F405.85
*CALL ARGCONA
GDR8F405.86
*CALL ARGPTRA
GDR8F405.87
*CALL ARGSTS
GDR8F405.88
*CALL ARGPPX
GDR8F405.89
& atmos_sm,0,.TRUE.,'af_hydrctl',a_step, GDR8F405.90
& ICODE,CMESSAGE) GDR8F405.91
GDR8F405.92
END IF GDR8F405.93
GDR8F405.94
END IF GDR8F405.95
ATMPHY1.343
C --- SECTION 7 --- VERTICAL DIFFUSION ---------------- ATMPHY1.344
*IF -DEF,A07_0A ATMPHY1.345
CL Skip section 7 if zero coefficient of diffusion ATMPHY1.346
IF(VERTICAL_DIFFUSION.GT.0.0) THEN ADR1F305.36
ATMPHY1.348
ATMPHY1.349
IF(LTIMER) THEN ATMPHY1.350
CALL TIMER
('VDF_CTL ',3) ATMPHY1.351
END IF ATMPHY1.352
ATMPHY1.353
CALL VDF_CTL
(U_FIELD,P_LEVELS,STASH_MAXLEN(7,im_index), GRB4F305.33
*CALL ARGSIZE
@DYALLOC.441
*CALL ARGD1
@DYALLOC.442
*CALL ARGDUMA
@DYALLOC.443
*CALL ARGDUMO
@DYALLOC.444
*CALL ARGDUMW
GKR1F401.181
*CALL ARGSTS
@DYALLOC.445
*CALL ARGPTRA
@DYALLOC.446
*CALL ARGPTRO
@DYALLOC.447
*CALL ARGCONA
@DYALLOC.448
*CALL ARGPPX
GKR0F305.897
*CALL ARGFLDPT
APBHF401.75
& ICODE,CMESSAGE) @DYALLOC.449
ATMPHY1.355
IF (L_WRIT_PHY .AND. GSS1F304.1259
& (A_STEP.LE.T_WRITD1_END .OR. T_WRITD1_END .EQ. 0)) THEN GSS1F304.1260
TJ270193.97
IF (A_STEP.EQ.T_WRITD1_START .OR. GSS1F304.1261
& WRITD1_TEST.GT.WRITD1_TEST_PREV) THEN GSS1F304.1262
GSS1F304.1263
CALL DUMPCTL
( GKR4F403.237
*CALL ARGSIZE
GKR4F403.238
*CALL ARGD1
GKR4F403.239
*CALL ARGDUMA
GKR4F403.240
*CALL ARGDUMO
GKR4F403.241
*CALL ARGDUMW
GKR4F403.242
*CALL ARGCONA
GKR4F403.243
*CALL ARGPTRA
GKR4F403.244
*CALL ARGSTS
GKR4F403.245
*CALL ARGPPX
GKR4F403.246
& atmos_sm,0,.TRUE.,'af_vdf_ctl',a_step, GIE1F405.10
& ICODE,CMESSAGE) GKR4F403.248
GSS1F304.1265
END IF GSS1F304.1266
GSS1F304.1267
END IF GSS1F304.1268
GSS1F304.1269
IF(LTIMER) THEN ATMPHY1.356
CALL TIMER
('VDF_CTL ',4) ATMPHY1.357
END IF ATMPHY1.358
ATMPHY1.359
IF(ICODE.GT.0) THEN ATMPHY1.360
RETURN ATMPHY1.361
END IF ATMPHY1.362
ATMPHY1.363
ENDIF ! non-zero diffusion coefficent ATMPHY1.364
*ENDIF ATMPHY1.365
C ----------------------------------------------------- ATMPHY1.366
ATMPHY1.367
ATMPHY1.368
C --- SECTION 6 --- GRAVITY WAVE DRAG ----------------- ATMPHY1.369
*IF -DEF,A06_0A ATMPHY1.370
CL Skip section 6 if zero coefficient for gravity wave stress ATMPHY1.371
IF(KAY_GWAVE.GT.0.0) THEN ADR1F305.37
ATMPHY1.373
ATMPHY1.374
CL Calculate index of land points ATMPHY1.375
CL Index is relative to FIRST_POINT ATMPHY1.376
ATMPHY1.377
ATMPHY1.378
IF(LTIMER) THEN ATMPHY1.379
CALL TIMER
('GWAV_CTL',3) ATMPHY1.380
END IF ATMPHY1.381
ATMPHY1.382
CALL GWAV_CTL
(P_FIELD,P_LEVELS,STASH_MAXLEN(6,im_index), GRB4F305.34
*CALL ARGSIZE
@DYALLOC.451
*CALL ARGD1
@DYALLOC.452
*CALL ARGDUMA
@DYALLOC.453
*CALL ARGDUMO
@DYALLOC.454
*CALL ARGDUMW
GKR1F401.182
*CALL ARGSTS
@DYALLOC.455
*CALL ARGPTRA
@DYALLOC.456
*CALL ARGPTRO
@DYALLOC.457
*CALL ARGCONA
@DYALLOC.458
*CALL ARGPPX
GKR0F305.898
*CALL ARGFLDPT
APBEF401.1
& ICODE,CMESSAGE) @DYALLOC.459
TJ270193.98
IF (L_WRIT_PHY .AND. GSS1F304.1270
& (A_STEP.LE.T_WRITD1_END .OR. T_WRITD1_END .EQ. 0)) THEN GSS1F304.1271
ATMPHY1.384
IF (A_STEP.EQ.T_WRITD1_START .OR. GSS1F304.1272
& WRITD1_TEST.GT.WRITD1_TEST_PREV) THEN GSS1F304.1273
GSS1F304.1274
CALL DUMPCTL
( GKR4F403.249
*CALL ARGSIZE
GKR4F403.250
*CALL ARGD1
GKR4F403.251
*CALL ARGDUMA
GKR4F403.252
*CALL ARGDUMO
GKR4F403.253
*CALL ARGDUMW
GKR4F403.254
*CALL ARGCONA
GKR4F403.255
*CALL ARGPTRA
GKR4F403.256
*CALL ARGSTS
GKR4F403.257
*CALL ARGPPX
GKR4F403.258
& atmos_sm,0,.TRUE.,'af_gwavctl',a_step, GIE1F405.11
& ICODE,CMESSAGE) GKR4F403.260
GSS1F304.1276
END IF GSS1F304.1277
GSS1F304.1278
END IF GSS1F304.1279
GSS1F304.1280
IF(LTIMER) THEN ATMPHY1.385
CALL TIMER
('GWAV_CTL',4) ATMPHY1.386
END IF ATMPHY1.387
ATMPHY1.388
IF(ICODE.GT.0) THEN ATMPHY1.389
RETURN ATMPHY1.390
END IF ATMPHY1.391
ATMPHY1.392
ENDIF ! non-zero coefficent for gravity wave stress ATMPHY1.393
*ENDIF ATMPHY1.394
C ----------------------------------------------------- ATMPHY1.395
ATMPHY1.396
*IF -DEF,A19_0A ABX1F404.284
CL -- SECTION 19 -- VEGETATION DYNAMICS ------------------------------- ABX1F404.285
CL ABX1F404.286
C----------------------------------------------------------------------- ABX1F404.287
C Increment counter for number of atmosphere timesteps since last ABX1F404.288
C call to TRIFFID vegetation model ABX1F404.289
C----------------------------------------------------------------------- ABX1F404.290
A_INTHD(23) = A_INTHD(23) + 1 ABX1F404.291
ABX1F404.292
C----------------------------------------------------------------------- ABX1F404.293
C If leaf phenology is activated, check whether the atmosphere model ABX1F404.294
C has run an integer number of phenology calling periods. ABX1F404.295
C----------------------------------------------------------------------- ABX1F404.296
PHENOL_CALL=1 ABX1F404.297
TRIFFID_CALL=1 ABX1F404.298
IF (L_PHENOL) THEN ABX1F404.299
PHENOL_CALL = MOD (
FLOAT(A_STEP),(FLOAT(PHENOL_PERIOD)* ABX1F404.300
& (86400.0/SECS_PER_STEPim(atmos_im))) ) ABX1F404.301
ENDIF ABX1F404.302
ABX1F404.303
IF (L_TRIFFID) THEN ABX1F404.304
NSTEP_TRIF=INT(86400.0*A_INTHD(22)/SECS_PER_STEPim(atmos_im)) ABX1F404.305
IF (A_INTHD(23).EQ.NSTEP_TRIF) THEN ABX1F404.306
TRIFFID_CALL=0 ABX1F404.307
ENDIF ABX1F404.308
ENDIF ABX1F404.309
ABX1F404.310
IF ((PHENOL_CALL.EQ.0).OR.(TRIFFID_CALL.EQ.0)) THEN
ABX1F404.311
ABX1F404.312
CALL VEG_CTL
(P_FIELD,LAND_FIELD,A_STEP,STASH_MAXLEN(3,im_index), ABX1F405.974
*CALL ARGSIZE
ABX1F404.314
*CALL ARGD1
ABX1F404.315
*CALL ARGDUMA
ABX1F404.316
*CALL ARGDUMO
ABX1F404.317
*CALL ARGDUMW
ABX1F404.318
*CALL ARGSTS
ABX1F404.319
*CALL ARGPTRA
ABX1F404.320
*CALL ARGPTRO
ABX1F404.321
*CALL ARGCONA
ABX1F404.322
*CALL ARGPPX
ABX1F404.323
*CALL ARGFLDPT
ABX1F404.324
& ICODE,CMESSAGE) ABX1F404.325
ABX1F404.326
ENDIF ABX1F404.327
ABX1F404.328
*ENDIF ABX1F404.329
CL------ SECTION 16 DIAGNOSE ENERGY AND OTHER PHYSICS DIAGNOSTICS ---- ATMPHY1.397
ATMPHY1.398
IF (LEMCORR) THEN GSS1F304.1281
GSS1F304.1282
IF(LENERGY)THEN ATMPHY1.400
C ATMPHY1.401
C SET UP POINTER TO FIRST POINT NEEDED TO P GRID FOR ATMPHY1.402
C CALCULATION ATMPHY1.403
C ATMPHY1.404
C ATMPHY1.406
C CONVERT THETA TO TL (OR T) ATMPHY1.407
C ATMPHY1.408
IF (P_LEVELS.EQ.Q_LEVELS) THEN ATMPHY1.409
C ATMPHY1.410
DO J=1,P_LEVELS ATMPHY1.411
! Fujitsu vectorization directive GRB0F405.22
!OCL NOVREC GRB0F405.23
DO I=FIRST_VALID_PT,LAST_P_VALID_PT APB1F401.12
PU=D1(JPSTAR+I-1)*BKH(J+1) + AKH(J+1) ATMPHY1.413
PL=D1(JPSTAR+I-1)*BKH(J) + AKH(J) ATMPHY1.414
D1(JTHETA(J)+I-1)=D1(JTHETA(J)+I-1)* ATMPHY1.415
& P_EXNER_C( D1(JP_EXNER(J+1)+I-1),D1(JP_EXNER(J)+I-1), ATMPHY1.416
& PU,PL,KAPPA ) - ATMPHY1.417
& ((LC*D1(JQCL(J)+I-1) + ATMPHY1.418
& (LC+LF)*D1(JQCF(J)+I-1))/CP) ATMPHY1.419
END DO ATMPHY1.420
END DO ATMPHY1.421
C ATMPHY1.422
ELSE ATMPHY1.423
C ATMPHY1.424
DO J=1,Q_LEVELS ATMPHY1.425
! Fujitsu vectorization directive GRB0F405.24
!OCL NOVREC GRB0F405.25
DO I=FIRST_VALID_PT,LAST_P_VALID_PT APB1F401.13
PU=D1(JPSTAR+I-1)*BKH(J+1) + AKH(J+1) ATMPHY1.427
PL=D1(JPSTAR+I-1)*BKH(J) + AKH(J) ATMPHY1.428
D1(JTHETA(J)+I-1)=D1(JTHETA(J)+I-1)* ATMPHY1.429
& P_EXNER_C( D1(JP_EXNER(J+1)+I-1),D1(JP_EXNER(J)+I-1), ATMPHY1.430
& PU,PL,KAPPA ) - ATMPHY1.431
& ((LC*D1(JQCL(J)+I-1) + ATMPHY1.432
& (LC+LF)*D1(JQCF(J)+I-1))/CP) ATMPHY1.433
END DO ATMPHY1.434
END DO ATMPHY1.435
C ATMPHY1.436
DO J=Q_LEVELS+1,P_LEVELS ATMPHY1.437
! Fujitsu vectorization directive GRB0F405.26
!OCL NOVREC GRB0F405.27
DO I=FIRST_VALID_PT,LAST_P_VALID_PT APB1F401.14
PU=D1(JPSTAR+I-1)*BKH(J+1) + AKH(J+1) ATMPHY1.439
PL=D1(JPSTAR+I-1)*BKH(J) + AKH(J) ATMPHY1.440
D1(JTHETA(J)+I-1)=D1(JTHETA(J)+I-1)* ATMPHY1.441
& P_EXNER_C( D1(JP_EXNER(J+1)+I-1),D1(JP_EXNER(J)+I-1), ATMPHY1.442
& PU,PL,KAPPA ) ATMPHY1.443
END DO ATMPHY1.444
END DO ATMPHY1.445
C ATMPHY1.446
END IF ATMPHY1.447
C ATMPHY1.448
C ZERO FINAL TOTAL ENERGY AND MASS BEFORE CALCULATION ATMPHY1.449
C ATMPHY1.450
TOT_ENERGY_FINAL = 0.0 ATMPHY1.451
TOT_MASS_FINAL = 0.0 ATMPHY1.452
PART_TOT_MASS = 0.0 ATMPHY1.453
C ATMPHY1.454
C CALCULATE MODIFIED TOTAL ENERGY AND MASS OF ATMOSPHERE ATMPHY1.455
C ATMPHY1.456
IF(LTIMER)THEN ATMPHY1.457
CALL TIMER
('EM_DIAG ',3) ATMPHY1.458
END IF ATMPHY1.459
C ATMPHY1.460
CALL ENG_MASS_DIAG
(D1(JTHETA(1)),D1(JU(1)),D1(JV(1)), ATMPHY1.461
& COS_P_LATITUDE,COS_U_LATITUDE,P_FIELD, ATMPHY1.462
& U_FIELD,ROW_LENGTH,P_ROWS, APB5F401.1
& A_LEVDEPC(JDELTA_AK),A_LEVDEPC(JDELTA_BK), ATMPHY1.464
& A_LEVDEPC(JAK),A_LEVDEPC(JBK), ATMPHY1.465
& TOT_ENERGY_FINAL,TOT_MASS_FINAL, ATMPHY1.466
& PART_TOT_MASS,P_LEVELS,D1(JPSTAR), APB5F401.2
*CALL ARGFLDPT
APB5F401.3
& LLINTS,LWHITBROM) APB5F401.4
C ATMPHY1.468
IF(LTIMER)THEN ATMPHY1.469
CALL TIMER
('EM_DIAG ',4) ATMPHY1.470
END IF ATMPHY1.471
C ATMPHY1.472
C CALCULATE ENERGY CORRECTION AND CORRECT PSTAR ATMPHY1.473
C ATMPHY1.474
IF(LTIMER)THEN ATMPHY1.475
CALL TIMER
('CEM_CORR',3) ATMPHY1.476
END IF ATMPHY1.477
C ATMPHY1.478
! Set A_REALHD to globally summed net energy flux GSM3F404.28
CALL DO_SUMS
(D1(JNET_FLUX),P_FIELD,ROW_LENGTH+1, GSM3F404.29
& P_FIELD-ROW_LENGTH,1,A_REALHD(18)) GSM3F404.30
CALL CAL_ENG_MASS_CORR
(A_REALHD(18),A_REALHD(20), ATMPHY1.479
& TOT_ENERGY_FINAL,A_REALHD(19), ATMPHY1.480
& TOT_MASS_FINAL,PART_TOT_MASS, ATMPHY1.481
& P_FIELD,P_FIELD,A_REALHD(21), ATMPHY1.482
& D1(JPSTAR), APB5F401.5
*CALL ARGFLDPT
APB5F401.6
& A_REALHD(1),A_REALHD(2)) APB5F401.7
C ATMPHY1.484
IF(LTIMER)THEN ATMPHY1.485
CALL TIMER
('CEM_CORR',4) ATMPHY1.486
END IF ATMPHY1.487
C ATMPHY1.488
C SWAP MODIFIED TOTAL ENERGY AND TOTAL MASS OF ATMOSPHERE ATMPHY1.489
C ATMPHY1.490
A_REALHD(19) = TOT_MASS_FINAL ATMPHY1.491
A_REALHD(20) = TOT_ENERGY_FINAL ATMPHY1.492
C ATMPHY1.493
C ZERO ACCUMLATED DIABATIC FLUXES ATMPHY1.494
C ATMPHY1.495
A_REALHD(18) = 0.0 ATMPHY1.496
C ATMPHY1.497
C CONVERT TL (OR T) TO THETA ATMPHY1.498
C ATMPHY1.499
IF (P_LEVELS.EQ.Q_LEVELS) THEN ATMPHY1.500
C ATMPHY1.501
DO J=1,P_LEVELS ATMPHY1.502
! Fujitsu vectorization directive GRB0F405.28
!OCL NOVREC GRB0F405.29
DO I=FIRST_VALID_PT,LAST_P_VALID_PT APB1F401.15
PU=D1(JPSTAR+I-1)*BKH(J+1) + AKH(J+1) ATMPHY1.504
PL=D1(JPSTAR+I-1)*BKH(J) + AKH(J) ATMPHY1.505
D1(JTHETA(J)+I-1) = (D1(JTHETA(J)+I-1) + ((LC*D1(JQCL(J)+I-1)+ ATMPHY1.506
& (LC+LF)*D1(JQCF(J)+I-1))/CP)) / ATMPHY1.507
& P_EXNER_C( D1(JP_EXNER(J+1)+I-1),D1(JP_EXNER(J)+I-1), ATMPHY1.508
& PU,PL,KAPPA ) ATMPHY1.509
END DO ATMPHY1.510
END DO ATMPHY1.511
C ATMPHY1.512
ELSE ATMPHY1.513
C ATMPHY1.514
DO J=1,Q_LEVELS ATMPHY1.515
! Fujitsu vectorization directive GRB0F405.30
!OCL NOVREC GRB0F405.31
DO I=FIRST_VALID_PT,LAST_P_VALID_PT APB1F401.16
PU=D1(JPSTAR+I-1)*BKH(J+1) + AKH(J+1) ATMPHY1.517
PL=D1(JPSTAR+I-1)*BKH(J) + AKH(J) ATMPHY1.518
D1(JTHETA(J)+I-1) = (D1(JTHETA(J)+I-1) + ((LC*D1(JQCL(J)+I-1)+ ATMPHY1.519
& (LC+LF)*D1(JQCF(J)+I-1))/CP)) / ATMPHY1.520
& P_EXNER_C( D1(JP_EXNER(J+1)+I-1),D1(JP_EXNER(J)+I-1), ATMPHY1.521
& PU,PL,KAPPA ) ATMPHY1.522
END DO ATMPHY1.523
END DO ATMPHY1.524
C ATMPHY1.525
DO J=Q_LEVELS+1,P_LEVELS ATMPHY1.526
! Fujitsu vectorization directive GRB0F405.32
!OCL NOVREC GRB0F405.33
DO I=FIRST_VALID_PT,LAST_P_VALID_PT APB1F401.17
PU=D1(JPSTAR+I-1)*BKH(J+1) + AKH(J+1) ATMPHY1.528
PL=D1(JPSTAR+I-1)*BKH(J) + AKH(J) ATMPHY1.529
D1(JTHETA(J)+I-1) = D1(JTHETA(J)+I-1) / ATMPHY1.530
& P_EXNER_C( D1(JP_EXNER(J+1)+I-1),D1(JP_EXNER(J)+I-1), ATMPHY1.531
& PU,PL,KAPPA ) ATMPHY1.532
END DO ATMPHY1.533
END DO ATMPHY1.534
C ATMPHY1.535
END IF ATMPHY1.536
C ATMPHY1.537
END IF ATMPHY1.538
C ATMPHY1.539
END IF ! LEMCORR GSS1F304.1285
ATMPHY1.541
*IF DEF,GLOBAL ATMPHY1.542
IF (L_LSPICE) THEN ADM2F404.269
! Polar updating isn't working. Don't try it at all. ADM2F404.270
ELSE ADM2F404.271
ATMPHY1.543
CL Calculate average increments at points next to poles ATMPHY1.544
ATMPHY1.545
DO LEVEL=1,P_LEVELS ATMPHY1.546
ATMPHY1.547
*IF DEF,MPP APB1F401.18
IF (at_top_of_LPG) THEN APB1F401.19
*ENDIF APB1F401.20
DO I=1,ROW_LENGTH APB1F401.21
N_POLAR_VALUES(I,LEVEL)= APB1F401.22
& D1(JTHETA(LEVEL)+TOP_ROW_START+ROW_LENGTH+I-2)- APB1F401.23
& N_POLAR_VALUES(I,LEVEL) APB1F401.24
ENDDO APB1F401.25
*IF DEF,MPP APB1F401.26
ENDIF APB1F401.27
APB1F401.28
IF (at_base_of_LPG) THEN APB1F401.29
*ENDIF APB1F401.30
DO I=1,ROW_LENGTH APB1F401.31
S_POLAR_VALUES(I,LEVEL)= APB1F401.32
& D1(JTHETA(LEVEL)+P_BOT_ROW_START-ROW_LENGTH+I-2)- APB1F401.33
& S_POLAR_VALUES(I,LEVEL) APB1F401.34
ENDDO APB1F401.35
*IF DEF,MPP APB1F401.36
ENDIF APB1F401.37
*ENDIF APB1F401.38
ENDDO APB2F401.62
ATMPHY1.556
IF(LTIMER) THEN ATMPHY1.557
CALL TIMER
('POLAR ',3) TS150793.18
END IF ATMPHY1.559
ATMPHY1.560
C Call POLAR to update the polar value of THETA. ATMPHY1.561
ATMPHY1.562
CALL POLAR
(D1(JTHETA(1)),N_POLAR_VALUES(1,1),S_POLAR_VALUES(1,1), APB2F401.63
*CALL ARGFLDPT
APB2F401.64
& P_FIELD,ROW_LENGTH,ROW_LENGTH,1,1,ROW_LENGTH, APB2F401.65
& P_LEVELS) APB2F401.66
ATMPHY1.566
IF(LTIMER) THEN ATMPHY1.567
CALL TIMER
('POLAR ',4) TS150793.19
END IF ATMPHY1.569
ATMPHY1.570
ATMPHY1.572
DO LEVEL=1,Q_LEVELS ATMPHY1.573
ATMPHY1.574
*IF DEF,MPP APB1F401.39
IF (at_top_of_LPG) THEN APB1F401.40
*ENDIF APB1F401.41
DO I=1,ROW_LENGTH APB1F401.42
N_POLAR_VALUES(I,LEVEL+P_LEVELS)= APB1F401.43
& D1(JQ(LEVEL)+TOP_ROW_START+ROW_LENGTH+I-2)- APB1F401.44
& N_POLAR_VALUES(I,LEVEL+P_LEVELS) APB1F401.45
N_POLAR_VALUES(I,LEVEL+P_LEVELS+Q_LEVELS)= APB1F401.46
& D1(JQCL(LEVEL)+TOP_ROW_START+ROW_LENGTH+I-2)- APB1F401.47
& N_POLAR_VALUES(I,LEVEL+P_LEVELS+Q_LEVELS) APB1F401.48
N_POLAR_VALUES(I,LEVEL+P_LEVELS+2*Q_LEVELS)= APB1F401.49
& D1(JQCF(LEVEL)+TOP_ROW_START+ROW_LENGTH+I-2)- APB1F401.50
& N_POLAR_VALUES(I,LEVEL+P_LEVELS+2*Q_LEVELS) APB1F401.51
ENDDO APB1F401.52
*IF DEF,MPP APB1F401.53
ENDIF APB1F401.54
APB1F401.55
IF (at_base_of_LPG) THEN APB1F401.56
*ENDIF APB1F401.57
DO I=1,ROW_LENGTH APB1F401.58
S_POLAR_VALUES(I,LEVEL+P_LEVELS)= APB1F401.59
& D1(JQ(LEVEL)+P_BOT_ROW_START-ROW_LENGTH+I-2)- APB1F401.60
& S_POLAR_VALUES(I,LEVEL+P_LEVELS) APB1F401.61
S_POLAR_VALUES(I,LEVEL+P_LEVELS+Q_LEVELS)= APB1F401.62
& D1(JQCL(LEVEL)+P_BOT_ROW_START-ROW_LENGTH+I-2)- APB1F401.63
& S_POLAR_VALUES(I,LEVEL+P_LEVELS+Q_LEVELS) APB1F401.64
S_POLAR_VALUES(I,LEVEL+P_LEVELS+2*Q_LEVELS)= APB1F401.65
& D1(JQCF(LEVEL)+P_BOT_ROW_START-ROW_LENGTH+I-2)- APB1F401.66
& S_POLAR_VALUES(I,LEVEL+P_LEVELS+2*Q_LEVELS) APB1F401.67
ENDDO APB1F401.68
*IF DEF,MPP APB1F401.69
ENDIF APB1F401.70
*ENDIF APB1F401.71
ENDDO APB2F401.67
ATMPHY1.595
IF(LTIMER) THEN ATMPHY1.596
CALL TIMER
('POLAR ',3) TS150793.20
END IF ATMPHY1.598
ATMPHY1.599
! Call POLAR to update the polar value of Q. APB2F401.68
APB2F401.69
CALL POLAR
(D1(JQ(1)),N_POLAR_VALUES(1,P_LEVELS+1), APB2F401.70
& S_POLAR_VALUES(1,P_LEVELS+1), APB2F401.71
*CALL ARGFLDPT
APB2F401.72
& P_FIELD,ROW_LENGTH,ROW_LENGTH,1,1,ROW_LENGTH, APB2F401.73
& Q_LEVELS) APB2F401.74
APB2F401.75
! Call POLAR to update the polar value of QCL. APB2F401.76
APB2F401.77
CALL POLAR
(D1(JQCL(1)),N_POLAR_VALUES(1,P_LEVELS+Q_LEVELS+1), APB2F401.78
& S_POLAR_VALUES(1,P_LEVELS+Q_LEVELS+1), APB2F401.79
*CALL ARGFLDPT
APB2F401.80
& P_FIELD,ROW_LENGTH,ROW_LENGTH,1,1,ROW_LENGTH, APB2F401.81
& Q_LEVELS) APB2F401.82
APB2F401.83
! Call POLAR to update the polar value of QCF. APB2F401.84
APB2F401.85
CALL POLAR
(D1(JQCF(1)),N_POLAR_VALUES(1,P_LEVELS+2*Q_LEVELS+1), APB2F401.86
& S_POLAR_VALUES(1,P_LEVELS+2*Q_LEVELS+1), APB2F401.87
*CALL ARGFLDPT
APB2F401.88
& P_FIELD,ROW_LENGTH,ROW_LENGTH,1,1,ROW_LENGTH, APB2F401.89
& Q_LEVELS) APB2F401.90
IF(LTIMER) THEN ATMPHY1.618
CALL TIMER
('POLAR ',4) TS150793.21
END IF ATMPHY1.620
ATMPHY1.621
ATMPHY1.623
! End if for L_LSPICE ADM2F404.272
END IF ADM2F404.273
*ENDIF ATMPHY1.624
ATMPHY1.625
IF(L_TRACER_THETAL_QT)THEN ATD1F400.92
C IF TRACER ADVECTION CHECK FOR NEGATIVE Q AFTER PHYSICS ATD1F400.93
ITOLQ = 1 ATD1F400.94
ITOLQCL = 1 ATD1F400.95
ITOLQCF = 1 ATD1F400.96
DO K=1,Q_LEVELS ATD1F400.97
II=0 ATD1F400.98
IIQCL=0 ATD1F400.99
IIQCF=0 ATD1F400.100
IQNEG(1)=0 ATD1F400.101
DO I=FIRST_VALID_PT,LAST_P_VALID_PT APB1F401.72
IF(D1(JQ(K)+I-1).LT.0.0) THEN ATD1F400.103
D1(JQ(K)+I-1)=0.0 ATD1F400.104
II=II+1 ATD1F400.105
IQNEG(II)=I ATD1F400.106
ENDIF ATD1F400.107
IF(D1(JQCL(K)+I-1).LT.0.0) THEN ATD1F400.108
D1(JQCL(K)+I-1)=0.0 ATD1F400.109
IIQCL=IIQCL+1 ATD1F400.110
IQCLNEG(IIQCL)=I ATD1F400.111
ENDIF ATD1F400.112
IF(D1(JQCF(K)+I-1).LT.0.0) THEN ATD1F400.113
D1(JQCF(K)+I-1)=0.0 ATD1F400.114
IIQCF=IIQCF+1 ATD1F400.115
IQCFNEG(IIQCF)=I ATD1F400.116
ENDIF ATD1F400.117
ENDDO ATD1F400.118
IF(II.NE.0.AND.ITOLQ.LE.1) THEN ATD1F400.119
WRITE(6,*) 'AFTER PHYSICS: NEGATIVE Q FOUND AND RESET TO ZERO' ATD1F400.120
C WRITE(6,*) 'NEGATIVE QT LEVEL ',K,' POINTS ',(IQNEG(I),I=1,II) ATD1F400.121
ITOLQ = ITOLQ + 1 ATD1F400.122
END IF ATD1F400.123
IF(IIQCL.NE.0.AND.ITOLQCL.LE.1) THEN ATD1F400.124
WRITE(6,*) 'AFTER PHYSICS: NEGATIVE QCL FOUND AND RESET TO ZERO' ATD1F400.125
ITOLQCL = ITOLQCL + 1 ATD1F400.126
END IF ATD1F400.127
IF(IIQCF.NE.0.AND.ITOLQCF.LE.1) THEN ATD1F400.128
WRITE(6,*) 'AFTER PHYSICS: NEGATIVE QCF FOUND AND RESET TO ZERO' ATD1F400.129
ITOLQCF = ITOLQCF + 1 ATD1F400.130
END IF ATD1F400.131
ENDDO ATD1F400.132
END IF ATD1F400.133
*IF DEF,MPP APB1F305.79
! Do boundary swaps on U,V,Q,THETA and QCL at all relevant levels APB1F305.80
CALL SWAPBOUNDS
(D1(JU(1)),ROW_LENGTH,tot_P_ROWS, APB1F401.73
& EW_Halo,NS_Halo,P_LEVELS) APB1F401.74
CALL SWAPBOUNDS
(D1(JV(1)),ROW_LENGTH,tot_P_ROWS, APB1F401.75
& EW_Halo,NS_Halo,P_LEVELS) APB1F401.76
CALL SWAPBOUNDS
(D1(JQ(1)),ROW_LENGTH,tot_P_ROWS, APB1F401.77
& EW_Halo,NS_Halo,Q_LEVELS) APB1F401.78
CALL SWAPBOUNDS
(D1(JQCL(1)),ROW_LENGTH,tot_P_ROWS, APB1F401.79
& EW_Halo,NS_Halo,Q_LEVELS) APB1F401.80
CALL SWAPBOUNDS
(D1(JQCF(1)),ROW_LENGTH,tot_P_ROWS, APB1F401.81
& EW_Halo,NS_Halo,Q_LEVELS) APB1F401.82
CALL SWAPBOUNDS
(D1(JTHETA(1)),ROW_LENGTH,tot_P_ROWS, APB1F401.83
& EW_Halo,NS_Halo,P_LEVELS) APB1F401.84
CALL SWAPBOUNDS
(D1(JSNODEP),ROW_LENGTH,tot_P_ROWS, ARE1F405.34
& EW_Halo,NS_Halo,1) ARE1F405.35
IF (L_SULPC_SO2) THEN GSM6F404.12
CALL SWAPBOUNDS
(D1(JSO2(1)),ROW_LENGTH,tot_P_ROWS, GSM6F404.13
& EW_Halo,NS_Halo,P_LEVELS) GSM6F404.14
CALL SWAPBOUNDS
(D1(JSO4_AITKEN(1)),ROW_LENGTH,tot_P_ROWS, GSM6F404.15
& EW_Halo,NS_Halo,P_LEVELS) GSM6F404.16
CALL SWAPBOUNDS
(D1(JSO4_ACCU(1)),ROW_LENGTH,tot_P_ROWS, GSM6F404.17
& EW_Halo,NS_Halo,P_LEVELS) GSM6F404.18
CALL SWAPBOUNDS
(D1(JSO4_DISS(1)),ROW_LENGTH,tot_P_ROWS, GSM6F404.19
& EW_Halo,NS_Halo,P_LEVELS) GSM6F404.20
GSM6F404.21
IF (L_SULPC_NH3) THEN AWO5F405.43
CALL SWAPBOUNDS
(D1(JNH3(1)),ROW_LENGTH,tot_P_ROWS, AWO5F405.44
& EW_Halo,NS_Halo,P_LEVELS) AWO5F405.45
END IF AWO5F405.46
IF (L_SULPC_DMS) THEN GSM6F404.22
CALL SWAPBOUNDS
(D1(JDMS(1)),ROW_LENGTH,tot_P_ROWS, GSM6F404.23
& EW_Halo,NS_Halo,P_LEVELS) GSM6F404.24
ENDIF GSM6F404.25
ENDIF GSM6F404.26
IF (L_SOOT) THEN AWO5F405.47
CALL SWAPBOUNDS
(D1(JSOOT_NEW(1)),ROW_LENGTH,tot_P_ROWS, AWO5F405.48
& EW_Halo,NS_Halo,P_LEVELS) AWO5F405.49
CALL SWAPBOUNDS
(D1(JSOOT_AGD(1)),ROW_LENGTH,tot_P_ROWS, AWO5F405.50
& EW_Halo,NS_Halo,P_LEVELS) AWO5F405.51
CALL SWAPBOUNDS
(D1(JSOOT_CLD(1)),ROW_LENGTH,tot_P_ROWS, AWO5F405.52
& EW_Halo,NS_Halo,P_LEVELS) AWO5F405.53
END IF AWO5F405.54
IF (L_CO2_INTERACTIVE) THEN ACN2F405.38
CALL SWAPBOUNDS
(D1(JCO2(1)),ROW_LENGTH,tot_P_ROWS, ACN2F405.39
& EW_Halo,NS_Halo,P_LEVELS) ACN2F405.40
ENDIF ACN2F405.41
*ENDIF APB1F305.93
RETURN ATMPHY1.626
END ATMPHY1.627
ATMPHY1.628
ATMPHY1.629
*ENDIF ATMPHY1.630