*IF DEF,A04_3B                                                             ADM0F405.1      
C (c) CROWN COPYRIGHT 1997, METEOROLOGICAL OFFICE, All Rights Reserved.    GLSPP_3A.3      
C                                                                          GLSPP_3A.4      
C Use, duplication or disclosure of this code is subject to the            GLSPP_3A.5      
C restrictions as set forth in the contract.                               GLSPP_3A.6      
C                                                                          GLSPP_3A.7      
C                Meteorological Office                                     GLSPP_3A.8      
C                London Road                                               GLSPP_3A.9      
C                BRACKNELL                                                 GLSPP_3A.10     
C                Berkshire UK                                              GLSPP_3A.11     
C                RG12 2SZ                                                  GLSPP_3A.12     
C                                                                          GLSPP_3A.13     
C If no contract has been raised with this copy of the code, the use,      GLSPP_3A.14     
C duplication or disclosure of it is strictly prohibited.  Permission      GLSPP_3A.15     
C to do so must first be obtained in writing from the Head of Numerical    GLSPP_3A.16     
C Modelling at the above address.                                          GLSPP_3A.17     
C ******************************COPYRIGHT******************************    GLSPP_3A.18     
C                                                                          GLSPP_3A.19     
!   SUBROUTINE GLUE_LSPP------------------------------------------------   GLSPP_3A.20     
!                                                                          GLSPP_3A.21     
!   Level 3 control routine                                                GLSPP_3A.22     
!                                                                          GLSPP_3A.23     
!   Purpose: Calculate large-scale (dynamical) precipitation. LS_PPNC is   GLSPP_3A.24     
!            the gather/scatter routine which then calls LSP_ICE.          GLSPP_3A.25     
!            GLUE is an extra level of control routine to avoid using      GLSPP_3A.26     
!            *IF DEF around calls to different LS_PPN versions, as per     GLSPP_3A.27     
!            S. Foreman's 22/8/94 proposal for plug compatibility.         GLSPP_3A.28     
!                                                                          GLSPP_3A.29     
!   A04_3A : Uses the Wilson/Ballard mixed phase microphysics scheme.      GLSPP_3A.30     
!                                                                          GLSPP_3A.31     
!   Called by : LSPP_CTL1                                                  GLSPP_3A.32     
!                                                                          GLSPP_3A.33     
!   Code description: Language FORTRAN 77 + extensions.                    GLSPP_3A.34     
!                                                                          GLSPP_3A.35     
!   Programming standard: Unified Model Documentation Paper No 3,          GLSPP_3A.36     
!                         Version 6.                                       GLSPP_3A.37     
!                                                                          GLSPP_3A.38     
!   Author: Damian Wilson                                                  GLSPP_3A.39     
!                                                                          GLSPP_3A.40     
!   Modification History from UM Version 4.4:                              GLSPP_3A.41     
!    Version      Date                                                     GLSPP_3A.42     
!                                                                          GLSPP_3A.43     
!     4.4         Sept 97        New Deck            Damian Wilson         GLSPP_3A.44     
!    4.5  02/04/98   Add NH3 to argument list and pass to LS_PPN           AWO4F405.143    
!                     (For S Cycle)               M Woodage                AWO4F405.144    
!    4.5  Jun 1998   Add aged soot to argument list and pass to            AWO4F405.145    
!                     LS_PPN                     Luke Robinson.            AWO4F405.146    
!     4.5         03/09/98       Added 3D rain and snow variables.         ADM0F405.2      
!                                Damian Wilson                             ADM0F405.3      
!     4.5     01/05/98  Restrict murk aerosol calculations to aerosol      APC0F405.799    
!                       levels=boundary levels. P.Clark                    APC0F405.800    
!     4.5     13/05/98  Altered arguments to glue routine, and altered     ASK1F405.230    
!                       call to LSPPN3B.          S. Cusack                ASK1F405.231    
!                                                                          GLSPP_3A.45     
!   System components covered :                                            GLSPP_3A.46     
!                                                                          GLSPP_3A.47     
!   System task :                                                          GLSPP_3A.48     
!                                                                          GLSPP_3A.49     
!   Documentation: UMDP No.                                                GLSPP_3A.50     
!                                                                          GLSPP_3A.51     
!  END -----------------------------------------------------------------   GLSPP_3A.52     
!                                                                          GLSPP_3A.53     

      SUBROUTINE GLUE_LSPP(                                                 2,3GLSPP_3A.54     
     & AK,BK,CF,DELTA_AK,DELTA_BK,PSTAR,TIMESTEP                           GLSPP_3A.55     
     &,BLAND,CW_SEA,CW_LAND                                                GLSPP_3A.56     
     &,CLOUD_LIQ_FRAC,CLOUD_ICE_FRAC                                       GLSPP_3A.57     
     &,RHCRIT                                                              GLSPP_3A.58     
     &,RHCPT, L_RHCPT                                                      ASK1F405.232    
     &,Q_LEVELS,PFIELD                                                     GLSPP_3A.59     
     &,POINTS,K1STPT,LSPICE_DIM1,LSPICE_DIM2,A_LEVELS,Q,QCF,QCL,T          ADM0F405.4      
     &,SO2,L_SULPC_SO2                                                     GLSPP_3A.61     
     &,NH3,L_SULPC_NH3                                                     AWO4F405.147    
     &,SO4_AIT,SO4_ACC,SO4_DIS                                             GLSPP_3A.62     
     &,AGED_SOOT             !INOUT                                        AWO4F405.349    
     &,L_SOOT                                                              AWO4F405.350    
     &,AEROSOL,L_MURK,LSRAIN,LSSNOW,LSRAIN3D,LSSNOW3D                      ADM0F405.5      
     &,LSCAV_SO2,LSCAV_SO4AIT,LSCAV_SO4ACC,LSCAV_SO4DIS                    GLSPP_3A.64     
     &,LSCAV_NH3                                                           AWO4F405.148    
     &,LSCAV_AGEDSOOT        !INOUT                                        AWO4F405.351    
     &,ERROR                                                               GLSPP_3A.65     
     & )                                                                   GLSPP_3A.66     
      IMPLICIT NONE                                                        GLSPP_3A.67     
!-----------------------------------------------------------------------   GLSPP_3A.68     
! Some of the following variables are dummy, for use in other LS_PPN       GLSPP_3A.69     
! versions.                                                                GLSPP_3A.70     
!-----------------------------------------------------------------------   GLSPP_3A.71     
! IN variables                                                             GLSPP_3A.72     
!-----------------------------------------------------------------------   GLSPP_3A.73     
      INTEGER Q_LEVELS         ! No. of "wet" levels in the model.         GLSPP_3A.74     
!                                                                          GLSPP_3A.75     
      INTEGER POINTS           ! No. of gridpoints being processed.        GLSPP_3A.76     
!                                                                          GLSPP_3A.77     
      INTEGER PFIELD           ! No. of points in global field (at one     GLSPP_3A.78     
!                                vertical level).                          GLSPP_3A.79     
      INTEGER K1STPT           ! First gridpoint processed within          GLSPP_3A.80     
!                                within complete field.                    GLSPP_3A.81     
      INTEGER A_LEVELS         ! No.of aerosol levels used                 APC0F405.801    
      INTEGER LSPICE_DIM1       ! Dimension of dummy LSRAIN3D              ADM0F405.6      
!                                 and LSSNOW3D.                            ADM0F405.7      
      INTEGER LSPICE_DIM2       ! Dimension of dummy LSRAIN3D              ADM0F405.8      
!                                 and LSSNOW3D.                            ADM0F405.9      
      REAL CF(PFIELD,Q_LEVELS) ! Cloud fraction.                           GLSPP_3A.82     
!                                                                          GLSPP_3A.83     
      REAL PSTAR(PFIELD)       ! Surface pressure (Pa).                    GLSPP_3A.84     
!                                                                          GLSPP_3A.85     
      REAL AK(Q_LEVELS)        ! Hybrid co-ordinate for centre of layer.   GLSPP_3A.86     
!                                                                          GLSPP_3A.87     
      REAL BK(Q_LEVELS)        ! Hybrid co-ordinate for centre of layer.   GLSPP_3A.88     
!                                                                          GLSPP_3A.89     
      REAL RHCRIT(Q_LEVELS)    ! Critical humidity for cloud formation.    GLSPP_3A.90     
!                                                                          GLSPP_3A.91     
      REAL RHCPT(PFIELD,Q_LEVELS)    ! Crit. hum. for cloud formation      ASK1F405.233    
      REAL DELTA_AK(Q_LEVELS)  ! Change of hybrid co-ord across layer.     GLSPP_3A.92     
!                                (Upper minus lower).                      GLSPP_3A.93     
      REAL DELTA_BK(Q_LEVELS)  ! Change of hybrid co-ord across layer.     GLSPP_3A.94     
!                                (Upper minus lower).                      GLSPP_3A.95     
!                                                                          GLSPP_3A.96     
      REAL CLOUD_LIQ_FRAC(PFIELD,Q_LEVELS) ! Liquid cloud fraction.        GLSPP_3A.97     
! WARNING: Input contents of this argument are dependent upon ls cloud     GLSPP_3A.98     
! scheme chosen,                                                           GLSPP_3A.99     
! 1A: Grid-box mean cloud condensate at processed levels (kg/ kg air).     GLSPP_3A.100    
! 2A: Liquid cloud fraction on model levels.                               GLSPP_3A.101    
! This glue routine is only compatible with the 2A choice.                 GLSPP_3A.102    
!                                                                          GLSPP_3A.103    
      REAL CLOUD_ICE_FRAC(PFIELD,Q_LEVELS) ! Ice cloud fraction.           GLSPP_3A.104    
! WARNING: Input contents of this argument are dependent upon ls cloud     GLSPP_3A.105    
! scheme chosen,                                                           GLSPP_3A.106    
! 1A: Maximum moisture fluctuation /6*sigma on levels (kg per kg air).     GLSPP_3A.107    
! 2A: Frozen cloud fraction on model levels.                               GLSPP_3A.108    
! This glue routine is only compatible with the 2A choice.                 GLSPP_3A.109    
!                                                                          GLSPP_3A.110    
      REAL TIMESTEP            ! Timestep (sec).                           GLSPP_3A.111    
!                                                                          GLSPP_3A.112    
      REAL CW_SEA              ! Threshold cloud liquid water content      GLSPP_3A.113    
!                                over sea for conversion to ppn            GLSPP_3A.114    
!                                (kg water per m**3)                       GLSPP_3A.115    
      REAL CW_LAND             ! Threshold cloud liquid water content      GLSPP_3A.116    
!                                over land for conversion to ppn           GLSPP_3A.117    
!                                (kg water per m**3)                       GLSPP_3A.118    
      LOGICAL BLAND(PFIELD)    ! Land/sea mask                             GLSPP_3A.119    
!                                                                          GLSPP_3A.120    
      LOGICAL L_MURK           ! Aerosol needs scavenging.                 GLSPP_3A.121    
!                                                                          GLSPP_3A.122    
      LOGICAL L_SULPC_SO2   ! Sulphur Cycle on, tracers to be scavenged    GLSPP_3A.123    
     &       ,L_SULPC_NH3         ! indicates if NH3 present               AWO4F405.149    
!                                                                          AWO4F405.150    
     &       ,L_SOOT         ! indicates whether soot is being used        AWO4F405.352    
!                                                                          AWO4F405.353    
!                                                                          GLSPP_3A.124    
      LOGICAL L_RHCPT  ! Indicates whether RHcrit parametrization is on.   ASK1F405.234    
!                                                                          ASK1F405.235    
!-----------------------------------------------------------------------   GLSPP_3A.125    
! INOUT variables                                                          GLSPP_3A.126    
!-----------------------------------------------------------------------   GLSPP_3A.127    
      REAL Q(PFIELD,Q_LEVELS)        ! Specific humidity                   GLSPP_3A.128    
!                                      (kg water/kg air).                  GLSPP_3A.129    
      REAL QCF(PFIELD,Q_LEVELS)      ! Cloud ice (kg per kg air).          GLSPP_3A.130    
!                                                                          GLSPP_3A.131    
      REAL QCL(PFIELD,Q_LEVELS)      ! Cloud liquid water (kg/ kg air).    GLSPP_3A.132    
!                                                                          GLSPP_3A.133    
      REAL T(PFIELD,Q_LEVELS)        ! Temperature (K).                    GLSPP_3A.134    
!                                                                          GLSPP_3A.135    
      REAL AEROSOL(PFIELD,Q_LEVELS)  ! Aerosol (K).                        GLSPP_3A.136    
      REAL                  ! Sulphur Cycle tracers for wet scavenging     GLSPP_3A.137    
     &    SO2(PFIELD,Q_LEVELS)                                             GLSPP_3A.138    
     &    ,NH3(PFIELD,Q_LEVELS)                                            AWO4F405.151    
     &   ,SO4_AIT(PFIELD,Q_LEVELS)                                         GLSPP_3A.139    
     &   ,SO4_ACC(PFIELD,Q_LEVELS)                                         GLSPP_3A.140    
     &   ,SO4_DIS(PFIELD,Q_LEVELS)                                         GLSPP_3A.141    
     &    ,AGED_SOOT(PFIELD,Q_LEVELS)                                      AWO4F405.354    
!                                                                          GLSPP_3A.142    
!                                                                          GLSPP_3A.143    
!-----------------------------------------------------------------------   GLSPP_3A.144    
! OUT variables                                                            GLSPP_3A.145    
!-----------------------------------------------------------------------   GLSPP_3A.146    
      REAL LSRAIN(PFIELD)   ! Surface rainfall rate (kg per sq m per s).   GLSPP_3A.147    
!                                                                          GLSPP_3A.148    
      REAL LSSNOW(PFIELD)   ! Surface snowfall rate (kg per sq m per s).   GLSPP_3A.149    
      REAL LSRAIN3D(LSPICE_DIM1,LSPICE_DIM2) ! Rain rate out of            ADM0F405.10     
!                                              each model level            ADM0F405.11     
      REAL LSSNOW3D(LSPICE_DIM1,LSPICE_DIM2) ! Snow rate out of            ADM0F405.12     
!                                              each model level            ADM0F405.13     
      REAL                  ! column totals of scavenged S Cycle tracers   GLSPP_3A.150    
     &    LSCAV_SO2(PFIELD)                                                GLSPP_3A.151    
     &    ,LSCAV_NH3(PFIELD)                                               AWO4F405.152    
     &   ,LSCAV_SO4AIT(PFIELD)                                             GLSPP_3A.152    
     &   ,LSCAV_SO4ACC(PFIELD)                                             GLSPP_3A.153    
     &   ,LSCAV_SO4DIS(PFIELD)                                             GLSPP_3A.154    
     &    ,LSCAV_AGEDSOOT(PFIELD)                                          AWO4F405.355    
!                                                                          GLSPP_3A.155    
!                                                                          GLSPP_3A.156    
      INTEGER ERROR         ! Return code - 0 if OK,                       GLSPP_3A.157    
!                                           1 if bad arguments.            GLSPP_3A.158    
!                                                                          GLSPP_3A.159    
!    External subroutine called ----------------------------------------   GLSPP_3A.160    
      EXTERNAL  LS_PPN                                                     GLSPP_3A.161    
!----------------------------------------------------------------------    GLSPP_3A.162    
!                                                                          GLSPP_3A.163    
      CALL LS_PPN(                                                         GLSPP_3A.164    
! Input data not changed on output                                         GLSPP_3A.165    
     & AK,BK,CF                                                            GLSPP_3A.166    
     &,DELTA_AK,DELTA_BK,PSTAR,TIMESTEP                                    GLSPP_3A.167    
     &,BLAND,CW_SEA,CW_LAND                                                GLSPP_3A.168    
     &,CLOUD_LIQ_FRAC,CLOUD_ICE_FRAC                                       GLSPP_3A.169    
     &,RHCRIT                                                              GLSPP_3A.170    
     &,RHCPT, L_RHCPT                                                      ASK1F405.236    
! Size and control data                                                    GLSPP_3A.171    
     &,Q_LEVELS,PFIELD,POINTS,K1STPT,LSPICE_DIM1,LSPICE_DIM2,A_LEVELS      ADM0F405.14     
! Input data changed on output                                             GLSPP_3A.173    
     &,Q,QCF,QCL,T                                                         GLSPP_3A.174    
     &,SO2,L_SULPC_SO2                                                     GLSPP_3A.175    
     &,NH3,L_SULPC_NH3                                                     AWO4F405.153    
     &,SO4_AIT,SO4_ACC,SO4_DIS                                             GLSPP_3A.176    
     &,AGED_SOOT,L_SOOT                                                    AWO4F405.356    
     &,AEROSOL,L_MURK                                                      GLSPP_3A.177    
! Output data                                                              GLSPP_3A.178    
     &,LSRAIN,LSSNOW                                                       GLSPP_3A.179    
     &,LSRAIN3D,LSSNOW3D                                                   ADM0F405.15     
     &,LSCAV_SO2,LSCAV_SO4AIT,LSCAV_SO4ACC,LSCAV_SO4DIS                    GLSPP_3A.180    
     &,LSCAV_NH3                                                           AWO4F405.154    
     &,LSCAV_AGEDSOOT                                                      AWO4F405.357    
     &,ERROR)                                                              GLSPP_3A.181    
!                                                                          GLSPP_3A.182    
      RETURN                                                               GLSPP_3A.183    
      END                                                                  GLSPP_3A.184    
*ENDIF                                                                     GLSPP_3A.185