*IF DEF,A04_2E ADM0F405.293
C (c) CROWN COPYRIGHT 1995, METEOROLOGICAL OFFICE, All Rights Reserved. GTS2F400.14980
C GTS2F400.14981
C Use, duplication or disclosure of this code is subject to the GTS2F400.14982
C restrictions as set forth in the contract. GTS2F400.14983
C GTS2F400.14984
C Meteorological Office GTS2F400.14985
C London Road GTS2F400.14986
C BRACKNELL GTS2F400.14987
C Berkshire UK GTS2F400.14988
C RG12 2SZ GTS2F400.14989
C GTS2F400.14990
C If no contract has been raised with this copy of the code, the use, GTS2F400.14991
C duplication or disclosure of it is strictly prohibited. Permission GTS2F400.14992
C to do so must first be obtained in writing from the Head of Numerical GTS2F400.14993
C Modelling at the above address. GTS2F400.14994
C ******************************COPYRIGHT****************************** GTS2F400.14995
C GTS2F400.14996
! SUBROUTINE GLUE_LSPP------------------------------------------------ GLSPP_2D.3
! GLSPP_2D.4
! Level 3 control routine GLSPP_2D.5
! GLSPP_2D.6
! Purpose: Calculate large-scale (dynamical) precipitation. LS_PPNC is GLSPP_2D.7
! the gather/scatter routine which then calls LSP_EVAP, GLSPP_2D.8
! LSP_FRMT,LSP_FORM. GLSPP_2D.9
! GLUE is an extra level of control routine to avoid using GLSPP_2D.10
! *IF DEF around calls to different LS_PPN versions, as per GLSPP_2D.11
! S. Foreman's 22/8/94 proposal for plug compatibility. GLSPP_2D.12
! GLSPP_2D.13
! A04_2D : Moisture distribution about mean gridbox supersaturation. GLSPP_2D.14
! Long timestep and explicit short timestep ice fallouts. GLSPP_2D.15
! A04_2E : MPP version of 2D scheme (loss of exact bit comparison). ADM3F404.3
! GLSPP_2D.16
! Called by : LSPP_CTL1 GLSPP_2D.17
! GLSPP_2D.18
! Code description: Language FORTRAN 77 + extensions. GLSPP_2D.19
! GLSPP_2D.20
! Programming standard: Unified Model Documentation Paper No 3, GLSPP_2D.21
! Version 6. GLSPP_2D.22
! GLSPP_2D.23
! Author: Andrew Bushell Reviewer: C. Wilson GLSPP_2D.24
! GLSPP_2D.25
! Modification History from UM Version 4.0: GLSPP_2D.26
! Version Date GLSPP_2D.27
! GLSPP_2D.28
! 4.1 06/06/96 Add Sulphur Cycle tracers for wet scavenging in AWO4F401.69
! Version 2D of LS_PPN M. Woodage AWO4F401.70
! 4.4 01/07/97 Changes to use of arguments if 2A cloud scheme is ADM3F404.4
! chosen. MUST USE 1A cloud scheme with 2D, 2E ppn. ADM3F404.5
! 4.4 08/09/97 Add RHCRIT argument D.Wilson ADM3F404.6
! 4.5 02/04/98 Add NH3 to argument list and pass to LS_PPN AWO4F405.131
! (For S Cycle) M Woodage AWO4F405.132
! 4.5 12/03/98 Add aged soot to argument list and pass to AWO4F405.133
! LS_PPN Luke Robinson. AWO4F405.134
! 4.5 03/09/97 Added dummy 3D rain and snow variables. D.Wilson ADM0F405.27
! 4.5 01/05/98 Restrict murk aerosol calculations to aerosol APC0F405.786
! levels=boundary levels. P.Clark APC0F405.787
! 4.5 13/05/98 Altered call to glue routine (dummy variables). ASK1F405.237
! S. Cusack ASK1F405.238
! GLSPP_2D.29
! System components covered : GLSPP_2D.30
! GLSPP_2D.31
! System task : GLSPP_2D.32
! GLSPP_2D.33
! Documentation: UMDP No. GLSPP_2D.34
! GLSPP_2D.35
! END ----------------------------------------------------------------- GLSPP_2D.36
! GLSPP_2D.37
SUBROUTINE GLUE_LSPP( 2,3GLSPP_2D.38
& AK,BK,CF,DELTA_AK,DELTA_BK,PSTAR,TIMESTEP GLSPP_2D.39
&,BLAND,CW_SEA,CW_LAND GLSPP_2D.40
&,LS_GRID_QC,LS_BS GLSPP_2D.41
&,RHCRIT,DUMMY, L_DUMMY ASK1F405.239
&,Q_LEVELS,PFIELD GLSPP_2D.42
&,POINTS,K1STPT,LSPICE_DIM1,LSPICE_DIM2,A_LEVELS,Q,QCF,QCL,T ADM0F405.28
&,SO2,L_SULPC_SO2 AWO4F401.71
&,NH3,L_SULPC_NH3 AWO4F405.135
&,SO4_AIT,SO4_ACC,SO4_DIS AWO4F401.72
& ,AGED_SOOT !INOUT AWO4F405.297
& ,L_SOOT AWO4F405.298
&,AEROSOL,L_MURK,LSRAIN,LSSNOW,LSRAIN3D,LSSNOW3D ADM0F405.29
&,LSCAV_SO2,LSCAV_SO4AIT,LSCAV_SO4ACC,LSCAV_SO4DIS AWO4F401.73
&,LSCAV_NH3 AWO4F405.136
& ,LSCAV_AGEDSOOT !INOUT AWO4F405.299
&,ERROR GLSPP_2D.45
& ) GLSPP_2D.46
IMPLICIT NONE GLSPP_2D.47
!----------------------------------------------------------------------- GLSPP_2D.48
! Some of the following variables are dummy, for use in other LS_PPN GLSPP_2D.49
! versions. GLSPP_2D.50
!----------------------------------------------------------------------- GLSPP_2D.51
! IN variables GLSPP_2D.52
!----------------------------------------------------------------------- GLSPP_2D.53
INTEGER Q_LEVELS ! No. of "wet" levels in the model. GLSPP_2D.54
! GLSPP_2D.55
INTEGER POINTS ! No. of gridpoints being processed. GLSPP_2D.56
! GLSPP_2D.57
INTEGER PFIELD ! No. of points in global field (at one GLSPP_2D.58
! vertical level). GLSPP_2D.59
INTEGER K1STPT ! First gridpoint processed within GLSPP_2D.60
! within complete field. GLSPP_2D.61
INTEGER A_LEVELS ! No.of aerosol levels used APC0F405.788
INTEGER LSPICE_DIM1 ! Dimension of dummy LSRAIN3D ADM0F405.30
! and LSSNOW3D. ADM0F405.31
INTEGER LSPICE_DIM2 ! Dimension of dummy LSRAIN3D ADM0F405.32
! and LSSNOW3D. ADM0F405.33
REAL CF(PFIELD,Q_LEVELS) ! Cloud fraction. GLSPP_2D.62
! GLSPP_2D.63
REAL PSTAR(PFIELD) ! Surface pressure (Pa). GLSPP_2D.64
! GLSPP_2D.65
REAL AK(Q_LEVELS) ! Hybrid co-ordinate for centre of layer. GLSPP_2D.66
! GLSPP_2D.67
REAL BK(Q_LEVELS) ! Hybrid co-ordinate for centre of layer. GLSPP_2D.68
! GLSPP_2D.69
REAL RHCRIT(Q_LEVELS) ! Critical humidity for cloud formation. ADM3F404.8
! ADM3F404.9
REAL DUMMY(PFIELD,Q_LEVELS) ! Dummy variable in this version ASK1F405.240
! ASK1F405.241
REAL DELTA_AK(Q_LEVELS) ! Change of hybrid co-ord across layer. GLSPP_2D.70
! (Upper minus lower). GLSPP_2D.71
REAL DELTA_BK(Q_LEVELS) ! Change of hybrid co-ord across layer. GLSPP_2D.72
! (Upper minus lower). GLSPP_2D.73
REAL LS_GRID_QC(PFIELD,Q_LEVELS) ADM3F404.10
! WARNING: Input contents of this argument are dependent upon ls cloud ADM3F404.11
! scheme chosen, ADM3F404.12
! 1A: Grid-box mean cloud condensate at processed levels (kg/ kg air). ADM3F404.13
! 2A: Liquid cloud fraction on model levels. ADM3F404.14
! This glue routine is only compatible with the 1A choice. ADM3F404.15
REAL LS_BS(PFIELD,Q_LEVELS) ADM3F404.16
! WARNING: Input contents of this argument are dependent upon ls cloud ADM3F404.17
! scheme chosen, ADM3F404.18
! 1A: Maximum moisture fluctuation /6*sigma on levels (kg per kg air). ADM3F404.19
! 2A: Frozen cloud fraction on model levels. ADM3F404.20
! This glue routine is only compatible with the 1A choice. ADM3F404.21
REAL TIMESTEP ! Timestep (sec). GLSPP_2D.78
! GLSPP_2D.79
REAL CW_SEA ! Threshold cloud liquid water content GLSPP_2D.80
! over sea for conversion to ppn GLSPP_2D.81
! (kg water per m**3) GLSPP_2D.82
REAL CW_LAND ! Threshold cloud liquid water content GLSPP_2D.83
! over land for conversion to ppn GLSPP_2D.84
! (kg water per m**3) GLSPP_2D.85
LOGICAL BLAND(PFIELD) ! Land/sea mask GLSPP_2D.86
! GLSPP_2D.87
LOGICAL L_MURK ! Aerosol needs scavenging. GLSPP_2D.88
! AWO4F401.74
LOGICAL L_SULPC_SO2 ! Sulphur Cycle on, tracers to be scavenged AWO4F401.75
& ,L_SULPC_NH3 ! indicates if NH3 present AWO4F405.137
! GLSPP_2D.89
LOGICAL L_SOOT ! soot on, tracers to be scavenged AWO4F405.300
! AWO4F405.301
LOGICAL L_DUMMY ! Dummy variable ASK1F405.242
! ASK1F405.243
!----------------------------------------------------------------------- GLSPP_2D.90
! INOUT variables GLSPP_2D.91
!----------------------------------------------------------------------- GLSPP_2D.92
REAL Q(PFIELD,Q_LEVELS) ! Specific humidity GLSPP_2D.93
! (kg water/kg air). GLSPP_2D.94
REAL QCF(PFIELD,Q_LEVELS) ! Cloud ice (kg per kg air). GLSPP_2D.95
! GLSPP_2D.96
REAL QCL(PFIELD,Q_LEVELS) ! Cloud liquid water (kg/ kg air). GLSPP_2D.97
! GLSPP_2D.98
REAL T(PFIELD,Q_LEVELS) ! Temperature (K). GLSPP_2D.99
! GLSPP_2D.100
REAL AEROSOL(PFIELD,Q_LEVELS) ! Aerosol (K). GLSPP_2D.101
REAL ! Sulphur Cycle tracers for wet scavenging AWO4F401.76
& SO2(PFIELD,Q_LEVELS) AWO4F401.77
& ,NH3(PFIELD,Q_LEVELS) AWO4F405.138
& ,SO4_AIT(PFIELD,Q_LEVELS) AWO4F401.78
& ,SO4_ACC(PFIELD,Q_LEVELS) AWO4F401.79
& ,SO4_DIS(PFIELD,Q_LEVELS) AWO4F401.80
& ,AGED_SOOT(PFIELD,Q_LEVELS) !INOUT AWO4F405.302
! AWO4F401.81
! GLSPP_2D.102
!----------------------------------------------------------------------- GLSPP_2D.103
! OUT variables GLSPP_2D.104
!----------------------------------------------------------------------- GLSPP_2D.105
REAL LSRAIN(PFIELD) ! Surface rainfall rate (kg per sq m per s). GLSPP_2D.106
! GLSPP_2D.107
REAL LSSNOW(PFIELD) ! Surface snowfall rate (kg per sq m per s). GLSPP_2D.108
REAL LSRAIN3D(LSPICE_DIM1,LSPICE_DIM2) ! Dummy ADM0F405.34
REAL LSSNOW3D(LSPICE_DIM1,LSPICE_DIM2) ! Dummy ADM0F405.35
REAL ! column totals of scavenged S Cycle tracers AWO4F401.82
& LSCAV_SO2(PFIELD) AWO4F401.83
& ,LSCAV_NH3(PFIELD) AWO4F405.139
! AWO4F405.140
& ,LSCAV_SO4AIT(PFIELD) AWO4F401.84
& ,LSCAV_SO4ACC(PFIELD) AWO4F401.85
& ,LSCAV_SO4DIS(PFIELD) AWO4F401.86
& ,LSCAV_AGEDSOOT(PFIELD) !INOUT AWO4F405.303
! AWO4F401.87
! GLSPP_2D.109
INTEGER ERROR ! Return code - 0 if OK, GLSPP_2D.110
! 1 if bad arguments. GLSPP_2D.111
! GLSPP_2D.112
! External subroutine called ---------------------------------------- GLSPP_2D.113
EXTERNAL LS_PPN GLSPP_2D.114
!---------------------------------------------------------------------- GLSPP_2D.115
! GLSPP_2D.116
CALL LS_PPN
( GLSPP_2D.117
! Input data not changed on output GLSPP_2D.118
& AK,BK,CF GLSPP_2D.119
&,DELTA_AK,DELTA_BK,PSTAR,TIMESTEP GLSPP_2D.120
&,BLAND,CW_SEA,CW_LAND GLSPP_2D.121
&,LS_GRID_QC,LS_BS GLSPP_2D.122
! Size and control data GLSPP_2D.123
&,Q_LEVELS,PFIELD,POINTS,K1STPT,A_LEVELS APC0F405.789
! Input data changed on output GLSPP_2D.125
&,Q,QCF,QCL,T GLSPP_2D.126
&,SO2,L_SULPC_SO2 AWO4F401.88
&,NH3,L_SULPC_NH3 AWO4F405.141
&,SO4_AIT,SO4_ACC,SO4_DIS AWO4F401.89
& ,AGED_SOOT !INOUT AWO4F405.304
& ,L_SOOT AWO4F405.305
&,AEROSOL,L_MURK GLSPP_2D.127
! Output data GLSPP_2D.128
&,LSRAIN,LSSNOW GLSPP_2D.129
&,LSCAV_SO2,LSCAV_SO4AIT,LSCAV_SO4ACC,LSCAV_SO4DIS AWO4F401.90
&,LSCAV_NH3 AWO4F405.142
& ,LSCAV_AGEDSOOT !INOUT AWO4F405.306
&,ERROR) GLSPP_2D.130
! GLSPP_2D.131
RETURN GLSPP_2D.132
END GLSPP_2D.133
*ENDIF GLSPP_2D.134