*IF DEF,CONTROL                                                            PSLIMS1.2      
C ******************************COPYRIGHT******************************    GTS2F400.12684  
C (c) CROWN COPYRIGHT 1995, METEOROLOGICAL OFFICE, All Rights Reserved.    GTS2F400.12685  
C                                                                          GTS2F400.12686  
C Use, duplication or disclosure of this code is subject to the            GTS2F400.12687  
C restrictions as set forth in the contract.                               GTS2F400.12688  
C                                                                          GTS2F400.12689  
C                Meteorological Office                                     GTS2F400.12690  
C                London Road                                               GTS2F400.12691  
C                BRACKNELL                                                 GTS2F400.12692  
C                Berkshire UK                                              GTS2F400.12693  
C                RG12 2SZ                                                  GTS2F400.12694  
C                                                                          GTS2F400.12695  
C If no contract has been raised with this copy of the code, the use,      GTS2F400.12696  
C duplication or disclosure of it is strictly prohibited.  Permission      GTS2F400.12697  
C to do so must first be obtained in writing from the Head of Numerical    GTS2F400.12698  
C Modelling at the above address.                                          GTS2F400.12699  
C                                                                          GTS2F400.12700  
!+Returns the limits of the pseudo levels                                  PSLIMS1.3      
! Subroutine Interface:                                                    PSLIMS1.4      

      SUBROUTINE PSLIMS(IPFIRST,IPLAST,IFIRST,ILAST)                        1PSLIMS1.5      
      IMPLICIT NONE                                                        PSLIMS1.6      
                                                                           PSLIMS1.7      
! Description:                                                             PSLIMS1.8      
!                                                                          PSLIMS1.9      
! Method:                                                                  PSLIMS1.10     
!                                                                          PSLIMS1.11     
! Current code owner:  S.J.Swarbrick                                       PSLIMS1.12     
!                                                                          PSLIMS1.13     
! History:                                                                 PSLIMS1.14     
! Version   Date       Comment                                             PSLIMS1.15     
! =======   ====       =======                                             PSLIMS1.16     
!   3.5     Apr. 95    Original code.  S.J.Swarbrick                       PSLIMS1.17     
!   4.0     03/01/96   Use SWBND/LWBND to get limits for pseudo levels     GDR8F400.6      
!                      involving SW/LW radiation bands. D. Robinson        GDR8F400.7      
!   4.1     May 96     Include last pseudo level codes for wave model      GSS3F401.974    
!                                                       S.J.Swarbrick      GSS3F401.975    
!   4.4     10/9/97    Include last pseudo level codes for sulphate        ABX1F404.1      
!                      loading patterns and surface types                  ABX1F404.2      
!                                                       R.A.Betts          ABX1F404.3      
!                                                                          PSLIMS1.18     
!  Code description:                                                       PSLIMS1.19     
!    FORTRAN 77 + common Fortran 90 extensions.                            PSLIMS1.20     
!    Written to UM programming standards version 7.                        PSLIMS1.21     
!                                                                          PSLIMS1.22     
!  System component covered:                                               PSLIMS1.23     
!  System task:               Sub-Models Project                           PSLIMS1.24     
!                                                                          PSLIMS1.25     
! Subroutine arguments:                                                    PSLIMS1.26     
!   Scalar arguments with intent(in)                                       GSS3F401.976    
      INTEGER IPFIRST                                                      PSLIMS1.30     
      INTEGER IPLAST                                                       PSLIMS1.31     
                                                                           PSLIMS1.32     
!   Scalar arguments with intent(out):                                     PSLIMS1.33     
      INTEGER IFIRST                                                       PSLIMS1.35     
      INTEGER ILAST                                                        PSLIMS1.36     
                                                                           PSLIMS1.37     
! Global variables:                                                        PSLIMS1.38     
*CALL CSUBMODL                                                             PSLIMS1.40     
*CALL VERSION                                                              PSLIMS1.41     
*CALL TYPSIZE                                                              GSS3F401.977    
*CALL CSENARIO                                                             ABX1F404.4      
*CALL NSTYPES                                                              ABX1F404.5      
*CALL MODEL                                                                PSLIMS1.42     
                                                                           PSLIMS1.43     
!- End of Header --------------------------------------------------        PSLIMS1.44     
                                                                           PSLIMS1.45     
      IF(IPFIRST.EQ.1) THEN                                                PSLIMS1.46     
        IFIRST=1                                                           PSLIMS1.47     
      ELSE IF(IPFIRST.EQ.21) THEN                                          PSLIMS1.48     
        IFIRST=AASPF(1)                                                    PSLIMS1.49     
      ELSE IF(IPFIRST.EQ.22) THEN                                          PSLIMS1.50     
        IFIRST=AASPF(2)                                                    PSLIMS1.51     
      ELSE IF(IPFIRST.EQ.23) THEN                                          PSLIMS1.52     
        IFIRST=AASPF(3)                                                    PSLIMS1.53     
      ELSE IF(IPFIRST.EQ.24) THEN                                          PSLIMS1.54     
        IFIRST=AASPF(4)                                                    PSLIMS1.55     
      ELSE IF(IPFIRST.EQ.25) THEN                                          PSLIMS1.56     
        IFIRST=AASPF(5)                                                    PSLIMS1.57     
      ELSE                                                                 PSLIMS1.58     
        write(6,*) 'S: PSLIMS(PRELIM).INVALID IPFIRST. NO CHECKING'        PSLIMS1.59     
        IFIRST=1                                                           PSLIMS1.60     
      END IF                                                               PSLIMS1.61     
                                                                           PSLIMS1.62     
      IF(IPLAST.EQ.1) THEN                                                 PSLIMS1.63     
        ILAST=SWBND                                                        GDR8F400.8      
      ELSE IF(IPLAST.EQ.2) THEN                                            PSLIMS1.65     
        ILAST=LWBND                                                        GDR8F400.9      
      ELSE IF(IPLAST.EQ.3) THEN                                            PSLIMS1.67     
        ILAST=OCEAN_BASINS*MEAD_TYPES                                      PSLIMS1.68     
      ELSE IF(IPLAST.EQ.4) THEN                                            GSS3F401.978    
!Wave model: frequency pseudo levels                                       GSS3F401.979    
        ILAST=NFRE                                                         GSS3F401.980    
      ELSE IF(IPLAST.EQ.5) THEN                                            GSS3F401.981    
!Wave model: wave train pseudo levels                                      GSS3F401.982    
        ILAST=NWTRAIN                                                      GSS3F401.983    
      ELSE IF(IPLAST.EQ.6) THEN                                            ABX1F404.6      
!Sulphate loading patterns                                                 ABX1F404.7      
        ILAST=NSULPAT                                                      ABX1F404.8      
      ELSE IF(IPLAST.EQ.7) THEN                                            ABX1F404.9      
!Direct vegetation parametrization: all surface types                      ABX1F404.10     
        ILAST=NTYPE                                                        ABX1F404.11     
      ELSE IF(IPLAST.EQ.8) THEN                                            ABX1F404.12     
!Direct vegetation parametrization: only plant functional types            ABX1F404.13     
        ILAST=NPFT                                                         ABX1F404.14     
      ELSE IF(IPLAST.EQ.9) THEN                                            ABX1F404.15     
!Direct vegetation parametrization: all surface types except ice           ABX1F404.16     
        ILAST=NTYPE-1                                                      ABX1F404.17     
      ELSE IF(IPLAST.EQ.21) THEN                                           PSLIMS1.69     
        ILAST=AASPL(1)                                                     PSLIMS1.70     
      ELSE IF(IPLAST.EQ.22) THEN                                           PSLIMS1.71     
        ILAST=AASPL(2)                                                     PSLIMS1.72     
      ELSE IF(IPLAST.EQ.23) THEN                                           PSLIMS1.73     
        ILAST=AASPL(3)                                                     PSLIMS1.74     
      ELSE IF(IPLAST.EQ.24) THEN                                           PSLIMS1.75     
        ILAST=AASPL(4)                                                     PSLIMS1.76     
      ELSE IF(IPLAST.EQ.25) THEN                                           PSLIMS1.77     
        ILAST=AASPL(5)                                                     PSLIMS1.78     
      ELSE                                                                 PSLIMS1.79     
        write(6,*) 'S: PSLIMS(PRELIM). INVALID IPLAST. NO CHECKING'        PSLIMS1.80     
        ILAST=1000                                                         PSLIMS1.81     
      END IF                                                               PSLIMS1.82     
                                                                           PSLIMS1.83     
      RETURN                                                               PSLIMS1.84     
      END                                                                  PSLIMS1.85     
*ENDIF                                                                     PSLIMS1.86