*IF DEF,A04_2B,OR,DEF,A04_2C                                               GLSPP_2B.2      
C (c) CROWN COPYRIGHT 1995, METEOROLOGICAL OFFICE, All Rights Reserved.    GTS2F400.14963  
C                                                                          GTS2F400.14964  
C Use, duplication or disclosure of this code is subject to the            GTS2F400.14965  
C restrictions as set forth in the contract.                               GTS2F400.14966  
C                                                                          GTS2F400.14967  
C                Meteorological Office                                     GTS2F400.14968  
C                London Road                                               GTS2F400.14969  
C                BRACKNELL                                                 GTS2F400.14970  
C                Berkshire UK                                              GTS2F400.14971  
C                RG12 2SZ                                                  GTS2F400.14972  
C                                                                          GTS2F400.14973  
C If no contract has been raised with this copy of the code, the use,      GTS2F400.14974  
C duplication or disclosure of it is strictly prohibited.  Permission      GTS2F400.14975  
C to do so must first be obtained in writing from the Head of Numerical    GTS2F400.14976  
C Modelling at the above address.                                          GTS2F400.14977  
C ******************************COPYRIGHT******************************    GTS2F400.14978  
C                                                                          GTS2F400.14979  
!   SUBROUTINE GLUE_LSPP------------------------------------------------   GLSPP_2B.3      
!                                                                          GLSPP_2B.4      
!   Level 3 control routine                                                GLSPP_2B.5      
!                                                                          GLSPP_2B.6      
!   Purpose: Calculate large-scale (dynamical) precipitation. LS_PPNC is   GLSPP_2B.7      
!            the gather/scatter routine which then calls LSP_EVAP,         GLSPP_2B.8      
!            LSP_FRMT,LSP_FORM.                                            GLSPP_2B.9      
!            GLUE is an extra level of control routine to avoid using      GLSPP_2B.10     
!            *IF DEF around calls to different LS_PPN versions, as per     GLSPP_2B.11     
!            S. Foreman's 22/8/94 proposal for plug compatibility.         GLSPP_2B.12     
!                                                                          GLSPP_2B.13     
!   A04_2B : Change to LSP_EVAP, fpl = 0.                                  GLSPP_2B.14     
!   A04_2C : Change to LSP_EVAP, fpl = 1.                                  GLSPP_2B.15     
!                                                                          GLSPP_2B.16     
!   Called by : LSPP_CTL1                                                  GLSPP_2B.17     
!                                                                          GLSPP_2B.18     
!   Code description: Language FORTRAN 77 + extensions.                    GLSPP_2B.19     
!                                                                          GLSPP_2B.20     
!   Programming standard: Unified Model Documentation Paper No 3,          GLSPP_2B.21     
!                         Version 6.                                       GLSPP_2B.22     
!                                                                          GLSPP_2B.23     
!   Author: Andrew Bushell     Reviewer: C. Wilson                         GLSPP_2B.24     
!                                                                          GLSPP_2B.25     
!   Modification History from UM Version 4.0:                              GLSPP_2B.26     
!    Version      Date                                                     GLSPP_2B.27     
!                                                                          GLSPP_2B.28     
!   4.1  06/06/96  Add Sulphur Cycle tracers for wet scavenging in         AWO4F401.91     
!                  Version 2D of LS_PPN                    M. Woodage      AWO4F401.92     
!   4.4  08/09/97  Add RHCRIT argument   D.Wilson                          ADM3F404.22     
!   4.5  03/09/98  Added dummy 3D rain and snow variables. D.Wilson        ADM0F405.16     
!   4.5  28/09/98   Add NH3 and soot variables to argument list            ADM0F405.17     
!                   (dummies as S Cycle and soot not in A04_2B) MJW        ADM0F405.18     
!   4.5  01/05/98  Restrict murk aerosol calculations to aerosol           APC0F405.773    
!                  levels=boundary levels. P.Clark                         APC0F405.774    
!   4.5  13/05/98  Altered call to glue routine (dummy variables).         ASK1F405.244    
!                                  S. Cusack                               ASK1F405.245    
!                                                                          GLSPP_2B.29     
!   System components covered :                                            GLSPP_2B.30     
!                                                                          GLSPP_2B.31     
!   System task :                                                          GLSPP_2B.32     
!                                                                          GLSPP_2B.33     
!   Documentation: UMDP No.                                                GLSPP_2B.34     
!                                                                          GLSPP_2B.35     
!  END -----------------------------------------------------------------   GLSPP_2B.36     
!                                                                          GLSPP_2B.37     

      SUBROUTINE GLUE_LSPP(                                                 2,3GLSPP_2B.38     
     & AK,BK,CF,DELTA_AK,DELTA_BK,PSTAR,TIMESTEP                           GLSPP_2B.39     
     &,BLAND,CW_SEA,CW_LAND                                                GLSPP_2B.40     
     &,LS_GRID_QC,LS_BS                                                    GLSPP_2B.41     
     &,RHCRIT,DUMMY, L_DUMMY                                               ASK1F405.246    
     &,Q_LEVELS,PFIELD                                                     GLSPP_2B.42     
     &,POINTS,K1STPT,LSPICE_DIM1,LSPICE_DIM2,A_LEVELS,Q,QCF,QCL,T          ADM0F405.19     
     &,SO2,L_SULPC_SO2                                                     AWO4F401.93     
     & ,NH3,L_SULPC_NH3                                                    AWO4F405.122    
     &,SO4_AIT,SO4_ACC,SO4_DIS                                             AWO4F401.94     
     & ,AGED_SOOT,L_SOOT                                                   AWO4F405.123    
     &,AEROSOL,L_MURK,LSRAIN,LSSNOW,LSRAIN3D,LSSNOW3D                      ADM0F405.20     
     &,LSCAV_SO2,LSCAV_SO4AIT,LSCAV_SO4ACC,LSCAV_SO4DIS                    AWO4F401.95     
     & ,LSCAV_NH3,LSCAV_AGEDSOOT                                           AWO4F405.124    
     &,ERROR                                                               GLSPP_2B.45     
     & )                                                                   GLSPP_2B.46     
      IMPLICIT NONE                                                        GLSPP_2B.47     
!-----------------------------------------------------------------------   GLSPP_2B.48     
! Some of the following variables are dummy, for use in other LS_PPN       GLSPP_2B.49     
! versions.                                                                GLSPP_2B.50     
!-----------------------------------------------------------------------   GLSPP_2B.51     
! IN variables                                                             GLSPP_2B.52     
!-----------------------------------------------------------------------   GLSPP_2B.53     
      INTEGER Q_LEVELS         ! No. of "wet" levels in the model.         GLSPP_2B.54     
!                                                                          GLSPP_2B.55     
      INTEGER POINTS           ! No. of gridpoints being processed.        GLSPP_2B.56     
!                                                                          GLSPP_2B.57     
      INTEGER PFIELD           ! No. of points in global field (at one     GLSPP_2B.58     
!                                vertical level).                          GLSPP_2B.59     
      INTEGER K1STPT           ! First gridpoint processed within          GLSPP_2B.60     
!                                within complete field.                    GLSPP_2B.61     
      INTEGER A_LEVELS         ! No.of aerosol levels used                 APC0F405.775    
      INTEGER LSPICE_DIM1       ! Dimension of dummy LSRAIN3D              ADM0F405.21     
!                                 and LSSNOW3D.                            ADM0F405.22     
      INTEGER LSPICE_DIM2       ! Dimension of dummy LSRAIN3D              ADM0F405.23     
!                                 and LSSNOW3D.                            ADM0F405.24     
      REAL CF(PFIELD,Q_LEVELS) ! Cloud fraction.                           GLSPP_2B.62     
!                                                                          GLSPP_2B.63     
      REAL PSTAR(PFIELD)       ! Surface pressure (Pa).                    GLSPP_2B.64     
!                                                                          GLSPP_2B.65     
      REAL AK(Q_LEVELS)        ! Hybrid co-ordinate for centre of layer.   GLSPP_2B.66     
!                                                                          GLSPP_2B.67     
      REAL BK(Q_LEVELS)        ! Hybrid co-ordinate for centre of layer.   GLSPP_2B.68     
!                                                                          GLSPP_2B.69     
      REAL RHCRIT(Q_LEVELS)    ! Critical humidity for cloud formation.    ADM3F404.24     
!                                                                          ADM3F404.25     
      REAL DUMMY(PFIELD,Q_LEVELS)    ! Dummy variable in this version      ASK1F405.247    
!                                                                          ASK1F405.248    
      REAL DELTA_AK(Q_LEVELS)  ! Change of hybrid co-ord across layer.     GLSPP_2B.70     
!                                (Upper minus lower).                      GLSPP_2B.71     
      REAL DELTA_BK(Q_LEVELS)  ! Change of hybrid co-ord across layer.     GLSPP_2B.72     
!                                (Upper minus lower).                      GLSPP_2B.73     
      REAL LS_GRID_QC(PFIELD,Q_LEVELS) ! DUMMY VARIABLE.                   GLSPP_2B.74     
      REAL LS_BS(PFIELD,Q_LEVELS)      ! DUMMY VARIABLE.                   GLSPP_2B.75     
!                                                                          GLSPP_2B.76     
      REAL TIMESTEP            ! Timestep (sec).                           GLSPP_2B.77     
!                                                                          GLSPP_2B.78     
      REAL CW_SEA              ! Threshold cloud liquid water content      GLSPP_2B.79     
!                                over sea for conversion to ppn            GLSPP_2B.80     
!                                (kg water per m**3)                       GLSPP_2B.81     
      REAL CW_LAND             ! Threshold cloud liquid water content      GLSPP_2B.82     
!                                over land for conversion to ppn           GLSPP_2B.83     
!                                (kg water per m**3)                       GLSPP_2B.84     
      LOGICAL BLAND(PFIELD)    ! Land/sea mask                             GLSPP_2B.85     
!                                                                          GLSPP_2B.86     
      LOGICAL L_MURK           ! Aerosol needs scavenging.                 GLSPP_2B.87     
!                                                                          GLSPP_2B.88     
!                                                                          AWO4F401.96     
      LOGICAL L_SULPC_SO2   ! Sulphur Cycle on, tracers to be scavenged    AWO4F401.97     
     &        ,L_SULPC_NH3                                                 AWO4F405.125    
     &        ,L_SOOT                                                      AWO4F405.126    
                                                                           AWO4F401.98     
      LOGICAL L_DUMMY ! Dummy variable                                     ASK1F405.249    
!                                                                          ASK1F405.250    
!-----------------------------------------------------------------------   GLSPP_2B.89     
! INOUT variables                                                          GLSPP_2B.90     
!-----------------------------------------------------------------------   GLSPP_2B.91     
      REAL Q(PFIELD,Q_LEVELS)        ! Specific humidity                   GLSPP_2B.92     
!                                      (kg water/kg air).                  GLSPP_2B.93     
      REAL QCF(PFIELD,Q_LEVELS)      ! Cloud ice (kg per kg air).          GLSPP_2B.94     
!                                                                          GLSPP_2B.95     
      REAL QCL(PFIELD,Q_LEVELS)      ! Cloud liquid water (kg/ kg air).    GLSPP_2B.96     
!                                                                          GLSPP_2B.97     
      REAL T(PFIELD,Q_LEVELS)        ! Temperature (K).                    GLSPP_2B.98     
!                                                                          GLSPP_2B.99     
      REAL AEROSOL(PFIELD,Q_LEVELS)  ! Aerosol (K).                        GLSPP_2B.100    
!                                                                          GLSPP_2B.101    
      REAL                  ! Sulphur Cycle tracers for wet scavenging     AWO4F401.99     
     &    SO2(PFIELD,Q_LEVELS)                                             AWO4F401.100    
     &   ,SO4_AIT(PFIELD,Q_LEVELS)                                         AWO4F401.101    
     &   ,SO4_ACC(PFIELD,Q_LEVELS)                                         AWO4F401.102    
     &   ,SO4_DIS(PFIELD,Q_LEVELS)                                         AWO4F401.103    
     &   ,NH3(PFIELD,Q_LEVELS)                                             AWO4F405.127    
     &   ,AGED_SOOT(PFIELD,Q_LEVELS)                                       AWO4F405.128    
!                                                                          AWO4F401.104    
!-----------------------------------------------------------------------   GLSPP_2B.102    
! OUT variables                                                            GLSPP_2B.103    
!-----------------------------------------------------------------------   GLSPP_2B.104    
      REAL LSRAIN(PFIELD)   ! Surface rainfall rate (kg per sq m per s).   GLSPP_2B.105    
!                                                                          GLSPP_2B.106    
      REAL LSSNOW(PFIELD)   ! Surface snowfall rate (kg per sq m per s).   GLSPP_2B.107    
      REAL LSRAIN3D(LSPICE_DIM1,LSPICE_DIM2) ! Dummy                       ADM0F405.25     
      REAL LSSNOW3D(LSPICE_DIM1,LSPICE_DIM2) ! Dummy                       ADM0F405.26     
!                                                                          GLSPP_2B.108    
      REAL                  ! column totals of scavenged S Cycle tracers   AWO4F401.105    
     &    LSCAV_SO2(PFIELD)                                                AWO4F401.106    
     &   ,LSCAV_SO4AIT(PFIELD)                                             AWO4F401.107    
     &   ,LSCAV_SO4ACC(PFIELD)                                             AWO4F401.108    
     &   ,LSCAV_SO4DIS(PFIELD)                                             AWO4F401.109    
     &   ,LSCAV_NH3(PFIELD)                                                AWO4F405.129    
     &   ,LSCAV_AGEDSOOT(PFIELD)                                           AWO4F405.130    
!                                                                          AWO4F401.110    
      INTEGER ERROR         ! Return code - 0 if OK,                       GLSPP_2B.109    
!                                           1 if bad arguments.            GLSPP_2B.110    
!                                                                          GLSPP_2B.111    
!    External subroutine called ----------------------------------------   GLSPP_2B.112    
      EXTERNAL  LS_PPN                                                     GLSPP_2B.113    
!----------------------------------------------------------------------    GLSPP_2B.114    
!                                                                          GLSPP_2B.115    
      CALL LS_PPN(                                                         GLSPP_2B.116    
! Input data not changed on output                                         GLSPP_2B.117    
     & AK,BK,CF                                                            GLSPP_2B.118    
     &,DELTA_AK,DELTA_BK,PSTAR,TIMESTEP                                    GLSPP_2B.119    
     &,BLAND,CW_SEA,CW_LAND                                                GLSPP_2B.120    
! Size and control data                                                    GLSPP_2B.121    
     &,Q_LEVELS,PFIELD,POINTS,K1STPT,A_LEVELS                              APC0F405.776    
! Input data changed on output                                             GLSPP_2B.123    
     &,Q,QCF,QCL,T                                                         GLSPP_2B.124    
     &,AEROSOL,L_MURK                                                      GLSPP_2B.125    
! Output data                                                              GLSPP_2B.126    
     &,LSRAIN,LSSNOW                                                       GLSPP_2B.127    
     &,ERROR)                                                              GLSPP_2B.128    
!                                                                          GLSPP_2B.129    
      RETURN                                                               GLSPP_2B.130    
      END                                                                  GLSPP_2B.131    
*ENDIF                                                                     GLSPP_2B.132