*IF DEF,A04_2E,OR,DEF,A04_3B                                               ADM0F405.286    
C *****************************COPYRIGHT******************************     RAINOU1A.3      
C (c) CROWN COPYRIGHT 1996, METEOROLOGICAL OFFICE, All Rights Reserved.    RAINOU1A.4      
C                                                                          RAINOU1A.5      
C Use, duplication or disclosure of this code is subject to the            RAINOU1A.6      
C restrictions as set forth in the contract.                               RAINOU1A.7      
C                                                                          RAINOU1A.8      
C                Meteorological Office                                     RAINOU1A.9      
C                London Road                                               RAINOU1A.10     
C                BRACKNELL                                                 RAINOU1A.11     
C                Berkshire UK                                              RAINOU1A.12     
C                RG12 2SZ                                                  RAINOU1A.13     
C                                                                          RAINOU1A.14     
C If no contract has been raised with this copy of the code, the use,      RAINOU1A.15     
C duplication or disclosure of it is strictly prohibited.  Permission      RAINOU1A.16     
C to do so must first be obtained in writing from the Head of Numerical    RAINOU1A.17     
C Modelling at the above address.                                          RAINOU1A.18     
C ******************************COPYRIGHT******************************    RAINOU1A.19     
!    SUBROUTINE RAINOUT ------------------------------------               AWO4F405.202    
!                                                                          RAINOU1A.21     
! Purpose: This subroutine removes dissolved tracer aerosol assuming       AWO4F405.203    
!          the amount in grid box is reduced in the same proportion as     RAINOU1A.23     
!          the reduction in the total condensed water (liquid + ice)       RAINOU1A.24     
!          due to ppn. (It is assumed that the concn of tracer             AWO4F405.204    
!          is the same in every droplet and ice particle)                  RAINOU1A.26     
!                                                                          RAINOU1A.27     
!           Called by LSPP_CTL                                             AWO4F405.205    
!                                                                          RAINOU1A.29     
! Current Code Owner: D L Roberts                                          RAINOU1A.30     
!                                                                          RAINOU1A.31     
! History:                                                                 RAINOU1A.32     
! Version    Date    Comments                                              RAINOU1A.33     
! -------    ----    --------                                              RAINOU1A.34     
!   4.1    23/05/96  Original code               D L Roberts               RAINOU1A.35     
!   4.3    17/03/96  Include layer thickness calcn for diagnostics.        AWO1F403.9      
!                    Disallow rainout if ppn does not reach surface.       AWO1F403.10     
!                                                       M Woodage          AWO1F403.11     
!   4.5   07/07/98  Generalise routine for any tracer (originally          AWO4F405.206    
!                   written for dissolved sulphate aerosol and             AWO4F405.207    
!                   called RAINOUT_SULPHATE)           M Woodage           AWO4F405.208    
!                                                                          RAINOU1A.36     
! Code Description:                                                        RAINOU1A.37     
!   Language: FORTRAN77 + common extensions                                RAINOU1A.38     
!   This code is written to UMDP3 v6 programming standards                 RAINOU1A.39     
!                                                                          RAINOU1A.40     
! System components covered:                                               RAINOU1A.41     
!                                                                          RAINOU1A.42     
! System task:                                                             RAINOU1A.43     
!                                                                          RAINOU1A.44     
! Documentation: Not yet available                                         RAINOU1A.45     
!                                                                          RAINOU1A.46     
!-----------------------------------------------------------------         RAINOU1A.47     
!                                                                          RAINOU1A.48     

      SUBROUTINE RAINOUT(                                                   2AWO4F405.209    
     &       QCF             ! IN                                          RAINOU1A.50     
     &      ,QCL             ! IN                                          RAINOU1A.51     
     &      ,QPREVIOUS       ! IN                                          RAINOU1A.52     
     &     ,LS_RAIN      ! IN                                              AWO1F403.12     
     &     ,LS_SNOW      ! IN                                              AWO1F403.13     
     &      ,TRACER          ! IN/OUT                                      AWO4F405.210    
     &      ,FIRST_POINT     ! IN                                          RAINOU1A.54     
     &      ,LAST_POINT      ! IN                                          RAINOU1A.55     
     &      ,P_FIELD         ! IN                                          RAINOU1A.56     
     &      ,Q_LEVELS        ! IN                                          RAINOU1A.57     
     &      ,RNOUT_TRACER    ! OUT                                         AWO4F405.211    
     &      ,AKDIFF,BKDIFF,PSTAR   !IN                                     AWO1F403.14     
     &      )                                                              RAINOU1A.59     
!                                                                          RAINOU1A.60     
      IMPLICIT NONE                                                        RAINOU1A.61     
!                                                                          RAINOU1A.62     
      INTEGER                                                              RAINOU1A.63     
     &        Q_LEVELS,         !IN, no. of wet levels                     RAINOU1A.64     
     &        P_FIELD,          !IN, no. of pts in full 2_D field          RAINOU1A.65     
     &        FIRST_POINT,      !IN, first point in 2D domain              RAINOU1A.66     
     &        LAST_POINT        !IN, last point in 2D domain               RAINOU1A.67     
!                                                                          RAINOU1A.68     
      REAL TRACER(P_FIELD,Q_LEVELS),  !INOUT mmr of dissolved tracer       AWO4F405.212    
     &     QCL(P_FIELD,Q_LEVELS),      !IN cloud liquid water (mmr)        RAINOU1A.70     
     &     QCF(P_FIELD,Q_LEVELS),      !IN cloud frozen water (mmr)        RAINOU1A.71     
     &    LS_RAIN(P_FIELD), ! IN Large-scale rain at the surface           AWO1F403.15     
     &    LS_SNOW(P_FIELD), ! IN Large-scale snow at the surface           AWO1F403.16     
     &     QPREVIOUS(P_FIELD,Q_LEVELS) !IN, total condensed water          RAINOU1A.72     
!                                            before precipitation          RAINOU1A.73     
      REAL AKDIFF(Q_LEVELS),     !IN, for layer thickness calcn            AWO1F403.17     
     &     BKDIFF(Q_LEVELS),     !IN,     "                                AWO1F403.18     
     &     PSTAR(P_FIELD)        !IN,     "                                AWO1F403.19     
      REAL RNOUT_TRACER(P_FIELD)      ! OUT tracer removed kg/m2/ts        AWO4F405.213    
!                                                                          RAINOU1A.75     
!  Local variables                                                         RAINOU1A.76     
!                                                                          RAINOU1A.77     
      INTEGER I,LEVEL         ! loop variables                             RAINOU1A.78     
!                                                                          RAINOU1A.79     
      REAL                                                                 RAINOU1A.80     
     &     QREMAIN,           ! total condensed water after precipn.       RAINOU1A.81     
     &     FRACTION           ! fraction of water remaining                RAINOU1A.82     
      REAL DELTA_TRACER       ! amount tracer removed from grid box        AWO4F405.214    
      REAL SURF_PRECIP(P_FIELD) ! total precipn at surface                 AWO1F403.20     
!                                                                          RAINOU1A.84     
      REAL RDZ               ! mass p.u.area of air in layer               AWO1F403.21     
!                                                                          AWO1F403.22     
*CALL C_G                    ! G=9.80665 for layer thickness calcn         AWO1F403.23     
!                                                                          AWO1F403.24     
!     WANT TO RESTRICT CALCULATIONS TO POINTS WHERE THERE IS SOME          AWO4F405.215    
!     CONDENSED WATER, AND                                                 AWO4F405.216    
!     TO POINTS WHERE SOME PRECIPITATION ACTUALLY REACHES                  AWO1F403.27     
!     THE SURFACE.                                                         AWO1F403.28     
!     THERE ARE THEN THREE CASES TO CONSIDER.                              RAINOU1A.88     
!     (A) CONDENSED WATER CONTENT HAS ACTUALLY INCREASED. IN THIS          RAINOU1A.89     
!          CASE WE LEAVE THE DISSOLVED TRACER UNCHANGED.                   AWO4F405.217    
!     (B) CONDENSED WATER CONTENT HAS DECREASED BUT IS NON-NEGATIVE.       RAINOU1A.91     
!          IN THIS CASE WE REDUCE THE DISSOLVED TRACER IN THE              AWO4F405.218    
!         SAME RATIO.                                                      RAINOU1A.93     
!     (C) CONDENSED WATER CONTENT HAS DECREASED TO LESS THAN ZERO.         RAINOU1A.94     
!          IN THIS CASE WE REMOVE ALL THE DISSOLVED TRACER.                AWO4F405.219    
!         (MAYBE THIS CASE SHOULD NOT OCCUR. HOWEVER IT COSTS              RAINOU1A.96     
!         ALMOST NOTHING TO TRAP IT.)                                      RAINOU1A.97     
!                                                                          RAINOU1A.98     
!   Initialise RNOUT_TRACER to zero before doing rainout                   AWO4F405.220    
        DO I = FIRST_POINT,LAST_POINT                                      RAINOU1A.100    
          RNOUT_TRACER(I) = 0.0                                            AWO4F405.221    
        SURF_PRECIP(I) = LS_RAIN(I) + LS_SNOW(I)                           AWO1F403.29     
        END DO                                                             RAINOU1A.102    
!                                                                          RAINOU1A.103    
      DO LEVEL = 1,Q_LEVELS           !  loops over wet levels             RAINOU1A.104    
        DO I = FIRST_POINT,LAST_POINT ! loop over domain on a level.       RAINOU1A.105    
!                                                                          RAINOU1A.106    
          IF( ( QPREVIOUS(I,LEVEL) .GT. 0.0 ) .AND.                        AWO1F403.30     
     &        ( SURF_PRECIP(I) .GT. 0.0     ) )  THEN                      AWO1F403.31     
!                                                                          RAINOU1A.108    
            QREMAIN = QCF(I,LEVEL) + QCL(I,LEVEL)                          RAINOU1A.109    
            IF( QREMAIN .GT. QPREVIOUS(I,LEVEL) ) THEN                     RAINOU1A.110    
              FRACTION = 1.0                                               RAINOU1A.111    
            ELSE IF ( QREMAIN .GE. 0.0 ) THEN                              RAINOU1A.112    
              FRACTION = QREMAIN/QPREVIOUS(I,LEVEL)                        RAINOU1A.113    
            ELSE                                                           RAINOU1A.114    
              FRACTION = 0.0                                               RAINOU1A.115    
            ENDIF                                                          RAINOU1A.116    
!                                                                          RAINOU1A.117    
! Calculate amount TRACER removed per grid box                             AWO4F405.222    
            DELTA_TRACER = TRACER(I,LEVEL) * (1.0-FRACTION)                AWO4F405.223    
!                                                                          RAINOU1A.120    
! Calculate mass of air per unit area in layer for conversion of           AWO1F403.32     
! tracer mixing ratio increment to mass p.u.area for STASH                 AWO1F403.33     
      RDZ=(-AKDIFF(LEVEL)-BKDIFF(LEVEL)*PSTAR(I))/G                        AWO1F403.34     
!                                                                          AWO1F403.35     
!  Accumulate removed TRACER for each level                                AWO4F405.224    
            RNOUT_TRACER(I) = RNOUT_TRACER(I) + DELTA_TRACER*RDZ           AWO4F405.225    
!                                                                          RAINOU1A.123    
! Decrement TRACER                                                         AWO4F405.226    
            TRACER(I,LEVEL) = TRACER(I,LEVEL) - DELTA_TRACER               AWO4F405.227    
!                                                                          RAINOU1A.126    
          ENDIF            ! END QPREVIOUS condition                       RAINOU1A.127    
!                                                                          RAINOU1A.128    
        END DO             ! END OF I LOOP                                 RAINOU1A.129    
      END DO               ! END OF LEVEL LOOP                             RAINOU1A.130    
!                                                                          RAINOU1A.131    
      RETURN                                                               RAINOU1A.132    
      END                                                                  RAINOU1A.133    
!                                                                          RAINOU1A.134    
*ENDIF                                                                     RAINOU1A.135