*IF DEF,OCEAN                                                              @DYALLOC.4353   
C ******************************COPYRIGHT******************************    GTS2F400.8101   
C (c) CROWN COPYRIGHT 1995, METEOROLOGICAL OFFICE, All Rights Reserved.    GTS2F400.8102   
C                                                                          GTS2F400.8103   
C Use, duplication or disclosure of this code is subject to the            GTS2F400.8104   
C restrictions as set forth in the contract.                               GTS2F400.8105   
C                                                                          GTS2F400.8106   
C                Meteorological Office                                     GTS2F400.8107   
C                London Road                                               GTS2F400.8108   
C                BRACKNELL                                                 GTS2F400.8109   
C                Berkshire UK                                              GTS2F400.8110   
C                RG12 2SZ                                                  GTS2F400.8111   
C                                                                          GTS2F400.8112   
C If no contract has been raised with this copy of the code, the use,      GTS2F400.8113   
C duplication or disclosure of it is strictly prohibited.  Permission      GTS2F400.8114   
C to do so must first be obtained in writing from the Head of Numerical    GTS2F400.8115   
C Modelling at the above address.                                          GTS2F400.8116   
C ******************************COPYRIGHT******************************    GTS2F400.8117   
C                                                                          GTS2F400.8118   
CLL Subroutine READNLST_OCEAN    --------------------------------------    READNLST.2      
CLL                                                                        READNLST.3      
CLL version for CRAY YMP                                                   READNLST.4      
CLL written by S. Ineson                                                   READNLST.5      
CLL                                                                        READNLST.6      
CLL code reviewed by :                                                     READNLST.7      
CLL                                                                        READNLST.8      
CLL version number 1. dated 00/00/00                                       READNLST.9      
CLL                                                                        @DYALLOC.4354   
CLL     August 1993: changes for dynamic allocation.  S Foreman            @DYALLOC.4355   
CLL 3.4  16/6/94 : Change CHARACTER*(*) to CHARACTER*(80) N.Farnon         ONF0F304.9      
CLL     01.09.94:  Version 3.4   Parallelisation changes.  R. Hill         ORH1F304.110    
CLL  3.5  11/04/95  Sub-models stage 1: revised History/control files      GRB1F305.507    
CLL                 contents. Add ocean control variables. RTHBarnes.      GRB1F305.508    
CLL 3.5  01/02/95: Remove *IF dependecies. R.Hill                          ORH1F305.154    
CLL 4.0  27/03/95 : Add new namelist for ice variables. C.Cooper           OCC0F400.25     
CLL 4.1  07/06/96 : Initialise KKK. S. Ineson                              ORH2F401.86     
CLL   4.1   11/04/96 : Add coeffs for Gent and McWilliams scheme           OLA0F401.46     
CLL                    thickness diffusion to EDDY namelist                OLA0F401.47     
CLL 4.4  15/06/97 : Add to timestep namelist for DTBT and params           ORL1F404.122    
CLL                 namelist for wght_delplus used with the free           ORL1F404.123    
CLL                 surface solution                    R.Lenton           ORL1F404.124    
CLL 4.5  05/08/97 : Removed old boundary logical from namelist             OSI1F405.9      
CLL                 OPENNL and added constants for Gill                    OSI1F405.10     
CLL                 ocean boundary routine.          C.G. Jones            OSI1F405.11     
CLL 4.5  10/11/98   Read in biharmonic momentum and GM variables, and      OOM1F405.53     
CLL                 variables for Large scheme.       M. Roberts           OOM1F405.54     
CLL 4.5  3.9.98   Add new variables for HADCM4 sea-ice scheme and          ODC1F405.167    
CLL               remove cavitating fluid variables.                       ODC1F405.168    
CLL               Doug Cresswell and Jonathan Gregory                      ODC1F405.169    
CLL                                                                        @DYALLOC.4356   
CLL programming standard :                                                 READNLST.10     
CLL system components covered :                                            READNLST.11     
CLL purpose :                                                              READNLST.12     
CLL Island information is intended to be held in dump                      READNLST.13     
CLL                                                                        READNLST.14     
CLL                                                                        READNLST.15     
CLL                                                                        READNLST.16     
CLL                                                                        READNLST.17     
CLL Documentation :                                                        READNLST.18     
CLL                                                                        READNLST.19     
CLL                                                                        READNLST.20     
CLLEND -----------------------------------------------------------------   READNLST.21     
                                                                           READNLST.22     

      SUBROUTINE READNLST_OCEAN(                                            1@DYALLOC.4357   
*CALL ARGSIZE                                                              @DYALLOC.4358   
*CALL ARGOCALL                                                             @DYALLOC.4359   
     & ICODE, CMESSAGE,                                                    @DYALLOC.4360   
     &                          O_EXTCNST)                                 @DYALLOC.4361   
C---------------------------------------------------------------------     READNLST.24     
C  DEFINE GLOBAL DATA                                                      READNLST.25     
C---------------------------------------------------------------------     READNLST.26     
                                                                           READNLST.27     
C                                                                          RH141293.72     
      IMPLICIT NONE                                                        RH141293.73     
C                                                                          RH141293.74     
      REAL AH_SI           ! Coef of horizontal T mixing (si units)        RH141293.75     
     &    ,AM_SI           ! Coef of horizontal U,V mixing (si units)      RH141293.76     
     &    ,AM0_SI          ! } Coefs for lateral viscosity.. variation     RH141293.77     
     &    ,AM1_SI          ! } with latitude (si units)                    RH141293.78     
     &    ,FKPH_SI         ! Coef of vertical T mixing (si units)          RH141293.79     
     &    ,FKPM_SI         ! Coef of vertical U,V mixing (si units)        RH141293.80     
     &  ,ATHKDF_BI_SI  ! Coefficient of biharmonic GM mixing (si units)    OOM1F405.55     
     &  ,BM_SI        ! Coefficient of biharmonic U,V mixing (si units)    OOM1F405.56     
C                                                                          RH141293.81     
      INTEGER N            ! Index over segment counts                     RH141293.82     
     &       ,NI           ! Index over island count                       RH141293.83     
     &       ,ISUM         ! Sum of ISEG over all islands                  RH141293.84     
C                                                                          RH141293.85     
*CALL OARRYSIZ                                                             ORH6F401.11     
*CALL TYPSIZE                                                              @DYALLOC.4362   
*CALL COCNINDX                                                             PXORDER.42     
*CALL TYPOCALL                                                             @DYALLOC.4363   
*CALL UMSCALAR                                                             READNLST.30     
*CALL CSUBMODL                                                             GRB1F305.509    
*CALL CHSUNITS                                                             GRB1F305.510    
*CALL CCONTROL                                                             GRB1F305.511    
      INTEGER                                                              @DYALLOC.4364   
     & i_val ! Loop counter                                                @DYALLOC.4365   
     &,j_val ! Loop counter                                                @DYALLOC.4366   
     &,k_val ! loop counter                                                @DYALLOC.4367   
C                                                                          @DYALLOC.4368   
      REAL                                                                 READNLST.32     
     &    O_EXTCNST(*)                                                     READNLST.33     
C                                                                          @DYALLOC.4369   
      INTEGER ICODE ! INOUT Error code                                     @DYALLOC.4370   
      CHARACTER*(80) CMESSAGE ! INOUT Error message                        ONF0F304.10     
C                                                                          @DYALLOC.4372   
                                                                           READNLST.34     
C---------------------------------------------------------------------     READNLST.35     
C  DEFINE NAMELIST INPUT                                                   READNLST.36     
C---------------------------------------------------------------------     READNLST.37     
C  This section needs to type and dimension all run constants              READNLST.38     
C  not already specified in Cox common blocks                              READNLST.39     
      NAMELIST /CONTRL/ NNERGY,NMIX,NTSI                                   READNLST.40     
     &,NBLOCK,O_ADVECT_SCHEME                                              OSY1F405.6      
      NAMELIST /EDDY/                                                      READNLST.41     
     & AM_SI                                                               READNLST.43     
     &,AM0_SI,AM1_SI                                                       ORH1F305.156    
     &,AH_SI                                                               READNLST.48     
     &,FKPM_SI,FKPH_SI                                                     READNLST.50     
     &,FNUB_SI,FNU0_SI,KAPPA0_SI,DKAPPA_DZ_SI,STABLM_SI                    RW071293.3      
     &,max_qLarge_depth  ! max depth allowed for quadratic Large (m)       OLA0F404.7      
     &,crit_Ri   ! critical Richardson no used for depth of                OLA0F404.8      
                 ! quadratic Large scheme                                  OLA0F404.9      
     &,MAX_LARGE_DEPTH,CRIT_RI_FL  ! Equivalent numbers for Full Large     OOM1F405.58     
     &,AHI1_SI,AHI2_SI,AHI3_SI,SLOPE_MAX                                   READNLST.56     
     &,ATHKDF1_SI,ATHKDF2_SI,ATHKDF3_SI                                    OLA0F401.48     
     &,ATHKDF_BI_SI,BM_SI                                                  OOM1F405.57     
                                                                           ORH1F305.157    
      NAMELIST /TSTEPS/                                                    READNLST.58     
     & DTTS,DTUV,DTSF                                                      READNLST.59     
     &,DTBT                                                                ORL1F404.125    
     %,PNU                                                                 READNLST.60     
     &,RAT                                                                 READNLST.62     
                                                                           ORH1F305.158    
      NAMELIST /PARMS/ ACOR,MXSCAN,SOR,CRIT,WGHT_DELPLUS                   ORL1F404.126    
        Namelist /SALIN/ SALREF,SALLOW,SALUP                               OJL1F405.89     
      NAMELIST /DIAGNL/ROWPRT,ALLROW,ISTRT,ISTOP,                          READNLST.65     
     &                 JRPRT,TSUVPRT,KKK,ANCILPRT                          READNLST.66     
                                                                           ORH1F305.159    
      NAMELIST /HANEYNL/ HANEY_SI                                          READNLST.68     
                                                                           ORH1F305.160    
      NAMELIST /SOLARNL/ ETA1_SI,ETA2_SI,RSOL                              READNLST.71     
                                                                           ORH1F305.161    
      NAMELIST /MIXLAYNL/ LAMDA,DELTA_SI,EPSILON                           READNLST.74     
                                                                           ORH1F305.162    
      NAMELIST /OPENNL/ OBDY_GILL_MU,OBDY_GILL_LAMDA                       OSI1F405.12     
                                                                           ORH1F305.163    
      NAMELIST /IBOX/ ISIS,IEIS,JSIS,JEIS                                  READNLST.79     
                                                                           ORH1F305.164    
      NAMELIST /SEAICENL/                                                  OCC0F400.26     
     & EDDYDIFFN,EDDYDIFFS,SALICE,H0,AMXNORTH,AMXSOUTH,AICEMIN,HICEMIN     ODC1F405.170    
     &,ah_ice,quad_ice_drag,hicestop,hiceslow,aicemizfry                   ODC1F405.171    
                                                                           OCC0F400.30     
      NAMELIST /CARBONNL/ PCO2_ATM_0                                       NT071293.22     
     &,C14TO12_ATM_0                                                       NT071293.25     
      NAMELIST /CONVROUS/ ISROUS,IEROUS,JSROUS,JEROUS                      OOM2F403.11     
                                                                           ORH1F305.165    
C                                                                          READNLST.80     
C---------------------------------------------------------------------     READNLST.81     
C  BEGIN EXECUTABLE CODE                                                   READNLST.82     
C---------------------------------------------------------------------     READNLST.83     
C                                                                          READNLST.84     
C---------------------------------------------------------------------     READNLST.85     
C  CODE MOVED TO THIS POSITION ASSUMING NLIST CALLED PRIOR TO CONFIG       READNLST.86     
C---------------------------------------------------------------------     READNLST.87     
                                                                           READNLST.88     
C                                                                          @DYALLOC.4373   
C    Initialise arrays to zero                                             @DYALLOC.4374   
C                                                                          @DYALLOC.4375   
      DO j_val=1,LSEG                                                      @DYALLOC.4376   
         DO i_val=J_1,J_JMT                                                ORH3F402.237    
            isz(i_val,j_val)=0                                             @DYALLOC.4378   
         END DO                                                            @DYALLOC.4379   
      END DO                                                               @DYALLOC.4380   
C                                                                          @DYALLOC.4381   
      DO i_val=1,NISLE                                                     @DYALLOC.4382   
         iseg(i_val)=0                                                     @DYALLOC.4383   
      END DO                                                               @DYALLOC.4384   
C                                                                          @DYALLOC.4385   
      DO j_val=1,ISEGM                                                     @DYALLOC.4386   
         DO i_val=1,NISLE                                                  @DYALLOC.4387   
            isis(i_val,j_val)=0                                            @DYALLOC.4388   
            ieis(i_val,j_val)=0                                            @DYALLOC.4389   
            jsis(i_val,j_val)=0                                            @DYALLOC.4390   
            ieis(i_val,j_val)=0                                            @DYALLOC.4391   
         END DO                                                            @DYALLOC.4392   
      END DO                                                               @DYALLOC.4393   
C                                                                          @DYALLOC.4394   
      DO k_val=1,KM                                                        @DYALLOC.4395   
         DO j_val=1,LSEGF                                                  @DYALLOC.4396   
            DO i_val=1,NJTBFT                                              @DYALLOC.4397   
               istf(i_val,j_val,k_val)=0                                   @DYALLOC.4398   
               ietf(i_val,j_val,k_val)=0                                   @DYALLOC.4399   
            END DO                                                         @DYALLOC.4400   
         END DO                                                            @DYALLOC.4401   
      END DO                                                               @DYALLOC.4402   
C                                                                          @DYALLOC.4403   
      DO k_val=1,KM                                                        @DYALLOC.4404   
         DO j_val=1,LSEGF                                                  @DYALLOC.4405   
            DO i_val=1,NJTBFU                                              @DYALLOC.4406   
               isuf(i_val,j_val,k_val)=0                                   @DYALLOC.4407   
               ieuf(i_val,j_val,k_val)=0                                   @DYALLOC.4408   
            END DO                                                         @DYALLOC.4409   
         END DO                                                            @DYALLOC.4410   
      END DO                                                               @DYALLOC.4411   
C                                                                          @DYALLOC.4412   
         DO j_val=1,LSEGF                                                  @DYALLOC.4413   
            DO i_val=1,NJTBFU                                              @DYALLOC.4414   
               iszf(i_val,j_val)=0                                         @DYALLOC.4415   
               iezf(i_val,j_val)=0                                         @DYALLOC.4416   
            END DO                                                         @DYALLOC.4417   
         END DO                                                            @DYALLOC.4418   
C                                                                          @DYALLOC.4419   
                                                                           READNLST.92     
C---------------------------------------------------------------------     READNLST.93     
C  READ IN RUN PARAMETERS                                                  READNLST.94     
C---------------------------------------------------------------------     READNLST.95     
                                                                           READNLST.96     
      READ (5,CONTRL)                                                      READNLST.97     
      WRITE(6,CONTRL)                                                      READNLST.98     
      READ (5,EDDY)                                                        READNLST.99     
      WRITE(6,EDDY)                                                        READNLST.100    
      IF (.NOT.L_OLATVISC) THEN                                            ORH1F305.166    
         AM=AM_SI*10000.       ! CM2S-1                                    ORH1F305.167    
         AM0=0.                                                            ORH1F305.168    
         AM1=0.                                                            ORH1F305.169    
      ELSE                                                                 ORH1F305.170    
         AM=0.                                                             ORH1F305.171    
         AM0=AM0_SI*10000.     ! CM2S-1                                    ORH1F305.172    
         AM1=AM1_SI*10000.     ! CM2S-1                                    ORH1F305.173    
      ENDIF                                                                ORH1F305.174    
      AH=AH_SI*10000.       ! CM2S-1                                       READNLST.108    
      IF (.NOT.L_ORICHARD) THEN                                            ORH1F305.175    
         FKPM=FKPM_SI*10000.   ! CM2S-1                                    ORH1F305.176    
         FKPH=FKPH_SI*10000.   ! CM2S-1                                    ORH1F305.177    
      ELSE                                                                 ORH1F305.178    
         FKPM=0.                                                           ORH1F305.179    
         FKPH=0.                                                           ORH1F305.180    
      ENDIF                                                                ORH1F305.181    
      IF (L_OBIHARMGM) THEN                                                OOM1F405.59     
         ATHKDF_BI=ATHKDF_BI_SI*1.e8                                       OOM1F405.60     
      ELSE                                                                 OOM1F405.61     
         ATHKDF_BI=0.                                                      OOM1F405.62     
      ENDIF                                                                OOM1F405.63     
C Biharmonic coeff for momentum needs to be negative                       OOM1F405.64     
      IF (L_OBIMOM) THEN                                                   OOM1F405.65     
         BM=-BM_SI*1.e8                                                    OOM1F405.66     
      ELSE                                                                 OOM1F405.67     
         BM=0.                                                             OOM1F405.68     
      ENDIF                                                                OOM1F405.69     
                                                                           ORH1F305.182    
      READ (5,TSTEPS)                                                      READNLST.113    
      WRITE(6,TSTEPS)                                                      READNLST.114    
      PNU2M=1.-2.*PNU                                                      READNLST.115    
      READ (5,PARMS)                                                       READNLST.116    
      WRITE(6,PARMS)                                                       READNLST.117    
                                                                           ORH1F305.183    
        READ (5,SALIN)                                                     OJL1F405.90     
        WRITE(6,SALIN)                                                     OJL1F405.91     
        salup=aint(salup*100000-3500)/100000.0                             OJL1F405.92     
        sallow=aint(sallow*100000-3500)/100000.0                           OJL1F405.93     
                                                                           OJL1F405.94     
      IF (L_OSOLAR) THEN                                                   ORH1F305.184    
         READ(5,SOLARNL)                                                   ORH1F305.185    
         WRITE(6,SOLARNL)                                                  ORH1F305.186    
      ELSE                                                                 ORH1F305.187    
         ETA1_SI=0.0                                                       ORH1F305.188    
         ETA2_SI=0.0                                                       ORH1F305.189    
         RSOL   =0.0                                                       ORH1F305.190    
      ENDIF                                                                ORH1F305.191    
                                                                           ORH1F305.192    
      IF (L_OMIXLAY) THEN                                                  ORH1F305.193    
         READ(5,MIXLAYNL)                                                  ORH1F305.194    
         WRITE(6,MIXLAYNL)                                                 ORH1F305.195    
      ELSE                                                                 ORH1F305.196    
         LAMDA = 0.0                                                       ORH1F305.197    
         DELTA_SI = 0.0                                                    ORH1F305.198    
         EPSILON = 0.0                                                     ORH1F305.199    
      ENDIF                                                                ORH1F305.200    
                                                                           ORH1F305.201    
      IF (L_OHANEY) THEN                                                   ORH1F305.202    
         READ(5,HANEYNL)                                                   ORH1F305.203    
         WRITE(6,HANEYNL)                                                  ORH1F305.204    
      ELSE                                                                 ORH1F305.205    
         HANEY_SI = 0.0                                                    ORH1F305.206    
      ENDIF                                                                ORH1F305.207    
                                                                           ORH1F305.208    
      IF (L_SEAICE) THEN                                                   OCC0F400.31     
         READ(5,SEAICENL)                                                  OCC0F400.32     
         WRITE(6,SEAICENL)                                                 OCC0F400.33     
      ELSE                                                                 OCC0F400.34     
         EDDYDIFFN = 0.0                                                   OCC0F400.35     
         EDDYDIFFS = 0.0                                                   OCC0F400.36     
         SALICE = 0.0                                                      OCC0F400.37     
         H0 = 0.0                                                          OCC0F400.38     
         AMXNORTH = 0.0                                                    OCC0F400.39     
         AMXSOUTH = 0.0                                                    OCC0F400.40     
         AICEMIN = 0.0                                                     OCC0F400.41     
         HICEMIN = 0.0                                                     OCC0F400.42     
         AH_ICE = 0.0                                                      OCC0F400.43     
      quad_ice_drag=0.0                                                    ODC1F405.172    
      hicestop=0.0                                                         ODC1F405.173    
      hiceslow=0.0                                                         ODC1F405.174    
      aicemizfry=0.0                                                       ODC1F405.175    
      ENDIF                                                                OCC0F400.52     
                                                                           OCC0F400.53     
                                                                           ORH1F305.209    
      IF (L_OPENBC) THEN                                                   ORH1F305.210    
         READ(5,OPENNL)                                                    ORH1F305.211    
         WRITE(6,OPENNL)                                                   ORH1F305.212    
      ENDIF                                                                OSI1F405.13     
                                                                           ORH1F305.216    
      DO k_val=1,KM                                                        ORH2F401.87     
        KKK(k_val)=0                                                       ORH2F401.88     
      END DO                                                               ORH2F401.89     
      READ(5,DIAGNL)                                                       READNLST.134    
      WRITE(6,DIAGNL)                                                      READNLST.135    
                                                                           OOM2F403.12     
      IF (L_OCONVROUS) THEN                                                OOM2F403.13     
        READ(5,CONVROUS)                                                   OOM2F403.14     
        WRITE(6,CONVROUS)                                                  OOM2F403.15     
      ENDIF                                                                OOM2F403.16     
                                                                           READNLST.136    
C---------------------------------------------------------------------     READNLST.137    
C  COPY INFORMATION INTO DUMP HEADER                                       READNLST.138    
C---------------------------------------------------------------------     READNLST.139    
C                                                                          READNLST.140    
C     O_INTHD(22)=                                                         READNLST.141    
C     O_REALHD(37)=                                                        READNLST.142    
C                                                                          READNLST.143    
      IF (L_OISLANDS) THEN                                                 ORH1F305.217    
C---------------------------------------------------------------------     READNLST.145    
C  COPY ISLAND BOX CORNER POINT INDICES (IBOX NOW HELD IN DUMP)            READNLST.146    
C---------------------------------------------------------------------     READNLST.147    
C                                                                          READNLST.148    
      DO N=1,ISEGM                                                         READNLST.149    
      DO NI=1,NISLE                                                        READNLST.150    
        ISIS(NI,N)=0                                                       READNLST.151    
        IEIS(NI,N)=0                                                       READNLST.152    
        JSIS(NI,N)=0                                                       READNLST.153    
        JEIS(NI,N)=0                                                       READNLST.154    
      END DO                                                               READNLST.155    
      END DO                                                               READNLST.156    
                                                                           READNLST.157    
      ISUM=0                                                               READNLST.158    
      DO NI=1,NISLE                                                        READNLST.159    
        ISEG(NI)=O_EXTCNST(1+NI+ISUM*4)                                    READNLST.160    
        DO N=1,ISEG(NI)                                                    READNLST.161    
          ISIS(NI,N)=O_EXTCNST(1+NI+ISUM*4+N)                              READNLST.162    
          IEIS(NI,N)=O_EXTCNST(1+NI+ISUM*4+ISEG(NI)*1+N)                   READNLST.163    
          JSIS(NI,N)=O_EXTCNST(1+NI+ISUM*4+ISEG(NI)*2+N)                   READNLST.164    
          JEIS(NI,N)=O_EXTCNST(1+NI+ISUM*4+ISEG(NI)*3+N)                   READNLST.165    
        END DO                                                             READNLST.166    
        ISUM=ISUM+ISEG(NI)                                                 READNLST.167    
      END DO                                                               READNLST.168    
      WRITE(6,IBOX)                                                        READNLST.169    
      ENDIF                                                                ORH1F305.218    
                                                                           ORH1F305.219    
      ! initialise variables which might not be read from namelist         ORH1F305.220    
      PCO2_ATM_0 = 0.0                                                     ORH1F305.221    
      C14TO12_ATM_0 = 0.0                                                  ORH1F305.222    
                                                                           ORH1F305.223    
      IF (L_OCARBON) THEN                                                  ORH1F305.224    
         READ(5,CARBONNL)                                                  ORH1F305.225    
         WRITE(6,CARBONNL)                                                 ORH1F305.226    
      ENDIF                                                                ORH1F305.227    
                                                                           READNLST.171    
C     Send an error message and code to stop further processing            ORH1F304.112    
C     if there are insufficient ocean rows per ocean block.                ORH1F304.113    
      IF (INT(JMTM1/NBLOCK).LT.3) THEN                                     ORH1F304.114    
         ICODE = 99                                                        ORH1F304.115    
         CMESSAGE = 'TOO FEW ROWS PER PROCESSOR'                           ORH1F304.116    
      END IF                                                               ORH1F304.117    
      RETURN                                                               READNLST.172    
      END                                                                  READNLST.173    
*ENDIF                                                                     @DYALLOC.4420