*IF DEF,CONTROL,AND,DEF,ATMOS READLSA1.2
C ******************************COPYRIGHT****************************** GTS2F400.8083
C (c) CROWN COPYRIGHT 1995, METEOROLOGICAL OFFICE, All Rights Reserved. GTS2F400.8084
C GTS2F400.8085
C Use, duplication or disclosure of this code is subject to the GTS2F400.8086
C restrictions as set forth in the contract. GTS2F400.8087
C GTS2F400.8088
C Meteorological Office GTS2F400.8089
C London Road GTS2F400.8090
C BRACKNELL GTS2F400.8091
C Berkshire UK GTS2F400.8092
C RG12 2SZ GTS2F400.8093
C GTS2F400.8094
C If no contract has been raised with this copy of the code, the use, GTS2F400.8095
C duplication or disclosure of it is strictly prohibited. Permission GTS2F400.8096
C to do so must first be obtained in writing from the Head of Numerical GTS2F400.8097
C Modelling at the above address. GTS2F400.8098
C ******************************COPYRIGHT****************************** GTS2F400.8099
C GTS2F400.8100
CLL Subroutine READLSTA READLSA1.3
CLL READLSA1.4
CLL Purpose: Reads control information from NAMELIST, and READLSA1.5
CLL copies into dump header/history file for reference. READLSA1.6
CLL READLSA1.7
CLL Control routine for Cray YMP READLSA1.8
CLL READLSA1.9
CLL Model Modification history from model version 3.0: READLSA1.10
CLL version Date READLSA1.11
CLL 3.1 18/01/93 Add *call comdeck CTHETAPV and add extra variable MM180193.58
CLL to runcnst namelist. MM180193.59
CLL 3.2 27/03/93 Dynamic allocation of main data arrays. R. Rawlins @DYALLOC.3134
CLL 3.3 13/12/93 Variables WIND_LIMIT and DIV_LIMIT AL131293.29
CLL added to namelist RUNCNST for half AL131293.30
CLL timestep dynamics. A.S.Lawless AL131293.31
CLL 3.4 09/09/94 Add 3 constants (ALPHAC,ALPHAM,DTICE) to AWA1F304.1384
CLL namelist RUNCNST. C D Hewitt AWA1F304.1385
CLL 3.4 03/10/94 Add 4 constants (N2OMMR,CH4MMR,C11MMR,C12MMR) to AWA1F304.1386
CLL namelist RUNCNST. S Woodward AWA1F304.1387
CLL 3.5 27/03/95 Sub-model changes : Remove run time constants ADR1F305.131
CLL from Atmos dump headers. Some variables in ADR1F305.132
CLL RUNCNST namelist renamed. All RUNCNST namelist ADR1F305.133
CLL variables initialised to IMDI/RMDI. Remove ADR1F305.134
CLL A_ILEVDEPC from argument list. D. Robinson ADR1F305.135
CLL 3.5 11/04/95 Sub-Models stage 1: revised History/control files GRB1F305.454
CLL contents. Add atmos. control variables. RTHBarnes. GRB1F305.455
CLL 4.0 17/08/95 Add pressure_altitude to runtime consts. RTHBarnes. ARB0F400.85
! 4.0 05/07/95 Extra Namelists for version 3A of the SW and LW ADB1F400.363
! radiation schemes added. J. M. Edwards ADB1F400.364
CLL 4.0 04/07/95 Remove SNOW_MASKING_FACTOR. W Ingram AWI2F400.9
CLL 4.1 12/03/96 Add SO2_HIGH_LEVEL. D. Robinson. GDR1F401.125
CLL 4.3 18/3/97 Add CLMCHFCG namelist, to specify time variation AWI1F403.11
CLL of climate change forcings, & remove old CO2 variables. AWI1F403.12
CLL 4.3 07/03/97 Add KAY_LEE_GWAVE S.Webster ASW1F403.16
CLL 4.4 26/09/97 Add ANVIL_FACTOR and TOWER_FACTOR for calculation AJX0F404.431
CLL of convective cloud amount and MPARWTR parameter AJX0F404.432
CLL used in CLOUDW in convection 3A & 3B. J.M.Gregory. AJX0F404.433
CLL 4.4 14/10/97 Add PHENOL_PERIOD and TRIFFID_PERIOD. R Betts ABX1F404.271
!LL 4.4 19/09/97 O2MMR added to namelist ADB2F404.1042
!LL Decks of radiative options split. J. M. Edwards ADB2F404.1043
!LL 4.5 24/02/98 Mixing ratios of additional (H)(C)FCs added: ADB1F405.546
!LL additional logical for new partitioning of ADB1F405.547
!LL convective cloud included. ADB1F405.548
!LL J. M. Edwards ADB1F405.549
! 4.5 07/07/98 Add SOOT_HIGH_LEVEL M Woodage ADB1F405.550
CLL 4.5 21.08.98 New RUNCNST ALPHAB for RAD_COM. Jonathan Gregory AJG1F405.17
CLL 4.4 23.11.98 Move PHENOL_PERIOD and TRIFFID_PERIOD to namelist AJG1F405.18
CCL NLSTCATM in comdeck CNTLATM. Richard Betts AJG1F405.19
CLL READLSA1.12
CLL Programming Standard : UM documentation paper no. 3 READLSA1.13
CLL READLSA1.15
CLL System components covered : C26 (part) READLSA1.16
CLL READLSA1.17
CLL System task : C0 READLSA1.18
CLL READLSA1.19
CLL Documentation : Unified Model Documentation Paper no. C0. READLSA1.20
CLL READLSA1.21
CLLEND---------------------------------------------------------------- READLSA1.22
SUBROUTINE READLSTA( 1,1@DYALLOC.3135
*CALL ARGSIZE
@DYALLOC.3136
*CALL ARGDUMA
@DYALLOC.3137
*CALL ARGPTRA
@DYALLOC.3140
*CALL ARGCONA
@DYALLOC.3141
& ICODE,CMESSAGE) @DYALLOC.3142
READLSA1.24
IMPLICIT NONE READLSA1.25
READLSA1.26
C*L Arguments @DYALLOC.3143
CL @DYALLOC.3144
*CALL CMAXSIZE
@DYALLOC.3145
*CALL TYPSIZE
@DYALLOC.3146
*CALL TYPDUMA
@DYALLOC.3147
*CALL TYPPTRA
@DYALLOC.3150
*CALL TYPCONA
@DYALLOC.3151
INTEGER @DYALLOC.3152
& ICODE ! OUT: Error return code @DYALLOC.3153
C @DYALLOC.3154
CHARACTER*256 @DYALLOC.3155
& CMESSAGE ! OUT: Error return message @DYALLOC.3156
C @DYALLOC.3157
*CALL CSUBMODL
GRB1F305.456
*CALL CHSUNITS
GRB1F305.457
*CALL CCONTROL
GRB1F305.458
*CALL CRUNTIMC
ADR1F305.136
*CALL CPPRINT
READLSA1.30
*CALL RAD_COM
AWA1F304.1388
*CALL CZONPRIT
@DYALLOC.3158
*CALL C_MDI
ADR1F305.137
*CALL C_PI
ADR1F305.138
*CALL SWOPT3A
ADB1F400.365
*CALL LWOPT3A
ADB1F400.366
*CALL SWCOPT3A
ADB2F404.1044
*CALL LWCOPT3A
ADB2F404.1045
*CALL CTLNL3A
ADB1F400.367
*CALL CSENARIO
AWI1F403.13
READLSA1.34
LOGICAL AWI1F403.14
& L_CLMCHFCG ! Local variable, read from RUNCNSTS to AWI1F403.15
C ! see if CLMCHFCG must also be read. AWI1F403.16
NAMELIST /RUNCNST/ ADR1F305.139
& LATITUDE_BAND, VERTICAL_DIFFUSION, L_CLMCHFCG, AWI1F403.17
& CO2_MMR, GRAV_WAVE_SPEED, KAY_GWAVE, KAY_LEE_GWAVE, AWI1F403.18
& NU_BASIC, FILTERING_SAFETY_FACTOR, START_LEVEL_GWDRAG, ADR1F305.142
& BOTTOM_VDIF_LEVEL, TOP_VDIF_LEVEL, TRAC_ADV_ LEVELS, ADR1F305.143
& DIFF_COEFF, DIFF_COEFF_Q, DIFF_EXP, DIFF_EXP_Q, RHCRIT, ADR1F305.144
& DIV_DAMP_COEFF_ASSM, DIV_DAMP_COEFF_FC, PRESSURE_ALTITUDE, ARB0F400.86
& ALPHAM, ALPHAC, ALPHAB, DTICE, AJG1F405.20
& N2OMMR, CH4MMR, C11MMR, C12MMR, AJG1F405.21
& O2MMR, C113MMR, HCFC22MMR, HFC125MMR, HFC134AMMR, ADB1F405.551
& ETA_SPLIT, CW_SEA, CW_LAND, REQ_THETA_PV_LEVS, ADR1F305.147
& ADJ_TIME_SMOOTHING_WEIGHT, ADJ_TIME_SMOOTHING_COEFF, ADR1F305.148
& WIND_LIMIT, DIV_LIMIT, SOOT_HIGH_LEVEL, SO2_HIGH_LEVEL AWO0F405.94
& ,ANVIL_FACTOR, TOWER_FACTOR, MPARWTR, UD_FACTOR AJX3F405.151
READLSA1.80
NAMELIST/PPRINTXN/ READLSA1.81
& LPRVXN,LPRVXNP,LPPRINT,LPPRINT_A,LPPRINT_S,LVPRINT, READLSA1.82
& LHPRINT,PPRINT_STEP,PPRINT_POINT,PPRINT_TOL, READLSA1.83
& PPRINT_FIRST,PPRINT_LAST, READLSA1.84
& PRVXN_FIRST,PRVXN_LAST,PRVXN_LEVEL, READLSA1.85
& PRVXN_STEP,LMOISTP, READLSA1.86
& LPRFLD,PRFLD_STEP,PRFLD_FIRST,PRFLD_LAST READLSA1.87
READLSA1.88
NAMELIST/ZONPCTL/ READLSA1.89
& IPRTWIND,IPRTTEMP,IPRTQ,IPRTKE,IPRTVAR,IPRTEXTRA READLSA1.90
READLSA1.91
NAMELIST / CLMCHFCG / CLIM_FCG_NYEARS, CLIM_FCG_YEARS, AWI1F403.19
& CLIM_FCG_LEVLS, CLIM_FCG_RATES AWI1F403.20
READLSA1.93
C* Local variable @DYALLOC.3191
INTEGER READLSA1.95
& LEVEL READLSA1.96
& ,J ADR1F305.150
& ,JJ AWI1F403.21
READLSA1.97
CL Read of atmosphere control data into COMMON/CNTLCATM/ GRB1F305.459
CL done in READCNTL GRB1F305.460
!! READ(5,NLSTCATM) GRB1F305.461
GRB1F305.462
CL Set assimilation logicals from character variable. GRB1F305.463
L_3DVAR_BG = A_ASSIM_MODE .EQ. "BG" GRB1F305.464
L_AC = A_ASSIM_MODE .EQ. "AC" GRB1F305.465
L_3DVAR = A_ASSIM_MODE .EQ. "3DVAR" GRB1F305.466
L_4DVAR = A_ASSIM_MODE .EQ. "4DVAR" GRB1F305.467
GRB1F305.468
! Set H_SECT to values found in ATMOS_SR in COMDECK MODEL GRB1F305.469
! Needs tidied at a later version to be done in a less messy way. GRB1F305.470
CALL SET_H_SECT
(H_SECT,MAXSECTS) GRB1F305.471
GRB1F305.472
CL Read atmosphere run consts. control data into COMMON/RUNCNST/(F011) GRB1F305.473
READLSA1.99
CL Initialise variables in RUNCNST Namelist ADR1F305.151
READLSA1.101
L_CLMCHFCG = .FALSE. AWI1F403.22
C In common block CRUNTIMA ADR1F305.152
START_LEVEL_GWDRAG = IMDI ADR1F305.153
BOTTOM_VDIF_LEVEL = IMDI ADR1F305.154
TOP_VDIF_LEVEL = IMDI ADR1F305.155
TRAC_ADV_LEVELS = IMDI ADR1F305.156
SOOT_HIGH_LEVEL = IMDI AWO0F405.95
SO2_HIGH_LEVEL = IMDI GDR1F401.127
LATITUDE_BAND = RMDI ADR1F305.157
VERTICAL_DIFFUSION = RMDI ADR1F305.158
CO2_MMR = RMDI AWI1F403.23
GRAV_WAVE_SPEED = RMDI ADR1F305.163
FILTERING_SAFETY_FACTOR = RMDI ADR1F305.164
WIND_LIMIT = RMDI ADR1F305.165
DIV_LIMIT = RMDI ADR1F305.166
KAY_GWAVE = RMDI ADR1F305.167
KAY_LEE_GWAVE = RMDI ASW1F403.17
NU_BASIC = RMDI ADR1F305.168
CW_SEA = RMDI ADR1F305.169
CW_LAND = RMDI ADR1F305.170
PRESSURE_ALTITUDE = 200000.0 ! Pascal, to default diffusion to ARB0F400.87
! standard treatment if pressure_altitude not present in namelist ARB0F400.88
ANVIL_FACTOR = RMDI AJX0F404.435
TOWER_FACTOR = RMDI AJX0F404.436
MPARWTR = RMDI AJX0F404.437
UD_FACTOR = RMDI AJX3F405.152
DO LEVEL=1,MAX_P_LEVELS ADR1F305.171
DIFF_COEFF (LEVEL) = RMDI ADR1F305.172
DIFF_COEFF_Q(LEVEL) = RMDI ADR1F305.173
DIFF_EXP (LEVEL) = IMDI ADR1F305.174
DIFF_EXP_Q (LEVEL) = IMDI ADR1F305.175
DIV_DAMP_COEFF_ASSM(LEVEL) = RMDI ADR1F305.176
DIV_DAMP_COEFF_FC (LEVEL) = RMDI ADR1F305.177
RHCRIT(LEVEL) = RMDI ADR1F305.178
ENDDO ADR1F305.179
READLSA1.103
C In common block RAD_COM ADR1F305.180
ALPHAC = RMDI ADR1F305.181
ALPHAM = RMDI ADR1F305.182
DTICE = RMDI ADR1F305.183
N2OMMR = RMDI ADR1F305.184
CH4MMR = RMDI ADR1F305.185
C11MMR = RMDI ADR1F305.186
C12MMR = RMDI ADR1F305.187
O2MMR = RMDI ADB1F405.552
C113MMR = RMDI ADB1F405.553
HCFC22MMR = RMDI ADB1F405.554
HFC125MMR = RMDI ADB1F405.555
HFC134AMMR = RMDI ADB1F405.556
ADB1F405.557
C In common block LWOPT3A ADB1F405.558
L_LOCAL_CNV_PARTITION_LW = .FALSE. ADB1F405.559
ADB1F405.560
C In common block SWOPT3A ADB1F405.561
L_LOCAL_CNV_PARTITION_SW = .FALSE. ADB1F405.562
READLSA1.120
C In common block CDERIVED (in comdeck CCONSTS called in TYPCONA) ADR1F305.188
ADJ_TIME_SMOOTHING_COEFF = RMDI ADR1F305.189
DO J = 1,MAX_ADJ_TSL ADR1F305.190
ADJ_TIME_SMOOTHING_WEIGHT(J) = IMDI ADR1F305.191
ENDDO ADR1F305.192
DO J = 1,NUM_CLOUD_TYPES+1 ADR1F305.193
ETA_SPLIT(J) = RMDI ADR1F305.194
ENDDO ADR1F305.195
DO J = 1,MAX_REQ_THPV_LEVS ADR1F305.196
REQ_THETA_PV_LEVS(J) = RMDI ADR1F305.197
ENDDO ADR1F305.198
READLSA1.130
CL Read in RUNCNST Namelist ADR1F305.199
ADR1F305.200
READ (5,RUNCNST) ADR1F305.202
WRITE(6,RUNCNST) ADR1F305.203
ADR1F305.204
C Convert from degrees to radians ADR1F305.205
LATITUDE_BAND = LATITUDE_BAND * PI_OVER_180 ADR1F305.206
MM180193.62
CL Multiply input req_theta_pv_levs by 100. to convert mb to pascals. MM180193.63
DO LEVEL = 1,THETA_PV_P_LEVS MM180193.64
REQ_THETA_PV_LEVS(LEVEL) = REQ_THETA_PV_LEVS(LEVEL)*100. MM180193.65
END DO MM180193.66
READLSA1.131
CL Read atmosphere patch print and min/max controls into COMMON/CPPRINT/ READLSA1.132
READLSA1.133
READ(5,PPRINTXN) READLSA1.134
READLSA1.135
READLSA1.136
CL Read atmosphere zonal mean print controls READLSA1.138
READLSA1.139
READ(5,ZONPCTL) READLSA1.140
! ADB1F400.368
! ADB1F400.369
! Read controlling information for version 3A of the SW or LW ADB1F400.370
! radiation schemes. ADB1F400.371
! ADB1F400.372
IF (H_SECT(1).EQ.'03A') THEN ADB1F400.373
! Options for the shortwave ADB1F400.374
READ(5, R2SWCLNL) ADB1F400.375
ENDIF ADB1F400.376
! ADB1F400.377
IF (H_SECT(2).EQ.'03A') THEN ADB1F400.378
! Options for the longwave ADB1F400.379
READ(5, R2LWCLNL) ADB1F400.380
ENDIF ADB1F400.381
AWI1F403.24
IF ( L_CLMCHFCG ) THEN AWI1F403.25
READ (5, CLMCHFCG) AWI1F403.26
! Convert rates from percent to multiplicative factors: AWI1F403.27
DO J=1, NCLMFCGS AWI1F403.28
! ! This is a null loop, as it should be, if CLIM_FCG_NYEARS=0 AWI1F403.29
DO JJ=1, CLIM_FCG_NYEARS(J) AWI1F403.30
IF ( CLIM_FCG_RATES(JJ,J) .GT. -100. ) AWI1F403.31
& CLIM_FCG_RATES(JJ,J) = 1. + 0.01 * CLIM_FCG_RATES(JJ,J) AWI1F403.32
ENDDO AWI1F403.33
ENDDO AWI1F403.34
ELSE AWI1F403.35
! ! If the namelist is not to be read, set number of designated AWI1F403.36
! ! years to zero for all possible forcings, as this may be AWI1F403.37
! ! used to test if this system is being used for each forcing. AWI1F403.38
DO J=1, NCLMFCGS AWI1F403.39
CLIM_FCG_NYEARS(J) = 0 AWI1F403.40
ENDDO AWI1F403.41
ENDIF AWI1F403.42
READLSA1.143
READLSA1.144
RETURN READLSA1.145
END READLSA1.146
READLSA1.147
SUBROUTINE SET_H_SECT(H_SECT,MAXSECTS) 1GRB1F305.474
! Temporary routine introduced at vn3.5 to set H_SECT in COMDECK GRB1F305.475
! CCONTROL to values in ATMOS_SR in COMDECK MODEL. GRB1F305.476
! Necessary bc. CCONTROL & MODEL contain some variable names the same GRB1F305.477
! - this needs tidied at a future version. GRB1F305.478
IMPLICIT NONE GRB1F305.479
INTEGER MAXSECTS GRB1F305.480
CHARACTER*3 H_SECT(0:MAXSECTS) GRB1F305.481
*CALL CSUBMODL
GRB1F305.482
*CALL VERSION
GRB1F305.483
*CALL MODEL
GRB1F305.484
! Local variables GRB1F305.485
INTEGER I ! loop variable GRB1F305.486
GRB1F305.487
DO I = 0,NSECTP GRB1F305.488
H_SECT(I)(1:1) = '0' GRB1F305.489
H_SECT(I)(2:3) = ATMOS_SR(I) GRB1F305.490
END DO GRB1F305.491
GRB1F305.492
RETURN GRB1F305.493
END GRB1F305.494
*ENDIF READLSA1.148