*IF DEF,CONTROL                                                            DERVSIZE.2      
C ******************************COPYRIGHT******************************    GTS2F400.1891   
C (c) CROWN COPYRIGHT 1995, METEOROLOGICAL OFFICE, All Rights Reserved.    GTS2F400.1892   
C                                                                          GTS2F400.1893   
C Use, duplication or disclosure of this code is subject to the            GTS2F400.1894   
C restrictions as set forth in the contract.                               GTS2F400.1895   
C                                                                          GTS2F400.1896   
C                Meteorological Office                                     GTS2F400.1897   
C                London Road                                               GTS2F400.1898   
C                BRACKNELL                                                 GTS2F400.1899   
C                Berkshire UK                                              GTS2F400.1900   
C                RG12 2SZ                                                  GTS2F400.1901   
C                                                                          GTS2F400.1902   
C If no contract has been raised with this copy of the code, the use,      GTS2F400.1903   
C duplication or disclosure of it is strictly prohibited.  Permission      GTS2F400.1904   
C to do so must first be obtained in writing from the Head of Numerical    GTS2F400.1905   
C Modelling at the above address.                                          GTS2F400.1906   
C ******************************COPYRIGHT******************************    GTS2F400.1907   
C                                                                          GTS2F400.1908   
CLL  Program: DERVSIZE -------------------------------------------------   DERVSIZE.3      
CLL                                                                        DERVSIZE.4      
CLL  Purpose: Calculate extra sizes required for dynamic allocation of     DERVSIZE.5      
CLL           main memory in the model, derived from sizes passed by       DERVSIZE.6      
CLL           READSIZE into the top level program UM_SHELL. Called from    DERVSIZE.7      
CLL           READSIZE.                                                    DERVSIZE.8      
CLL                                                                        DERVSIZE.9      
CLL  Model            Modification history:                                DERVSIZE.10     
CLL version  Date                                                          DERVSIZE.11     
CLL  3.2    5/05/93  Introduced as new DECK to allow dynamic allocation    DERVSIZE.12     
CLL                  of main data arrays in U_MODEL. R.Rawlins             DERVSIZE.13     
CLL  3.3   26/10/93  M. Carter. Part of an extensive mod that:             MC261093.15     
CLL                  1.Removes the limit on primary STASH item numbers.    MC261093.16     
CLL                  2.Removes the assumption that (section,item)          MC261093.17     
CLL                    defines the sub-model.                              MC261093.18     
CLL                  3.Thus allows for user-prognostics.                   MC261093.19     
CLL                  Remove A/O_MAX_VARIABLES.                             MC261093.20     
CLL   3.5    28/03/95 MPP code: Set up some lengths to be for              GPB0F305.17     
CLL                   global rather than local data    P.Burton            GPB0F305.18     
CLL  4.1  26/03/96  Introduce Wave sub-model.  RTHBarnes.                  WRB1F401.61     
CLL   4.1    19/03/96 Further MPP code changes, for LBC data lengths       GPB0F401.167    
CLL                   P.Burton                                             GPB0F401.168    
!LL   4.3    25/02/97 MPP code : Make MOS mask array globally sized        GPB0F403.3007   
!LL                                                     P.Burton           GPB0F403.3008   
CLL   4.3    30/01/97 Ensure that domain decomposition is consistent       GRR0F403.16     
CLL                   with submodel. R.Rawlins                             GRR0F403.17     
!LL   4.4    14/07/97 Added MPP Ocean LAM sizes       P.Burton/S.Ineson    GSI0F404.1      
CLL  4.4  04/08/97  Make no.of boundary update variables dependent on      ARB1F404.142    
CLL                 L_LSPICE_BDY (mixed phase precip scheme). RTHBarnes.   ARB1F404.143    
CLL   4.4    15/06/97 Dimension arrays for the free surface solution       ORL1F404.129    
CLL                                                         R.Lenton       ORL1F404.130    
CLL   4.3    30/01/97 Ensure t                                             SDR1F404.56     
!LL   4.4    04/08/97 Initialise COCNINDX variables for SLAB non-MPP       SDR1F404.57     
!LL                   model runs. D. Robinson.                             SDR1F404.58     
CLL  4.5  3/11/98   New sizes IMT_BIH and KM_BIH     M. Roberts            OOM3F405.10     
CLL   4.5     10/11/98   Set array sizes dependent on L_OISOMOM and        OOM1F405.26     
CLL                      L_OISOGM                                          OOM1F405.27     
CLL  4.5  13/08/97 Altered the calculation for LENRIMDATA_O, LENRIMO       GSI1F405.87     
CLL                and LENRIMO_U.  Changed the name of the logical         GSI1F405.88     
CLL                L_OBGILLN to L_OBDY_NORTH. C.G. Jones                   GSI1F405.89     
!LL   4.5    03/08/98 Update comments. D. Robinson.                        GDR2F405.181    
!     4.4  10/8/97   Control logicals changed for ice dynamics             ODC1F405.182    
!                     C.Sherlock                                           ODC1F405.183    
CLL                                                                        DERVSIZE.14     
CLL  Programming standard: UM Doc Paper 3, version 2 (7/9/90)              DERVSIZE.15     
CLL                                                                        DERVSIZE.16     
CLL  Logical components covered:                                           DERVSIZE.17     
CLL                                                                        DERVSIZE.18     
CLL  Project task:                                                         DERVSIZE.19     
CLL                                                                        DERVSIZE.20     
CLL  External documentation: On-line UM document C1 - Dynamic allocation   DERVSIZE.21     
CLL                          of primary fields                             DERVSIZE.22     
CLL                                                                        DERVSIZE.23     
CLL  -------------------------------------------------------------------   DERVSIZE.24     
C*L  Interface and arguments: ------------------------------------------   DERVSIZE.25     
C                                                                          DERVSIZE.26     

      SUBROUTINE DERVSIZE(                                                  1,3DERVSIZE.27     
     &             ICODE,CMESSAGE)                                         DERVSIZE.28     
C                                                                          DERVSIZE.29     
C*----------------------------------------------------------------------   DERVSIZE.30     
      IMPLICIT NONE                                                        DERVSIZE.31     
C                                                                          DERVSIZE.32     
C  Subroutines called                                                      DERVSIZE.33     
C                                                                          DERVSIZE.34     
C                                                                          DERVSIZE.35     
C  Argument list and comdecks                                              GSI1F405.90     
C                                                                          DERVSIZE.37     
      INTEGER ICODE             ! OUT - Return code                        DERVSIZE.38     
      CHARACTER*80 CMESSAGE     ! OUT - Error message                      WRB1F401.62     
                                                                           DERVSIZE.40     
*CALL TYPSIZE                                                              DERVSIZE.41     
*CALL CNTLATM                                                              ARB1F404.144    
*CALL CNTLOCN                                                              ORH1F305.4359   
*CALL OARRYSIZ                                                             ORH1F305.4360   
*CALL CMAXSIZE                                                             DERVSIZE.42     
*IF DEF,MPP                                                                GPB0F305.19     
*CALL PARVARS                                                              GPB0F305.20     
*CALL DECOMPTP                                                             GRR0F403.18     
*CALL DECOMPDB                                                             GSI0F404.2      
*ENDIF                                                                     GPB0F305.21     
*CALL COCNINDX                                                             ORH7F402.1      
C  Local variables                                                         GSI1F405.91     
       integer n_obdy_t_grd  ! # of ocean bdy fields  } on T grid          GSI1F405.92     
       integer n_obdy_u_grd  !   stored in dump       } on u/v grid        GSI1F405.93     
       integer numside_rowso  ! # of rows in each ocean bdy field          GSI1F405.94     
       integer numside_colso  ! # of columns in each ocean bdy field       GSI1F405.95     
*IF DEF,MPP                                                                GSI1F405.96     
       integer global_lenrimo_u                                            GSI1F405.97     
*ENDIF                                                                     GSI1F405.98     
C*----------------------------------------------------------------------   GSI1F405.99     
                                                                           DERVSIZE.43     
*IF DEF,MPP                                                                GSI0F404.3      
      INTEGER nohalo_IMT,nohalo_JMT,glob_IMT,glob_JMT                      GSI0F404.4      
*ENDIF                                                                     GSI0F404.5      
         EXTERNAL OCEAN_SIZES                                              ORH6F402.20     
                                                                           ORH6F402.21     
      ICODE=0                                                              DERVSIZE.44     
CL                                                                         DERVSIZE.45     
CL   Atmosphere Boundary Datasets.                                         GDR2F405.182    
CL   2nd dimension of Level Dependent Constants.                           GDR2F405.183    
      INTF_LEN2_LEVDEPC=4                                                  DERVSIZE.49     
*IF DEF,OCEAN                                                              GMB1F405.333    
      INTF_LEN2_LEVDEPC_O=1                                                GMB1F405.334    
      NPTS_U_FIELD_O=1                                                     GMB1F405.335    
*ENDIF                                                                     GMB1F405.336    
CL                                                                         DERVSIZE.51     
CL   Sizes applicable to all resolutions                                   DERVSIZE.52     
CL   (Not under *DEF because hard wired asssumption that first 100         DERVSIZE.53     
CL Get derived grid related parameters                                     DERVSIZE.57     
*IF DEF,ATMOS                                                              DERVSIZE.58     
      P_FIELD=ROW_LENGTH*P_ROWS                                            DERVSIZE.59     
*IF -DEF,MPP                                                               GPB0F305.22     
      U_ROWS=P_ROWS-1                                                      DERVSIZE.60     
*ELSE                                                                      GPB0F305.23     
      U_ROWS=P_ROWS  ! MPP code keeps field sizes the same to make life    GPB0F305.24     
!                    ! easier. Bottommost U row is not used.               GPB0F305.25     
*ENDIF                                                                     GPB0F305.26     
      U_FIELD=ROW_LENGTH*U_ROWS                                            DERVSIZE.61     
!     No of levels for Convective Cloud Amount.                            AJX0F404.438    
      IF (L_3D_CCA) THEN                                                   AJX0F404.439    
        N_CCA_LEV = Q_LEVELS                                               AJX0F404.440    
      ELSE                                                                 AJX0F404.441    
        N_CCA_LEV = 1                                                      AJX0F404.442    
      ENDIF                                                                AJX0F404.443    
      WRITE (6,*) "Number of levels for convective clouds is ",N_CCA_LEV   AJX0F404.444    
                                                                           DERVSIZE.62     
      A_LEN1_LEVDEPC=P_LEVELS                                              DERVSIZE.63     
*IF -DEF,MPP                                                               GPB0F305.27     
      A_LEN1_ROWDEPC=P_ROWS                                                DERVSIZE.64     
      A_LEN1_COLDEPC=ROW_LENGTH                                            DERVSIZE.65     
      A_LEN1_FLDDEPC=P_FIELD                                               DERVSIZE.66     
*ELSE                                                                      GPB0F305.28     
! We use the global values here                                            GPB0F305.29     
      A_LEN1_ROWDEPC= glsize(2) ! global P_ROWS                            GPB0F305.30     
      A_LEN1_COLDEPC= glsize(1) ! global ROW_LENGTH                        GPB0F305.31     
      A_LEN1_FLDDEPC= glsize(1)*glsize(2) ! global P_FIELD                 GPB0F305.32     
*ENDIF                                                                     GPB0F305.33     
                                                                           DERVSIZE.67     
*IF -DEF,MPP                                                               GPB0F403.3009   
      MOS_MASK_LEN=P_FIELD                                                 DERVSIZE.68     
*ELSE                                                                      GPB0F403.3010   
      MOS_MASK_LEN=glsize(1)*glsize(2)  ! global P_FIELD                   GPB0F403.3011   
*ENDIF                                                                     GPB0F403.3012   
CL Number of atmosphere model interface lookups                            DERVSIZE.69     
! Although model is allowed to run mixed phase precip scheme with old      ARB1F404.145    
! style boundary update file (no qcf) by setting L_LSPICE_BDY=.FALSE.,     ARB1F404.146    
! model is only allowed to generate output lateral boundary files          ARB1F404.147    
! consistent with its precipitation scheme.                                ARB1F404.148    
      IF (.NOT.L_LSPICE) THEN                                              ARB1F404.149    
      INTF_LOOKUPSA=5+TR_VARS                                              DERVSIZE.70     
      ELSE                                                                 ARB1F404.150    
        INTF_LOOKUPSA=6+TR_VARS                                            ARB1F404.151    
      END IF                                                               ARB1F404.152    
*ELSE                                                                      DERVSIZE.71     
      MOS_MASK_LEN=1                                                       DERVSIZE.72     
*IF DEF,OCEAN                                                              WRB1F401.63     
CL Number of ocean model interface lookups                                 DERVSIZE.73     
      INTF_LOOKUPSO=9                                                      GMB1F405.337    
*ELSE                                                                      WRB1F401.64     
CL Number of wave model interface lookups                                  WRB1F401.65     
      INTF_LOOKUPSW=1                                                      WRB1F401.66     
*ENDIF                                                                     DERVSIZE.75     
*ENDIF                                                                     WRB1F401.67     
C                                                                          SF011193.18     
C  Copy COMMON values of OCEAN dimensioning variables to local copies.     SF011193.19     
C  IMT,JMT,KM needed at end of routine for boundary data dimensions.       SF011193.20     
C                                                                          SF011193.21     
      NT=NT_UI                                                             SF011193.22     
      IMT=IMT_UI                                                           SF011193.23     
      JMT=JMT_UI                                                           SF011193.24     
      KM=KM_UI                                                             SF011193.25     
                                                                           SF011193.26     
*IF DEF,OCEAN                                                              DERVSIZE.76     
C                                                                          SF011193.27     
C      Set header values                                                   SF011193.28     
C                                                                          SF011193.29     
      O_LEN1_LEVDEPC=KM                                                    DERVSIZE.77     
      O_LEN1_ROWDEPC=JMT                                                   DERVSIZE.78     
      O_LEN1_COLDEPC=IMT                                                   DERVSIZE.79     
      O_LEN1_FLDDEPC=JMT*IMT                                               DERVSIZE.80     
                                                                           ORH1F305.4361   
                                                                           ORH1F305.4362   
        IF (L_OCYCLIC) THEN                                                ORH1F305.4363   
           IMU=IMT                                                         ORH1F305.4364   
           ICOL_CYC  = IMT - 2                                             ORH1F305.4365   
           IFROM_CYC = 2                                                   ORH1F305.4366   
           ITO_CYC   = IMT - 1                                             ORH1F305.4367   
        ELSE                                                               ORH1F305.4368   
           IMU=IMT-1                                                       ORH1F305.4369   
           ICOL_CYC  = IMT                                                 ORH1F305.4370   
           IFROM_CYC = 1                                                   ORH1F305.4371   
           ITO_CYC   = IMT                                                 ORH1F305.4372   
        ENDIF                                                              ORH1F305.4373   
      IMTP1=IMT+1                                                          DERVSIZE.86     
      IMTM1=IMT-1                                                          DERVSIZE.87     
      IMTM2=IMT-2                                                          DERVSIZE.88     
      IMUM1=IMU-1                                                          DERVSIZE.89     
      IMUM2=IMU-2                                                          DERVSIZE.90     
*IF -DEF,MPP                                                               ORH7F402.2      
      JMTP1=JMT+1                                                          DERVSIZE.91     
      JMTM1=JMT-1                                                          DERVSIZE.92     
      JMTM2=JMT-2                                                          DERVSIZE.93     
        IF (L_OSYMM) THEN                                                  ORH1F305.4374   
            JSCAN=JMTM2+1                                                  ORH1F305.4375   
        ELSE                                                               ORH1F305.4376   
            JSCAN=JMTM2                                                    ORH1F305.4377   
        ENDIF                                                              ORH1F305.4378   
*ENDIF                                                                     ORH7F402.3      
      KMP1=KM+1                                                            DERVSIZE.99     
      KMP2=KM+2                                                            DERVSIZE.100    
      KMM1=KM-1                                                            DERVSIZE.101    
*IF DEF,MPP                                                                ORH7F402.4      
                                                                           ORH7F402.5      
! Ensure that domain decomposition is consistent with submodel             GRR0F403.19     
                                                                           GRR0F403.20     
      CALL CHANGE_DECOMPOSITION(decomp_standard_ocean,ICODE)               GRR0F403.21     
      ! Compute various values of indexes etc specific to MPP ocean        ORH7F402.6      
      CALL OCEAN_SIZES (JMT_UI)                                            ORH7F402.7      
                                                                           ORH7F402.8      
      ! Set values of rowwise dimensions dealing with arrays               ORH7F402.9      
      ! dimensioned other than by JMT                                      ORH7F402.10     
      JMTP1=JMT                                                            ORH7F402.11     
      JMTM1=JMT                                                            ORH7F402.12     
      JMTM2=JMT                                                            ORH7F402.13     
                                                                           ORH7F402.14     
      ! If the last row is on this pe then:                                ORH7F402.15     
      IF (JFIN.EQ.JMT_GLOBAL) THEN                                         ORH7F402.16     
         JMTP1=JMT+1                                                       ORH7F402.17     
         JMTM1=JMT-1                                                       ORH7F402.18     
         JMTM2=JMT-2                                                       ORH7F402.19     
      ENDIF                                                                ORH7F402.20     
                                                                           ORH7F402.21     
      ! If this pe's last row is the last but one in global terms:         ORH7F402.22     
      IF (JFIN.EQ.JMTM1_GLOBAL) THEN                                       ORH7F402.23     
         JMTM2=JMT-1                                                       ORH7F402.24     
      ENDIF                                                                ORH7F402.25     
                                                                           ORH7F402.26     
      IF (L_OSYMM) THEN                                                    ORH7F402.27     
          JSCAN=J_JMTM1                                                    ORH7F402.28     
      ELSE                                                                 ORH7F402.29     
          JSCAN=J_JMTM2                                                    ORH7F402.30     
      ENDIF                                                                ORH7F402.31     
                                                                           ORH7F402.32     
      O_LEN1_ROWDEPC=JMT_GLOBAL                                            ORH7F402.33     
      O_LEN1_FLDDEPC=JMT_GLOBAL*IMT                                        ORH7F402.34     
                                                                           ORH7F402.35     
                                                                           ORH7F402.36     
*ELSE                                                                      ORH7F402.37     
                                                                           ORH7F402.38     
      ! If MPP not switched on then set the index controls                 ORH7F402.39     
      ! to the default values.                                             ORH7F402.40     
       O_NPROC=1                                                           ORH3F403.32     
                                                                           ORH3F403.33     
      J_1 = 1                                                              ORH7F402.41     
      J_2 = 2                                                              ORH7F402.42     
      J_3 = 3                                                              ORH7F402.43     
      J_JMT    = JMT                                                       ORH7F402.44     
      J_JMTM1  = JMTM1                                                     ORH7F402.45     
      J_JMTM2  = JMTM2                                                     ORH7F402.46     
      J_JMTP1  = JMTP1                                                     ORH7F402.47     
      J_OFFSET = 0                                                         ORH7F402.48     
      JST      = 1                                                         ORH7F402.49     
      JFIN     = JMT                                                       ORH7F402.50     
      J_FROM_LOC = 0 ! These values are set later                          ORH7F402.51     
      J_TO_LOC   = 0 ! in non-mpp version of code.                         ORH7F402.52     
      JMT_GLOBAL = JMT                                                     ORH7F402.53     
      JMTM1_GLOBAL = JMTM1                                                 ORH7F402.54     
      JMTM2_GLOBAL = JMTM2                                                 ORH7F402.55     
      JMTP1_GLOBAL = JMTP1                                                 ORH7F402.56     
      O_MYPE = 0     ! Default value                                       ORH7F402.57     
      O_EW_HALO = 0  !  "        "                                         ORH7F402.58     
      O_NS_HALO = 0  !  "        "                                         ORH7F402.59     
      J_PE_JSTM1 = -1                                                      ORH7F402.60     
      J_PE_JSTM2 = -1                                                      ORH7F402.61     
      J_PE_JFINP1 = -1                                                     ORH7F402.62     
      J_PE_JFINP2 = -1                                                     ORH7F402.63     
*ENDIF                                                                     ORH7F402.64     
      NSLAB=IMT*((NT+2)*KM)                                                DERVSIZE.102    
        IF (L_OFILTER) THEN                                                ORH1F305.4379   
      JSKPT=JFT2-JFT1                                                      DERVSIZE.104    
      JSKPU=JFU2-JFU1                                                      DERVSIZE.105    
      NJTBFT=(JFT1-JFRST+1)+(JMTM1_GLOBAL-JFT2+1)                          ORH8F402.66     
      NJTBFU=(JFU1-JFRST+1)+(JMTM1_GLOBAL-JFU2+1)                          ORH8F402.67     
        ENDIF                                                              ORH1F305.4380   
      IMTKM=IMT*KM                                                         DERVSIZE.114    
      NTMIN2=NT+1/NT                                                       DERVSIZE.115    
CL Sizes required for filtering routine                                    DERVSIZE.116    
      IMTD2=IMT/2                                                          DERVSIZE.118    
      LQMSUM=IMTD2*(IMT-IMTD2)                                             DERVSIZE.119    
      LHSUM=IMT*IMTP1/2                                                    DERVSIZE.120    
      IMTX8=IMT*8                                                          DERVSIZE.122    
      IMTIMT=IMT*IMT                                                       DERVSIZE.123    
CL The following sizes are used to minimise the length of ocean arrays     DERVSIZE.125    
*IF DEF,MPP                                                                ORH7F402.65     
      WRITE (6,*) "MYPE,NJTBF",MYPE,NJTBFT,NJTBFU,JSKPT,JSKPU              ORH7F402.66     
*ENDIF                                                                     ORH7F402.67     
CL whose length depends on the version of the model being used. This       DERVSIZE.126    
CL is a desirable alternative to using *DEF's in the argument list.        DERVSIZE.127    
CL One dimensional arrays are allocated unconditionally; only big arrays   DERVSIZE.128    
CL are treated specially here.                                             DERVSIZE.129    
        IF (.NOT.(L_OISLANDS)) THEN                                        ORH1F305.4384   
      NISLE = 1                                                            DERVSIZE.131    
      ISEGM=1                                                              DERVSIZE.132    
        ENDIF                                                              ORH1F305.4385   
        IF (.NOT.(L_OFILTER)) THEN                                         ORH1F305.4386   
      NJTBFT=1                                                             DERVSIZE.135    
      NJTBFU=1                                                             DERVSIZE.136    
      LSEGF=1                                                              DERVSIZE.137    
        ENDIF                                                              ORH1F305.4387   
!                                                                          ORH1F305.4391   
!       Removed IMROT and JMROT assignments - these variables              ORH1F305.4392   
!       do not appear to be used.                                          ORH1F305.4393   
!                                                                          ORH1F305.4394   
!                                                                          ORH1F305.4395   
        IF (L_OPENBC) THEN                                                 ORH1F305.4396   
      IMBC=IMT                                                             DERVSIZE.156    
      JMBC=JMT                                                             DERVSIZE.157    
      KMBC=KM                                                              DERVSIZE.158    
      NTBC=NT                                                              DERVSIZE.159    
        ELSE                                                               ORH1F305.4397   
      IMBC=1                                                               DERVSIZE.161    
      JMBC=1                                                               DERVSIZE.162    
      KMBC=1                                                               DERVSIZE.163    
      NTBC=1                                                               DERVSIZE.164    
        ENDIF                                                              ORH1F305.4398   
        IF (L_OHMEAD) THEN                                                 ORH1F305.4399   
      JMMD=JMT                                                             DERVSIZE.167    
      LDIV=2                                                               DERVSIZE.168    
        ELSE                                                               ORH1F305.4400   
      JMMD=1                                                               DERVSIZE.170    
      LDIV=1                                                               DERVSIZE.171    
        ENDIF                                                              ORH1F305.4401   
                                                                           ORH1F305.4413   
        IMT_OHY = 1   ! Default value                                      ORH1F305.4414   
                                                                           ORH1F305.4415   
        IF (L_OHANEY) THEN                                                 ORH1F305.4416   
           IMT_OHY = IMT                                                   ORH1F305.4417   
        ENDIF                                                              ORH1F305.4418   
                                                                           ORH1F305.4419   
        IF (L_IHANEY) THEN                                                 ORH1F305.4420   
            IMT_IHY  = IMT                                                 ORH1F305.4421   
            JMT_IHY = JMT                                                  ORH1F305.4422   
        ELSE                                                               ORH1F305.4423   
            IMT_IHY  = 1                                                   ORH1F305.4424   
            JMT_IHY = 1                                                    ORH1F305.4425   
        ENDIF                                                              ORH1F305.4426   
                                                                           ORH1F305.4427   
        IF (L_OHMEAD) THEN                                                 ORH1F305.4428   
           O_MAX_TRACERS_MEA = O_MAX_TRACERS                               ORH1F305.4429   
           LSEGC_MEA = LSEGC                                               ORH1F305.4430   
           NT_MEA    = NT                                                  ORH1F305.4431   
        ELSE                                                               ORH1F305.4432   
           O_MAX_TRACERS_MEA = 1                                           ORH1F305.4433   
           LSEGC_MEA = 1                                                   ORH1F305.4434   
           NT_MEA    = 1                                                   ORH1F305.4435   
        ENDIF                                                              ORH1F305.4436   
                                                                           ORH1F305.4437   
        IF (L_OVARYT) THEN                                                 ORH1F305.4438   
           KM_VTD = KM                                                     ORH1F305.4439   
        ELSE                                                               ORH1F305.4440   
           KM_VTD = 1                                                      ORH1F305.4441   
        ENDIF                                                              ORH1F305.4442   
                                                                           ORH1F305.4443   
       IF  (L_OBDY_NORTH) THEN                                             GSI1F405.100    
            KM_GLN = KM                                                    ORH1F305.4445   
            IMT_GLN = IMT                                                  ORH1F305.4446   
        ELSE                                                               ORH1F305.4447   
            KM_GLN = 1                                                     ORH1F305.4448   
            IMT_GLN = 1                                                    ORH1F305.4449   
        ENDIF                                                              ORH1F305.4450   
                                                                           ORH1F305.4451   
        IF (L_ICESIMPLE.OR.L_ICEFREEDR) THEN                               ODC1F405.184    
            IMT_drsa   = IMT                                               ODC1F405.185    
            JMT_drsa   = JMT                                               ODC1F405.186    
            JMTM1_drsa = JMTM1                                             ODC1F405.187    
        ELSE                                                               ORH1F305.4456   
            IMT_drsa   = 1                                                 ODC1F405.188    
            JMT_drsa   = 1                                                 ODC1F405.189    
            JMTM1_drsa = 1                                                 ODC1F405.190    
        ENDIF                                                              ORH1F305.4460   
                                                                           ORH1F305.4461   
        IF (L_OSOLARAL) THEN                                               ORH1F305.4462   
            IMT_SOLAL  = IMT                                               ORH1F305.4463   
            KM_SOLAL   = KM                                                ORH1F305.4464   
            KM_NOSOLAL = 1                                                 ORH1F305.4465   
        ELSE                                                               ORH1F305.4466   
            IMT_SOLAL  = 1                                                 ORH1F305.4467   
            KM_SOLAL   = 1                                                 ORH1F305.4468   
            KM_NOSOLAL = KM                                                ORH1F305.4469   
        ENDIF                                                              ORH1F305.4470   
                                                                           ORH1F305.4471   
        IF (L_ONOCLIN) THEN                                                ORH1F305.4472   
           IMT_CLN = 1                                                     ORH1F305.4473   
        ELSE                                                               ORH1F305.4474   
           IMT_CLN = IMT                                                   ORH1F305.4475   
        ENDIF                                                              ORH1F305.4476   
                                                                           ORH1F305.4477   
        IF (L_OBIOLOGY) THEN                                               ORH1F305.4478   
           KM_BIO = KM                                                     ORH1F305.4479   
           JMT_BIO = JMT                                                   ORH1F305.4480   
           IMT_BIO = IMT                                                   ORH1F305.4481   
           SWNCOL_BIO = ICOL_CYC                                           ORH1F305.4482   
        ELSE                                                               ORH1F305.4483   
           KM_BIO = 1                                                      ORH1F305.4484   
           JMT_BIO = 1                                                     ORH1F305.4485   
           IMT_BIO = 1                                                     ORH1F305.4486   
           SWNCOL_BIO = 1                                                  ORH1F305.4487   
        ENDIF                                                              ORH1F305.4488   
                                                                           ORH1F305.4489   
        IMT_CAR     = 1                                                    ORH1F305.4490   
        IMT_CAR_MIX = 1                                                    ORH1F305.4491   
        IMT_CAR_ICE = 1                                                    ORH1F305.4492   
        IMT_CAR_PIC = 1                                                    ORH1F305.4493   
        IF (L_OCARBON) THEN                                                ORH1F305.4494   
           IMT_CAR = IMT                                                   ORH1F305.4495   
           IF (L_OMIXLAY) IMT_CAR_MIX = IMT                                ORH1F305.4496   
           IF (L_SEAICE)  IMT_CAR_ICE = IMT                                ORH1F305.4497   
           IF (L_OPSEUDIC) IMT_CAR_PIC = IMT                               ORH1F305.4498   
        ENDIF                                                              ORH1F305.4499   
                                                                           ORH1F305.4500   
                                                                           ORH1F305.4501   
        IF (L_OFREESFC) THEN                                               ORH1F305.4502   
           IMT_FSF = IMT                                                   ORH1F305.4503   
           JMT_FSF = JMT                                                   ORH1F305.4504   
          JMTM1_FSF = JMTM1                                                ORL1F404.131    
          LSEG = 0                                                         ORL1F404.132    
        ELSE                                                               ORH1F305.4505   
           IMT_FSF = 1                                                     ORH1F305.4506   
           JMT_FSF = 1                                                     ORH1F305.4507   
          JMTM1_FSF = 1                                                    ORL1F404.133    
          LSEGFS = 0                                                       ORL1F404.134    
        ENDIF                                                              ORH1F305.4508   
                                                                           ORH1F305.4509   
        IF (L_ONOCLIN.OR.L_OFREESFC) THEN                                  ORH1F305.4510   
           IMT_STREAM = 1                                                  ORH1F305.4511   
           JMT_STREAM = 1                                                  ORH1F305.4512   
        ELSE                                                               ORH1F305.4513   
           IMT_STREAM = IMT                                                ORH1F305.4514   
           JMT_STREAM = JMT                                                ORH1F305.4515   
        ENDIF                                                              ORH1F305.4516   
                                                                           ORH1F305.4517   
        IF (.NOT.L_ONOCLIN) THEN                                           ORH1F305.4518   
           JMT_CLN = JMT                                                   ORH1F305.4519   
           SWNCOL_CLN = ICOL_CYC                                           ORH1F305.4520   
        ELSE                                                               ORH1F305.4521   
           JMT_CLN = 1                                                     ORH1F305.4522   
           SWNCOL_CLN = 1                                                  ORH1F305.4523   
        ENDIF                                                              ORH1F305.4524   
                                                                           ORH1F305.4525   
        IF((.NOT.(L_ONOCLIN)).AND.(L_OFREESFC)) THEN                       ORH1F305.4526   
           IMT_CLN_FSF = IMT                                               ORH1F305.4527   
           JMT_CLN_FSF = JMT                                               ORH1F305.4528   
        ELSE                                                               ORH1F305.4529   
           IMT_CLN_FSF = 1                                                 ORH1F305.4530   
           JMT_CLN_FSF = 1                                                 ORH1F305.4531   
        ENDIF                                                              ORH1F305.4532   
                                                                           ORH1F305.4533   
        IF (L_FLUXCORR) THEN                                               ORH1F305.4534   
            IMT_FLX = IMT                                                  ORH1F305.4535   
            JMT_FLX = JMT                                                  ORH1F305.4536   
        ELSE                                                               ORH1F305.4537   
            IMT_FLX = 1                                                    ORH1F305.4538   
            JMT_FLX = 1                                                    ORH1F305.4539   
        ENDIF                                                              ORH1F305.4540   
                                                                           ORH1F305.4541   
                                                                           ORH1F305.4542   
        IF (L_OISOPYC) THEN                                                ORH1F305.4543   
           KM_IPD = KM                                                     ORH1F305.4544   
           IMT_IPD = IMT                                                   ORH1F305.4545   
           NT_IPD = NT                                                     ORH1F305.4546   
           KMP1_IPD = KMP1                                                 ORH1F305.4547   
        ELSE                                                               ORH1F305.4548   
           KM_IPD = 1                                                      ORH1F305.4549   
           IMT_IPD = 1                                                     ORH1F305.4550   
           NT_IPD = 1                                                      ORH1F305.4551   
           KMP1_IPD = 1                                                    ORH1F305.4552   
        ENDIF                                                              ORH1F305.4553   
         IF (L_OISOPYCGM) THEN                                             OLA0F401.1      
           IMT_GM = IMT                                                    OLA0F401.2      
           KM_GM = KM                                                      OLA0F401.3      
           KMP1_GM = KMP1                                                  OLA0F401.4      
         ELSE                                                              OLA0F401.5      
           IMT_GM = 1                                                      OLA0F401.6      
           KM_GM = 1                                                       OLA0F401.7      
           KMP1_GM = 1                                                     OLA0F401.8      
         ENDIF                                                             OLA0F401.9      
        IF (L_OISOMOM) THEN                                                OOM1F405.28     
          IMT_ISO = IMT                                                    OOM1F405.29     
          KM_ISO = KM                                                      OOM1F405.30     
        ELSE                                                               OOM1F405.31     
          IMT_ISO = 1                                                      OOM1F405.32     
          KM_ISO = 1                                                       OOM1F405.33     
        ENDIF                                                              OOM1F405.34     
        IF (L_OISOGM) THEN                                                 OOM1F405.35     
          IMT_GMM = IMT                                                    OOM1F405.36     
          KM_GMM = KM                                                      OOM1F405.37     
          KMP1_GMM = KMP1                                                  OOM1F405.38     
        ELSE                                                               OOM1F405.39     
          IMT_GMM = 1                                                      OOM1F405.40     
          KM_GMM = 1                                                       OOM1F405.41     
          KMP1_GMM = 1                                                     OOM1F405.42     
        ENDIF                                                              OOM1F405.43     
                                                                           OLA0F401.10     
                                                                           ORH1F305.4554   
        IF (L_OBIMOM.or.L_OBIHARMGM) THEN                                  OOM3F405.11     
          IMT_BIH = IMT                                                    OOM3F405.12     
          KM_BIH = KM                                                      OOM3F405.13     
        ELSE                                                               OOM3F405.14     
          IMT_BIH = 1                                                      OOM3F405.15     
          KM_BIH = 1                                                       OOM3F405.16     
        ENDIF                                                              OOM3F405.17     
        IF (L_OMIXLAY.AND.L_OISOPYC) THEN                                  ORH1F305.4555   
            IMT_IPD_MIX = IMT                                              ORH1F305.4556   
            JMT_IPD_MIX = JMT                                              ORH1F305.4557   
        ELSE                                                               ORH1F305.4558   
            IMT_IPD_MIX = 1                                                ORH1F305.4559   
            JMT_IPD_MIX = 1                                                ORH1F305.4560   
        ENDIF                                                              ORH1F305.4561   
        IF ((.NOT.L_OISOPYC).AND.L_OMIXLAY) THEN                           ORH1F305.4562   
           IMT_NOIPD_MIX = IMT                                             ORH1F305.4563   
        ELSE                                                               ORH1F305.4564   
           IMT_NOIPD_MIX = 1                                               ORH1F305.4565   
        ENDIF                                                              ORH1F305.4566   
                                                                           ORH1F305.4567   
        IF (L_OISOPYC.AND.(.NOT.L_OMIXLAY)) THEN                           ORH1F305.4568   
           IMT_IPD_NOMIX = IMT                                             ORH1F305.4569   
           JMT_IPD_NOMIX = JMT                                             ORH1F305.4570   
        ELSE                                                               ORH1F305.4571   
           IMT_IPD_NOMIX = 1                                               ORH1F305.4572   
           JMT_IPD_NOMIX = 1                                               ORH1F305.4573   
        ENDIF                                                              ORH1F305.4574   
                                                                           ORH1F305.4575   
                                                                           ORH1F305.4576   
        IMT_PIIC_MIX = 1   ! Default value                                 ORH1F305.4577   
        IMT_PIC_MIX  = 1                                                   ORH1F305.4578   
        IMT_PIC      = 1                                                   ORH1F305.4579   
        IMT_ICE_MIX  = 1                                                   ORH1F305.4580   
        KM_ICE_MIX   = 1                                                   ORH1F305.4581   
        JMT_ICE      = 1                                                   ORH1F305.4582   
                                                                           ORH1F305.4583   
        IF (L_SEAICE.OR.L_OPSEUDIC) THEN                                   ORH1F305.4584   
            IMT_PIIC = IMT                                                 ORH1F305.4585   
        ELSE                                                               ORH1F305.4586   
            IMT_PIIC = 1                                                   ORH1F305.4587   
        ENDIF                                                              ORH1F305.4588   
                                                                           ORH1F305.4589   
        IF (L_OMIXLAY.AND.L_SEAICE) THEN                                   ORH1F305.4590   
            IMT_ICE_MIX = IMT                                              ORH1F305.4591   
            KM_ICE_MIX = KM                                                ORH1F305.4592   
            IMT_PIIC_MIX = IMT                                             ORH1F305.4593   
        ENDIF                                                              ORH1F305.4594   
                                                                           ORH1F305.4595   
        IF (L_OMIXLAY.AND.L_OPSEUDIC) THEN                                 ORH1F305.4596   
            IMT_PIC_MIX  = IMT                                             ORH1F305.4597   
            IMT_PIIC_MIX = IMT                                             ORH1F305.4598   
        ENDIF                                                              ORH1F305.4599   
                                                                           ORH1F305.4600   
        IF (L_OPSEUDIC) THEN                                               ORH1F305.4601   
            IMT_PIC  = IMT                                                 ORH1F305.4602   
        ENDIF                                                              ORH1F305.4603   
                                                                           ORH1F305.4604   
        IF (L_SEAICE) THEN                                                 ORH1F305.4605   
            IMT_ICE  = IMT                                                 ORH1F305.4606   
            JMT_ICE = JMT                                                  ORH1F305.4607   
            JMTM1_ICE=JMTM1                                                ODC1F405.191    
        ELSE                                                               ORH1F305.4608   
            IMT_ICE  = 1                                                   ORH1F305.4609   
            JMT_ICE = 1                                                    ORH1F305.4610   
            JMTM1_ICE=1                                                    ODC1F405.192    
        ENDIF                                                              ORH1F305.4611   
                                                                           ORH1F305.4612   
        IF (L_SEAICE.AND.L_OICECOUP) THEN                                  ORH1F305.4613   
            IMT_ICE_ICP = IMT                                              ORH1F305.4614   
            JMT_ICE_ICP = JMT                                              ORH1F305.4615   
        ELSE                                                               ORH1F305.4616   
            IMT_ICE_ICP = 1                                                ORH1F305.4617   
            JMT_ICE_ICP = 1                                                ORH1F305.4618   
        ENDIF                                                              ORH1F305.4619   
                                                                           ORH1F305.4620   
        IF (L_SEAICE.AND.(.NOT.(L_OICECOUP))) THEN                         ORH1F305.4621   
            IMT_ICE_NOICP = IMT                                            ORH1F305.4622   
            JMT_ICE_NOICP = JMT                                            ORH1F305.4623   
        ELSE                                                               ORH1F305.4624   
            IMT_ICE_NOICP = 1                                              ORH1F305.4625   
            JMT_ICE_NOICP = 1                                              ORH1F305.4626   
        ENDIF                                                              ORH1F305.4627   
                                                                           ORH1F305.4628   
        IF (L_SEAICE.AND.(L_OSOLAR.OR.L_OSOLARAL)) THEN                    ORH1F305.4629   
            IMT_ICE_SOSO = IMT                                             ORH1F305.4630   
        ELSE                                                               ORH1F305.4631   
            IMT_ICE_SOSO = 1                                               ORH1F305.4632   
        ENDIF                                                              ORH1F305.4633   
                                                                           ORH1F305.4634   
                                                                           ORH1F305.4635   
        IF (L_ICEFREEDR.AND.L_OMIXLAY) THEN                                ODC1F405.193    
            IMT_idr_MIX = IMT                                              ODC1F405.194    
            JMT_idr_MIX = JMT                                              ODC1F405.195    
            JMTM1_idr_MIX = JMTM1                                          ODC1F405.196    
        ELSE                                                               ORH1F305.4640   
            IMT_idr_MIX = 1                                                ODC1F405.197    
            JMT_idr_MIX = 1                                                ODC1F405.198    
            JMTM1_idr_MIX = 1                                              ODC1F405.199    
        ENDIF                                                              ORH1F305.4644   
                                                                           ORH1F305.4645   
        IF (L_ICEFREEDR) THEN                                              ODC1F405.200    
            IMT_idr   = IMT                                                ODC1F405.201    
            JMT_idr   = JMT                                                ODC1F405.202    
            JMTM1_idr   = JMTM1                                            ODC1F405.203    
        ELSE                                                               ORH1F305.4650   
            IMT_idr   = 1                                                  ODC1F405.204    
            JMT_idr   = 1                                                  ODC1F405.205    
            JMTM1_idr   = 1                                                ODC1F405.206    
        ENDIF                                                              ORH1F305.4654   
                                                                           ORH1F305.4655   
        IF (L_ORICHARD) THEN                                               ORH1F305.4656   
            IMT_RIC = IMT                                                  ORH1F305.4657   
            KM_RIC = KM                                                    ORH1F305.4658   
        ELSE                                                               ORH1F305.4659   
            IMT_RIC = 1                                                    ORH1F305.4660   
            KM_RIC =  1                                                    ORH1F305.4661   
        ENDIF                                                              ORH1F305.4662   
                                                                           ORH1F305.4663   
        IF (L_ORICHARD.OR.L_OIMPADDF.OR.L_OIMPDIF) THEN                    ORH1F305.4664   
            IMT_GNU = IMT                                                  ORH1F305.4665   
            KM_GNU = KM                                                    ORH1F305.4666   
        ELSE                                                               ORH1F305.4667   
            IMT_GNU = 1                                                    ORH1F305.4668   
            KM_GNU =  1                                                    ORH1F305.4669   
        ENDIF                                                              ORH1F305.4670   
                                                                           ORH1F305.4671   
        IF ((L_OISOPYCGM.AND.L_OVISBECK).or.                               OOM1F405.44     
     &                      (L_OISOGM.AND.L_OVISBECK)) THEN                OOM1F405.45     
            IMT_VIS = IMT                                                  OLA2F403.10     
            JMT_VIS = JMT                                                  OLA2F403.11     
        ELSE                                                               OLA2F403.12     
            IMT_VIS = 1                                                    OLA2F403.13     
            JMT_VIS = 1                                                    OLA2F403.14     
        ENDIF                                                              OLA2F403.15     
                                                                           OLA2F403.16     
        IF (L_ORICHARD.AND.L_OQLARGE) THEN                                 OLA3F403.12     
            IMT_QLARGE = IMT                                               OLA3F403.13     
        ELSE                                                               OLA3F403.14     
            IMT_QLARGE = 1                                                 OLA3F403.15     
        ENDIF                                                              OLA3F403.16     
                                                                           OLA3F403.17     
        IF (L_ORICHARD.AND.L_OFULARGE) THEN                                OOM1F405.409    
            IMT_FULARGE = IMT                                              OOM1F405.410    
        ELSE                                                               OOM1F405.411    
            IMT_FULARGE = 1                                                OOM1F405.412    
        ENDIF                                                              OOM1F405.413    
        IF (L_ORICHARD.AND.L_OIMPDIF) THEN                                 ORH1F305.4672   
            IMU_GNUZ = IMU                                                 ORH1F305.4673   
            KM_GNUZ  = KM                                                  ORH1F305.4674   
        ELSE                                                               ORH1F305.4675   
            IMU_GNUZ = 1                                                   ORH1F305.4676   
            KM_GNUZ  = 1                                                   ORH1F305.4677   
        ENDIF                                                              ORH1F305.4678   
                                                                           ORH1F305.4679   
                                                                           ORH1F305.4680   
        IF (L_OFILTER) THEN                                                ORH1F305.4681   
            IMTIMT_FLT = IMTIMT                                            ORH1F305.4682   
        ELSE                                                               ORH1F305.4683   
            IMTIMT_FLT = 1                                                 ORH1F305.4684   
        ENDIF                                                              ORH1F305.4685   
                                                                           ORH1F305.4686   
        IF (L_OCNASSM) THEN                                                ORH1F305.4687   
            IMT_ASM = IMT                                                  ORH1F305.4688   
            JMT_ASM = JMT                                                  ORH1F305.4689   
        ELSE                                                               ORH1F305.4690   
            IMT_ASM = 1                                                    ORH1F305.4691   
            JMT_ASM = 1                                                    ORH1F305.4692   
        ENDIF                                                              ORH1F305.4693   
                                                                           ORH1F305.4694   
!       IF (L_OROTATE) THEN                                                ORH1F305.4695   
!           IMT_ROT  = IMT                                                 ORH1F305.4696   
!       ELSE                                                               ORH1F305.4697   
!           IMT_ROT  = 1                                                   ORH1F305.4698   
!       ENDIF                                                              ORH1F305.4699   
        IF (L_OMIXLAY) THEN                                                ORH1F305.4700   
            IMT_MIX  = IMT                                                 ORH1F305.4701   
            JMT_MIX  = JMT                                                 ORH1F305.4702   
            IMT_NOMIX = 1                                                  ORH1F305.4703   
            KM_MIX   = KM                                                  ORH1F305.4704   
        ELSE                                                               ORH1F305.4705   
            IMT_MIX  = 1                                                   ORH1F305.4706   
            JMT_MIX  = 1                                                   ORH1F305.4707   
            IMT_NOMIX = IMT                                                ORH1F305.4708   
            KM_MIX   = 1                                                   ORH1F305.4709   
        ENDIF                                                              ORH1F305.4710   
*ENDIF                                                                     DERVSIZE.173    
*IF DEF,SLAB                                                               SCH0F405.53     
                                                                           SDR1F404.60     
! The code in this section has been set up for non-MPP runs of the         SDR1F404.61     
! SLAB model. It will need re-consideration when the SLAB code is          SDR1F404.62     
! modified to enable MPP runs.                                             SDR1F404.63     
!                                                                          SCH0F405.54     
! Note by CDH: the slab model is at present coded to be compatible         SCH0F405.55     
! with mpp runs of the atmosphere, but the slab model has been set         SCH0F405.56     
! up to run on 1 PE after the mpp atmos step. This is a quick and          SCH0F405.57     
! dirty 'temporary' (?) fix.                                               SCH0F405.58     
! This section will need reconsideration IF the slab model science         SCH0F405.59     
! code is made parallel.                                                   SCH0F405.60     
                                                                           SCH0F405.61     
                                                                           SDR1F404.64     
*IF DEF,MPP                                                                SCH0F405.62     
      JMT = glsize(2)                                                      SCH0F405.63     
C     JMT = P_ROWS    ! original argument                                  SCH0F405.64     
*ELSE                                                                      SCH0F405.65     
      JMT = P_ROWS                                                         SDR1F404.65     
*ENDIF                                                                     SCH0F405.66     
                                                                           SDR1F404.66     
      JMTM1 = JMT-1                                                        SDR1F404.67     
      JMTM2 = JMT-2                                                        SDR1F404.68     
      JMTP1 = JMT+1                                                        SDR1F404.69     
                                                                           SDR1F404.70     
      O_NPROC=1                                                            SDR1F404.71     
                                                                           SDR1F404.72     
      J_1 = 1                                                              SDR1F404.73     
      J_2 = 2                                                              SDR1F404.74     
      J_3 = 3                                                              SDR1F404.75     
      J_JMT    = JMT                                                       SDR1F404.76     
      J_JMTM1  = JMTM1                                                     SDR1F404.77     
      J_JMTM2  = JMTM2                                                     SDR1F404.78     
      J_JMTP1  = JMTP1                                                     SDR1F404.79     
      J_OFFSET = 0                                                         SDR1F404.80     
      JST      = 1                                                         SDR1F404.81     
      JFIN     = JMT                                                       SDR1F404.82     
      J_FROM_LOC = 0 ! These values are set later                          SDR1F404.83     
      J_TO_LOC   = 0 ! in non-mpp version of code.                         SDR1F404.84     
      JMT_GLOBAL = JMT                                                     SDR1F404.85     
      JMTM1_GLOBAL = JMTM1                                                 SDR1F404.86     
      JMTM2_GLOBAL = JMTM2                                                 SDR1F404.87     
      JMTP1_GLOBAL = JMTP1                                                 SDR1F404.88     
      O_MYPE = 0     ! Default value                                       SDR1F404.89     
      O_EW_HALO = 0  !  "        "                                         SDR1F404.90     
      O_NS_HALO = 0  !  "        "                                         SDR1F404.91     
      J_PE_JSTM1 = -1                                                      SDR1F404.92     
      J_PE_JSTM2 = -1                                                      SDR1F404.93     
      J_PE_JFINP1 = -1                                                     SDR1F404.94     
      J_PE_JFINP2 = -1                                                     SDR1F404.95     
*ENDIF                                                                     SDR1F404.96     
*IF DEF,WAVE                                                               WRB1F401.68     
C                                                                          WRB1F401.69     
C      Set header values                                                   WRB1F401.70     
C                                                                          WRB1F401.71     
      W_LEN1_LEVDEPC=MAX(NANG,NFRE)                                        WRB1F401.72     
      W_LEN1_LEVDEPC=NFRE ! hard-wire ???                                  WRB1F401.73     
      W_LEN1_ROWDEPC=0                                                     WRB1F401.74     
      W_LEN1_COLDEPC=0                                                     WRB1F401.75     
      W_LEN1_FLDDEPC=0                                                     WRB1F401.76     
*ENDIF                                                                     WRB1F401.77     
CLL LAM DERIVED SIZES START                                                DERVSIZE.174    
*IF DEF,MPP                                                                GPB0F401.169    
! The standard model only allocates P_ROWS-2*RIMWIDTH rows of data         GPB0F401.170    
! for the East/West LBCs - in the MPP code we allocate a full              GPB0F401.171    
! P_ROWS for each East/West LBC (both for THETA and U data).               GPB0F401.172    
! The size of LENRIMA for U fields is a little complex, so we              GPB0F401.173    
! precalculate it and put it also in TYPSIZE.                              GPB0F401.174    
! We also set up some sizes for the global data (everything                GPB0F401.175    
! else refers to the local data on this processor only)                    GPB0F401.176    
                                                                           GPB0F401.177    
*ENDIF                                                                     GPB0F401.178    
*IF -DEF,MPP                                                               GPB0F305.34     
      LENRIMA=(P_ROWS+ROW_LENGTH-2*RIMWIDTHA)*2*RIMWIDTHA                  DERVSIZE.175    
*ELSE                                                                      GPB0F305.35     
      LENRIMA=(blsizep(1)+blsizep(2))*2*RIMWIDTHA                          GPB0F401.179    
      IF (atright) THEN                                                    GPB0F401.180    
        LENRIMA_U=(blsizep(1)-1+blsizep(2))*2*RIMWIDTHA                    GPB0F401.181    
      ELSE                                                                 GPB0F401.182    
        LENRIMA_U=(blsizep(1)+blsizep(2))*2*RIMWIDTHA                      GPB0F401.183    
      ENDIF                                                                GPB0F401.184    
      global_LENRIMA=(glsize(1)+glsize(2)-2*RIMWIDTHA)*2*RIMWIDTHA         GPB0F401.185    
*ENDIF                                                                     GPB0F305.38     
      IF (.NOT.L_LSPICE_BDY) THEN                                          ARB1F404.153    
      RIMFLDSA=1+P_LEVELS*3+TR_VARS*TR_LEVELS+Q_LEVELS                     DERVSIZE.177    
      ELSE                                                                 ARB1F404.154    
        RIMFLDSA=1+P_LEVELS*3+TR_VARS*TR_LEVELS+Q_LEVELS*2                 ARB1F404.155    
      END IF                                                               ARB1F404.156    
      BOUNDFLDS=2+FLOORFLDSA                                               GSI1F405.101    
      IF (.NOT.L_LSPICE_BDY) THEN                                          ARB1F404.157    
      RIM_LOOKUPSA=5+TR_VARS                                               DERVSIZE.181    
      ELSE                                                                 ARB1F404.158    
        RIM_LOOKUPSA=6+TR_VARS                                             ARB1F404.159    
      END IF                                                               ARB1F404.160    
      BOUND_LOOKUPSA=RIM_LOOKUPSA*NRIM_TIMESA+FLOORFLDSA*NFLOOR_TIMESA     DERVSIZE.183    
      BOUND_LOOKUPSW= 1                                                    WRB1F401.78     
*IF -DEF,MPP                                                               GPB0F401.186    
      LENRIMDATA_A=LENRIMA*RIMFLDSA-8*RIMWIDTHA*P_LEVELS                   DERVSIZE.185    
*ELSE                                                                      GPB0F401.187    
      IF (atright) THEN                                                    GPB0F401.188    
        LENRIMDATA_A=LENRIMA*RIMFLDSA-4*RIMWIDTHA*P_LEVELS                 GPB0F401.189    
      ELSE                                                                 GPB0F401.190    
        LENRIMDATA_A=LENRIMA*RIMFLDSA                                      GPB0F401.191    
      ENDIF                                                                GPB0F401.192    
      global_LENRIMDATA_A=global_LENRIMA*RIMFLDSA-8*RIMWIDTHA*P_LEVELS     GPB0F401.193    
*ENDIF                                                                     GPB0F401.194    
*IF DEF,OCEAN                                                              GSI1F405.102    
                                                                           GSI1F405.103    
!L Calculate sizes for ocean boundary files; LENRIMO, LENRIMO_U            GSI1F405.104    
!  RIM_LOOKUPSO, BOUND_LOOKUPSO, LENRIMDATA_O                              GSI1F405.105    
                                                                           GSI1F405.106    
                                                                           GSI1F405.107    
! 1. calculate numside_rowso and numside_colso, the number of              GSI1F405.108    
!    tracer grid and velocity grid boundary fields and the                 GSI1F405.109    
!    number of lookup tables                                               GSI1F405.110    
      call  o_lbc_sizes( km, nt, rimwidtho,                                GSI1F405.111    
     #       numside_rowso, numside_colso,                                 GSI1F405.112    
     #       RIM_LOOKUPSO, n_obdy_t_grd, n_obdy_u_grd )                    GSI1F405.113    
                                                                           GSI1F405.114    
! 2. calculate LENRIMO and LENRIMO_U                                       GSI1F405.115    
                                                                           GSI1F405.116    
*IF -DEF,MPP                                                               GSI1F405.117    
      lenrimo = imt*numside_rowso+jmt*numside_colso                        GSI1F405.118    
      lenrimo_u = (imt-1)*numside_rowso+(jmt-1)*numside_colso              GSI1F405.119    
*ELSE                                                                      GSI1F405.120    
      write(6,*)'decomp_standard_ocean',decomp_standard_ocean              GSI1F405.121    
      IF (decomp_db_set(decomp_standard_ocean)) THEN                       GSI1F405.122    
        nohalo_IMT=decomp_db_g_blsizep(1,mype,decomp_standard_ocean)       GSI1F405.123    
        write(6,*)'nohalo_imt',nohalo_imt                                  GSI1F405.124    
        nohalo_JMT=decomp_db_g_blsizep(2,mype,decomp_standard_ocean)       GSI1F405.125    
        write(6,*)'nohalo_jmt',nohalo_jmt                                  GSI1F405.126    
        glob_IMT=decomp_db_glsize(1,decomp_standard_ocean)                 GSI1F405.127    
        glob_JMT=decomp_db_glsize(2,decomp_standard_ocean)                 GSI1F405.128    
        LENRIMO=nohalo_IMT*numside_rowso + nohalo_JMT*numside_colso        GSI1F405.129    
C most local processors have same number of rows of velocity               GSI1F405.130    
C data as tracers                                                          GSI1F405.131    
        LENRIMO_U=(nohalo_IMT-1)*numside_rowso +                           GSI1F405.132    
     &            (nohalo_JMT)*numside_colso                               GSI1F405.133    
        global_LENRIMO=glob_IMT*numside_rowso+glob_JMT*numside_colso       GSI1F405.134    
        global_LENRIMO_U = (glob_IMT-1)*numside_rowso +                    GSI1F405.135    
     &                     (glob_JMT-1)*numside_colso                      GSI1F405.136    
      ELSE                                                                 GSI1F405.137    
        LENRIMO = IMT*numside_rowso + jmt*numside_colso                    GSI1F405.138    
        LENRIMO_U = (IMT-1)*numside_rowso + (jmt-1)*numside_colso          GSI1F405.139    
        global_LENRIMO = LENRIMO                                           GSI1F405.140    
        global_LENRIMO_U = LENRIMO_U                                       GSI1F405.141    
      ENDIF                                                                GSI1F405.142    
*ENDIF                                                                     GSI1F405.143    
                                                                           GSI1F405.144    
! 3.  Set rimfldso, BOUND_LOOKUPSO and LENRIMDATA_O                        GSI1F405.145    
      rimfldso = n_obdy_t_grd + n_obdy_u_grd                               GSI1F405.146    
                                                                           GSI1F405.147    
      BOUND_LOOKUPSO = RIM_LOOKUPSO * NRIM_TIMESO                          GSI1F405.148    
                                                                           GSI1F405.149    
      LENRIMDATA_O = lenrimo*n_obdy_t_grd + lenrimo_u*n_obdy_u_grd         GSI1F405.150    
*IF DEF,MPP                                                                GSI1F405.151    
      global_LENRIMDATA_O = global_lenrimo*n_obdy_t_grd +                  GSI1F405.152    
     &                                 global_lenrimo_u*n_obdy_u_grd       GSI1F405.153    
*ENDIF                                                                     GSI1F405.154    
*ENDIF                                                                     GSI1F405.155    
CLL LAM DERIVED SIZES END                                                  DERVSIZE.187    
      RETURN                                                               DERVSIZE.188    
      END                                                                  DERVSIZE.189    
*ENDIF                                                                     DERVSIZE.190