*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