*IF DEF,A04_2E,OR,DEF,A04_3B ADM0F405.288 C *****************************COPYRIGHT****************************** SLSPSC1A.3 C (c) CROWN COPYRIGHT 1996, METEOROLOGICAL OFFICE, All Rights Reserved. SLSPSC1A.4 C SLSPSC1A.5 C Use, duplication or disclosure of this code is subject to the SLSPSC1A.6 C restrictions as set forth in the contract. SLSPSC1A.7 C SLSPSC1A.8 C Meteorological Office SLSPSC1A.9 C London Road SLSPSC1A.10 C BRACKNELL SLSPSC1A.11 C Berkshire UK SLSPSC1A.12 C RG12 2SZ SLSPSC1A.13 C SLSPSC1A.14 C If no contract has been raised with this copy of the code, the use, SLSPSC1A.15 C duplication or disclosure of it is strictly prohibited. Permission SLSPSC1A.16 C to do so must first be obtained in writing from the Head of Numerical SLSPSC1A.17 C Modelling at the above address. SLSPSC1A.18 C ******************************COPYRIGHT****************************** SLSPSC1A.19 ! SLSPSC1A.20 ! SUBROUTINE SLSPSCV ---------------------------------------------- SLSPSC1A.21 ! SLSPSC1A.22 ! Purpose: This subroutine carries out wet scavenging of S Cycle tracers SLSPSC1A.23 ! assuming loss rate = cost * ls ppn rate in layer above. SLSPSC1A.24 ! SLSPSC1A.25 ! Called by LS_PPNC Version 2D if Sulphur Cycle is on. SLSPSC1A.26 ! SLSPSC1A.27 ! Current code owner: M. Woodage SLSPSC1A.28 ! SLSPSC1A.29 ! History: SLSPSC1A.30 ! Version Date Comment SLSPSC1A.31 ! ------- ---- ------ SLSPSC1A.32 ! 4.1 06/06/96 Original code M. Woodage SLSPSC1A.33 ! SLSPSC1A.34 ! Code description: SLSPSC1A.35 ! Language: FORTRAN 77 + common extensions SLSPSC1A.36 ! This code is written to UMDP3 v6 programming standards. SLSPSC1A.37 ! SLSPSC1A.38 ! System Components covered: SLSPSC1A.39 ! SLSPSC1A.40 ! System task: SLSPSC1A.41 ! SLSPSC1A.42 ! Documentation: Not yet available SLSPSC1A.43 ! SLSPSC1A.44 !------------------------------------------------------------------- SLSPSC1A.45 ! SLSPSC1A.46SUBROUTINE SLSPSCV(TRACER, ! INOUT, S Cycle tracer 12SLSPSC1A.47 & LSCAV_TR, ! INOUT, accumulated scavngd tr SLSPSC1A.48 & K_RAIN, ! IN, scavenging coeff for rain SLSPSC1A.49 & K_SNOW, ! IN, scavenging coeff for snow SLSPSC1A.50 & RDZ, ! IN, AIR MASS P.U.AREA OF LAYER SLSPSC1A.51 & TSTEP, ! IN SLSPSC1A.52 & NGPTS, ! IN, NO. OF GATHERED POINTS SLSPSC1A.53 & RAINRATE, ! IN, LS RAIN IN LAYER ABOVE SLSPSC1A.54 & SNOWRATE) ! IN, LS SNOW IN LAYER ABOVE SLSPSC1A.55 ! SLSPSC1A.56 IMPLICIT NONE SLSPSC1A.57 ! SLSPSC1A.58 INTEGER NGPTS ! IN, no points to be processed SLSPSC1A.59 ! SLSPSC1A.60 REAL TSTEP ! IN, timestep in secs SLSPSC1A.61 REAL K_RAIN ! IN, scav rate const for rain SLSPSC1A.62 REAL K_SNOW ! IN, scav rate const for snow SLSPSC1A.63 REAL RDZ(NGPTS) ! IN, -(DELTA_AK+DELTA_BK*PSTAR)/G SLSPSC1A.64 REAL RAINRATE(NGPTS) ! IN, rain rate mm/hr=kg/m2/s*3600 SLSPSC1A.65 REAL SNOWRATE(NGPTS) ! IN, snow rate " SLSPSC1A.66 REAL TRACER(NGPTS) ! INOUT, tracer to be scavenged SLSPSC1A.67 REAL LSCAV_TR(NGPTS) ! INOUT, accumulated scavenged tr SLSPSC1A.68 ! SLSPSC1A.69 ! Local variables SLSPSC1A.70 INTEGER I,J ! LOOP COUNTERS SLSPSC1A.71 ! SLSPSC1A.72 REAL TERMR ! local vars to assist calcn SLSPSC1A.73 REAL TERMS ! SLSPSC1A.74 REAL DELTA_TR ! tracer increment due to scavnging SLSPSC1A.75 REAL TOTRATE ! total LSPPN scavenging rate SLSPSC1A.76 REAL INVTRAT ! 1/(1+TOTRATE) SLSPSC1A.77 ! SLSPSC1A.78 ! Calculate total scavenging rate array SLSPSC1A.79 ! SLSPSC1A.80 DO I=1,NGPTS SLSPSC1A.81 ! SLSPSC1A.82 IF (RAINRATE(I).LE.0.0) THEN ! Check for negative ppn SLSPSC1A.83 TERMR=0.0 SLSPSC1A.84 ELSE SLSPSC1A.85 TERMR=K_RAIN*RAINRATE(I) SLSPSC1A.86 ENDIF SLSPSC1A.87 ! SLSPSC1A.88 IF (SNOWRATE(I).LE.0.0) THEN SLSPSC1A.89 TERMS=0.0 SLSPSC1A.90 ELSE SLSPSC1A.91 TERMS=K_SNOW*SNOWRATE(I) SLSPSC1A.92 ENDIF SLSPSC1A.93 ! SLSPSC1A.94 ! Calculate TOTRATE, *3600.0 because K_RAIN and K_SNOW values are SLSPSC1A.95 ! suitable for ppn rate in mm/hr, but model rates are in kg/m2/s SLSPSC1A.96 TOTRATE=(TERMR+TERMS)*3600.0*TSTEP SLSPSC1A.97 INVTRAT=1.0/(1.0+TOTRATE) SLSPSC1A.98 ! SLSPSC1A.99 ! Do scavenging SLSPSC1A.100 ! Calculate proportion of tracer mixing ratio scavenged out SLSPSC1A.101 DELTA_TR=TRACER(I)*(1.0-INVTRAT) SLSPSC1A.102 ! SLSPSC1A.103 ! Increment accumulated scavenged tracer in column, multiplying by RDZ SLSPSC1A.104 ! to convert mmr to mass per unit area. SLSPSC1A.105 LSCAV_TR(I)=LSCAV_TR(I)+DELTA_TR*RDZ(I) SLSPSC1A.106 ! SLSPSC1A.107 ! Decrement tracer mixing ratio SLSPSC1A.108 TRACER(I)=TRACER(I)-DELTA_TR SLSPSC1A.109 ! SLSPSC1A.110 END DO ! END OF I LOOP SLSPSC1A.111 ! SLSPSC1A.112 RETURN SLSPSC1A.113 END SLSPSC1A.114 ! SLSPSC1A.115 *ENDIF SLSPSC1A.116