*IF DEF,RECON                                                              CONVHEA1.2      
C ******************************COPYRIGHT******************************    GTS2F400.1279   
C (c) CROWN COPYRIGHT 1995, METEOROLOGICAL OFFICE, All Rights Reserved.    GTS2F400.1280   
C                                                                          GTS2F400.1281   
C Use, duplication or disclosure of this code is subject to the            GTS2F400.1282   
C restrictions as set forth in the contract.                               GTS2F400.1283   
C                                                                          GTS2F400.1284   
C                Meteorological Office                                     GTS2F400.1285   
C                London Road                                               GTS2F400.1286   
C                BRACKNELL                                                 GTS2F400.1287   
C                Berkshire UK                                              GTS2F400.1288   
C                RG12 2SZ                                                  GTS2F400.1289   
C                                                                          GTS2F400.1290   
C If no contract has been raised with this copy of the code, the use,      GTS2F400.1291   
C duplication or disclosure of it is strictly prohibited.  Permission      GTS2F400.1292   
C to do so must first be obtained in writing from the Head of Numerical    GTS2F400.1293   
C Modelling at the above address.                                          GTS2F400.1294   
C ******************************COPYRIGHT******************************    GTS2F400.1295   
C                                                                          GTS2F400.1296   
CLL  SUBROUTINE CONVHEAD----------------------------------------           CONVHEA1.3      
CLL                                                                        CONVHEA1.4      
CLL  Purpose: Sets up header records for target file using input           CONVHEA1.5      
CLL           header records as template.                                  CONVHEA1.6      
CLL                                                                        CONVHEA1.7      
CLL  Written by A. Dickinson                                               CONVHEA1.8      
CLL                                                                        CONVHEA1.9      
CLL  Model            Modification history from model version 3.0:         CONVHEA1.10     
CLL version  Date                                                          CONVHEA1.11     
CLL   3.2  02/07/93  Code for new real missing data indicator.             TJ050593.19     
CLL                  Author: T.Johns      Reviewer: A.Dickinson            TJ050593.20     
CLL                                                                        AD200593.193    
CLL   3.2  20/05/93   Wind staggering for C-grid added supporting          AD200593.194    
CLL                   interpolations B->C; B->B; C->C; C->B.               AD200593.195    
CLL                   Author: A.Dickinson      Reviewer: T.Davies          AD200593.196    
CLL                                                                        GO030594.1      
CLL   3.3  03/05/94    Sets correct day number for data and validity       GO030594.2      
CLL                    times.                                              GO030594.3      
CLL                    Author: D.M.Goddard    Reviewer:                    GO030594.4      
CLL   3.4  14/04/94    Corrects INTHD_OUT(14) in ocean dumps by adding     GDG5F304.1      
CLL                    temperature and salinity.                           GDG5F304.2      
CLL                    Author: D.M.Goddard                                 GDG5F304.3      
CLL                                                                        CONVHEA1.12     
CLL   3.4  21/06/94    Prevent going out of array bounds.                  ADR1F304.47     
CLL                    Author: D. Robinson    Reviewer: D.M.Goddard        ADR1F304.48     
CLL                                                                        ADR1F304.49     
CLL  3.4   11/10/94   Part of modset which sorts out some handling         UDG7F304.1      
CLL                   of unset data by recon_dump.                         UDG7F304.2      
CLL                   Necessary to port model to a T3D.                    UDG7F304.3      
CLL                   Author D.M. Goddard                                  UDG7F304.4      
CLL                                                                        UDG7F304.5      
CLL    3.5   24/01/95   Change namelists HORIZONT and VERTICAL so that     AJS1F400.127    
CLL                     all calculations are preformed in the              AJS1F400.128    
CLL                     reconfiguration rather than in the user interfac   AJS1F400.129    
CLL                     Author D.M.Goddard                                 AJS1F400.130    
CLL    3.5   10/04/95   Sub-Model changes : Remove run time constants      AJS1F400.131    
CLL                     from dump headers. D. Robinson                     AJS1F400.132    
CLL    4.0   06/08/95   Replaced hard-wired layer depth ratios             AJS1F400.133    
CLL                     with a COMDECK-SOILTH - now there are 2            AJS1F400.134    
CLL                     sets - one to be used with Penman-Monteith         AJS1F400.135    
CLL                     BL code and another for all other BL versions      AJS1F400.136    
CLL                     Permanent changes suggested for 4.1                AJS1F400.137    
CLL                     search on C**** for comments                       AJS1F400.138    
CLL                     J.Smith                                            AJS1F400.139    
CLL    4.1   06/06/96   DS_LEVELS_IN etc. changed to SM_LEVELS_IN etc      UJS1F401.237    
CLL                     for MOSES scheme.           C.Bunton               UJS1F401.238    
CLL  4.1   31/05/96     Code for new vertical co-ordinate: radius          UIE2F401.348    
CLL                     Author I.Edmond       Reviewer D. Goddard          UIE2F401.349    
CLL    4.4   24/11/97   Set FIXHD(1) to IMDI in output dump. Remove        GDR7F404.478    
CLL                     redundant code for Ocean FIXHD. D Robinson         GDR7F404.479    
!    vn4.4    9/4/97                                                       UIE2F404.34     
!                    Improve logic when copying row, column and field      UIE2F404.35     
!                    dependent constants to enable execution of            UIE2F404.36     
!                    f90 compiled code.   Ian Edmond                       UIE2F404.37     
!      4.5   22/10/98   Remove redundant switch LMULTIL_HYDROL             GDG2F405.88     
!                       Author D.M. Goddard                                GDG2F405.89     
!LL    4.5   19/01/98   Remove SOIL_VARS and VEG_VARS.                     GDR6F405.32     
!LL                     INTHD(16/17) now set to IMDI. D. Robinson.         GDR6F405.33     
!      4.5  10/11/98    Correct initialisation of row dependent            UDG6F405.139    
!                       constants                                          UDG6F405.140    
!                       Author D.M. Goddard                                UDG6F405.141    
CLL  Logical component number: S1                                          CONVHEA1.13     
CLL                                                                        CONVHEA1.14     
CLL  System task:                                                          CONVHEA1.15     
CLL                                                                        CONVHEA1.16     
CLL  Documentation: None                                                   CONVHEA1.17     
CLL------------------------------------------------------------            CONVHEA1.18     
C*L Arguments:-------------------------------------------------            CONVHEA1.19     

      SUBROUTINE CONVHEAD(VERT_ARG,HORIZ_ARG,                               1,6CONVHEA1.20     
     * LEN_FIXHD_OUT,FIXHD_OUT,LEN_FIXHD_IN,FIXHD_IN,                      CONVHEA1.21     
     * LEN_INTHD_OUT,INTHD_OUT,LEN_INTHD_IN,INTHD_IN,                      CONVHEA1.22     
     * LEN_REALHD_OUT,REALHD_OUT,LEN_REALHD_IN,REALHD_IN,                  CONVHEA1.23     
     * LEN2_LEVDEPC_OUT,LEN1_LEVDEPC_OUT,LEVDEPC_OUT,                      CONVHEA1.24     
     * LEN2_LEVDEPC_IN,LEN1_LEVDEPC_IN,LEVDEPC_IN,                         CONVHEA1.25     
     * LEN1_ROWDEPC_OUT,LEN2_ROWDEPC_OUT,ROWDEPC_OUT,                      CONVHEA1.26     
     * LEN1_ROWDEPC_IN,LEN2_ROWDEPC_IN,ROWDEPC_IN,                         CONVHEA1.27     
     * LEN1_COLDEPC_IN,LEN2_COLDEPC_IN,COLDEPC_IN,                         CONVHEA1.28     
     * LEN1_COLDEPC_OUT,LEN2_COLDEPC_OUT,COLDEPC_OUT,                      CONVHEA1.29     
     * LEN1_FLDDEPC_IN,LEN2_FLDDEPC_IN,FLDDEPC_IN,                         CONVHEA1.30     
     * LEN1_FLDDEPC_OUT,LEN2_FLDDEPC_OUT,FLDDEPC_OUT,                      CONVHEA1.31     
     * LEN_EXTCNST_IN,EXTCNST_IN,LEN_EXTCNST_OUT,EXTCNST_OUT,              CONVHEA1.32     
     * LEN_CFI1_IN,CFI1_IN,LEN_CFI1_OUT,CFI1_OUT,                          CONVHEA1.33     
     * LEN_CFI2_IN,CFI2_IN,LEN_CFI2_OUT,CFI2_OUT,                          CONVHEA1.34     
     * LEN_CFI3_IN,CFI3_IN,LEN_CFI3_OUT,CFI3_OUT,                          CONVHEA1.35     
     * LEN_DUMPHIST_OUT,DUMPHIST_OUT,LEN_DUMPHIST_IN,DUMPHIST_IN,          CONVHEA1.36     
     * LEN1_LOOKUP_OUT,LEN2_LOOKUP_OUT,LEN_DATA_OUT,                       CONVHEA1.37     
     * ROW_LENGTH_OUT,P_ROWS_OUT,P_LEVELS_OUT,Q_LEVELS_OUT,                CONVHEA1.38     
     * ST_LEVELS_OUT,SM_LEVELS_OUT,                                        UJS1F401.239    
     * TR_LEVELS_OUT,BL_LEVELS_OUT,TR_VARS_OUT,                            UJS1F401.240    
     &  MAX_VARIABLES_OUT, OZONE_LEVELS_OUT,                               GDR6F405.34     
     * U_ROWS_OUT,U_FIELD_OUT,P_FIELD_OUT,TR_LEVELS_ADV_OUT,               CONVHEA1.41     
     * RadialGridOut,                                                      UIE2F401.359    
     * P_LEVELS_IN,Q_LEVELS_IN,ST_LEVELS_IN,SM_LEVELS_IN,                  UJS1F401.241    
     * TOPOG_MASK,RESET,OCEAN                                              UJS1F401.242    
     *,C_GRID_OUT)                                                         AD200593.198    
                                                                           CONVHEA1.43     
      IMPLICIT NONE                                                        CONVHEA1.44     
                                                                           CONVHEA1.45     
      INTEGER                                                              CONVHEA1.46     
     * LEN_FIXHD_OUT     !IN Length of fixed length header (output)        CONVHEA1.47     
     *,LEN_FIXHD_IN      !IN Length of fixed length header (input)         CONVHEA1.48     
     *,LEN_INTHD_OUT     !IN Length of integer header (output)             CONVHEA1.49     
     *,LEN_INTHD_IN      !IN Length of integer header (input)              CONVHEA1.50     
     *,LEN_REALHD_OUT    !IN Length of real header (output)                CONVHEA1.51     
     *,LEN_REALHD_IN     !IN Length of real header (input)                 CONVHEA1.52     
     *,LEN2_LEVDEPC_OUT  !IN 2nd dim of lev dep consts (output)            CONVHEA1.53     
     *,LEN1_LEVDEPC_OUT  !IN ist dim of lev dep consts (output)            CONVHEA1.54     
     *,LEN2_LEVDEPC_IN   !IN 2nd dim of lev dep consts (input)             CONVHEA1.55     
     *,LEN1_LEVDEPC_IN   !IN 1st dim of lev dep consts (input)             CONVHEA1.56     
     *,LEN1_ROWDEPC_IN   !IN 1st dim of row dep consts (input)             CONVHEA1.57     
     *,LEN2_ROWDEPC_IN   !IN 2nd dim of row dep consts (input)             CONVHEA1.58     
     *,LEN1_ROWDEPC_OUT  !IN 1st dim of row dep consts (output)            CONVHEA1.59     
     *,LEN2_ROWDEPC_OUT  !IN 2nd dim of row dep consts (output)            CONVHEA1.60     
     *,LEN1_COLDEPC_IN  !IN 1st dim of col dep consts (input)              CONVHEA1.61     
     *,LEN2_COLDEPC_IN  !IN 2nd dim of col dep consts (input)              CONVHEA1.62     
     *,LEN1_COLDEPC_OUT  !IN 1st dim of col dep consts (output)            CONVHEA1.63     
     *,LEN2_COLDEPC_OUT  !IN 2nd dim of col dep consts (output)            CONVHEA1.64     
     *,LEN_DUMPHIST_OUT  !IN Length of history header (output)             CONVHEA1.65     
     *,LEN_DUMPHIST_IN   !IN Length of history header (input)              CONVHEA1.66     
     *,LEN_CFI1_IN      !IN Len of compressed field index1 (input)         CONVHEA1.67     
     *,LEN_CFI2_IN      !IN Len of compressed field index2 (input)         CONVHEA1.68     
     *,LEN_CFI3_IN      !IN Len of compressed field index3 (input)         CONVHEA1.69     
     *,LEN_CFI1_OUT     !IN Len of compressed field index1 (output)        CONVHEA1.70     
     *,LEN_CFI2_OUT     !IN Len of compressed field index2 (output)        CONVHEA1.71     
     *,LEN_CFI3_OUT     !IN Len of compressed field index3 (output)        CONVHEA1.72     
     *,LEN1_LOOKUP_OUT   !IN 1st dim of lookup header (output)             CONVHEA1.73     
     *,LEN2_LOOKUP_OUT   !IN 2nd dim of lookup header (output)             CONVHEA1.74     
     *,LEN_DATA_OUT      !IN Length of output data (output)                CONVHEA1.75     
     *,LEN_EXTCNST_OUT   !IN Length of extra constants (output)            CONVHEA1.76     
     *,LEN_EXTCNST_IN   !IN Length of extra constants (input)              CONVHEA1.77     
     *,LEN1_FLDDEPC_OUT  !IN 1st dim of field dep consts (output)          CONVHEA1.78     
     *,LEN2_FLDDEPC_OUT  !IN 2nd dim of field dep consts (output)          CONVHEA1.79     
     *,LEN1_FLDDEPC_IN  !IN 1st dim of field dep consts (input)            CONVHEA1.80     
     *,LEN2_FLDDEPC_IN  !IN 2nd dim of field dep consts (input)            CONVHEA1.81     
     *,ROW_LENGTH_OUT    !IN No of points E-W (output)                     CONVHEA1.82     
     *,P_ROWS_OUT        !IN No of P-points N-S (output)                   CONVHEA1.83     
     *,P_LEVELS_OUT      !IN No of levels (output)                         CONVHEA1.84     
     *,Q_LEVELS_OUT      !IN No of wet levels (output)                     CONVHEA1.85     
     *,SM_LEVELS_OUT     !IN No of soil moisture levels (output)           UJS1F401.243    
     *,ST_LEVELS_OUT     !IN No of deep soil temp levels (output)          UJS1F401.244    
     *,TR_LEVELS_OUT     !IN No of tracer levels (output)                  CONVHEA1.87     
     *,TR_LEVELS_ADV_OUT !IN No of tracer levels to be adv'ted (output)    CONVHEA1.88     
     *,BL_LEVELS_OUT     !IN No of b.l. levels (output)                    CONVHEA1.89     
     *,TR_VARS_OUT       !IN No of tracer variables (output)               CONVHEA1.90     
     *,MAX_VARIABLES_OUT !IN Maximum no of variables (output)              CONVHEA1.91     
     *,OZONE_LEVELS_OUT  !IN No of ozone levels (output)                   CONVHEA1.94     
     *,P_LEVELS_IN       !IN No of levels (input)                          CONVHEA1.95     
     *,Q_LEVELS_IN       !IN No of wet levels (input)                      CONVHEA1.96     
     *,SM_LEVELS_IN      !IN No of soil moisture levels (input)            UJS1F401.245    
     *,ST_LEVELS_IN      !IN No of deep soil temp levels (input)           UJS1F401.246    
     *,U_ROWS_OUT        !IN No of uv-points N-S (output)                  CONVHEA1.98     
     *,U_FIELD_OUT       !IN No of UV-points per level (output)            CONVHEA1.99     
     *,P_FIELD_OUT       !IN No of p-points per level (output)             CONVHEA1.100    
                                                                           CONVHEA1.101    
      INTEGER                                                              CONVHEA1.102    
     * FIXHD_OUT(LEN_FIXHD_OUT)                                            CONVHEA1.103    
     *,FIXHD_IN(LEN_FIXHD_IN)                                              CONVHEA1.104    
     *,INTHD_OUT(LEN_INTHD_OUT)                                            CONVHEA1.105    
     *,INTHD_IN(LEN_INTHD_IN)                                              CONVHEA1.106    
     *,CFI1_IN(LEN_CFI1_IN+1)                                              CONVHEA1.107    
     *,CFI2_IN(LEN_CFI2_IN+1)                                              CONVHEA1.108    
     *,CFI3_IN(LEN_CFI3_IN+1)                                              CONVHEA1.109    
     *,CFI1_OUT(LEN_CFI1_OUT+1)                                            CONVHEA1.110    
     *,CFI2_OUT(LEN_CFI2_OUT+1)                                            CONVHEA1.111    
     *,CFI3_OUT(LEN_CFI3_OUT+1)                                            CONVHEA1.112    
                                                                           CONVHEA1.113    
      LOGICAL                                                              CONVHEA1.114    
     * TOPOG_MASK(P_FIELD_OUT) !IN Mask for topography subarea             CONVHEA1.115    
     *,RESET                   !IN =T, reset fc time info in FIXHD         CONVHEA1.116    
     *,OCEAN                   !IN =T, ocean reconfiguration               CONVHEA1.117    
     *,C_GRID_OUT              !IN =T C-grid; =F B-grid output grid        AD200593.199    
     *,RadialGridOut           ! IN Indicates whether data is on a         UIE2F401.360    
     *                         !    radial coordinate                      UIE2F401.361    
                                                                           CONVHEA1.118    
      REAL                                                                 CONVHEA1.119    
     * REALHD_OUT(LEN_REALHD_OUT)                                          CONVHEA1.120    
     *,REALHD_IN(LEN_REALHD_IN)                                            CONVHEA1.121    
     *,LEVDEPC_OUT(LEN2_LEVDEPC_OUT*LEN1_LEVDEPC_OUT)                      CONVHEA1.122    
     *,LEVDEPC_IN(LEN2_LEVDEPC_IN*LEN1_LEVDEPC_IN)                         CONVHEA1.123    
     *,ROWDEPC_IN(LEN1_ROWDEPC_IN*LEN2_ROWDEPC_IN+1)                       CONVHEA1.124    
     *,ROWDEPC_OUT(LEN1_ROWDEPC_OUT*LEN2_ROWDEPC_OUT+1)                    CONVHEA1.125    
     *,COLDEPC_IN(LEN1_COLDEPC_IN*LEN2_COLDEPC_IN+1)                       CONVHEA1.126    
     *,COLDEPC_OUT(LEN1_COLDEPC_OUT*LEN2_COLDEPC_OUT+1)                    CONVHEA1.127    
     *,EXTCNST_IN(LEN_EXTCNST_IN+1)                                        CONVHEA1.128    
     *,EXTCNST_OUT(LEN_EXTCNST_OUT+1)                                      CONVHEA1.129    
     *,FLDDEPC_IN(LEN1_FLDDEPC_IN*LEN2_FLDDEPC_IN+1)                       CONVHEA1.130    
     *,FLDDEPC_OUT(LEN1_FLDDEPC_OUT*LEN2_FLDDEPC_OUT+1)                    CONVHEA1.131    
     *,DUMPHIST_OUT(LEN_DUMPHIST_OUT)                                      CONVHEA1.132    
     *,DUMPHIST_IN(LEN_DUMPHIST_IN)                                        CONVHEA1.133    
                                                                           CONVHEA1.134    
      EXTERNAL SETFHEAD,ABCALC                                             UDG1F305.5      
                                                                           UDG1F305.6      
      INTEGER      FIXHD9               !Value of FIXHD_OUT(9)             UDG1F305.7      
      INTEGER      I                    !Loop variable                     UDG1F305.8      
      INTEGER      IERR                 !Return code from routine ABCALC   UDG1F305.9      
      INTEGER      IJ                   !Counter                           UDG1F305.10     
      INTEGER      IPOS                 !Start address of data in dump     UDG1F305.11     
      INTEGER      ITIMES               !Counter                           UDG1F305.12     
      INTEGER      IRES                 !Resolut'n of print of topog msk   UDG1F305.13     
      INTEGER      J                    !Loop variable                     UDG1F305.14     
      INTEGER      K                    !Loop variable                     UDG1F305.15     
      INTEGER      LEN_FIXHD            !Length of fixed header            UDG1F305.16     
      INTEGER      LEN_INTHD            !Length of integer header          UDG1F305.17     
      INTEGER      LEN_REALHD           !Length of real header             UDG1F305.18     
      INTEGER      LEN2_LEVDEPC         !2nd dimension for LEVDEPC array   UDG1F305.19     
      INTEGER      JSOIL_DEPTHS         !Soil thickness pointer for        AJS1F400.140    
C                                       ! level dependent constants        AJS1F400.141    
                                                                           UDG1F305.20     
      REAL         P                    !Reference pressure AK+BK*1.E+5    UDG1F305.21     
      REAL         THREF                !Reference Theta                   UDG1F305.22     
      REAL         AL10000              !ln(10000)                         UDG1F305.23     
                                                                           UDG1F305.24     
      LOGICAL      VERT_ARG             !T if vertical interpolation       UDG1F305.25     
                                        ! required                         UDG1F305.26     
      LOGICAL      HORIZ_ARG            !T if horizontal interpolation     UDG1F305.27     
                                        ! required                         UDG1F305.28     
                                                                           CONVHEA1.150    
C -------------------------------------------------------------            CONVHEA1.151    
*CALL C_R_CP                                                               CONVHEA1.152    
*CALL C_MDI                                                                TJ050593.21     
*CALL C_VERT                                                               UDG1F305.29     
*CALL C_HORIZ                                                              UDG1F305.30     
*CALL C_ECMWF_19                                                           UDG1F305.31     
*CALL C_ECMWF_31                                                           UDG1F305.32     
*CALL C_SOILTH                                                             AJS1F400.142    
*CALL SOIL_THICK                                                           UJS1F401.247    
*CALL CNTLATM                                                              UJS1F401.248    
C -------------------------------------------------------------            CONVHEA1.153    
                                                                           CONVHEA1.154    
                                                                           UDG1F305.33     
      REAL RELHD(100)                                                      CONVHEA1.217    
      INTEGER INTHD(100),FIXHD(256)                                        CONVHEA1.218    
                                                                           CONVHEA1.219    
      NAMELIST /HEADERS/ INTHD,RELHD,FIXHD                                 CONVHEA1.220    
                                                                           CONVHEA1.221    
      DATA                                                                 CONVHEA1.222    
     * INTHD/100*IMDI/                                                     TJ050593.31     
     *,FIXHD/256*IMDI/                                                     TJ050593.32     
     *,RELHD/100*RMDI/                                                     TJ050593.33     
                                                                           CONVHEA1.226    
C--------------------------------------------------------------            CONVHEA1.227    
C Read in values specified on NAMELISTs                                    CONVHEA1.228    
C--------------------------------------------------------------            CONVHEA1.229    
                                                                           CONVHEA1.230    
      READ(5,VERTICAL)                                                     CONVHEA1.231    
      READ(5,HORIZONT)                                                     CONVHEA1.232    
      READ(5,HEADERS)                                                      CONVHEA1.233    
                                                                           CONVHEA1.234    
      IF(GLOBAL)THEN                                                       UDG1F305.34     
        IF(.NOT.OCEAN)THEN                                                 UDG1F305.35     
          DELTA_LAMBDA=360./REAL(ROW_LENGTH_OUT)                           UDG1F305.36     
          DELTA_PHI=180./REAL(P_ROWS_OUT-1)                                UDG1F305.37     
          HORIZ_GRID_TYPE=0                                                UDG1F305.38     
        ELSE                                                               UDG1F305.39     
          HORIZ_GRID_TYPE=0                                                UDG1F305.40     
        ENDIF                                                              UDG1F305.41     
      ELSEIF((PHI_TLC.GT.89.99).AND.                                       UDG1F305.42     
     &  (DELTA_LAMBDA*ROW_LENGTH_OUT.GT.359.99).AND.                       UDG1F305.43     
     &  (DELTA_PHI*(P_ROWS_OUT-1).LT.89.99).AND.                           UDG1F305.44     
     &  (DELTA_PHI*(P_ROWS_OUT-1).GT.90.01))THEN                           UDG1F305.45     
       IF(.NOT.OCEAN)THEN                                                  UDG1F305.46     
         DELTA_LAMBDA=360./REAL(ROW_LENGTH_OUT)                            UDG1F305.47     
         DELTA_PHI=90./REAL(P_ROWS_OUT-1)                                  UDG1F305.48     
         HORIZ_GRID_TYPE=1                                                 UDG1F305.49     
       ELSE                                                                UDG1F305.50     
         HORIZ_GRID_TYPE=1                                                 UDG1F305.51     
       ENDIF                                                               UDG1F305.52     
      ELSEIF((PHI_TLC.LT.-89.99).AND.                                      UDG1F305.53     
     &  (DELTA_LAMBDA*ROW_LENGTH_OUT.GT.359.99).AND.                       UDG1F305.54     
     &  (DELTA_PHI*(P_ROWS_OUT-1).LT.89.99).AND.                           UDG1F305.55     
     &  (DELTA_PHI*(P_ROWS_OUT-1).GT.90.01))THEN                           UDG1F305.56     
       IF(.NOT.OCEAN)THEN                                                  UDG1F305.57     
         DELTA_LAMBDA=360./REAL(ROW_LENGTH_OUT)                            UDG1F305.58     
         DELTA_PHI=90./REAL(P_ROWS_OUT-1)                                  UDG1F305.59     
         HORIZ_GRID_TYPE=2                                                 UDG1F305.60     
       ELSE                                                                UDG1F305.61     
         HORIZ_GRID_TYPE=2                                                 UDG1F305.62     
       ENDIF                                                               UDG1F305.63     
      ELSEIF(ROW_LENGTH_OUT*DELTA_LAMBDA.GT.359.99)THEN                    UDG1F305.64     
        IF(PHI_NPOLE.GT.89.99)THEN                                         UDG1F305.65     
          HORIZ_GRID_TYPE=4                                                UDG1F305.66     
        ELSE                                                               UDG1F305.67     
          HORIZ_GRID_TYPE=104                                              UDG1F305.68     
        ENDIF                                                              UDG1F305.69     
      ELSE                                                                 UDG1F305.70     
        IF(PHI_NPOLE.GT.89.99)THEN                                         UDG1F305.71     
          HORIZ_GRID_TYPE=3                                                UDG1F305.72     
        ELSE                                                               UDG1F305.73     
          HORIZ_GRID_TYPE=103                                              UDG1F305.74     
        ENDIF                                                              UDG1F305.75     
      ENDIF                                                                UDG1F305.76     
                                                                           UDG1F305.77     
!  Calculate VERT_COORD_TYPE                                               UDG1F305.78     
      IF(OCEAN)THEN                                                        UDG1F305.79     
        VERT_COORD_TYPE=4                                                  UDG1F305.80     
      ELSEIF(MAX_SIG_HLEV.EQ.P_LEVELS_OUT+1)THEN                           UDG1F305.81     
        VERT_COORD_TYPE=2                                                  UDG1F305.82     
      ELSEIF(MIN_PRS_HLEV.EQ.1)THEN                                        UDG1F305.83     
        VERT_COORD_TYPE=3                                                  UDG1F305.84     
      ELSE                                                                 UDG1F305.85     
        VERT_COORD_TYPE=1                                                  UDG1F305.86     
      ENDIF                                                                UDG1F305.87     
       ! If RadialGridOut true then copy across existing value of fixhd(   UIE2F401.370    
       ! B->C then fixhd(3) is altered in subroutine INIT_LS. C->C then    UIE2F401.371    
       ! fixhd(3) already indicates that the data is on a radial grid      UIE2F401.372    
       IF((RadialGridOut))THEN                                             UIE2F401.373    
          VERT_COORD_TYPE = FIXHD_IN(3)                                    UIE2F401.374    
       END IF                                                              UIE2F401.375    
                                                                           UDG1F305.88     
                                                                           CONVHEA1.244    
      WRITE(6,VERTICAL)                                                    CONVHEA1.245    
      WRITE(6,HORIZONT)                                                    CONVHEA1.246    
      WRITE(6,HEADERS)                                                     CONVHEA1.247    
!                                                                          UDG1F305.89     
!  Calculate AK,BK,AKH,BKH from ETAH if atmosphere dump                    UDG1F305.90     
!                                                                          UDG1F305.91     
      IF(.NOT.OCEAN)THEN                                                   UDG1F305.92     
                                                                           UDG1F305.93     
        IF(METH_LEV_CALC.EQ.9.AND.P_LEVELS_OUT.EQ.NLEVELS19)THEN           UDG1F305.94     
!                                                                          UDG1F305.95     
! Use preset values of AK, BK, AKH and BKH (19 levels)                     UDG1F305.96     
!                                                                          UDG1F305.97     
          DO I=1,NLEVELS19                                                 UDG1F305.98     
            AK(I)=AK_ECMWF_19(I)                                           UDG1F305.99     
            BK(I)=BK_ECMWF_19(I)                                           UDG1F305.100    
          END DO                                                           UDG1F305.101    
          DO I=1,NLEVELS19+1                                               UDG1F305.102    
            AKH(I)=AKH_ECMWF_19(I)                                         UDG1F305.103    
            BKH(I)=BKH_ECMWF_19(I)                                         UDG1F305.104    
          END DO                                                           UDG1F305.105    
                                                                           UDG1F305.106    
        ELSEIF(METH_LEV_CALC.EQ.9.AND.P_LEVELS_OUT.EQ.NLEVELS31)THEN       UDG1F305.107    
!                                                                          UDG1F305.108    
! Use preset values of AK, BK, AKH and BKH (31 levels)                     UDG1F305.109    
!                                                                          UDG1F305.110    
          DO I=1,NLEVELS31                                                 UDG1F305.111    
            AK(I)=AK_ECMWF_31(I)                                           UDG1F305.112    
            BK(I)=BK_ECMWF_31(I)                                           UDG1F305.113    
          END DO                                                           UDG1F305.114    
          DO I=1,NLEVELS31+1                                               UDG1F305.115    
            AKH(I)=AKH_ECMWF_31(I)                                         UDG1F305.116    
            BKH(I)=BKH_ECMWF_31(I)                                         UDG1F305.117    
          END DO                                                           UDG1F305.118    
                                                                           UDG1F305.119    
        ELSEIF(METH_LEV_CALC.NE.9)THEN                                     UDG1F305.120    
!                                                                          UDG1F305.121    
! Calculate AK, BK, AKH and BKH from ETAH                                  UDG1F305.122    
!                                                                          UDG1F305.123    
          CALL ABCALC(METH_LEV_CALC,1,1,P_LEVELS_OUT                       UDG1F305.124    
     &,               ETAH(MIN_PRS_HLEV),ETAH(MAX_SIG_HLEV),ETAH           UDG1F305.125    
     &,               AK,BK,AKH,BKH,IERR)                                  UDG1F305.126    
                                                                           UDG1F305.127    
          IF(IERR.NE.0) THEN                                               UDG1F305.128    
            WRITE(6,*) ' *ERROR*  IN ABCALC FROM CONVHEAD. IERR = '        UDG1F305.129    
     &      ,IERR                                                          UDG1F305.130    
            WRITE(6,*) '   CHECK YOUR ATMOS LEVEL SPEC FOR MODEL'          UDG1F305.131    
            CALL ABORT                                                     UDG1F305.132    
          END IF                                                           UDG1F305.133    
        ELSE                                                               UDG1F305.134    
          WRITE(6,*) ' *ERROR*  IN CONVHEAD. Presets '                     UDG1F305.135    
     &,              'not available'                                       UDG1F305.136    
          CALL ABORT                                                       UDG1F305.137    
        ENDIF                                                              UDG1F305.138    
                                                                           UDG1F305.139    
        WRITE(6,*) 'AK='                                                   UDG1F305.140    
        WRITE(6,'(3(E22.15,'',''))')(AK(J),J=1,P_LEVELS_OUT)               UDG1F305.141    
        WRITE(6,*) 'BK='                                                   UDG1F305.142    
        WRITE(6,'(3(E22.15,'',''))')(BK(J),J=1,P_LEVELS_OUT)               UDG1F305.143    
        WRITE(6,*) 'AKH='                                                  UDG1F305.144    
        WRITE(6,'(3(E22.15,'',''))')(AKH(J),J=1,P_LEVELS_OUT+1)            UDG1F305.145    
        WRITE(6,*) 'BKH='                                                  UDG1F305.146    
        WRITE(6,'(3(E22.15,'',''))')(BKH(J),J=1,P_LEVELS_OUT+1)            UDG1F305.147    
                                                                           UDG1F305.148    
      ENDIF                                                                UDG1F305.149    
                                                                           UDG1F305.150    
                                                                           CONVHEA1.248    
      ! Set indicator for grid staggering used to decide whether           UIE2F401.362    
      ! horizontal interpolation required.                                 UIE2F401.363    
      IF(C_GRID_OUT)THEN                                                   UIE2F401.364    
        FIXHD9=3                                                           UIE2F401.365    
      ELSE                                                                 UIE2F401.366    
        FIXHD9=2                                                           UIE2F401.367    
      ENDIF                                                                UIE2F401.368    
C-----------------------------------------------------------------         CONVHEA1.249    
C Decide whether horizontal and/or vertical interpolation required         CONVHEA1.250    
C-----------------------------------------------------------------         CONVHEA1.251    
                                                                           CONVHEA1.252    
C Horizontal                                                               CONVHEA1.253    
      WRITE(6,*)REALHD_IN(1),DELTA_LAMBDA,                                 CONVHEA1.254    
     *   REALHD_IN(2),DELTA_PHI,                                           CONVHEA1.255    
     *   INTHD_IN(6),ROW_LENGTH_OUT,                                       CONVHEA1.256    
     *   INTHD_IN(7),P_ROWS_OUT,                                           CONVHEA1.257    
     *   PHI_TLC,REALHD_IN(3),                                             CONVHEA1.258    
     *   LAMBDA_TLC,REALHD_IN(4),                                          CONVHEA1.259    
     *   PHI_NPOLE,REALHD_IN(5),                                           CONVHEA1.260    
     *   LAMBDA_NPOLE,REALHD_IN(6)                                         CONVHEA1.261    
      IF(ABS(REALHD_IN(1)-DELTA_LAMBDA).GT.1.E-4.OR.                       CONVHEA1.262    
     *   ABS(REALHD_IN(2)-DELTA_PHI)   .GT.1.E-4.OR.                       CONVHEA1.263    
     *   INTHD_IN(6).NE.ROW_LENGTH_OUT          .OR.                       CONVHEA1.264    
     *   INTHD_IN(7).NE.P_ROWS_OUT              .OR.                       CONVHEA1.265    
     *   ABS(PHI_TLC-REALHD_IN(3)).GT.1.E-4     .OR.                       CONVHEA1.266    
     *   ABS(LAMBDA_TLC-REALHD_IN(4)).GT.1.E-4  .OR.                       CONVHEA1.267    
     *   ABS(PHI_NPOLE-REALHD_IN(5)).GT.1.E-4   .OR.                       CONVHEA1.268    
     *   (FIXHD9.NE.FIXHD_IN(9))  .OR.                                     UIE2F401.369    
     *   ABS(LAMBDA_NPOLE-REALHD_IN(6)).GT.1.E-4)THEN                      CONVHEA1.269    
                                                                           CONVHEA1.270    
        HORIZ_ARG=.TRUE.                                                   CONVHEA1.271    
        WRITE(6,'('' HORIZONTAL INTERPOLATION SWITCHED ON'')')             CONVHEA1.272    
                                                                           CONVHEA1.273    
      ELSE                                                                 CONVHEA1.274    
                                                                           CONVHEA1.275    
        HORIZ_ARG=.FALSE.                                                  CONVHEA1.276    
        WRITE(6,'('' HORIZONTAL INTERPOLATION SWITCHED OFF'')')            CONVHEA1.277    
                                                                           CONVHEA1.278    
      ENDIF                                                                CONVHEA1.279    
                                                                           CONVHEA1.280    
C Vertical                                                                 CONVHEA1.281    
      IF(.NOT.OCEAN)THEN                                                   CONVHEA1.282    
      IF((AK(1).EQ.RMDI.OR.AK(1).EQ.RMDI_OLD).OR.                          TJ050593.34     
     *   (BK(1).EQ.RMDI.OR.BK(1).EQ.RMDI_OLD)) THEN                        TJ050593.35     
        IF(INTHD_IN(8).NE.P_LEVELS_OUT                                     CONVHEA1.284    
     *  .OR.INTHD_IN(9).NE.Q_LEVELS_OUT)THEN                               CONVHEA1.285    
          WRITE(6,'('' *ERROR* Hybrid coords not specified when a'',       CONVHEA1.286    
     *    '' change in levels is implied '')')                             CONVHEA1.287    
          WRITE(6,*)AK(1),BK(1),INTHD_IN(8),P_LEVELS_OUT,INTHD_IN(9)       CONVHEA1.288    
     *    ,Q_LEVELS_OUT                                                    CONVHEA1.289    
          CALL ABORT                                                       CONVHEA1.290    
        ENDIF                                                              CONVHEA1.291    
      ENDIF                                                                CONVHEA1.292    
                                                                           CONVHEA1.293    
      ENDIF                                                                CONVHEA1.294    
                                                                           CONVHEA1.295    
      IF((AK(1).EQ.RMDI.OR.AK(1).EQ.RMDI_OLD).OR.                          TJ050593.36     
     *   (BK(1).EQ.RMDI.OR.BK(1).EQ.RMDI_OLD)) THEN                        TJ050593.37     
                                                                           CONVHEA1.297    
        VERT_ARG=.FALSE.                                                   CONVHEA1.298    
        WRITE(6,'('' VERTICAL INTERPOLATION SWITCHED OFF'')')              CONVHEA1.299    
                                                                           CONVHEA1.300    
      ELSE                                                                 CONVHEA1.301    
                                                                           CONVHEA1.302    
C Calculate DELTA_AK and DELTA_BK if half levels input                     CONVHEA1.303    
        IF(DELTA_AK(1).EQ.RMDI.OR.DELTA_AK(1).EQ.RMDI_OLD)THEN             TJ050593.38     
           DO K=2,P_LEVELS_OUT+1                                           CONVHEA1.305    
             DELTA_AK(K-1)=AKH(K)-AKH(K-1)                                 CONVHEA1.306    
             DELTA_BK(K-1)=BKH(K)-BKH(K-1)                                 CONVHEA1.307    
           ENDDO                                                           CONVHEA1.308    
        ENDIF                                                              CONVHEA1.309    
                                                                           CONVHEA1.310    
        VERT_ARG=.TRUE.                                                    CONVHEA1.311    
                                                                           CONVHEA1.312    
C Switch of vertical interpolation if all input/output levels identical    CONVHEA1.313    
      IF(INTHD_IN(8).EQ.P_LEVELS_OUT.AND.                                  CONVHEA1.314    
     *   INTHD_IN(9).EQ.Q_LEVELS_OUT)THEN                                  CONVHEA1.315    
                                                                           CONVHEA1.316    
        VERT_ARG=.FALSE.                                                   CONVHEA1.317    
                                                                           CONVHEA1.318    
       DO I=1,LEN1_LEVDEPC_OUT                                             CONVHEA1.319    
         WRITE(6,*)LEVDEPC_IN(I),AK(I),                                    CONVHEA1.320    
     *   LEVDEPC_IN(I+LEN1_LEVDEPC_IN),BK(I),                              CONVHEA1.321    
     *   LEVDEPC_IN(I+2*LEN1_LEVDEPC_IN),DELTA_AK(I),                      CONVHEA1.322    
     *   LEVDEPC_IN(I+3*LEN1_LEVDEPC_IN),DELTA_BK(I)                       CONVHEA1.323    
         IF(ABS(LEVDEPC_IN(I)-AK(I)).GT.1.E-8 .OR.                         CONVHEA1.324    
     *   ABS(LEVDEPC_IN(I+LEN1_LEVDEPC_IN)-BK(I)).GT.1.E-8 .OR.            CONVHEA1.325    
     *   ABS(LEVDEPC_IN(I+2*LEN1_LEVDEPC_IN)-DELTA_AK(I)).GT.1.E-8 .OR.    CONVHEA1.326    
     *   ABS(LEVDEPC_IN(I+3*LEN1_LEVDEPC_IN)-DELTA_BK(I)).GT.1.E-8 )THEN   CONVHEA1.327    
                                                                           CONVHEA1.328    
            VERT_ARG=.TRUE.                                                CONVHEA1.329    
                                                                           CONVHEA1.330    
         ENDIF                                                             CONVHEA1.331    
       ENDDO                                                               CONVHEA1.332    
      ENDIF                                                                CONVHEA1.333    
                                                                           CONVHEA1.334    
        IF(VERT_ARG)THEN                                                   CONVHEA1.335    
        WRITE(6,'('' VERTICAL INTERPOLATION SWITCHED ON'')')               CONVHEA1.336    
        ELSE                                                               CONVHEA1.337    
        WRITE(6,'('' VERTICAL INTERPOLATION SWITCHED OFF'')')              CONVHEA1.338    
        ENDIF                                                              CONVHEA1.339    
       ENDIF                                                               CONVHEA1.340    
                                                                           CONVHEA1.341    
C--------------------------------------------------------------            CONVHEA1.342    
C Process NAMELIST HORIZ parameters for LAM topography subarea             CONVHEA1.343    
C--------------------------------------------------------------            CONVHEA1.344    
      IF(.NOT.OCEAN)THEN                                                   CONVHEA1.345    
                                                                           CONVHEA1.346    
C Initialise mask for updating topography                                  CONVHEA1.347    
      DO I=1,P_FIELD_OUT                                                   CONVHEA1.348    
        TOPOG_MASK(I)=.TRUE.                                               CONVHEA1.349    
      ENDDO                                                                CONVHEA1.350    
                                                                           CONVHEA1.351    
C Recalculate mask if subarea pointers set                                 CONVHEA1.352    
      IF(RIM_WIDTH_NORTH_TOPOG.NE.0.OR.                                    CONVHEA1.353    
     *   RIM_WIDTH_SOUTH_TOPOG.NE.0.OR.                                    CONVHEA1.354    
     *   RIM_WIDTH_EAST_TOPOG.NE.0.OR.                                     CONVHEA1.355    
     *   RIM_WIDTH_WEST_TOPOG.NE.0)THEN                                    CONVHEA1.356    
                                                                           CONVHEA1.357    
C Check if subarea fits inside LAM area                                    CONVHEA1.358    
      IF(RIM_WIDTH_NORTH_TOPOG.LT.0.OR.                                    CONVHEA1.359    
     *   RIM_WIDTH_NORTH_TOPOG.GE.P_ROWS_OUT.OR.                           CONVHEA1.360    
     *   RIM_WIDTH_SOUTH_TOPOG.LT.0.OR.                                    CONVHEA1.361    
     *   RIM_WIDTH_SOUTH_TOPOG.GE.P_ROWS_OUT.OR.                           CONVHEA1.362    
     *   RIM_WIDTH_EAST_TOPOG.LT.0.OR.                                     CONVHEA1.363    
     *   RIM_WIDTH_EAST_TOPOG.GE.ROW_LENGTH_OUT.OR.                        CONVHEA1.364    
     *   RIM_WIDTH_WEST_TOPOG.LT.0.OR.                                     CONVHEA1.365    
     *   RIM_WIDTH_WEST_TOPOG.GE.ROW_LENGTH_OUT)THEN                       CONVHEA1.366    
                                                                           CONVHEA1.367    
      WRITE(6,'('' *ERROR* Topography subarea specified incorrectly''      CONVHEA1.368    
     *,'' on namelist HORIZ'')')                                           CONVHEA1.369    
      CALL ABORT                                                           CONVHEA1.370    
      ENDIF                                                                CONVHEA1.371    
                                                                           CONVHEA1.372    
C Recalculate topography mask                                              CONVHEA1.373    
      DO I=1,P_FIELD_OUT                                                   CONVHEA1.374    
        TOPOG_MASK(I)=.FALSE.                                              CONVHEA1.375    
      ENDDO                                                                CONVHEA1.376    
      DO J=1+RIM_WIDTH_NORTH_TOPOG,P_ROWS_OUT-RIM_WIDTH_SOUTH_TOPOG        CONVHEA1.377    
        DO I=1+RIM_WIDTH_WEST_TOPOG,ROW_LENGTH_OUT-RIM_WIDTH_EAST_TOPOG    CONVHEA1.378    
          TOPOG_MASK(I+(J-1)*ROW_LENGTH_OUT)=.TRUE.                        CONVHEA1.379    
        ENDDO                                                              CONVHEA1.380    
      ENDDO                                                                CONVHEA1.381    
                                                                           CONVHEA1.382    
      WRITE(6,'('' TOPOGRAPHY MASK'')')                                    CONVHEA1.383    
                                                                           CONVHEA1.384    
      ITIMES=ROW_LENGTH_OUT/150                                            CONVHEA1.385    
      DO K=1,ITIMES                                                        CONVHEA1.386    
        WRITE(6,'('' BLOCK '',I3)')K                                       CONVHEA1.387    
        IJ=1+(K-1)*150                                                     CONVHEA1.388    
        DO J=1,P_ROWS_OUT                                                  CONVHEA1.389    
          WRITE(6,'('' '',150L1)')(TOPOG_MASK(I),I=IJ,IJ+149)              CONVHEA1.390    
          IJ=IJ+ROW_LENGTH_OUT                                             CONVHEA1.391    
        ENDDO                                                              CONVHEA1.392    
      ENDDO                                                                CONVHEA1.393    
      IRES=ROW_LENGTH_OUT-ITIMES*150                                       CONVHEA1.394    
      IF(IRES.NE.0)THEN                                                    CONVHEA1.395    
        WRITE(6,'('' BLOCK '',I3)')ITIMES+1                                CONVHEA1.396    
        IJ=1+ITIMES*150                                                    CONVHEA1.397    
        DO J=1,P_ROWS_OUT                                                  CONVHEA1.398    
          WRITE(6,'('' '',150L1)')(TOPOG_MASK(I),I=IJ,IJ+IRES-1)           CONVHEA1.399    
          IJ=IJ+ROW_LENGTH_OUT                                             CONVHEA1.400    
        ENDDO                                                              CONVHEA1.401    
      ENDIF                                                                CONVHEA1.402    
                                                                           CONVHEA1.403    
      ENDIF                                                                CONVHEA1.404    
                                                                           CONVHEA1.405    
      ENDIF                                                                CONVHEA1.406    
                                                                           CONVHEA1.407    
C--------------------------------------------------------------            CONVHEA1.408    
C Initialise fixed length header                                           CONVHEA1.409    
C--------------------------------------------------------------            CONVHEA1.410    
                                                                           AD200593.201    
                                                                           CONVHEA1.411    
      CALL SETFHEAD(FIXHD_OUT                                              CONVHEA1.412    
     *,LEN_FIXHD_OUT                                                       CONVHEA1.413    
     *,LEN_INTHD_OUT                                                       CONVHEA1.414    
     *,LEN_REALHD_OUT                                                      CONVHEA1.415    
     *,LEN1_LEVDEPC_OUT,LEN2_LEVDEPC_OUT                                   CONVHEA1.416    
     *,LEN1_ROWDEPC_OUT,LEN2_ROWDEPC_OUT                                   CONVHEA1.417    
     *,LEN1_COLDEPC_OUT,LEN2_COLDEPC_OUT                                   CONVHEA1.418    
     *,LEN1_FLDDEPC_OUT,LEN2_FLDDEPC_OUT                                   CONVHEA1.419    
     *,LEN_EXTCNST_OUT                                                     CONVHEA1.420    
     *,LEN_DUMPHIST_OUT                                                    CONVHEA1.421    
     *,LEN_CFI1_OUT,LEN_CFI2_OUT,LEN_CFI3_OUT                              CONVHEA1.422    
     *,LEN1_LOOKUP_OUT,LEN2_LOOKUP_OUT                                     CONVHEA1.423    
     *,LEN_DATA_OUT                                                        CONVHEA1.424    
     *,FIXHD_IN(34)                                                        GO030594.5      
     *,FIXHD_IN(28),FIXHD_IN(29),FIXHD_IN(30),FIXHD_IN(31),FIXHD_IN(32)    CONVHEA1.426    
     *,FIXHD_IN(27)                                                        GO030594.6      
     *,FIXHD_IN(21),FIXHD_IN(22),FIXHD_IN(23),FIXHD_IN(24),FIXHD_IN(25)    CONVHEA1.428    
     *,IMDI,FIXHD_IN(2),VERT_COORD_TYPE,HORIZ_GRID_TYPE                    GDR7F404.480    
     *,FIXHD_IN(5),FIXHD_IN(6),FIXHD_IN(7),FIXHD_IN(8)                     CONVHEA1.430    
     *,FIXHD9,FIXHD_IN(10),IPROJ                                           AD200593.207    
     *,IPOS)                                                               CONVHEA1.432    
                                                                           CONVHEA1.433    
C Overwrite analysis time with verification time if RESET=true             CONVHEA1.439    
      IF(RESET)THEN                                                        CONVHEA1.440    
        DO I=21,27                                                         CONVHEA1.441    
        FIXHD_OUT(I)=FIXHD_OUT(I+7)                                        CONVHEA1.442    
        ENDDO                                                              CONVHEA1.443    
        WRITE(6,'('' ANALYSIS TIME RESET'')')                              CONVHEA1.444    
        WRITE(6,'('' Analysis:'',7I9)')(FIXHD_OUT(I),I=21,27)              CONVHEA1.445    
        WRITE(6,'('' Verif   :'',7I9)')(FIXHD_OUT(I),I=28,34)              CONVHEA1.446    
      ENDIF                                                                CONVHEA1.447    
                                                                           CONVHEA1.448    
                                                                           CONVHEA1.449    
C Overwrite FIXHD_OUT with values on namelist                              CONVHEA1.450    
                                                                           CONVHEA1.451    
C LEN_FIXHD caters for different lengths. (LEN_FIXHD_OUT)                  UDG7F304.8      
      LEN_FIXHD=MIN(256,LEN_FIXHD_OUT)                                     UDG7F304.9      
      DO I=1,LEN_FIXHD                                                     UDG7F304.10     
        IF (FIXHD(I).NE.IMDI) THEN                                         UDR2F305.3      
          WRITE(6,*)'FIXHD_OUT(',I,') reset from ',FIXHD_OUT(I),           UDR2F305.4      
     &                                      ' to ',FIXHD(I)                UDR2F305.5      
          FIXHD_OUT(I) = FIXHD(I)                                          UDR2F305.6      
        ENDIF                                                              UDR2F305.7      
      ENDDO                                                                CONVHEA1.454    
      IF(LEN_FIXHD_OUT.GT.256)THEN                                         UDG7F304.11     
        WRITE(6,*)'Length of fixed header is longer than 256'              UDG7F304.12     
        WRITE(6,*)'Elements 257 onwards set to ',IMDI                      UDG7F304.13     
        WRITE(6,*)'Length of FIXHD is 256'                                 UDG7F304.14     
        WRITE(6,*)'Length of FIXHD_OUT is ',LEN_FIXHD_OUT                  UDG7F304.15     
      ENDIF                                                                UDG7F304.16     
                                                                           CONVHEA1.455    
C--------------------------------------------------------------            CONVHEA1.456    
C Initialise integer constants record                                      CONVHEA1.457    
C--------------------------------------------------------------            CONVHEA1.458    
                                                                           CONVHEA1.459    
C Initialise INTHD_OUT to IMDI                                             UDG7F304.17     
      DO I=1,LEN_INTHD_OUT                                                 UDG7F304.18     
        INTHD_OUT(I)=IMDI                                                  UDG7F304.19     
      ENDDO                                                                UDG7F304.20     
                                                                           UDG7F304.21     
C Copy INTHD_IN into INTHD_OUT                                             UDG7F304.22     
C LEN_INTHD caters for different lengths. (LEN_INTHD_IN/OUT)               UDG7F304.23     
      LEN_INTHD=MIN(LEN_INTHD_IN,LEN_INTHD_OUT)                            UDG7F304.24     
      DO I=1,LEN_INTHD                                                     UDG7F304.25     
        INTHD_OUT(I)=INTHD_IN(I)                                           CONVHEA1.461    
      ENDDO                                                                CONVHEA1.462    
      IF(LEN_INTHD_OUT.NE.LEN_INTHD_IN) THEN                               UDG7F304.26     
        WRITE(6,*)'Length of integer header has been changed'              UDG7F304.27     
        WRITE(6,*)'Length of INTHD_IN is ',LEN_INTHD_IN                    UDG7F304.28     
        WRITE(6,*)'Length of INTHD_OUT is ',LEN_INTHD_OUT                  UDG7F304.29     
      ELSE                                                                 UDG7F304.30     
        WRITE(6,*)'Length of integer header is ',LEN_INTHD_OUT             UDG7F304.31     
      ENDIF                                                                UDG7F304.32     
                                                                           CONVHEA1.463    
      INTHD_OUT(6)=ROW_LENGTH_OUT                                          CONVHEA1.464    
      INTHD_OUT(7)=P_ROWS_OUT                                              CONVHEA1.465    
      INTHD_OUT(8)=P_LEVELS_OUT                                            CONVHEA1.466    
      INTHD_OUT(9)=Q_LEVELS_OUT                                            CONVHEA1.467    
      INTHD_OUT(10)=ST_LEVELS_OUT                                          UJS1F401.249    
      IF(OCEAN)THEN                                                        CONVHEA1.469    
        INTHD_OUT(11)=OCEAN_SEA_POINTS                                     CONVHEA1.470    
      ELSE                                                                 CONVHEA1.471    
      INTHD_OUT(11)=IMDI                                                   TJ050593.40     
      ENDIF                                                                CONVHEA1.473    
      INTHD_OUT(12)=TR_LEVELS_OUT                                          CONVHEA1.474    
      INTHD_OUT(13)=BL_LEVELS_OUT                                          CONVHEA1.475    
      IF(OCEAN)THEN                                                        GDG5F304.4      
        INTHD_OUT(14)=TR_VARS_OUT+2                                        GDG5F304.5      
      ELSE                                                                 GDG5F304.6      
      INTHD_OUT(14)=TR_VARS_OUT                                            CONVHEA1.476    
      ENDIF                                                                GDG5F304.7      
      INTHD_OUT(15)=MAX_VARIABLES_OUT                                      CONVHEA1.477    
      INTHD_OUT(16)=IMDI                                                   GDR6F405.35     
      INTHD_OUT(17)=IMDI                                                   GDR6F405.36     
      INTHD_OUT(26)=OZONE_LEVELS_OUT                                       CONVHEA1.480    
      INTHD_OUT(27)=TR_LEVELS_ADV_OUT                                      CONVHEA1.481    
      INTHD_OUT(28)=SM_LEVELS_OUT                                          UJS1F401.250    
                                                                           CONVHEA1.482    
C     Run Time Constants removed from Integer Header (Vn 3.5 onwards)      UDR2F305.8      
C     Words 22-24 and 27                                                   UDR2F305.9      
      IF (.NOT.OCEAN) THEN                                                 UDR2F305.10     
        DO I=22,27                                                         UDR2F305.11     
          IF (LEN_INTHD_OUT.GE.I .AND. (I.LE.24 .OR. I.EQ.27) ) THEN       UDR2F305.12     
            IF (INTHD_OUT(I).NE.IMDI) THEN                                 UDR2F305.13     
              INTHD_OUT(I) = IMDI                                          UDR2F305.14     
              WRITE(6,*)'INTHD_OUT(',I,') reset to IMDI'                   UDR2F305.15     
            ENDIF                                                          UDR2F305.16     
          ENDIF                                                            UDR2F305.17     
        ENDDO                                                              UDR2F305.18     
      ENDIF                                                                UDR2F305.19     
                                                                           UDR2F305.20     
C Overwrite INTHD_OUT with values on namelist                              CONVHEA1.483    
                                                                           CONVHEA1.484    
      LEN_INTHD=MIN(100,LEN_INTHD_OUT)                                     UDG7F304.33     
      DO I=1,LEN_INTHD                                                     UDG7F304.34     
        IF (INTHD(I).NE.IMDI) THEN                                         UDR2F305.21     
          WRITE(6,*)'INTHD_OUT(',I,') reset from ',INTHD_OUT(I),           UDR2F305.22     
     &                                      ' to ',INTHD(I)                UDR2F305.23     
          INTHD_OUT(I) = INTHD(I)                                          UDR2F305.24     
        ENDIF                                                              UDR2F305.25     
      ENDDO                                                                CONVHEA1.487    
      IF(LEN_INTHD_OUT.GT.100)THEN                                         UDG7F304.35     
        WRITE(6,*)'Length of integer header is longer than 100'            UDG7F304.36     
        WRITE(6,*)'Elements 101 onwards set to ',IMDI                      UDG7F304.37     
        WRITE(6,*)'Length of INTHD is 100'                                 UDG7F304.38     
        WRITE(6,*)'Length of INTHD_OUT is ',LEN_INTHD_OUT                  UDG7F304.39     
      ENDIF                                                                UDG7F304.40     
                                                                           CONVHEA1.488    
C--------------------------------------------------------------            CONVHEA1.489    
C Initialise real constants                                                CONVHEA1.490    
C--------------------------------------------------------------            CONVHEA1.491    
                                                                           CONVHEA1.492    
C Initialise REALHD_OUT to RMDI                                            ADR1F304.52     
      DO I=1,LEN_REALHD_OUT                                                CONVHEA1.493    
        REALHD_OUT(I)=RMDI                                                 ADR1F304.53     
      ENDDO                                                                ADR1F304.54     
                                                                           ADR1F304.55     
C Copy REALHD_IN into REALHD_OUT                                           ADR1F304.56     
C LEN_REALHD caters for different lengths. (LEN_REALHD_IN/OUT)             ADR1F304.57     
      LEN_REALHD=MIN(LEN_REALHD_IN,LEN_REALHD_OUT)                         ADR1F304.58     
      DO I=1,LEN_REALHD                                                    ADR1F304.59     
        REALHD_OUT(I)=REALHD_IN(I)                                         CONVHEA1.494    
      ENDDO                                                                CONVHEA1.495    
                                                                           ADR1F304.60     
      IF(LEN_REALHD_OUT.NE.LEN_REALHD_IN) THEN                             ADR1F304.61     
        WRITE(6,*)'Length of real header has been changed'                 ADR1F304.62     
        WRITE(6,*)'Length of REALHD_IN  is ',LEN_REALHD_IN                 ADR1F304.63     
        WRITE(6,*)'Length of REALHD_OUT is ',LEN_REALHD_OUT                ADR1F304.64     
      ELSE                                                                 ADR1F304.65     
        WRITE(6,*)'Length of real header is ',LEN_REALHD_OUT               ADR1F304.66     
      ENDIF                                                                ADR1F304.67     
                                                                           ADR1F304.68     
      REALHD_OUT(1)=DELTA_LAMBDA                                           CONVHEA1.496    
      REALHD_OUT(2)=DELTA_PHI                                              CONVHEA1.497    
      REALHD_OUT(3)=PHI_TLC                                                CONVHEA1.498    
      REALHD_OUT(4)=LAMBDA_TLC                                             CONVHEA1.499    
      REALHD_OUT(5)=PHI_NPOLE                                              CONVHEA1.500    
      REALHD_OUT(6)=LAMBDA_NPOLE                                           CONVHEA1.501    
                                                                           CONVHEA1.502    
      IF(VERT_ARG.OR.HORIZ_ARG)THEN                                        CONVHEA1.503    
        REALHD_OUT(19)=RMDI                                                TJ050593.42     
        REALHD_OUT(20)=RMDI                                                TJ050593.43     
        REALHD_OUT(21)=RMDI                                                TJ050593.44     
      ENDIF                                                                CONVHEA1.507    
                                                                           CONVHEA1.508    
C     Run Time Constants removed from Real Header (Vn 3.5 onwards)         UDR2F305.26     
C     Words 22-28 and 30-38                                                UDR2F305.27     
      IF (.NOT.OCEAN) THEN                                                 UDR2F305.28     
        DO I=22,38                                                         UDR2F305.29     
          IF (LEN_REALHD_OUT.GE.I .AND. I.NE.29 ) THEN                     UDR2F305.30     
            IF (REALHD_OUT(I).NE.RMDI) THEN                                UDR2F305.31     
              REALHD_OUT(I) = RMDI                                         UDR2F305.32     
              WRITE(6,*)'REALHD_OUT(',I,') reset to RMDI'                  UDR2F305.33     
            ENDIF                                                          UDR2F305.34     
          ENDIF                                                            UDR2F305.35     
        ENDDO                                                              UDR2F305.36     
      ENDIF                                                                UDR2F305.37     
                                                                           UDR2F305.38     
C Overwrite REALHD_OUT with values on namelist                             CONVHEA1.509    
                                                                           CONVHEA1.510    
      LEN_REALHD=MIN(100,LEN_REALHD_OUT)                                   UDG7F304.41     
      DO I=1,LEN_REALHD                                                    UDG7F304.42     
        IF (RELHD(I).NE.RMDI) THEN                                         UDR2F305.39     
          WRITE(6,*)'REALHD_OUT(',I,') reset from ',REALHD_OUT(I),         UDR2F305.40     
     &                                      ' to ',RELHD(I)                UDR2F305.41     
          REALHD_OUT(I) = RELHD(I)                                         UDR2F305.42     
        ENDIF                                                              UDR2F305.43     
      ENDDO                                                                TJ050593.46     
      IF(LEN_REALHD_OUT.GT.100)THEN                                        UDG7F304.43     
        WRITE(6,*)'Length of real header is longer than 100'               UDG7F304.44     
        WRITE(6,*)'Elements 101 onwards set to ',RMDI                      UDG7F304.45     
        WRITE(6,*)'Length of RELHD is 100'                                 UDG7F304.46     
        WRITE(6,*)'Length of REALHD_OUT is ',LEN_REALHD_OUT                UDG7F304.47     
      ENDIF                                                                UDG7F304.48     
                                                                           TJ050593.47     
C Replace old RMDI values from old dump header with new RMDI value         TJ050593.48     
                                                                           TJ050593.49     
      DO I=1,LEN_REALHD_OUT                                                TJ050593.50     
        IF(REALHD_OUT(I).EQ.RMDI_OLD) REALHD_OUT(I)=RMDI                   TJ050593.51     
      ENDDO                                                                CONVHEA1.513    
                                                                           CONVHEA1.514    
C--------------------------------------------------------------            CONVHEA1.515    
C Copy across or reset level dependent constants                           CONVHEA1.516    
C--------------------------------------------------------------            CONVHEA1.517    
                                                                           CONVHEA1.518    
C Initialise to RMDI                                                       ADR1F304.69     
      DO I=1,LEN1_LEVDEPC_OUT*LEN2_LEVDEPC_OUT                             ADR1F304.70     
        LEVDEPC_OUT(I)=RMDI                                                ADR1F304.71     
      ENDDO                                                                ADR1F304.72     
                                                                           ADR1F304.73     
      IF (LEN2_LEVDEPC_OUT.NE.LEN2_LEVDEPC_IN) THEN                        UDR2F305.44     
        WRITE (6,*)                                                        UDR2F305.45     
     &  'No of variables in Level Dependent Constants array changed'       UDR2F305.46     
        WRITE (6,*)                                                        UDR2F305.47     
     &  'No of variables in LEVDEPC_IN  is ',LEN2_LEVDEPC_IN               UDR2F305.48     
        WRITE (6,*)                                                        UDR2F305.49     
     &  'No of variables in LEVDEPC_OUT is ',LEN2_LEVDEPC_OUT              UDR2F305.50     
      ENDIF                                                                UDR2F305.51     
                                                                           UDR2F305.52     
C Copy data from LEVDEPC_IN if LEN1 dimensions are equal                   ADR1F304.74     
      IF (LEN1_LEVDEPC_IN.EQ.LEN1_LEVDEPC_OUT) THEN                        ADR1F304.75     
                                                                           ADR1F304.76     
C Cater for different second dimensions LEN2                               ADR1F304.77     
        LEN2_LEVDEPC = MIN (LEN2_LEVDEPC_IN,LEN2_LEVDEPC_OUT)              ADR1F304.78     
                                                                           ADR1F304.79     
C For atmos dumps, copy first 5 items. Vn 3.5 onwards                      UDR2F305.53     
        IF (.NOT.OCEAN) LEN2_LEVDEPC = MIN (5,LEN2_LEVDEPC)                UDR2F305.54     
                                                                           UDR2F305.55     
        DO I=1,LEN1_LEVDEPC_OUT*LEN2_LEVDEPC                               ADR1F304.80     
          LEVDEPC_OUT(I)=LEVDEPC_IN(I)                                     ADR1F304.81     
        ENDDO                                                              ADR1F304.82     
                                                                           ADR1F304.83     
      ENDIF                                                                ADR1F304.84     
                                                                           CONVHEA1.522    
      IF(.NOT.OCEAN)THEN                                                   CONVHEA1.523    
                                                                           CONVHEA1.524    
                                                                           CONVHEA1.525    
      IF (VERT_ARG) THEN   !  Vertical Interpolation required              ADR1F304.85     
       DO I=1,LEN1_LEVDEPC_OUT                                             CONVHEA1.527    
                                                                           ADR1F304.86     
C AK, BK, DELTA_AK and DELTA_BK                                            ADR1F304.87     
        LEVDEPC_OUT(I)=AK(I)                                               CONVHEA1.528    
        LEVDEPC_OUT(I+LEN1_LEVDEPC_OUT)=BK(I)                              CONVHEA1.529    
        LEVDEPC_OUT(I+2*LEN1_LEVDEPC_OUT)=DELTA_AK(I)                      CONVHEA1.530    
        LEVDEPC_OUT(I+3*LEN1_LEVDEPC_OUT)=DELTA_BK(I)                      CONVHEA1.531    
                                                                           ADR1F304.88     
C THETA_REF                                                                ADR1F304.89     
        P=AK(I)+BK(I)*1.E+5                                                CONVHEA1.532    
        IF(P.GT.10000.)THEN                                                CONVHEA1.533    
          THREF=300.                                                       CONVHEA1.534    
        ELSEIF(P.LT.100.)THEN                                              CONVHEA1.535    
          THREF=400.                                                       CONVHEA1.536    
        ELSE                                                               CONVHEA1.537    
          AL10000=ALOG(10000.)                                             CONVHEA1.538    
          THREF=300.+100.*(AL10000-ALOG(P))/(AL10000-ALOG(100.))           CONVHEA1.539    
        ENDIF                                                              CONVHEA1.540    
        LEVDEPC_OUT(I+4*LEN1_LEVDEPC_OUT)                                  CONVHEA1.541    
     *               =THREF/(P*1.E-5)**KAPPA                               CONVHEA1.542    
       ENDDO                                                               CONVHEA1.543    
      ENDIF                                                                CONVHEA1.544    
                                                                           CONVHEA1.545    
      IF (FIXHD_OUT(12).LT.305) THEN  !  Pre Vn 3.5 only                   UDR2F305.56     
       DO I=1,LEN1_LEVDEPC_OUT                                             CONVHEA1.546    
C Diffusion coefficients - K1 and K2                                       ADR1F304.90     
        LEVDEPC_OUT(I+5*LEN1_LEVDEPC_OUT)=1.0E+5                           CONVHEA1.547    
        LEVDEPC_OUT(I+6*LEN1_LEVDEPC_OUT)=4.0E+4                           CONVHEA1.548    
C Diffusion exponent - theta, u and v                                      ADR1F304.91     
        LEVDEPC_OUT(I+7*LEN1_LEVDEPC_OUT)=0.                               CONVHEA1.549    
C Diffusion exponent - q                                                   ADR1F304.92     
        LEVDEPC_OUT(I+8*LEN1_LEVDEPC_OUT)=0.                               CONVHEA1.550    
C Divergence damping coefficient for assimilation and forecast             ADR1F304.93     
        LEVDEPC_OUT(I+9*LEN1_LEVDEPC_OUT)=5.0E+7                           CONVHEA1.551    
        LEVDEPC_OUT(I+10*LEN1_LEVDEPC_OUT)=5.0E+7                          CONVHEA1.552    
C Critical RH                                                              ADR1F304.94     
        LEVDEPC_OUT(I+11*LEN1_LEVDEPC_OUT)=0.0                             CONVHEA1.553    
       ENDDO                                                               CONVHEA1.554    
      ENDIF                                                                UDR2F305.57     
C                                                                          AJS1F400.143    
C Soil layer depth ratios                                                  AJS1F400.144    
                                                                           CONVHEA1.555    
      IF(FIXHD_OUT(12).LT.305)THEN                                         AJS1F400.145    
        JSOIL_DEPTHS = 13                                                  AJS1F400.146    
      ELSE                                                                 AJS1F400.147    
        JSOIL_DEPTHS = 6                                                   AJS1F400.148    
      ENDIF                                                                AJS1F400.149    
                                                                           AJS1F400.150    
C*****************************************************************         AJS1F400.155    
C NB Set layer depths to constant global values for MOSES                  UJS1F401.251    
C and to layer depth ratios that are dependent on the top layer            UJS1F401.252    
C for the multi-layer scheme                                               UJS1F401.253    
C****************************************************************          AJS1F400.164    
       IF(LMOSES)THEN                                                      UJS1F401.254    
         DO I=1,SM_LEVELS_OUT                                              UJS1F401.255    
           LEVDEPC_OUT(I+(JSOIL_DEPTHS-1)*LEN1_LEVDEPC_OUT)                UJS1F401.256    
     &               = DZSOIL(I)                                           UJS1F401.257    
         ENDDO                                                             UJS1F401.258    
       ELSE                                                                UJS1F401.264    
         DO I=1,ST_LEVELS_OUT+1                                            UJS1F401.265    
           LEVDEPC_OUT(I+(JSOIL_DEPTHS-1)*LEN1_LEVDEPC_OUT)                UJS1F401.266    
     &               = LAYER_DEPTH(I)                                      UJS1F401.267    
         ENDDO                                                             UJS1F401.268    
       ENDIF                                                               UJS1F401.269    
                                                                           CONVHEA1.560    
      ENDIF                                                                CONVHEA1.561    
                                                                           CONVHEA1.562    
C--------------------------------------------------------------            CONVHEA1.563    
C  Initialise row dependent constants                                      CONVHEA1.564    
C--------------------------------------------------------------            CONVHEA1.565    
                                                                           CONVHEA1.566    
      DO I=1,LEN1_ROWDEPC_OUT*LEN2_ROWDEPC_OUT                             CONVHEA1.567    
        IF (I.LE.LEN1_ROWDEPC_IN*LEN2_ROWDEPC_IN) THEN                     UIE2F404.38     
         ROWDEPC_OUT(I)=ROWDEPC_IN(I)                                      UIE2F404.39     
        ENDIF                                                              UIE2F404.40     
      ENDDO                                                                CONVHEA1.569    
                                                                           CONVHEA1.570    
      IF(.NOT.OCEAN)THEN                                                   CONVHEA1.571    
                                                                           CONVHEA1.572    
C SET FILTER WAVE VALUES TO MAX VALUES                                     CONVHEA1.573    
      DO I=1,LEN1_ROWDEPC_OUT*LEN2_ROWDEPC_OUT                             CONVHEA1.574    
        ROWDEPC_OUT(I)=REAL(ROW_LENGTH_OUT)                                UDG6F405.142    
      ENDDO                                                                CONVHEA1.576    
                                                                           CONVHEA1.577    
      ENDIF                                                                CONVHEA1.578    
                                                                           CONVHEA1.579    
C--------------------------------------------------------------            CONVHEA1.580    
C  Copy across column dependent consts                                     CONVHEA1.581    
C--------------------------------------------------------------            CONVHEA1.582    
      IF(OCEAN)THEN                                                        CONVHEA1.583    
        DO I=1,LEN1_COLDEPC_OUT*LEN2_COLDEPC_OUT                           CONVHEA1.584    
          COLDEPC_OUT(I)=COLDEPC_IN(I)                                     CONVHEA1.585    
        ENDDO                                                              CONVHEA1.586    
      ENDIF                                                                CONVHEA1.587    
                                                                           CONVHEA1.588    
C--------------------------------------------------------------            CONVHEA1.589    
C  Copy across fields of consts                                            CONVHEA1.590    
C--------------------------------------------------------------            CONVHEA1.591    
                                                                           CONVHEA1.592    
      IF(LEN1_FLDDEPC_OUT*LEN2_FLDDEPC_OUT.GT.0) THEN                      UIE2F401.350    
        ! Copy across fields_of_constants for atmosphere model             UIE2F401.351    
        IF( (LEN1_FLDDEPC_IN.EQ.LEN1_FLDDEPC_OUT).AND.                     UIE2F401.352    
     *      (LEN2_FLDDEPC_IN.EQ.LEN2_FLDDEPC_OUT)) THEN                    UIE2F401.353    
        DO I=1,LEN1_FLDDEPC_OUT*LEN2_FLDDEPC_OUT                           CONVHEA1.594    
          FLDDEPC_OUT(I)=FLDDEPC_IN(I)                                     CONVHEA1.595    
        ENDDO                                                              CONVHEA1.596    
        ENDIF                                                              UIE2F401.354    
      ENDIF                                                                CONVHEA1.597    
                                                                           CONVHEA1.598    
C--------------------------------------------------------------            CONVHEA1.599    
C  Copy across extra consts                                                CONVHEA1.600    
C--------------------------------------------------------------            CONVHEA1.601    
                                                                           CONVHEA1.602    
      IF(OCEAN)THEN                                                        CONVHEA1.603    
        DO I=1,LEN_EXTCNST_OUT                                             CONVHEA1.604    
          EXTCNST_OUT(I)=EXTCNST_IN(I)                                     CONVHEA1.605    
        ENDDO                                                              CONVHEA1.606    
      ENDIF                                                                CONVHEA1.607    
                                                                           CONVHEA1.608    
C--------------------------------------------------------------            CONVHEA1.609    
C  Copy across history block                                               CONVHEA1.610    
C--------------------------------------------------------------            CONVHEA1.611    
                                                                           CONVHEA1.612    
      DO I=1,LEN_DUMPHIST_OUT                                              CONVHEA1.613    
        DUMPHIST_OUT(I)=DUMPHIST_IN(I)                                     CONVHEA1.614    
      ENDDO                                                                CONVHEA1.615    
                                                                           CONVHEA1.616    
C--------------------------------------------------------------            CONVHEA1.617    
C  Copy across compressed field index1                                     CONVHEA1.618    
C--------------------------------------------------------------            CONVHEA1.619    
                                                                           CONVHEA1.620    
      IF(OCEAN)THEN                                                        CONVHEA1.621    
        DO I=1,LEN_CFI1_OUT                                                CONVHEA1.622    
          CFI1_OUT(I)=CFI1_IN(I)                                           CONVHEA1.623    
        ENDDO                                                              CONVHEA1.624    
      ENDIF                                                                CONVHEA1.625    
                                                                           CONVHEA1.626    
C--------------------------------------------------------------            CONVHEA1.627    
C  Copy across compressed field index2                                     CONVHEA1.628    
C--------------------------------------------------------------            CONVHEA1.629    
                                                                           CONVHEA1.630    
      IF(OCEAN)THEN                                                        CONVHEA1.631    
        DO I=1,LEN_CFI2_OUT                                                CONVHEA1.632    
          CFI2_OUT(I)=CFI2_IN(I)                                           CONVHEA1.633    
        ENDDO                                                              CONVHEA1.634    
      ENDIF                                                                CONVHEA1.635    
                                                                           CONVHEA1.636    
C--------------------------------------------------------------            CONVHEA1.637    
C  Copy across compressed field index3                                     CONVHEA1.638    
C--------------------------------------------------------------            CONVHEA1.639    
                                                                           CONVHEA1.640    
      IF(OCEAN)THEN                                                        CONVHEA1.641    
        DO I=1,LEN_CFI3_OUT                                                CONVHEA1.642    
          CFI3_OUT(I)=CFI3_IN(I)                                           CONVHEA1.643    
        ENDDO                                                              CONVHEA1.644    
      ENDIF                                                                CONVHEA1.645    
                                                                           CONVHEA1.646    
      RETURN                                                               CONVHEA1.647    
      END                                                                  CONVHEA1.648    
*ENDIF                                                                     CONVHEA1.649