*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