*IF DEF,RECON RECONF1.2
C ******************************COPYRIGHT****************************** GTS2F400.8173
C (c) CROWN COPYRIGHT 1995, METEOROLOGICAL OFFICE, All Rights Reserved. GTS2F400.8174
C GTS2F400.8175
C Use, duplication or disclosure of this code is subject to the GTS2F400.8176
C restrictions as set forth in the contract. GTS2F400.8177
C GTS2F400.8178
C Meteorological Office GTS2F400.8179
C London Road GTS2F400.8180
C BRACKNELL GTS2F400.8181
C Berkshire UK GTS2F400.8182
C RG12 2SZ GTS2F400.8183
C GTS2F400.8184
C If no contract has been raised with this copy of the code, the use, GTS2F400.8185
C duplication or disclosure of it is strictly prohibited. Permission GTS2F400.8186
C to do so must first be obtained in writing from the Head of Numerical GTS2F400.8187
C Modelling at the above address. GTS2F400.8188
C ******************************COPYRIGHT****************************** GTS2F400.8189
C GTS2F400.8190
CLL RECONF1.3
CLL MAIN PROGRAM FOR RECONFIGURATION:-------------------------- RECONF1.4
CLL RECONF1.5
CLL Purpose: This routine passes array dimensions read from header RECONF1.6
! records and NAMELIST RECON to remainder of program, which UDG2F305.499
CLL then uses dynamic memory allocation. This allows a change RECONF1.8
CLL of input or output resolution without recompiling. RECONF1.9
CLL Two modes of input file are supported RECONF1.10
CLL (i) UM dump (GRIB=F) on unit 20 RECONF1.11
CLL (ii) GRIB coded data (GRIB=T) on unit 18 RECONF1.12
CLL If GRIB=T the grib coded data is first converted to UM RECONF1.13
CLL dump format and placed on unit 19. RECONF1.14
CLL RECONF1.15
CLL Written by A. Dickinson RECONF1.16
CLL RECONF1.17
CLL Model Modification history from model version 3.0: RECONF1.18
CLL version Date RECONF1.19
CLL AD221292.38
CLL 3.1 22/12/92 Allow transplant of fields from second dump AD221292.39
CLL Author A. Dickinson Reviewer C. Wilson AD221292.40
CLL RECONF1.20
CLL AD150293.1
CLL 3.1 15/02/93 Option to add in ECMWF analysis perturbations AD150293.2
CLL 24/03/93 Correct number of u rows for grib data on A grid AD150293.3
CLL Author A. Dickinson Reviewer D. Richardson AD150293.4
CLL AD160293.1
CLL 3.1 16/02/93 Calculate LEN_ANCIL directly from &LOOK AD160293.2
CLL Author A. Dickinson Reviewer K. Maskell AD160293.3
CLL AD200593.7
CLL 3.2 20/05/93 Wind staggering for C-grid added supporting AD200593.8
CLL interpolations B->C; B->B; C->C; C->B. AD200593.9
CLL Author: A.Dickinson Reviewer: T.Davies AD200593.10
CLL RB221193.69
CLL 3.3 22/11/93 Extend NDATASETS etc. to accommodate aerosols RB221193.70
CLL and sources. RB221193.71
CLL Author: R.T.H.Barnes Reviewer: RB221193.72
CLL RB221193.73
CLL 3.3 19/11/93 Checks return code ERR from OPEN after trying GO191193.1
CLL to open GRIB input file. If OPEN fails then GO191193.2
CLL abort with error message to prevent GO191193.3
CLL reconfiguration from goung into an infinite loop GO191193.4
CLL Author: D.M.Goddard GO191193.5
CLL 3.3 25/10/93 LEN_ANCIL is now set proportional to the largest GO251093.1
CLL number of levels. Previously this was set GO251093.2
CLL propoptional to the number of levels in the GO251093.3
CLL initial data. However if this is larger than the GO251093.4
CLL number of levels in the output data then the GO251093.5
CLL LOOKUP and other variables are corrupted GO251093.6
CLL immediately prior to the vertical interpolation. GO251093.7
CLL Author: D.M.Goddard GO251093.8
CLL 3.4 16/06/94 *CALL CHSUNITS, CCONTROL added (declares LCAL360) GSS1F304.533
CLL Argument LCAL360 passed to s/r CONTROL (replaces GSS1F304.534
CLL DEF CAL360) GSS1F304.535
CLL S.J.Swarbrick GSS1F304.536
CLL GSS1F304.537
CLL 3.4 05/09/94 Extend NDATASETS etc. to accommodate murk and GRB0F304.121
CLL user ancillaries. R.T.H.Barnes GRB0F304.122
CLL 3.5 24/03/95 Changed OPEN to FILE_OPEN P.Burton GPB1F305.125
! 3.5 01/05/95 Additional arguments added to GRIB_TO_UM and UDG2F305.500
! CONTROL and associated delcatations to enable UDG2F305.501
! addressing to be calculated within model. UDG2F305.502
! Author D.M.Goddard Reviewer S Swarbrick UDG2F305.503
! 3.5 01/09/95 Pass H_INT_TYPE in argument list to CONTROL to UDG1F400.399
! control method of horizontal interpolation UDG1F400.400
! Author D.M. Goddard UDG1F400.401
! 4.0 11/09/95 Changes for submodel project UDG7F400.486
! Author D.M. Goddard UDG7F400.487
! 4.1 26/02/96 Cater for new ancillary fields for sulphur GDR1F401.3
! cycle. Call new CANC* comdecks D. Robinson GDR1F401.4
! 4.1 03/04/96 Add DUMP_PACK to RECON namelist ; Pass to GDR2F401.1
! CONTROL. D. Robinson. GDR2F401.2
UDG2F305.504
! 4.1 18/06/96 Changes to cope with changes in STASH addressing GDG0F401.1254
! Author D.M. Goddard. GDG0F401.1255
GDG0F401.1256
CLL 4.1 31/05/96 Code for new vertical co-ordinate: radius UIE2F401.218
CLL Author I.Edmond Reviewer D. Goddard UIE2F401.219
! 4.2 03/09/96 Parallelization added under *MPPRECON flag UDG3F402.1
! Author D.M. Goddard. UDG3F402.2
! 4.2 26/11/96 Pass LPOLARCHK down to CONTROL to ensure that UDG4F402.237
! all points on the noth and south polar rows are UDG4F402.238
! constant for grid types 1,2 and 3 UDG4F402.239
! Author D.M. Goddard UDG4F402.240
!LL 4.3 19/03/97 Find out the clock tick rate - required for GPB3F403.193
!LL producing timer information. P.Burton GPB3F403.194
!LL 4.3 30/04/97 Added code to read the UM_SECTOR_SIZE from the GBC0F403.103
!LL Shell variable of the same name. GBC0F403.104
!LL B. Carruthers Cray Research. GBC0F403.105
!LL 4.3 09/05/97 Added code to read the UM_RNL_SKIP from the GBC0F403.106
!LL Shell variable of the same name. GBC0F403.107
!LL B. Carruthers Cray Research. GBC0F403.108
! 4.3 03/12/96 Improved method of calculating LEN_ANCIL UDG0F403.1
! to save on memory UDG0F403.2
! Author D.M. Goddard UDG0F403.3
!LL 4.4 23/07/97 Add new options LAMIPII GRS2F404.234
!LL required for AMIPII runs. R.A.Stratton. GRS2F404.235
!LL 4.4 17/06/97 Add code to pass the O/P file length GBC6F404.14
!LL to the I/O routines. GBC6F404.15
!LL Author: Bob Carruthers, Cray Research. GBC6F404.16
! 4.4 12/9/97 Add calls to FILE_OPEN for initial surface type ABX2F404.34
! fracs, initial vegetation state and vegetation ABX2F404.35
! disturbance. R.A.Betts ABX2F404.36
! 4.4 23/09/97 Added L_3D_CCA to call to CONTROL and ANVIL_FACTOR AJX1F404.1
! and TOWER_FACTOR to RECON namelist. J.M.Gregory AJX1F404.2
! 4.4 26.09/97 Remove SOIL_VARS_OUT and VEG_VARS_OUT from GDR7F404.458
! RECON namelist and initialise. (Fix until 4.5) GDR7F404.459
! D. Robinson GDR7F404.460
! 4.4 11/07/97 Correct calculation of LEN_ANCIL to prevent UDG0F404.1
! overwriting when configuring UDG0F404.2
! multi-level ancillary files. UDG0F404.3
! Author D.M. Goddard UDG0F404.4
! 4.4 08/08/97 Pass down the number of land points from namelist UDG1F404.36
! RECON to subroutine CONTROL for consistency check UDG1F404.37
! Author D.M. Goddard UDG1F404.38
! 4.4 28/08/97 Code added for initialising mixed phase UDG4F404.1
! precipitation UDG4F404.2
! Author: D.M. Goddard Reviewer: Richard Barnes UDG4F404.3
UDG0F403.4
CLL 4.4 Oct. 1997 Changed error handling from routine HDPPXRF GDW1F404.174
CLL so only fatal (+ve) errors cause aborts; -ve GDW1F404.175
CLL errors are reported not no action taken. GDW1F404.176
CLL Shaun de Witt GDW1F404.177
! vn4.4 9/4/97 Null string in argument list in call to HDPPXRF UIE2F404.1341
! padded out to 13 characters (defined as UIE2F404.1342
! CHARACTER*13 in HDPPXRF) to allow NAG f90 compiled UIE2F404.1343
! code to run. UIE2F404.1344
! C system command fails when compiled using NAG f90. UIE2F404.1345
! cp and chmod done in script instead. Ian Edmond UIE2F404.1346
! vn4.5 05/08/98 Remove # characters in first column as not allowed GSM2F405.29
! with new compiler GSM2F405.30
! 4.5 22/04/98 Open new ancillary file for soot emissions - ARR5F405.13
! SOOTEMIS - in I/O unit 139 R.Rawlins ARR5F405.14
! 4.5 19/01/98 Remove SOIL_VARS and VEG_VARS. D. Robinson. GDR6F405.5
UDG4F405.78
! 4.4 11/07/97 Replace call to CONTROL with call to UDG4F405.79
! SUPERCONTROL. CONTROL is now called from UDG4F405.80
! SUPERCONTROL. This reduces the number of UDG4F405.81
! 3D work arrays that need to be allocated at UDG4F405.82
! any one time. thus saving on memory. UDG4F405.83
! Author D.M. Goddard UDG4F405.84
! 4.5 29/07/98 Only perform shell copy when needed. It is UDG5F405.25
! only required when dealing with rotated grids. UDG5F405.26
! Author D.M. Godard UDG5F405.27
! 4.5 10/11/98 Initialise H_SECT before reading CNTLATM UDG6F405.1
! Author D.M. Goddard UDG6F405.2
! 4.5 10/11/98 New argument RM_CP introduced. RM_CP UDG6F405.81
! is set in the last call to reconfiguration by UDG6F405.82
! VAR. where unwanted fields are reoved from dump. UDG6F405.83
! Author D.M. Goddard UDG6F405.84
! 4.5 10/11/98 Initialise SCALE from namelist RECON and pass UDG7F405.1
! by argument to subroutine CONTROL UDG7F405.2
! Author D.M. Goddard UDG7F405.3
CLL Programming standard : RECONF1.21
CLL RECONF1.22
CLL Logical components covered : RECONF1.23
CLL RECONF1.24
CLL Project task : RECONF1.25
CLL RECONF1.26
CLL Documentation: UM Documentation Paper S1 RECONF1.27
CLL RECONF1.28
CLL------------------------------------------------------------ RECONF1.29
PROGRAM RECONFIGURATION ,93RECONF1.30
RECONF1.31
IMPLICIT NONE RECONF1.32
RECONF1.33
! Comdecks: ----------------------------------------------------------- UDG2F305.505
*CALL CHSUNITS
UDG2F305.506
*CALL CSUBMODL
UDG2F305.507
*CALL CPPXREF
UDG2F305.508
*CALL PPXLOOK
GDG0F401.1257
*CALL MODEL
GDG0F401.1258
*CALL NRECON
UDG2F305.512
*CALL TYPSIZE
UDG2F305.513
*CALL C_MDI
UDG2F305.514
*CALL CNTL_IO
GBC0F403.109
c GBC0F403.110
integer sect_err, rnl_err, um_rnl_skip GBC0F403.111
c GBC0F403.112
character*8 c_um_sector_size, c_um_rnl_skip GBC0F403.113
*CALL C_HORIZ
UDG2F305.515
*CALL C_ITEMS
UDG2F305.516
*CALL CONANC
GDR1F401.5
*CALL CNTLATM
GDG0F401.1259
*CALL CNTLOCN
GDG0F401.1260
*CALL CNTLSLB
GDG0F401.1261
*IF DEF,MPPRECON UDG3F402.3
*CALL CRECMPP
UDG3F402.4
*ENDIF UDG3F402.5
!CALL GCCOM UDG3F402.6
*CALL NSTYPES
UDG0F404.5
UDG2F305.517
INTEGER NFT1 !Unit number for stashMaster file UDG2F305.518
INTEGER NFT2 !Unit number for user stashMaster file UDG2F305.519
PARAMETER(NFT1=22,NFT2=2) GDG0F401.1262
GSS1F304.540
INTEGER RECONF1.34
& FIXHD(256) !Space for fixed length header RECONF1.35
&,INTHD(100) !Space for integer header RECONF1.36
UDG5F405.28
REAL UDG5F405.29
& REALHD(100) !Space for real header UDG5F405.30
RECONF1.37
INTEGER RECONF1.38
& LEN_FIXHD_IN !Length of fixed length header on input file RECONF1.39
&,LEN_INTHD_IN !Length of integer header on input file RECONF1.40
&,LEN_REALHD_IN !Length of real header on input file RECONF1.41
&,LEN1_LEVDEPC_IN !1st dim of lev dependent consts on input file RECONF1.42
&,LEN2_LEVDEPC_IN !2nd dim of lev dependent consts on input file RECONF1.43
&,LEN1_ROWDEPC_IN !1st dim of row dependent consts on input file RECONF1.44
&,LEN2_ROWDEPC_IN !2nd dim of row dependent consts on input file RECONF1.45
&,LEN1_COLDEPC_IN !1st dim of col dependent consts on input file RECONF1.46
&,LEN2_COLDEPC_IN !2nd dim of col dependent consts on input file RECONF1.47
&,LEN1_FLDDEPC_IN !1st dim of field dependent consts on input file RECONF1.48
&,LEN2_FLDDEPC_IN !2nd dim of field dependent consts on input file RECONF1.49
&,LEN_EXTCNST_IN !Length of extra consts on input file RECONF1.50
&,LEN_DUMPHIST_IN !Length of history header on input file RECONF1.51
&,LEN_CFI1_IN !Length of index1 on input file RECONF1.52
&,LEN_CFI2_IN !Length of index2 on input file RECONF1.53
&,LEN_CFI3_IN !Length of index3 on input file RECONF1.54
&,LEN1_LOOKUP_IN !1st dim of LOOKUP on input file RECONF1.55
&,LEN2_LOOKUP_IN !2nd dim of LOOKUP on input file RECONF1.56
&,LEN_DATA_IN !Length of data on input file RECONF1.57
&,ROW_LENGTH_IN !No of points E-W on input file RECONF1.58
&,P_ROWS_IN !No of p-rows on input file RECONF1.59
&,P_LEVELS_IN !No of levels on input file RECONF1.60
&,Q_LEVELS_IN !No of wet levels on input file RECONF1.61
&,MAX_VARIABLES_IN !Maximum varaiables on input file RECONF1.62
&,TR_LEVELS_ADV_IN !No of tracer levels to be adv'ed on input file RECONF1.63
&,ST_LEVELS_IN !No of soil tempeerature levels on input file UJS1F401.322
&,SM_LEVELS_IN !No of soil moisture levels on input file UJS1F401.323
&,BL_LEVELS_IN !No of b.l. levels on input file RECONF1.65
&,OZONE_LEVELS_IN !No of ozone levels on input file RECONF1.66
&,P_FIELD_IN !No of p-points per level on input file RECONF1.67
&,U_ROWS_IN !No of uv-rows on input file RECONF1.68
&,U_FIELD_IN !No of uv-points per level on input file RECONF1.69
RECONF1.70
RECONF1.71
INTEGER RECONF1.72
& LEN_FIXHD_OUT !Length of fixed length header on output file RECONF1.73
&,LEN_INTHD_OUT !Length of integer header on output file RECONF1.74
&,LEN_REALHD_OUT !Length of real header on output file RECONF1.75
&,LEN1_LEVDEPC_OUT !1st dim of lev dependent consts on output file RECONF1.76
&,LEN2_LEVDEPC_OUT !2nd dim of lev dependent consts on output file RECONF1.77
&,LEN1_ROWDEPC_OUT !1st dim of row dependent consts on output file RECONF1.78
&,LEN2_ROWDEPC_OUT !2nd dim of row dependent consts on output file RECONF1.79
&,LEN1_COLDEPC_OUT !1st dim of col dependent consts on output file RECONF1.80
&,LEN2_COLDEPC_OUT !2nd dim of col dependent consts on output file RECONF1.81
&,LEN1_FLDDEPC_OUT !1st dim of field dependent consts on output fi RECONF1.82
&,LEN2_FLDDEPC_OUT !2nd dim of field dependent consts on output fi RECONF1.83
&,LEN_EXTCNST_OUT !Length of extra consts on output file RECONF1.84
&,LEN_DUMPHIST_OUT !Length of history header on output file RECONF1.85
&,LEN_CFI1_OUT !Length of index1 on output file RECONF1.86
&,LEN_CFI2_OUT !Length of index2 on output file RECONF1.87
&,LEN_CFI3_OUT !Length of index3 on output file RECONF1.88
&,LEN1_LOOKUP_OUT !1st dim of LOOKUP on output file RECONF1.89
&,LEN2_LOOKUP_OUT !2nd dim of LOOKUP on output file RECONF1.90
&,LEN1_LOOKUP_UM UIE2F401.224
&,LEN2_LOOKUP_UM UIE2F401.225
&,LEN1_LOOKUP_LS UIE2F401.226
&,LEN2_LOOKUP_LS UIE2F401.227
&,LEN_DATA_OUT !Length of data on output file RECONF1.91
&,ROW_LENGTH_OUT !No of points E-W on output file RECONF1.92
&,P_ROWS_OUT !No of p-rows on output file RECONF1.93
&,P_LEVELS_OUT !No of levels on output file RECONF1.94
&,Q_LEVELS_OUT !No of wet levels on output file RECONF1.95
&,MAX_VARIABLES_OUT !Maximum varaiables on output file RECONF1.96
&,TR_LEVELS_OUT !No of tracer levels on output file RECONF1.97
&,TR_LEVELS_ADV_OUT !No of tracer levels to be adv' on output file RECONF1.98
&,ST_LEVELS_OUT !No of soil tempeerature levels on output file UJS1F401.324
&,SM_LEVELS_OUT !No of soil moisture levels on output file UJS1F401.325
&,BL_LEVELS_OUT !No of b.l. levels on output file RECONF1.100
&,OZONE_LEVELS_OUT !No of ozone levels on input file RECONF1.101
&,TR_VARS_OUT !No of tracer variables on iput file RECONF1.102
&,P_FIELD_OUT !No of p-points per level on output file RECONF1.105
&,U_ROWS_OUT !No of uv-rows on output file RECONF1.106
&,U_FIELD_OUT !No of uv-points per level on output file RECONF1.107
INTEGER LAND_POINTS_OUT !Number of land points on output file UDG2F305.521
RECONF1.108
INTEGER RECONF1.109
& LEN_INTHD_UARS !Length of integer header on UARS file RECONF1.110
&,LEN_REALHD_UARS !Length of real header on UARS file RECONF1.111
&,LEN1_LEVDEPC_UARS !1st dim of lev dependent consts on UARS file RECONF1.112
&,LEN2_LEVDEPC_UARS !2nd dim of lev dependent consts on UARS file RECONF1.113
&,LEN2_LOOKUP_UARS !2nd dim of LOOKUP on UARS file RECONF1.114
&,LEN_DATA_UARS !Length of data on UARS file RECONF1.115
&,LEN_INTHD_TRACER !Length of integer header on TRACER file RECONF1.116
&,LEN_REALHD_TRACER !Length of real header on TRACER file RECONF1.117
&,LEN1_LEVDEPC_TRACER !1st dim of lev dependent consts on TRACER fi RECONF1.118
&,LEN2_LEVDEPC_TRACER !2nd dim of lev dependent consts on TRACER fi RECONF1.119
&,LEN2_LOOKUP_TRACER !2nd dim of LOOKUP on TRACER file RECONF1.120
&,LEN_DATA_TRACER !Length of data on TRACER file RECONF1.121
&,LEN_INTHD_TRANS !Length of integer header on TRANS file AD221292.51
&,LEN_REALHD_TRANS !Length of real header on TRANS file AD221292.52
&,LEN1_LEVDEPC_TRANS !1st dim of lev dependent consts on TRANS file AD221292.53
&,LEN2_LEVDEPC_TRANS !2nd dim of lev dependent consts on TRANS file AD221292.54
&,LEN2_LOOKUP_TRANS !2nd dim of LOOKUP on TRANS file AD221292.55
&,LEN_DATA_TRANS !Length of data on TRANS file AD221292.56
AD221292.57
&,PER_ARGS(6) !Lengths extracted from PER file used AD150293.11
& !to dimension arrays in lower routines AD150293.12
RECONF1.122
&,FIXHD_LS(256) UIE2F401.222
&,FIXHD_UM(256) UIE2F401.223
INTEGER POINTS_PER_OCEAN_LEVEL(99) UDG2F305.523
!Number of sea points on ocean level UDG2F305.524
!partition (dump) 1=atmos, 2=ocean UDG2F305.525
INTEGER ITEM_ARRAY(1000) UDG0F403.5
INTEGER SOURCE_ARRAY(1000) UDG0F403.6
INTEGER NUM_ITEMS UDG0F403.7
INTEGER J,J1,J2 UDG0F403.8
INTEGER RECONF1.123
& LEN_IO !Length of I/O returned by BUFFER IN RECONF1.124
&,I !DO loop index RECONF1.125
&,NFTIN !Unit number of input UM dump RECONF1.126
&,NFTOUT !Unit number of output UM dump RECONF1.127
&,NFTIN2 UIE2F401.220
&,NFTIN3 UIE2F401.221
&,NFTUARS !Unit number of UARS file RECONF1.128
&,NFTTRANS !Unit number of transplant file AD221292.41
&,NFTTRACER RECONF1.129
&,NFTPER !Unit number of ECMWF perturbation file AD150293.8
&,NFTGRIB !Unit number of grib coded file RECONF1.130
&,NLOOKUPS !No of ancillary field lookups RECONF1.131
&,LEN_ANCIL!Length of ancillary data RECONF1.132
&,DUMP_PACK ! Packing indicator for Dump GDR2F401.3
! 1 : Use PPXREF file to control packing GDR2F401.4
! 2 : Do not pack prognostics, as 1 for diagnostics GDR2F401.5
! 3 : Do not pack prognostics or diagnostics GDR2F401.6
INTEGER SCALE !Constant used in VAR to calculate UDG7F405.4
!aerosol increment. UDG7F405.5
INTEGER ERR !Return code from OPEN UDG2F305.526
INTEGER ICODE !Return code; successful=0 UDG2F305.527
! error > 0 UDG2F305.528
INTEGER REM UDG3F402.10
REAL BUFFIN_ERR !Return code from BUFFIN UDG2F305.529
CHARACTER*80 CMESSAGE !Error message if ICODE > 0 UDG2F305.530
CHARACTER*80 FILENAME !filename holding namelist UDG3F402.11
UDG2F305.531
RECONF1.136
REAL AD150293.5
* PERTURBATION !ECMWF perturbation switch =0, false AD150293.6
&,ANVIL_FACTOR !parameters needed to set up 3D convective AJX1F404.3
&,TOWER_FACTOR !cloud amount (in DERV_3D_CCA) AJX1F404.4
AD150293.7
LOGICAL RECONF1.137
& UARS,UARS_ARG UDG2F305.532
*,GRIB,GRIB_ARG !GRIB code switch RECONF1.140
*,RESET,RESET_ARG !Reset of analysis time code switch RECONF1.141
*,STRAT_Q,STRAT_Q_ARG !Switch to reset stratospheric Q RECONF1.142
*,OCEAN_DUMP !Ocean input dump if true RECONF1.143
*,OCEAN,OCEAN_ARG !Ocean reconfiguation requested RECONF1.144
*,TRANS,TRANS_ARG !Data tramsplant switch AD221292.42
*,C_GRID_IN !=T C-grid; =F B-grid input grid AD200593.11
*,C_GRID_OUT !=T C-grid; =F B-grid output grid AD200593.12
*,RadialGridIn !=T Vert co-ord radius =F hybrid UIE2F401.230
*,RadialGridOut !=T Vert co-ord radius =F hybrid UIE2F401.231
*,RM_CP UDG6F405.85
LOGICAL LCAL360 !T= 360 day calender: UDG2F305.533
!F= Gregorian calender UDG2F305.534
& ,LAMIPII ! T = alter treatment in REPLANCA GRS2F404.236
! as required for AMIP II GRS2F404.237
LOGICAL LSPIRAL_S !Switch for SPIRAL_S routine UDG2F305.535
!defining unresolved coastal points UDG2F305.536
LOGICAL LOZONE_ZONAL !T= Zonal ozone field UDG2F305.537
!F= Full ozone field UDG2F305.538
LOGICAL L_MP_PRECIP !T=Mixed phased precipitation chosen UDG4F404.4
!F=Standard precipitation chosen UDG4F404.5
DATA UARS/.FALSE./ RECONF1.146
DATA GRIB/.FALSE./ RECONF1.147
DATA RESET/.FALSE./ RECONF1.148
DATA STRAT_Q/.FALSE./ RECONF1.149
DATA OCEAN/.FALSE./ RECONF1.150
DATA TRANS/.FALSE./ AD221292.43
DATA PERTURBATION/0.0/ AD150293.9
DATA C_GRID_OUT/.FALSE./ AD200593.13
DATA RadialGridOut/.FALSE./ UIE2F401.265
DATA RM_CP/.FALSE./ UDG6F405.86
DATA LCAL360/.FALSE./ UDG2F305.539
DATA LAMIPII/.FALSE./ GRS2F404.238
DATA LSPIRAL_S/.FALSE./ UDG2F305.540
DATA LOZONE_ZONAL/.FALSE./ UDG2F305.541
DATA ANVIL_FACTOR/1.0/ AJX1F404.5
DATA TOWER_FACTOR/1.0/ AJX1F404.6
RECONF1.151
INTEGER LFIXHD_VAR UIE2F401.228
PARAMETER (LFIXHD_VAR = 256) UIE2F401.229
*CALL CANCFTNA
GDR1F401.6
*CALL CANCTITA
GDR1F401.7
RECONF1.168
EXTERNAL IOERROR,GRIB_TO_UNIFIED_MODEL,CONTROL,STASH_PROC UDG2F305.542
EXTERNAL UM_Submodel_Init UDG2F305.543
*IF DEF,MPPRECON UDG3F402.7
EXTERNAL GC_INIT,GC_GSYNC UDG3F402.8
*ENDIF UDG3F402.9
RECONF1.170
NAMELIST /RECON/LEN_FIXHD_OUT,LEN_INTHD_OUT,LEN_REALHD_OUT UDG2F305.544
&, LEN2_LEVDEPC_OUT,UARS,GRIB,RESET UDG2F305.545
&, LEN2_ROWDEPC_OUT,LEN2_COLDEPC_OUT UDG2F305.546
&, LEN1_FLDDEPC_OUT,LEN2_FLDDEPC_OUT,LEN_EXTCNST_OUT UDG2F305.547
&, LEN_DUMPHIST_OUT,LEN_CFI1_OUT,LEN_CFI2_OUT UDG2F305.548
&, LEN_CFI3_OUT,LEN1_LOOKUP_OUT,ROW_LENGTH_OUT UDG2F305.549
&, P_ROWS_OUT,P_LEVELS_OUT,Q_LEVELS_OUT UDG2F305.550
&, MAX_VARIABLES_OUT,TR_LEVELS_OUT UJS1F401.326
&, ST_LEVELS_OUT,SM_LEVELS_OUT UJS1F401.327
&, BL_LEVELS_OUT,TR_LEVELS_ADV_OUT UDG2F305.552
&, TR_VARS_OUT GDR7F404.461
&, OZONE_LEVELS_OUT,LAND_POINTS_OUT UDG2F305.554
&, RIMWIDTHA,Submodel_ident,Dump_pack GDR2F401.7
&, STRAT_Q,TRANS,PERTURBATION,C_GRID_OUT UDG2F305.556
&, LAMIPII GRS2F404.239
&, LCAL360,LSPIRAL_S,LOZONE_ZONAL,RM_CP UDG6F405.87
&, RIMWIDTHO GSI1F405.367
&, ANVIL_FACTOR,TOWER_FACTOR,SCALE UDG7F405.6
UDG3F402.12
*IF DEF,T3E GPB3F403.195
*CALL T3ECLKTK
GPB3F403.196
INTEGER iclktck,ierr GPB3F403.197
*ENDIF GPB3F403.198
GPB3F403.199
*IF DEF,T3E GPB3F403.200
! Find out the number of clock ticks per second on this machine. GPB3F403.201
! This information is required to calculate the wallclock times GPB3F403.202
! in TIMER GPB3F403.203
GPB3F403.204
iclktck=0 GPB3F403.205
ticks_per_second=0 GPB3F403.206
GPB3F403.207
CALL PXFCONST(
'CLK_TCK',iclktck,ierr) GPB3F403.208
GPB3F403.209
IF (ierr .NE. 0) THEN GPB3F403.210
WRITE(6,*) 'UMSHELL : Failure in PXFCONST, err= ',ierr GPB3F403.211
CALL ABORT
() GPB3F403.212
ENDIF GPB3F403.213
GPB3F403.214
CALL PXFSYSCONF(
iclktck,ticks_per_second,ierr) GPB3F403.215
GPB3F403.216
IF (ierr .NE. 0) THEN GPB3F403.217
WRITE(6,*) 'UMSHELL : Failure in PXFSYSCONF, err= ',ierr GPB3F403.218
CALL ABORT
() GPB3F403.219
ENDIF GPB3F403.220
GPB3F403.221
*ENDIF GPB3F403.222
GBC0F403.114
CL GBC0F403.115
CL Get the current sector size for disk I/O GBC0F403.116
CL GBC0F403.117
GBC0F403.118
CALL FORT_GET_ENV
('UM_SECTOR_SIZE',14,c_um_sector_size,8,sect_err) GBC0F403.119
IF (sect_err .NE. 0) THEN GBC0F403.120
WRITE(6,*) 'Warning: Environment variable UM_SECTOR_SIZE has ', GBC0F403.121
& 'not been set.' GBC0F403.122
WRITE(6,*) 'Setting um_sector_size to 512' GBC0F403.123
um_sector_size=512 GBC0F403.124
ELSE GBC0F403.125
READ(c_um_sector_size,'(I4)') um_sector_size GBC0F403.126
ENDIF GBC0F403.127
*IF DEF,CRAY GBC0F403.128
GBC0F403.129
CL GBC0F403.130
CL Get the current NAMELIST Skip value GBC0F403.131
CL GBC0F403.132
GBC0F403.133
CALL FORT_GET_ENV
('UM_RNL_SKIP',11,c_um_rnl_skip,8,rnl_err) GBC0F403.134
IF (rnl_err .NE. 0) THEN GBC0F403.135
WRITE(6,*) 'Warning: Environment variable UM_RNL_SKIP has ', GBC0F403.136
& 'not been set.' GBC0F403.137
WRITE(6,*) 'Setting um_rnl_skip to 0 - Omit Skipped Messages' GBC0F403.138
um_rnl_skip=0 GBC0F403.139
ELSE GBC0F403.140
READ(c_um_rnl_skip,'(I4)') um_rnl_skip GBC0F403.141
ENDIF GBC0F403.142
call rnlskip(
um_rnl_skip) GBC0F403.143
*ENDIF GBC0F403.144
CALL TIMER
('RECONFIGURATION',1) UDG3F402.13
*IF DEF,MPPRECON UDG3F402.14
CALL GC_INIT(
' ',MYPE,NPROC) UDG3F402.15
*ENDIF UDG3F402.16
CL 1. Read RECON namelist to determine dimensions of output file UDG2F305.559
CL and other reconfiguration options RECONF1.184
RECONF1.185
CALL GET_FILE
(5,FILENAME,80,ICODE) UDG3F402.17
OPEN(UNIT=5,FILE=FILENAME,DELIM='APOSTROPHE') PXNAMLST.14
READ(5,RECON) UDG2F305.560
UDG2F305.561
CL 1.1 Read internal model information for the submodel partition (dump) UDG2F305.562
UDG2F305.563
ICODE=0 UDG2F305.564
CALL UM_Submodel_Init
(ICODE) UDG2F305.565
IF (ICODE.GT.0) THEN UDG2F305.566
WRITE(6,*) 'ERROR in subroutine UM_Submodel_Init' UDG2F305.567
CALL ABORT
UDG2F305.568
END IF UDG2F305.569
UDG2F305.570
CL 1.2 Set local switch from submodel identifier in RECON namelist UDG2F305.571
UDG2F305.572
OCEAN=.false. !default submodel identifier UDG2F305.573
IF(Submodel_ident.eq.ocean_sm)THEN UDG2F305.574
OCEAN=.true. UDG2F305.575
ELSEIF(Submodel_ident.LE.0.OR. UDG2F305.576
& Submodel_ident.GT.SUBMODEL_ID_MAX)THEN UDG2F305.577
WRITE(6,*) 'ERROR in routine RECONFIGURATION:' UDG2F305.578
WRITE(6,*) 'Illegal submodel identifier=',Submodel_ident UDG2F305.579
CALL ABORT
UDG2F305.580
END IF UDG2F305.581
GDG0F401.1264
CL 2: Calculate addressing of output fields and length of output data GDG0F401.1265
GDG0F401.1266
CL 2.1: Open PPXREF files GDG0F401.1267
GDG0F401.1268
!Initialise ppxRecs GDG0F401.1269
ppxRecs=1 GDG0F401.1270
cmessage = ' ' GDW1F404.178
GDG0F401.1271
DO I=1,N_INTERNAL_MODEL GDG0F401.1272
!For atmos GDG0F401.1273
IF(INTERNAL_MODEL_LIST(I).eq.ATMOS_IM)THEN GDG0F401.1274
CALL HDPPXRF
(NFT1,'STASHmaster_A',ppxRecs,ICODE,CMESSAGE) GDG0F401.1275
!For ocean GDG0F401.1276
ELSEIF(INTERNAL_MODEL_LIST(I).eq.OCEAN_IM)THEN GDG0F401.1277
CALL HDPPXRF
(NFT1,'STASHmaster_O',ppxRecs,ICODE,CMESSAGE) GDG0F401.1278
!For slab GDG0F401.1279
ELSEIF(INTERNAL_MODEL_LIST(I).eq.SLAB_IM)THEN GDG0F401.1280
CALL HDPPXRF
(NFT1,'STASHmaster_S',ppxRecs,ICODE,CMESSAGE) GDG0F401.1281
ENDIF GDG0F401.1282
IF (icode .lt. 0) then GDW1F404.179
write (6,*) 'WARNING : Problem in STASHmaster file(s)' GDW1F404.180
write (6,*) ' ',cmessage GDW1F404.181
ELSE IF (icode .gt. 0) then GDW1F404.182
write (6,*) 'ERROR : Problem in STASHmaster files(s)' GDW1F404.183
write (6,*) ' ',cmessage GDW1F404.184
call ABORT
GDW1F404.185
END IF GDW1F404.186
END DO GDG0F401.1287
!For user STASH GDG0F401.1288
CALL HDPPXRF
(0,' ',ppxRecs,ICODE,CMESSAGE) UIE2F404.27
IF(ICODE.NE.0)THEN GDG0F401.1290
WRITE(6,*) CMESSAGE GDG0F401.1291
CALL ABORT
GDG0F401.1292
ENDIF GDG0F401.1293
GDG0F401.1294
CL 2.2: Copy information from reconfiguration namelists to GDG0F401.1295
CL common blocks for call to stash_proc GDG0F401.1296
READ(5,HORIZONT) GDG0F401.1297
!Initialise model config. arrays before reading STSHCOMP GDG0F401.1298
DO I = 0,NSECTP GDG0F401.1299
ATMOS_SR(I)=' ' GDG0F401.1300
OCEAN_SR(I)=' ' GDG0F401.1301
SLAB_SR(I)=' ' GDG0F401.1302
WAVE_SR(I)=' ' GDG0F401.1303
INDEP_SR(I)=' ' GDG0F401.1304
END DO GDG0F401.1305
READ(5,STSHCOMP) GDG0F401.1306
!Initialise L_LSPICE before reading CNTLATM UDG4F404.6
L_LSPICE=.FALSE. UDG4F404.7
!Initialise H_SECT before reading CNTLATM UDG6F405.3
DO I = 0,MAXSECTS UDG6F405.4
H_SECT(I)=' ' UDG6F405.5
END DO UDG6F405.6
UDG6F405.7
UDG6F405.8
IF(SUBMODEL_IDENT.eq.ATMOS_IM)THEN GDG0F401.1307
READ(5,NLSTCATM) GDG0F401.1308
write (6,NLSTCATM) ABX2F404.37
READ(5,NLSTCSLB) GDG0F401.1309
ELSEIF(SUBMODEL_IDENT.eq.OCEAN_IM)THEN GDG0F401.1310
READ(5,NLSTCOCN) GDG0F401.1311
ENDIF GDG0F401.1312
NUM_ITEMS=0 UDG0F403.9
DO I=1,NITEMP GDG0F401.1313
READ(5,ITEMS,END=9,ERR=10) UDG3F402.19
ReconItems(I)=ITEM GDG0F401.1315
ITEM_ARRAY(I)=ITEM UDG0F403.10
SOURCE_ARRAY(I)=SOURCE UDG0F403.11
NUM_ITEMS=NUM_ITEMS+1 UDG0F403.12
END DO GDG0F401.1316
9 CONTINUE GDG0F401.1317
10 CONTINUE UDG3F402.20
REWIND 5 GDG0F401.1318
IF(GLOBAL.AND..NOT.OCEAN)THEN GDG0F401.1319
DELTA_LAMBDA=360.0/ROW_LENGTH_OUT GDG0F401.1320
DELTA_PHI=180/P_ROWS_OUT GDG0F401.1321
ENDIF GDG0F401.1322
P_LEVELS =P_LEVELS_OUT GDG0F401.1323
Q_LEVELS =Q_LEVELS_OUT GDG0F401.1324
P_ROWS =P_ROWS_OUT GDG0F401.1325
ROW_LENGTH =ROW_LENGTH_OUT GDG0F401.1326
TR_LEVELS =TR_LEVELS_OUT GDG0F401.1327
ST_LEVELS =ST_LEVELS_OUT GDG0F401.1328
SM_LEVELS =SM_LEVELS_OUT GDG0F401.1329
BL_LEVELS =BL_LEVELS_OUT GDG0F401.1330
OZONE_LEVELS =OZONE_LEVELS_OUT GDG0F401.1331
LAND_FIELD =LAND_POINTS_OUT GDG0F401.1332
H_A_EWSPACE =DELTA_LAMBDA GDG0F401.1333
H_A_NSSPACE =DELTA_PHI GDG0F401.1334
H_A_FIRSTLAT =LAMBDA_TLC GDG0F401.1335
H_A_FIRSTLONG =PHI_TLC GDG0F401.1336
H_A_POLELAT =LAMBDA_NPOLE GDG0F401.1337
H_A_POLELONG =PHI_NPOLE GDG0F401.1338
L_MP_PRECIP=L_LSPICE UDG4F404.8
GDG0F401.1339
CL 2.3: Call STASH_PROC GDG0F401.1340
CALL STASH_PROC
(NFT1,NFT2,.TRUE., GDG0F401.1341
*CALL ARGPPX
GDG0F401.1342
& ICODE,CMESSAGE) GDG0F401.1343
IF(ICODE.NE.0)THEN GDG0F401.1344
WRITE(6,*) CMESSAGE GDG0F401.1345
CALL ABORT
GDG0F401.1346
ENDIF GDG0F401.1347
GDG0F401.1348
CL 3. Open/check existence of data files GDG0F401.1349
RECONF1.190
WRITE(6,'(20x,''FILE STATUS'')') RECONF1.191
WRITE(6,'(20x,''==========='')') RECONF1.192
C CALL OPEN(1,'PPXREF',6,0,0,ERR) RECONF1.193
CALL FILE_OPEN
(18,'AGRIB',5,0,0,ERR) GPB1F305.126
IF(GRIB.AND.ERR.NE.0)THEN GO191193.6
WRITE(6,*) ' **ERROR** Failed to open input GRIB file' GO191193.7
CALL ABORT
GO191193.8
ENDIF GO191193.9
CALL FILE_OPEN
(19,'RECONTMP',8,1,0,ERR) GPB1F305.127
CALL FILE_OPEN
(20,'AINITIAL',8,0,0,ERR) GPB1F305.128
CALL FILE_OPEN
(22,'UM_DUMP',7,0,0,ERR) UIE2F401.285
CALL FILE_OPEN
(23,'LS_DUMP',7,0,0,ERR) UIE2F401.286
CALL FILE_OPEN
(29,'SSU',3,0,0,ERR) GPB1F305.130
CALL FILE_OPEN
(30,'OZONE',5,0,0,ERR) GPB1F305.131
CALL FILE_OPEN
(31,'SMCSNOWD',8,0,0,ERR) GPB1F305.132
CALL FILE_OPEN
(32,'DSOILTMP',8,0,0,ERR) GPB1F305.133
CALL FILE_OPEN
(33,'SOILTYPE',8,0,0,ERR) GPB1F305.134
CALL FILE_OPEN
(34,'VEGTYPE',7,0,0,ERR) GPB1F305.135
CALL FILE_OPEN
(35,'SSTIN',5,0,0,ERR) GPB1F305.136
CALL FILE_OPEN
(36,'SICEIN',6,0,0,ERR) GPB1F305.137
CALL FILE_OPEN
(37,'PERTURB',7,0,0,ERR) GPB1F305.138
CALL FILE_OPEN
(38,'CURNTIN',7,0,0,ERR) GPB1F305.139
CALL FILE_OPEN
(39,'MASK',4,0,0,ERR) GPB1F305.140
CALL FILE_OPEN
(40,'OINITIAL',8,0,0,ERR) GPB1F305.141
CALL FILE_OPEN
(48,'ATRACER',7,0,0,ERR) GPB1F305.143
CALL FILE_OPEN
(49,'OTRACER',7,0,0,ERR) GPB1F305.144
CALL FILE_OPEN
(59,'SLABHCON',8,0,0,ERR) GPB1F305.145
CALL FILE_OPEN
(96,'OROG',4,0,0,ERR) GPB1F305.146
CALL FILE_OPEN
(97,'TRANSP',6,0,0,ERR) GPB1F305.147
CALL FILE_OPEN
(109,'MURKFILE',8,0,0,ERR) GPB1F305.148
CALL FILE_OPEN
(110,'SULPEMIS',8,0,0,ERR) GDR1F401.8
CALL FILE_OPEN
(111,'USRANCIL',8,0,0,ERR) GPB1F305.150
CALL FILE_OPEN
(112,'USRMULTI',8,0,0,ERR) GPB1F305.151
CALL FILE_OPEN
(115,'SO2NATEM',8,0,0,ERR) GDR1F401.9
CALL FILE_OPEN
(116,'CHEMOXID',8,0,0,ERR) GDR1F401.10
CALL FILE_OPEN
(117,'AEROFCG',7,0,0,ERR) AWI1F403.97
CALL FILE_OPEN
(118,'CO2EMITS',8,0,0,ERR) ACN1F405.159
CALL FILE_OPEN
(135,'FRACINIT',8,0,0,ERR) ABX2F404.38
CALL FILE_OPEN
(136,'VEGINIT',7,0,0,ERR) ABX2F404.39
CALL FILE_OPEN
(137,'DISTURB',7,0,0,ERR) ABX2F404.40
CALL FILE_OPEN
(139,'SOOTEMIS',8,0,0,ERR) ARR5F405.15
!###################################################################### GSM2F405.31
!# In the following deck, presumably the 'surface type fractions' (with GSM2F405.32
!# 9 pseudo-levels) counts as one field (not 9). GSM2F405.33
!###################################################################### GSM2F405.34
*IF DEF,MPPRECON UDG3F402.21
INFO=GC_NONE UDG3F402.22
CALL GC_GSYNC(
NPROC,INFO) UDG3F402.23
*ENDIF UDG3F402.24
RECONF1.216
CL 3. Select mode of input file RECONF1.217
RECONF1.218
NFTOUT=21 RECONF1.219
NFTIN2=22 UIE2F401.287
NFTIN3=23 UIE2F401.288
NFTUARS=29 RECONF1.220
NFTPER=37 AD150293.14
IF(.NOT.OCEAN)THEN RECONF1.221
IF(GRIB)THEN RECONF1.222
NFTIN=19 RECONF1.223
NFTGRIB=18 RECONF1.224
CALL GRIB_TO_UNIFIED_MODEL
( UDG2F305.582
*CALL ARGPPX
UDG2F305.583
& NFTGRIB,NFTIN) UDG2F305.584
ELSE RECONF1.226
NFTIN=20 UDG5F405.31
ENDIF RECONF1.230
ELSE RECONF1.231
NFTIN=40 RECONF1.232
NFTOUT=41 RECONF1.233
CALL SHELL
('cp $OINITIAL $RECONTMP',22) RECONF1.234
CALL SHELL
('chmod +rw $RECONTMP',19) RECONF1.235
ENDIF RECONF1.236
IF(OCEAN)THEN RECONF1.237
NFTTRACER=49 RECONF1.238
ELSE RECONF1.239
NFTTRACER=48 RECONF1.240
ENDIF RECONF1.241
NFTTRANS=97 AD221292.44
RECONF1.242
CL 4. Buffer in fixed length header record of input dump & RECONF1.243
CL initialise lengths RECONF1.244
RECONF1.245
CALL BUFFIN
(NFTIN,FIXHD(1),256,LEN_IO,BUFFIN_ERR) UDG2F305.585
RECONF1.247
C Check for I/O errors RECONF1.248
IF(BUFFIN_ERR.NE.-1.0.OR.LEN_IO.NE.256)THEN UDG2F305.586
CALL IOERROR
('buffer in of fixed length header of input dump', RECONF1.250
& BUFFIN_ERR,LEN_IO,256) UDG2F305.587
CALL ABORT
RECONF1.252
ENDIF RECONF1.253
RECONF1.254
C Set missing data indicator to zero RECONF1.255
DO I=1,256 RECONF1.256
IF(FIXHD(I).LT.0)FIXHD(I)=0 RECONF1.257
ENDDO RECONF1.258
RECONF1.259
IF(FIXHD(2).EQ.2)THEN RECONF1.260
OCEAN_DUMP=.TRUE. RECONF1.261
ELSEIF (FIXHD(2).EQ.1)THEN RECONF1.262
OCEAN_DUMP=.FALSE. RECONF1.263
ELSE RECONF1.264
WRITE(6,*)'ERROR in subroutine RECONFIGURATION' RECONF1.265
WRITE(6,*)'FIXHD(2) not set correctly; value=',FIXHD(2) RECONF1.266
CALL ABORT
RECONF1.267
ENDIF RECONF1.268
IF(OCEAN.AND..NOT.OCEAN_DUMP)THEN RECONF1.269
WRITE(6,*)'ERROR in subroutine RECONFIGURATION' RECONF1.270
WRITE(6,*)'Ocean reconfiguation requested, but atmosphere' RECONF1.271
WRITE(6,*)'dump provided as input' RECONF1.272
CALL ABORT
RECONF1.273
ENDIF RECONF1.274
IF(.NOT.OCEAN.AND.OCEAN_DUMP)THEN RECONF1.275
WRITE(6,*)'ERROR in subroutine RECONFIGURATION' RECONF1.276
WRITE(6,*)'Atmosphere reconfiguration requested but ocean' RECONF1.277
WRITE(6,*)'dump provided as input' RECONF1.278
CALL ABORT
RECONF1.279
ENDIF RECONF1.280
RECONF1.281
CL AD200593.15
CL Determine horizontal staggering of input grid UIE2F401.266
CL AD200593.17
CL Check and reset fixhd(9) if old version AD200593.18
IF(FIXHD(12).LE.301.AND.FIXHD(9).NE.2) THEN AD200593.19
*IF DEF,MPPRECON UDG3F402.25
IF(MYPE.EQ.0)THEN UDG3F402.26
*ENDIF UDG3F402.27
WRITE(6,*) 'WARNING: in subroutine RECONFIGURATION' AD200593.20
WRITE(6,*) 'FIXHD(9)=',FIXHD(9),' at UM VN ',FIXHD(12) AD200593.21
*IF DEF,MPPRECON UDG3F402.28
END IF UDG3F402.29
*ENDIF UDG3F402.30
WRITE(6,*) 'Reset FIXHD(9) to 2 (Arakawa B grid)' AD200593.22
FIXHD(9)=2 AD200593.23
ENDIF AD200593.24
IF(FIXHD(9).EQ.3)THEN AD200593.25
C_GRID_IN=.TRUE. AD200593.26
ELSEIF(FIXHD(9).EQ.2)THEN AD200593.27
C_GRID_IN=.FALSE. AD200593.28
ELSE AD200593.29
WRITE(6,*)'ERROR in subroutine RECONFIGURATION' AD200593.30
WRITE(6,*)'FIXHD(9) not set correctly; value=',FIXHD(9) AD200593.31
CALL ABORT
AD200593.32
ENDIF AD200593.33
CL UIE2F401.267
CL Determine vertical co-ordinate of input grid UIE2F401.268
CL UIE2F401.269
IF(FIXHD(3).EQ.5)THEN UIE2F401.270
RadialGridIn=.TRUE. UIE2F401.271
ELSE UIE2F401.272
RadialGridIn=.FALSE. UIE2F401.273
ENDIF UIE2F401.274
! Temporary fudge (vn4.1) - Set RadialGridOut .true. if UIE2F401.275
! C_GRID_OUT is .true. UIE2F401.276
If (C_GRID_OUT) then UIE2F401.277
RadialGridOut=.true. UIE2F401.278
Else UIE2F401.279
RadialGridOut=.false. UIE2F401.280
End if UIE2F401.281
C Input file dimensions RECONF1.282
LEN_FIXHD_IN=256 RECONF1.283
LEN_INTHD_IN=FIXHD(101) RECONF1.284
LEN_REALHD_IN=FIXHD(106) RECONF1.285
LEN1_LEVDEPC_IN=FIXHD(111) RECONF1.286
LEN2_LEVDEPC_IN=FIXHD(112) RECONF1.287
LEN1_ROWDEPC_IN=FIXHD(116) RECONF1.288
LEN2_ROWDEPC_IN=FIXHD(117) RECONF1.289
LEN1_COLDEPC_IN=FIXHD(121) RECONF1.290
LEN2_COLDEPC_IN=FIXHD(122) RECONF1.291
LEN1_FLDDEPC_IN=FIXHD(126) RECONF1.292
LEN2_FLDDEPC_IN=FIXHD(127) RECONF1.293
LEN_EXTCNST_IN=FIXHD(131) RECONF1.294
LEN_DUMPHIST_IN=FIXHD(136) RECONF1.295
LEN_CFI1_IN=FIXHD(141) RECONF1.296
LEN_CFI2_IN=FIXHD(143) RECONF1.297
LEN_CFI3_IN=FIXHD(145) RECONF1.298
LEN1_LOOKUP_IN=FIXHD(151) RECONF1.299
LEN2_LOOKUP_IN=FIXHD(152) RECONF1.300
LEN_DATA_IN=FIXHD(161) RECONF1.301
RECONF1.302
RECONF1.303
CL 5. Buffer in integer constants array from input dump RECONF1.304
CL & initialise lengths RECONF1.305
RECONF1.306
CALL BUFFIN
(NFTIN,INTHD(1),FIXHD(101),LEN_IO,BUFFIN_ERR) UDG2F305.588
RECONF1.308
C Check for I/O errors RECONF1.309
IF(BUFFIN_ERR.NE.-1.0.OR.LEN_IO.NE.FIXHD(101))THEN UDG2F305.589
CALL IOERROR
('buffer in of integer constants in input dump', RECONF1.311
& BUFFIN_ERR,LEN_IO,FIXHD(101)) UDG2F305.590
CALL ABORT
RECONF1.313
ENDIF RECONF1.314
RECONF1.315
DO I=1,LEN_INTHD_IN RECONF1.316
IF(INTHD(I).LT.0)INTHD(I)=0 RECONF1.317
ENDDO RECONF1.318
RECONF1.319
BL_LEVELS_IN=INTHD(13) RECONF1.320
ROW_LENGTH_IN=INTHD(6) RECONF1.321
P_ROWS_IN=INTHD(7) RECONF1.322
P_LEVELS_IN=INTHD(8) RECONF1.323
Q_LEVELS_IN=INTHD(9) RECONF1.324
MAX_VARIABLES_IN=INTHD(15) RECONF1.325
ST_LEVELS_IN=INTHD(10) UJS1F401.328
IF(FIXHD(12).LT.401)THEN UJS1F401.329
SM_LEVELS_IN=ST_LEVELS_IN+1 UJS1F401.330
ELSEIF(INTHD(28).NE.0)THEN UDG0F403.23
SM_LEVELS_IN=INTHD(28) UJS1F401.332
ELSE UDG0F403.24
SM_LEVELS_IN=ST_LEVELS_IN UDG0F403.25
END IF UJS1F401.333
P_FIELD_IN=ROW_LENGTH_IN*P_ROWS_IN RECONF1.327
C Grib data is on A grid AD150293.15
IF(GRIB) THEN AD150293.16
U_ROWS_IN=P_ROWS_IN AD150293.17
ELSE AD150293.18
! For a C grid there are P_ROWS of U points and P_ROWS-1 of V points UIE2F401.282
! but for simplicity of coding here we dimension both U and V points UIE2F401.283
! as P_ROWS, with the last row of the V array not meaningful UIE2F401.284
IF(C_GRID_IN)THEN AD200593.34
U_ROWS_IN=P_ROWS_IN AD200593.35
ELSE AD200593.36
U_ROWS_IN=P_ROWS_IN-1 AD200593.37
ENDIF AD200593.38
ENDIF AD150293.19
U_FIELD_IN=ROW_LENGTH_IN*U_ROWS_IN RECONF1.329
IF(LEN_INTHD_IN.GE.26)THEN RECONF1.330
OZONE_LEVELS_IN=INTHD(26) RECONF1.331
ELSE RECONF1.332
OZONE_LEVELS_IN=P_LEVELS_IN RECONF1.333
ENDIF RECONF1.334
IF(LEN_INTHD_IN.GE.27)THEN RECONF1.335
TR_LEVELS_ADV_IN=INTHD(27) RECONF1.336
ELSE RECONF1.337
TR_LEVELS_ADV_IN=0 RECONF1.338
ENDIF RECONF1.339
RECONF1.340
C Set output dimensions to input ones unless specified on NAMELIST RECONF1.341
LEN_FIXHD_OUT=LEN_FIXHD_IN RECONF1.342
LEN_INTHD_OUT=LEN_INTHD_IN RECONF1.343
LEN_REALHD_OUT=LEN_REALHD_IN RECONF1.344
LEN2_LEVDEPC_OUT=LEN2_LEVDEPC_IN RECONF1.345
LEN2_ROWDEPC_OUT=LEN2_ROWDEPC_IN RECONF1.346
LEN2_COLDEPC_OUT=LEN2_COLDEPC_IN RECONF1.347
LEN1_FLDDEPC_OUT=LEN1_FLDDEPC_IN RECONF1.348
LEN2_FLDDEPC_OUT=LEN2_FLDDEPC_IN RECONF1.349
LEN_EXTCNST_OUT=LEN_EXTCNST_IN RECONF1.350
LEN_DUMPHIST_OUT=LEN_DUMPHIST_IN RECONF1.351
LEN_CFI1_OUT=LEN_CFI1_IN RECONF1.352
LEN_CFI2_OUT=LEN_CFI2_IN RECONF1.353
LEN_CFI3_OUT=LEN_CFI3_IN RECONF1.354
LEN1_LOOKUP_OUT=LEN1_LOOKUP_IN RECONF1.355
LEN2_LOOKUP_OUT=LEN2_LOOKUP_IN RECONF1.356
LEN_DATA_OUT=LEN_DATA_IN RECONF1.357
RECONF1.358
ROW_LENGTH_OUT=ROW_LENGTH_IN RECONF1.359
P_ROWS_OUT=P_ROWS_IN RECONF1.360
P_LEVELS_OUT=P_LEVELS_IN RECONF1.361
Q_LEVELS_OUT=Q_LEVELS_IN RECONF1.362
MAX_VARIABLES_OUT=MAX_VARIABLES_IN RECONF1.363
OZONE_LEVELS_OUT=OZONE_LEVELS_IN RECONF1.364
TR_LEVELS_ADV_OUT=TR_LEVELS_ADV_IN RECONF1.365
RECONF1.366
TR_LEVELS_OUT=INTHD(12) RECONF1.367
ST_LEVELS_OUT=INTHD(10) UJS1F401.334
SM_LEVELS_OUT=SM_LEVELS_IN UJS1F401.335
BL_LEVELS_OUT=INTHD(13) RECONF1.369
TR_VARS_OUT=INTHD(14) RECONF1.370
RECONF1.373
! Initialise values from namelist RECON UDG5F405.32
UDG2F305.592
READ(5,RECON) UDG2F305.593
RECONF1.377
P_FIELD_OUT=ROW_LENGTH_OUT*P_ROWS_OUT RECONF1.378
IF(C_GRID_OUT)THEN AD200593.39
U_ROWS_OUT=P_ROWS_OUT AD200593.40
ELSE AD200593.41
U_ROWS_OUT=P_ROWS_OUT-1 AD200593.42
ENDIF AD200593.43
U_FIELD_OUT=ROW_LENGTH_OUT*U_ROWS_OUT RECONF1.380
LEN1_ROWDEPC_OUT=P_ROWS_OUT RECONF1.381
LEN1_COLDEPC_OUT=ROW_LENGTH_OUT RECONF1.382
LEN1_LEVDEPC_OUT=P_LEVELS_OUT RECONF1.383
RECONF1.384
! Reserve space for radius at theta levels and at rho levels UIE2F401.290
! : 2 3-D arrays including the surface level (orography) UIE2F401.291
IF(RadialGridOut) THEN UIE2F401.292
LEN1_FLDDEPC_OUT=P_FIELD_OUT*(P_LEVELS_OUT+1) UIE2F401.293
ENDIF UIE2F401.294
UDG2F305.594
*IF DEF,MPPRECON UDG3F402.31
IF(MYPE.EQ.0)THEN UDG3F402.32
*ENDIF UDG3F402.33
WRITE (6,*) ' ' GDR1F401.11
WRITE(6,RECON) UDG2F305.595
*IF DEF,MPPRECON UDG3F402.34
END IF UDG3F402.35
*ENDIF UDG3F402.36
UDG3F402.37
RECONF1.404
IF(LEN_INTHD_OUT.LT.29)THEN RECONF1.405
WRITE(6,'('' *ERROR* Length of integer header must be at least'' RECONF1.406
* '' 29 words'')') RECONF1.407
CALL ABORT
RECONF1.408
ENDIF RECONF1.409
RECONF1.410
CL 6. Buffer in real constants array from input dump UDG5F405.33
CL & copy input dump to a temporary file if rotation of winds UDG5F405.34
CL needed. UDG5F405.35
CALL BUFFIN
(NFTIN,REALHD(1),FIXHD(106),LEN_IO,BUFFIN_ERR) UDG5F405.36
UDG5F405.37
C Check for I/O errors UDG5F405.38
IF(BUFFIN_ERR.NE.-1.0.OR.LEN_IO.NE.FIXHD(106))THEN UDG5F405.39
CALL IOERROR
('buffer in of real constants in input dump', UDG5F405.40
& BUFFIN_ERR,LEN_IO,FIXHD(106)) UDG5F405.41
CALL ABORT
UDG5F405.42
END IF UDG5F405.43
UDG5F405.44
IF(REALHD(5).NE.90..OR.REALHD(6).NE.0.)THEN UDG5F405.45
IF(.NOT.OCEAN.AND..NOT.GRIB)THEN UDG5F405.46
CALL SHELL
('cp $AINITIAL $RECONTMP',22) UDG5F405.47
CALL SHELL
('echo $AINITIAL',14) UDG5F405.48
CALL SHELL
('chmod +rw $RECONTMP',19) UDG5F405.49
NFTIN=19 UDG5F405.50
END IF UDG5F405.51
END IF UDG5F405.52
UDG5F405.53
UDG5F405.54
UDG5F405.55
UARS_ARG=UARS RECONF1.412
GRIB_ARG=GRIB RECONF1.413
RESET_ARG=RESET RECONF1.414
STRAT_Q_ARG=STRAT_Q RECONF1.415
OCEAN_ARG=OCEAN RECONF1.416
TRANS_ARG=TRANS AD221292.50
RECONF1.417
CL 7. Buffer in UARS fixed length header record & initialise lengths RECONF1.418
RECONF1.419
LEN_INTHD_UARS=1 RECONF1.420
LEN_REALHD_UARS=1 RECONF1.421
LEN1_LEVDEPC_UARS=1 RECONF1.422
LEN2_LEVDEPC_UARS=1 RECONF1.423
LEN2_LOOKUP_UARS=1 RECONF1.424
LEN_DATA_UARS=1 RECONF1.425
IF(UARS)THEN RECONF1.426
RECONF1.427
CALL BUFFIN
(NFTUARS,FIXHD(1),256,LEN_IO,BUFFIN_ERR) UDG2F305.596
RECONF1.429
C Check for I/O errors RECONF1.430
IF(BUFFIN_ERR.NE.-1.0.OR.LEN_IO.NE.256)THEN UDG2F305.597
CALL IOERROR
('buffer in of fixed length header of UARS file', RECONF1.432
* BUFFIN_ERR,LEN_IO,256) UDG2F305.598
CALL ABORT
RECONF1.434
ELSE RECONF1.435
LEN_INTHD_UARS=FIXHD(101) RECONF1.436
LEN_REALHD_UARS=FIXHD(106) RECONF1.437
LEN1_LEVDEPC_UARS=FIXHD(111) RECONF1.438
LEN2_LEVDEPC_UARS=FIXHD(112) RECONF1.439
LEN2_LOOKUP_UARS=FIXHD(152) RECONF1.440
LEN_DATA_UARS=FIXHD(161) RECONF1.441
ENDIF RECONF1.442
ENDIF RECONF1.443
AD150293.20
CL 8. Buffer in PER fixed length header record & initialise lengths AD150293.21
AD150293.22
DO I=1,6 AD150293.23
PER_ARGS(I)=1 AD150293.24
ENDDO AD150293.25
AD150293.26
IF(PERTURBATION.NE.0.0)THEN AD150293.27
AD150293.28
CALL BUFFIN
(NFTPER,FIXHD(1),256,LEN_IO,BUFFIN_ERR) UDG2F305.599
AD150293.30
C Check for I/O errors AD150293.31
IF(BUFFIN_ERR.NE.-1.0.OR.LEN_IO.NE.256)THEN UDG2F305.600
CALL IOERROR
('buffer in of fixed length header of PER file', AD150293.33
* BUFFIN_ERR,LEN_IO,256) UDG2F305.601
CALL ABORT
AD150293.35
ELSE AD150293.36
PER_ARGS(1)=FIXHD(101) AD150293.37
PER_ARGS(2)=FIXHD(106) AD150293.38
PER_ARGS(3)=FIXHD(111) AD150293.39
PER_ARGS(4)=FIXHD(112) AD150293.40
PER_ARGS(5)=FIXHD(152) AD150293.41
PER_ARGS(6)=FIXHD(161) AD150293.42
ENDIF AD150293.43
ENDIF AD150293.44
RECONF1.444
CL 8. Buffer in TRANS fixed length header record & initialise lengths AD221292.58
AD221292.59
LEN_INTHD_TRANS=1 AD221292.60
LEN_REALHD_TRANS=1 AD221292.61
LEN1_LEVDEPC_TRANS=1 AD221292.62
LEN2_LEVDEPC_TRANS=1 AD221292.63
LEN2_LOOKUP_TRANS=1 AD221292.64
LEN_DATA_TRANS=1 AD221292.65
IF(TRANS)THEN AD221292.66
AD221292.67
CALL BUFFIN
(NFTTRANS,FIXHD(1),256,LEN_IO,BUFFIN_ERR) UDG2F305.602
AD221292.69
C Check for I/O errors AD221292.70
IF(BUFFIN_ERR.NE.-1.0.OR.LEN_IO.NE.256)THEN UDG2F305.603
CALL IOERROR
('buffer in of fixed length header of TRANSP file', AD221292.72
* BUFFIN_ERR,LEN_IO,256) UDG2F305.604
CALL ABORT
AD221292.74
ELSE AD221292.75
LEN_INTHD_TRANS=FIXHD(101) AD221292.76
LEN_REALHD_TRANS=FIXHD(106) AD221292.77
LEN1_LEVDEPC_TRANS=FIXHD(111) AD221292.78
LEN2_LEVDEPC_TRANS=FIXHD(112) AD221292.79
LEN2_LOOKUP_TRANS=FIXHD(152) AD221292.80
LEN_DATA_TRANS=FIXHD(161) AD221292.81
ENDIF AD221292.82
ENDIF AD221292.83
CL 9. Buffer in TRACER fixed length header record & initialise lengths AD221292.84
RECONF1.446
LEN_INTHD_TRACER=1 RECONF1.447
LEN_REALHD_TRACER=1 RECONF1.448
LEN1_LEVDEPC_TRACER=1 RECONF1.449
LEN2_LEVDEPC_TRACER=1 RECONF1.450
LEN2_LOOKUP_TRACER=1 RECONF1.451
LEN_DATA_TRACER=1 RECONF1.452
RECONF1.453
CALL BUFFIN
(NFTTRACER,FIXHD,256,LEN_IO,BUFFIN_ERR) UDG2F305.605
RECONF1.455
C Check for I/O errors RECONF1.456
IF(BUFFIN_ERR.NE.-1.0.OR.LEN_IO.NE.256)THEN UDG2F305.606
C Ignore I/O errors RECONF1.458
ELSE RECONF1.459
LEN_INTHD_TRACER=FIXHD(101) RECONF1.460
LEN_REALHD_TRACER=FIXHD(106) RECONF1.461
LEN1_LEVDEPC_TRACER=FIXHD(111) RECONF1.462
LEN2_LEVDEPC_TRACER=FIXHD(112) RECONF1.463
LEN2_LOOKUP_TRACER=FIXHD(152) RECONF1.464
LEN_DATA_TRACER=FIXHD(161) RECONF1.465
RB221193.80
C In case tracer file is also being used as ancillary for aerosols, RB221193.81
C need to reposition to start of file. RB221193.82
CALL SETPOS
(NFTTRACER,0,ICODE) GTD0F400.126
ENDIF RECONF1.466
RECONF1.467
CL 10. Dimension of ancillary field arrays AD221292.85
RECONF1.469
LEN_ANCIL=1 RECONF1.470
NLOOKUPS=1 RECONF1.471
DO I=1,NANCIL_DATASETSA GDR1F401.12
RECONF1.473
CALL BUFFIN
(FTN_ANCIL_A(I),FIXHD,256,LEN_IO,BUFFIN_ERR) GDR1F401.13
C Check for I/O errors RECONF1.475
IF(BUFFIN_ERR.NE.-1.0.OR.LEN_IO.NE.256)THEN UDG2F305.608
C Ignore I/O errors if file does not exist RECONF1.477
ELSE RECONF1.478
NLOOKUPS=NLOOKUPS+FIXHD(152) RECONF1.479
CALL SETPOS
(FTN_ANCIL_A(I),0,ICODE) GDR1F401.14
ENDIF RECONF1.489
RECONF1.490
END DO UDG2F305.609
UDG2F305.610
CL 11. Call remainder of reconfiguration code GDG0F401.1350
GDG0F401.1351
CL 11.1: Initialise variables call to subroutine CONTROL GDG0F401.1352
LEN_ANCIL=0 UDG2F305.661
LEN2_LOOKUP_OUT=0 UDG2F305.662
LEN_DATA_OUT=0 UDG2F305.663
DO I=1,N_INTERNAL_MODEL UDG2F305.664
LEN2_LOOKUP_OUT= LEN2_LOOKUP_OUT+ UDG2F305.665
& DumpProgLevs(INTERNAL_MODEL_LIST(I)) UDG2F305.666
LEN_DATA_OUT = LEN_DATA_OUT+ UDG2F305.667
& PrimDataLen(INTERNAL_MODEL_LIST(I)) UDG2F305.668
DO J1=1,NProgItems(I) UDG0F403.13
DO J2=1,NUM_ITEMS UDG0F403.14
IF(ProgItems(I,J1).EQ.ITEM_ARRAY(J2))THEN UDG0F403.15
IF(SOURCE_ARRAY(J2).EQ.2)THEN UDG0F403.16
IF(ProgItems(I,J1).EQ.216)THEN UDG0F404.6
LEN_ANCIL=LEN_ANCIL+NTYPE*P_FIELD_OUT UDG0F404.7
ELSEIF(ProgItems(I,J1).EQ.217.OR. UDG0F404.8
& ProgItems(I,J1).EQ.218)THEN UDG0F404.9
LEN_ANCIL=LEN_ANCIL+NPFT*P_FIELD_OUT UDG0F404.10
ELSE UDG0F404.11
LEN_ANCIL=LEN_ANCIL+Recondat(I,ProgItems(I,J1),1) UDG0F404.12
& *P_FIELD_OUT UDG0F404.13
END IF UDG0F404.14
END IF UDG0F403.18
ENDIF UDG0F403.19
END DO UDG0F403.20
END DO UDG0F403.21
LEN_ANCIL=MAX0(LEN_ANCIL,P_FIELD_OUT*(P_LEVELS_OUT+1)) UDG0F403.22
LEN_ANCIL=MAX0(LEN_ANCIL,P_FIELD_IN*(P_LEVELS_IN+1)) UDG0F404.15
ENDDO UDG2F305.669
DO I=1,P_LEVELS_OUT UDG2F305.671
POINTS_PER_OCEAN_LEVEL(I)=NECF(I) UDG2F305.672
END DO UDG2F305.673
UDG2F305.674
If (.NOT.RadialGridOut.AND.RadialGridIn) then UIE2F401.232
UIE2F401.233
! Buffer in fixed length header record of background UM dump. UIE2F401.234
CALL BUFFIN
(NFTIN2,FIXHD_UM(1),LFIXHD_VAR,LEN_IO,BUFFIN_ERR) UIE2F401.235
UIE2F401.236
! Check for I/O errors UIE2F401.237
IF(BUFFIN_ERR.NE.-1.0.OR.LEN_IO.NE.LFIXHD_VAR)THEN UIE2F401.238
UIE2F401.239
CALL IOERROR
('buffer in of backgnd UM fixed header', UIE2F401.240
& BUFFIN_ERR,LEN_IO,LFIXHD_VAR) UIE2F401.241
CMESSAGE='RECONF1: I/O error' UIE2F401.242
ICODE=1 UIE2F401.243
CALL ABORT
UIE2F401.244
ENDIF UIE2F401.245
UIE2F401.246
! Buffer in fixed length header record of background LS dump. UIE2F401.247
CALL BUFFIN
(NFTIN3,FIXHD_LS(1),LFIXHD_VAR,LEN_IO,BUFFIN_ERR) UIE2F401.248
UIE2F401.249
! Check for I/O errors UIE2F401.250
IF(BUFFIN_ERR.NE.-1.0.OR.LEN_IO.NE.LFIXHD_VAR)THEN UIE2F401.251
UIE2F401.252
CALL IOERROR
('buffer in of LS fixed length header', UIE2F401.253
& BUFFIN_ERR,LEN_IO,LFIXHD_VAR) UIE2F401.254
CMESSAGE='RECONF1: I/O error' UIE2F401.255
ICODE=1 UIE2F401.256
CALL ABORT
UIE2F401.257
ENDIF UIE2F401.258
UIE2F401.259
LEN1_LOOKUP_UM=FIXHD_UM(151) UIE2F401.260
LEN2_LOOKUP_UM=FIXHD_UM(152) UIE2F401.261
LEN1_LOOKUP_LS=FIXHD_LS(151) UIE2F401.262
LEN2_LOOKUP_LS=FIXHD_LS(152) UIE2F401.263
End if UIE2F401.264
*IF DEF,MPPRECON UDG3F402.38
! 11.2: Decomposition UDG3F402.39
UDG3F402.40
! p-grid UDG3F402.41
P_FIELD_OUT_DIS=P_FIELD_OUT/NPROC UDG3F402.42
REM=P_FIELD_OUT-NPROC*P_FIELD_OUT_DIS UDG3F402.43
IF(NPROC.GT.1)THEN UDG3F402.44
DO I=0,REM-1 UDG3F402.45
JP_DATASTART(I)=I*P_FIELD_OUT_DIS+1 UDG3F402.46
END DO UDG3F402.47
DO I=REM,NPROC-1 UDG3F402.48
JP_DATASTART(I)=REM*(P_FIELD_OUT_DIS+1) + UDG3F402.49
& (I-REM)*P_FIELD_OUT_DIS+1 UDG3F402.50
END DO UDG3F402.51
IF(MYPE.LT.REM)P_FIELD_OUT_DIS=P_FIELD_OUT_DIS+1 UDG3F402.52
IP_DATASTART=JP_DATASTART(MYPE) UDG3F402.53
ELSE UDG3F402.54
IP_DATASTART=1 UDG3F402.55
JP_DATASTART(0)=1 UDG3F402.56
END IF UDG3F402.57
UDG3F402.58
! u-grid UDG3F402.59
U_FIELD_OUT_DIS=U_FIELD_OUT/NPROC UDG3F402.60
REM=U_FIELD_OUT-NPROC*U_FIELD_OUT_DIS UDG3F402.61
IF(NPROC.GT.1)THEN UDG3F402.62
DO I=0,REM-1 UDG3F402.63
JU_DATASTART(I)=I*U_FIELD_OUT_DIS+1 UDG3F402.64
END DO UDG3F402.65
DO I=REM,NPROC-1 UDG3F402.66
JU_DATASTART(I)=REM*(U_FIELD_OUT_DIS+1) + UDG3F402.67
& (I-REM)*U_FIELD_OUT_DIS+1 UDG3F402.68
END DO UDG3F402.69
IF(MYPE.LT.REM)U_FIELD_OUT_DIS=U_FIELD_OUT_DIS+1 UDG3F402.70
IU_DATASTART=JU_DATASTART(MYPE) UDG3F402.71
ELSE UDG3F402.72
IU_DATASTART=1 UDG3F402.73
JU_DATASTART(0)=1 UDG3F402.74
END IF UDG3F402.75
UDG3F402.76
INFO=GC_NONE UDG3F402.77
CALL GC_GSYNC(
NPROC,INFO) UDG3F402.78
CL 11.3: Call CONTROL UDG3F402.79
*ELSE UDG3F402.80
CL 11.2: Call CONTROL UDG3F402.81
*ENDIF UDG3F402.82
CALL SUPERCONTROL
(LEN_FIXHD_IN,LEN_INTHD_IN,LEN_REALHD_IN, UDG4F405.85
UDG4F405.86
UDG4F405.87
& LEN1_LEVDEPC_IN,LEN2_LEVDEPC_IN,LEN1_ROWDEPC_IN, RECONF1.497
& LEN2_ROWDEPC_IN,LEN1_COLDEPC_IN,LEN2_COLDEPC_IN, RECONF1.498
& LEN1_FLDDEPC_IN,LEN2_FLDDEPC_IN,LEN_EXTCNST_IN,OZONE_LEVELS_IN, RECONF1.499
& LEN_DUMPHIST_IN,LEN_CFI1_IN,LEN_CFI2_IN,LEN_CFI3_IN, RECONF1.500
& LEN1_LOOKUP_IN,LEN2_LOOKUP_IN,LEN_DATA_IN,BL_LEVELS_IN RECONF1.501
& ,ROW_LENGTH_IN,P_ROWS_IN,P_LEVELS_IN,Q_LEVELS_IN UJS1F401.336
& ,ST_LEVELS_IN,SM_LEVELS_IN UJS1F401.337
& ,MAX_VARIABLES_IN,P_FIELD_IN,U_ROWS_IN,U_FIELD_IN RECONF1.503
& ,LEN_FIXHD_OUT,LEN_INTHD_OUT,LEN_REALHD_OUT,TR_LEVELS_ADV_OUT, RECONF1.504
& LEN1_LEVDEPC_OUT,LEN2_LEVDEPC_OUT,LEN1_ROWDEPC_OUT, RECONF1.505
& LEN2_ROWDEPC_OUT,LEN1_COLDEPC_OUT,LEN2_COLDEPC_OUT, RECONF1.506
& LEN1_FLDDEPC_OUT,LEN2_FLDDEPC_OUT,LEN_EXTCNST_OUT, RECONF1.507
& LEN_DUMPHIST_OUT,LEN_CFI1_OUT,LEN_CFI2_OUT,LEN_CFI3_OUT, RECONF1.508
& LEN1_LOOKUP_OUT,LEN2_LOOKUP_OUT,LEN_DATA_OUT RECONF1.509
& ,ROW_LENGTH_OUT,P_ROWS_OUT,P_LEVELS_OUT,Q_LEVELS_OUT RECONF1.510
& ,MAX_VARIABLES_OUT,P_FIELD_OUT,U_ROWS_OUT,U_FIELD_OUT RECONF1.511
& ,TR_LEVELS_OUT,ST_LEVELS_OUT,SM_LEVELS_OUT,BL_LEVELS_OUT UJS1F401.338
& ,OZONE_LEVELS_OUT, TR_VARS_OUT GDR6F405.6
& ,LEN_INTHD_UARS,LEN_REALHD_UARS,LEN1_LEVDEPC_UARS RECONF1.514
& ,LEN2_LEVDEPC_UARS,LEN2_LOOKUP_UARS,LEN_DATA_UARS,UARS_ARG RECONF1.515
& ,GRIB_ARG,NFTIN,NFTOUT,NFTUARS,NLOOKUPS,LEN_ANCIL,STRAT_Q_ARG RECONF1.516
& ,RESET_ARG,OCEAN_ARG,NFTTRACER,NFTTRANS,TRANS_ARG AD221292.46
& ,LEN_INTHD_TRANS,LEN_REALHD_TRANS,LEN1_LEVDEPC_TRANS AD221292.47
& ,LEN2_LEVDEPC_TRANS,LEN2_LOOKUP_TRANS,LEN_DATA_TRANS AD221292.48
& ,LEN_INTHD_TRACER,LEN_REALHD_TRACER,LEN1_LEVDEPC_TRACER RECONF1.518
& ,LEN2_LEVDEPC_TRACER,LEN2_LOOKUP_TRACER,LEN_DATA_TRACER RECONF1.519
& ,NANCIL_DATASETSA,FTN_ANCIL_A,TITLE_ANCIL_A,PER_ARGS,6,NFTPER GDR1F401.15
& ,PERTURBATION,C_GRID_IN,C_GRID_OUT,H_INT_TYPE,LPOLARCHK UDG4F402.241
& ,ANVIL_FACTOR,TOWER_FACTOR,SCALE UDG7F405.7
& ,POINTS_PER_OCEAN_LEVEL,DUMP_PACK,LAND_FIELD UDG1F404.39
& ,RadialGridIn,RadialGridOut,NFTIN2,NFTIN3,RM_CP, UDG6F405.88
& len1_lookup_um,len2_lookup_um,fixhd_um, UIE2F401.296
& len1_lookup_ls,len2_lookup_ls,fixhd_ls, UIE2F401.297
*CALL ARGPPX
UDG2F305.679
& LAMIPII, GRS2F404.240
& LCAL360,LSPIRAL_S,LOZONE_ZONAL,L_MP_PRECIP) UDG4F404.9
UDG2F305.681
CALL TIMER
('RECONFIGURATION',2) UDG3F402.83
RECONF1.522
STOP RECONF1.523
END RECONF1.524
RECONF1.525
*ENDIF RECONF1.526