*IF DEF,CONTROL,AND,DEF,ATMOS                                              LSPP_CT1.2      
C ******************************COPYRIGHT******************************    GTS2F400.5473   
C (c) CROWN COPYRIGHT 1995, METEOROLOGICAL OFFICE, All Rights Reserved.    GTS2F400.5474   
C                                                                          GTS2F400.5475   
C Use, duplication or disclosure of this code is subject to the            GTS2F400.5476   
C restrictions as set forth in the contract.                               GTS2F400.5477   
C                                                                          GTS2F400.5478   
C                Meteorological Office                                     GTS2F400.5479   
C                London Road                                               GTS2F400.5480   
C                BRACKNELL                                                 GTS2F400.5481   
C                Berkshire UK                                              GTS2F400.5482   
C                RG12 2SZ                                                  GTS2F400.5483   
C                                                                          GTS2F400.5484   
C If no contract has been raised with this copy of the code, the use,      GTS2F400.5485   
C duplication or disclosure of it is strictly prohibited.  Permission      GTS2F400.5486   
C to do so must first be obtained in writing from the Head of Numerical    GTS2F400.5487   
C Modelling at the above address.                                          GTS2F400.5488   
C ******************************COPYRIGHT******************************    GTS2F400.5489   
C                                                                          GTS2F400.5490   
CLL Subroutine LSPP_CTL----------------------------------------------      LSPP_CT1.3      
CLL                                                                        LSPP_CT1.4      
CLL Level 2 control routine                                                LSPP_CT1.5      
CLL Version for CRAY YMP                                                   LSPP_CT1.6      
CLL                                                                        LSPP_CT1.7      
CLL C.Wilson    <- programmer of some or all of previous code or changes   LSPP_CT1.8      
CLL C.Senior    <- programmer of some or all of previous code or changes   LSPP_CT1.9      
CLL                                                                        LSPP_CT1.10     
CLL  Model            Modification history from model version 3.0:         LSPP_CT1.11     
CLL version  Date                                                          LSPP_CT1.12     
CLL  3.1   8/02/93  added comdeck CHSUNITS to define NUNITS for            AYY2F400.182    
CLL                 comdeck CCONTROL                                       AYY2F400.183    
CLL  3.1  20/01/93  Add visibility diagnostics - R.T.H.Barnes              RB200193.60     
CLL                                                                        AYY2F400.184    
CLL  3.2  13/07/93  Changed CHARACTER*(*) to CHARACTER*(80) for            AYY2F400.185    
CLL                 portability.  Author Tracey Smith.                     AYY2F400.186    
CLL  3.2  13/04/93  Dynamic allocation of main arrays. R T H Barnes.       @DYALLOC.2217   
CLL                                                                        AYY2F400.187    
CLL  3.4  22/06/94  DEF EMCORR replaced by LOGICAL LEMCORR                 GSS1F304.759    
CLL                                                    S.J.Swarbrick       GSS1F304.760    
CLL  3.4  13/06/94  Modified visibility and fog fraction calls             APC3F304.86     
CLL                 to use aerosols. Pete Clark                            APC3F304.87     
!LL  4.0  22/11/94  Added arguments to LS_PPN to allow distribution of     AYY2F400.188    
!LL                 moisture in the rate calculation. A.C. Bushell.        AYY2F400.189    
CLL  3.5  28/03/95  Sub-model work : Remove run time constants             ADR1F305.102    
CLL                 from Atmos dump headers. D. Robinson.                  ADR1F305.103    
!     3.5    9/5/95   MPP code: Change updateable area. P.Burton           APB1F305.339    
CLL  3.5  05/06/95  Chgs to SI & STINDEX arrays.  RTHBarnes                GRB4F305.278    
!    4.1  23/05/96  MPP Changes. D. Robinson.                              APBCF401.2      
!LL   4.3  10/02/97  Added PPX arguments to COPY_DIAG   P.Burton           GPB1F403.1200   
!LL  4.4  05/07/97  FLUX_DIAG args changed. S.D.Mullerworth                GSM3F404.49     
!    4.4  01/07/97 2* PDF_QC_OR_CF_LIQ = cloud PDF QC value,               AYY1F404.20     
!                  3A PDF_QC_OR_CF_LIQ = liquid cloud fraction.            AYY1F404.21     
!                  2* PDF_BS_OR_CF_ICE = cloud PDF bs value,               AYY1F404.22     
!                  3A PDF_BS_OR_CF_ICE = frozen cloud fraction.            AYY1F404.23     
!                                                   A.C.Bushell            AYY1F404.24     
!LL    4.4  8/09/97  Added RHCRIT argument to GLUE_LSPP   D.Wilson         ADM3F404.1      
!LL  4.5  02/04/98   Add code to pass NH3 to GLUE_LSPP for scavenging      AWO4F405.15     
!LL                  from lower routines, and add diagnostics.             AWO4F405.16     
!LL                  Add diagnostics for scavenging as fluxes per sec      AWO4F405.17     
!LL                  for S Cycle variables.                                AWO4F405.18     
!LL                  Change CALL to RAINOUT_SULPHATE to generalised        AWO4F405.19     
!LL                  RAINOUT subroutine.                   M Woodage       AWO4F405.20     
!LL  4.5  28/09/98   Pass in dimensions of QTOTAL array to save space      AWO4F405.21     
!LL                  if S Cycle and soot not included       M Woodage      AWO4F405.22     
!LL  4.5  12/03/98   Pass aged soot to GLUE_LSPP for scavenging            AWO4F405.23     
!LL                  from lower routines. Add diagnostics. L Robinson      AWO4F405.24     
!LL  4.5  05/05/98  VISBTY call changed for NIMROD diag. Pete Clark        APC0F405.111    
!LL    4.5  3/09/98  Added extra diagnostics              D.Wilson         ADM0F405.36     
!LL  4.5  01/05/98  Restrict murk aerosol calculations to aerosol          APC0F405.771    
!LL                 levels=boundary levels. P.Clark                        APC0F405.772    
!LL  4.5  13/05/98  Two new variables passed to glue routine. S.Cusack     ASK1F405.228    
CLL                                                                        LSPP_CT1.13     
CLL Programming standard : unified model documentation paper No 3          LSPP_CT1.14     
CLL                                                                        LSPP_CT1.15     
CLL System components covered : P1                                         LSPP_CT1.16     
CLL                                                                        LSPP_CT1.17     
CLL System task : P0                                                       LSPP_CT1.18     
CLL                                                                        LSPP_CT1.19     
CLL Documentation:                                                         LSPP_CT1.20     
CLL                                                                        LSPP_CT1.21     
CLLEND -----------------------------------------------------------------   LSPP_CT1.22     
C*L Arguments                                                              LSPP_CT1.23     
                                                                           LSPP_CT1.24     

      SUBROUTINE LSPP_CTL(CLOUD_FRACTION,LS_RAIN,LS_SNOW,                   1,38AYY1F404.25     
     &   PDF_QC_OR_CF_LIQ,PDF_BS_OR_CF_ICE,P_FIELDDA,Q_LEVELSDA,INT4,      AYY1F404.26     
     &              QTOT_DIM1,QTOT_DIM2,                                   AWO4F405.25     
     &              LSPICE_DIM1,LSPICE_DIM2,                               ADM0F405.37     
*CALL ARGSIZE                                                              @DYALLOC.2219   
*CALL ARGD1                                                                @DYALLOC.2220   
*CALL ARGDUMA                                                              @DYALLOC.2221   
*CALL ARGDUMO                                                              @DYALLOC.2222   
*CALL ARGDUMW                                                              GKR1F401.223    
*CALL ARGSTS                                                               @DYALLOC.2223   
*CALL ARGPTRA                                                              @DYALLOC.2224   
*CALL ARGPTRO                                                              @DYALLOC.2225   
*CALL ARGCONA                                                              @DYALLOC.2226   
*CALL ARGPPX                                                               GKR0F305.946    
*CALL ARGFLDPT                                                             APBCF401.3      
     &           ICODE,CMESSAGE)                                           @DYALLOC.2227   
                                                                           LSPP_CT1.27     
      IMPLICIT NONE                                                        LSPP_CT1.28     
                                                                           @DYALLOC.2228   
*CALL CMAXSIZE                                                             @DYALLOC.2229   
*CALL CSUBMODL                                                             GSS1F305.931    
*CALL TYPSIZE                                                              @DYALLOC.2230   
*CALL TYPD1                                                                @DYALLOC.2231   
*CALL TYPDUMA                                                              @DYALLOC.2232   
*CALL TYPDUMO                                                              @DYALLOC.2233   
*CALL TYPDUMW                                                              GKR1F401.224    
*CALL TYPSTS                                                               @DYALLOC.2234   
*CALL TYPPTRA                                                              @DYALLOC.2235   
*CALL TYPPTRO                                                              @DYALLOC.2236   
*CALL TYPCONA                                                              @DYALLOC.2237   
*CALL PPXLOOK                                                              GKR0F305.947    
*CALL TYPFLDPT                                                             APBCF401.4      
                                                                           LSPP_CT1.29     
      INTEGER                                                              LSPP_CT1.30     
     &       INT4,        ! Dummy variable for STASH_MAXLEN(4)             LSPP_CT1.31     
     &       ICODE,       ! Return code : 0 Normal Exit                    LSPP_CT1.32     
C                         !             : >0 Error                         LSPP_CT1.33     
     &       P_FIELDDA,   ! Extra copy of P_FIELD for dynamic alloc        @DYALLOC.2238   
     &       Q_LEVELSDA   ! and Q_LEVELS                                   @DYALLOC.2239   
     &     ,QTOT_DIM1,QTOT_DIM2     ! Dimensions of QTOTAL array           AWO4F405.26     
     &     ,LSPICE_DIM1,LSPICE_DIM2 ! Required for                         ADM0F405.39     
!                                     diagnostic array dimensions          ADM0F405.40     
! LSPICE_DIM1=P_FIELDDA if diagnostics 222,223,224 or 225 chosen,          ADM0F405.41     
!             1 otherwise.                                                 ADM0F405.42     
! LSPICE_DIM2=Q_LEVELSDA if diagnostics 222,223,224 or 225 chosen,         ADM0F405.43     
!             1 otherwise.                                                 ADM0F405.44     
                                                                           LSPP_CT1.36     
      REAL                                                                 LSPP_CT1.37     
     &       CLOUD_FRACTION(P_FIELDDA,Q_LEVELSDA),                         @DYALLOC.2240   
     &       LS_RAIN(P_FIELDDA),                                           @DYALLOC.2241   
     &       LS_SNOW(P_FIELDDA),                  ! OUT                    AYY2F400.192    
     &       PDF_QC_OR_CF_LIQ(P_FIELDDA,Q_LEVELSDA),   ! IN                AYY1F404.27     
     &       PDF_BS_OR_CF_ICE(P_FIELDDA,Q_LEVELSDA)    ! IN                AYY1F404.28     
                                                                           LSPP_CT1.41     
      CHARACTER*80                                                         TS150793.104    
     &       CMESSAGE     ! Error message if return code >0                LSPP_CT1.43     
                                                                           LSPP_CT1.44     
*IF DEF,MPP                                                                APB1F305.340    
! Parameters and Common blocks                                             APB1F305.341    
*CALL PARVARS                                                              APB1F305.342    
*ENDIF                                                                     APB1F305.343    
                                                                           GSS1F305.932    
*CALL CHSUNITS                                                             RS030293.208    
*CALL CCONTROL                                                             LSPP_CT1.46     
*CALL C_LHEAT                                                              GSS1F304.761    
*CALL C_0_DG_C                                                             ADM0F405.38     
*CALL CRUNTIMC                                                             ADR1F305.104    
*CALL CTIME                                                                ADR1F305.105    
                                                                           LSPP_CT1.53     
CL External subroutines called                                             LSPP_CT1.54     
                                                                           LSPP_CT1.55     
      EXTERNAL                                                             LSPP_CT1.56     
     &        TIMER,GLUE_LSPP,COPYDIAG,STASH,QSAT,SET_LEVELS_LIST          AYY2F400.195    
     &       ,VISBTY,QSAT_WAT                                              RB200193.61     
     &       ,FLUX_DIAG                                                    GSS1F304.762    
     &       ,RAINOUT                                                      AWO4F405.27     
                                                                           LSPP_CT1.61     
CL Dynamically allocated area for stash processing                         LSPP_CT1.62     
                                                                           LSPP_CT1.63     
      REAL                                                                 LSPP_CT1.64     
     &      STASHWORK(INT4)                                                LSPP_CT1.65     
                                                                           LSPP_CT1.66     
      REAL                                                                 LSPP_CT1.67     
     &      P_WORK(P_FIELDDA),QS_WORK(P_FIELDDA)                           @DYALLOC.2243   
                                                                           LSPP_CT1.69     
C Local variables                                                          LSPP_CT1.70     
                                                                           LSPP_CT1.71     
      INTEGER                                                              LSPP_CT1.72     
     &       I,J,LEVEL,                                                    LSPP_CT1.73     
     &       ROWS,                                                         LSPP_CT1.74     
     &       FIRST_POINT,                                                  LSPP_CT1.75     
     &       LAST_POINT,                                                   LSPP_CT1.76     
     &       POINTS                                                        LSPP_CT1.77     
     &      ,IM_IDENT      ! internal model identifier                     GRB4F305.279    
     &      ,IM_INDEX      ! internal model index for STASH arrays         GRB4F305.280    
                                                                           LSPP_CT1.78     
      REAL QTOTAL(QTOT_DIM1,QTOT_DIM2) ! TOTAL CONDENSED WATER FOR         AWO4F405.28     
!                                       USE WITH SULPHUR CYCLE & SOOT      ADM0F405.45     
     &    ,LS_RAIN3D(LSPICE_DIM1,LSPICE_DIM2) ! Rain rate out of each      ADM0F405.46     
!                                               level for diagnostic       ADM0F405.47     
     &    ,LS_SNOW3D(LSPICE_DIM1,LSPICE_DIM2) ! Snow rate out of each      ADM0F405.48     
!                                               level for diagnostic       ADM0F405.49     
      REAL RNOUT_SO4DIS(P_FIELDDA)      ! column total rained-out SO4DIS   AWO4F401.4      
      REAL RNOUT_SOOT(P_FIELDDA)      ! flux of rained-out soot.           AWO4F405.269    
!                                                                          AWO4F401.5      
      REAL LSCAV_SO2(P_FIELDDA)      ! column total scavenged SO2          AWO4F401.6      
     &    ,LSCAV_NH3(P_FIELDDA)      ! column total scavenged NH3          AWO4F405.29     
     &    ,LSCAV_SO4AIT(P_FIELDDA)   ! column total scavenged SO4_AIKEN    AWO4F401.7      
     &    ,LSCAV_SO4ACC(P_FIELDDA)   ! column total scavenged SO4_ACCU     AWO4F401.8      
     &    ,LSCAV_SO4DIS(P_FIELDDA)   ! column total scavenged SO4_DISS     AWO4F401.9      
     &  ,LSCAV_AGEDSOOT(P_FIELDDA) ! column tot scavenged aged soot        AWO4F405.228    
!                                                                          AWO4F401.10     
      LOGICAL                                                              LSPP_CT1.79     
     &       LIST(Q_LEVELSDA)   ! Levels list for diagnostics              @DYALLOC.2244   
                                                                           LSPP_CT1.81     
CL                                                                         LSPP_CT1.82     
CL--- SECTION 4 --- STRATIFORM PRECIPITATION ----------                    LSPP_CT1.83     
CL                                                                         LSPP_CT1.84     
                                                                           GRB4F305.281    
C  Set up internal model identifier and STASH index                        GRB4F305.282    
      im_ident = atmos_im                                                  GRB4F305.283    
      im_index = internal_model_index(im_ident)                            GRB4F305.284    
                                                                           LSPP_CT1.85     
!  Set up grid pointers                                                    APBCF401.5      
      FIRST_POINT = START_POINT_INC_HALO                                   APBCF401.6      
      LAST_POINT  = END_P_POINT_INC_HALO                                   APBCF401.7      
      POINTS      = LAST_POINT-FIRST_POINT+1                               APBCF401.8      
      ROWS        = POINTS/ROW_LENGTH                                      APBCF401.9      
                                                                           LSPP_CT1.90     
!     IF USING SULPHUR CYCLE OR SOOT, STORE THE TOTAL                      AWO4F405.270    
!     CONDENSED WATER PRIOR TO LARGE-SCALE PRECIPITATION.                  AWO4F401.12     
!                                                                          AWO4F401.13     
      IF (L_SULPC_SO2 .OR. L_SOOT) THEN                                    AWO4F405.271    
        DO LEVEL = 1,Q_LEVELS                                              AWO4F401.15     
          DO I = FIRST_POINT,LAST_POINT                                    AWO4F401.16     
            QTOTAL(I,LEVEL) =  D1(JQCF(LEVEL) + I - 1)                     AWO4F401.17     
     &                       + D1(JQCL(LEVEL) + I - 1)                     AWO4F401.18     
          ENDDO                                                            AWO4F401.19     
        ENDDO                                                              AWO4F401.20     
      ENDIF                                                                AWO4F401.21     
!                                                                          AWO4F401.22     
      IF(LTIMER) THEN                                                      LSPP_CT1.91     
        CALL TIMER('LS_PPN  ',3)                                           LSPP_CT1.92     
      END IF                                                               LSPP_CT1.93     
                                                                           LSPP_CT1.94     
      CMESSAGE=' '                                                         LSPP_CT1.95     
      ICODE=0                                                              LSPP_CT1.96     
                                                                           LSPP_CT1.97     
C  Initialise output arrays to zero.                                       LSPP_CT1.98     
                                                                           LSPP_CT1.99     
      DO I=1,P_FIELD                                                       LSPP_CT1.100    
        LS_RAIN(I) = 0.0                                                   LSPP_CT1.101    
        LS_SNOW(I) = 0.0                                                   LSPP_CT1.102    
      END DO                                                               LSPP_CT1.103    
      CALL GLUE_LSPP(                                                      AYY2F400.196    
C Input data not changed on output                                         LSPP_CT1.106    
     &     A_LEVDEPC(JAK),A_LEVDEPC(JBK),CLOUD_FRACTION,                   LSPP_CT1.108    
     &     A_LEVDEPC(JDELTA_AK),                                           LSPP_CT1.109    
     &     A_LEVDEPC(JDELTA_BK),D1(JPSTAR),SECS_PER_STEPim(atmos_im),      ADR1F305.106    
     &     D1(JLAND),CW_SEA,CW_LAND,                                       ADR1F305.107    
     &     PDF_QC_OR_CF_LIQ,PDF_BS_OR_CF_ICE,                              AYY1F404.29     
     &     RHCRIT,                                                         ADM3F404.2      
     &     D1(JRHC(1)), L_RHCPT,                                           ASK1F405.229    
C Size and  control data                                                   LSPP_CT1.113    
     &     Q_LEVELS,P_FIELD,POINTS,FIRST_POINT,LSPICE_DIM1,LSPICE_DIM2,    ADM0F405.50     
     &     A_INTHD(13),    ! Aerosol levels = Boundary layer levels        ADM0F405.51     
C Input data changed on output                                             LSPP_CT1.117    
     &     D1(JQ(1)),D1(JQCF(1)),D1(JQCL(1)),D1(JTHETA(1)),                LSPP_CT1.119    
     &  D1(JSO2(1)),L_SULPC_SO2,                                           AWO4F401.23     
     &  D1(JNH3(1)),L_SULPC_NH3,                                           AWO4F405.30     
     &  D1(JSO4_AITKEN(1)),D1(JSO4_ACCU(1)),D1(JSO4_DISS(1)),              AWO4F401.24     
     &  D1(JSOOT_AGD(1)),              !INOUT                              AWO4F405.229    
     &  L_SOOT,                                                            AWO4F405.230    
     &     D1(JMURK(1)),L_MURK_SOURCE,                                     APC3F304.88     
C Output data                                                              LSPP_CT1.121    
     &     LS_RAIN,LS_SNOW,LS_RAIN3D,LS_SNOW3D,                            ADM0F405.52     
     &  LSCAV_SO2,LSCAV_SO4AIT,LSCAV_SO4ACC,LSCAV_SO4DIS,                  AWO4F401.25     
     &  LSCAV_NH3,                                                         AWO4F405.31     
!                                                                          AWO4F401.26     
     &  LSCAV_AGEDSOOT,                !OUT                                AWO4F405.231    
     &     ICODE)                                                          APC3F304.90     
                                                                           LSPP_CT1.124    
      IF(LTIMER) THEN                                                      LSPP_CT1.125    
        CALL TIMER('LS_PPN  ',4)                                           LSPP_CT1.126    
      END IF                                                               LSPP_CT1.127    
                                                                           LSPP_CT1.128    
                                                                           LSPP_CT1.129    
      IF(ICODE.GT.0) THEN                                                  LSPP_CT1.130    
        CMESSAGE=' LSPP_CTL : Error in LS_PPN '                            LSPP_CT1.131    
        RETURN                                                             LSPP_CT1.132    
      ENDIF                                                                LSPP_CT1.133    
!     IF SULPHUR CYCLE MODELLING IS BEING USED, CALL THE                   AWO4F401.27     
!     SUBROUTINE RAINOUT TO REMOVE DISSOLVED SULPHATE.                     AWO4F405.32     
!                                                                          AWO4F401.29     
      IF (L_SULPC_SO2) THEN                                                AWO4F401.30     
!                                                                          AWO4F401.31     
        CALL RAINOUT(D1(JQCF(1)),D1(JQCL(1)),QTOTAL,                       AWO4F405.33     
     & LS_RAIN,LS_SNOW,                                                    AWO1F403.6      
     &    D1(JSO4_DISS(1)),FIRST_POINT,LAST_POINT,                         AWO4F401.33     
     &    P_FIELD,Q_LEVELS,RNOUT_SO4DIS,                                   AWO1F403.7      
     &    A_LEVDEPC(JDELTA_AK),A_LEVDEPC(JDELTA_BK),D1(JPSTAR))            AWO1F403.8      
!                                                                          AWO4F401.35     
      ENDIF                                                                AWO4F401.36     
                                                                           LSPP_CT1.134    
!                                                                          AWO4F405.272    
!     If soot is being used, call RAINOUT to                               AWO4F405.273    
!     remove soot in cloud water.                                          AWO4F405.274    
!                                                                          AWO4F405.275    
      IF (L_SOOT) THEN                                                     AWO4F405.276    
        CALL RAINOUT(                                                      AWO4F405.277    
     &    D1(JQCF(1)),                                                     AWO4F405.278    
     &    D1(JQCL(1)),                                                     AWO4F405.279    
     &    QTOTAL,                                                          AWO4F405.280    
     &    LS_RAIN,                                                         AWO4F405.281    
     &    LS_SNOW,                                                         AWO4F405.282    
     &    D1(JSOOT_CLD(1)),                                                AWO4F405.283    
     &    FIRST_POINT,                                                     AWO4F405.284    
     &    LAST_POINT,                                                      AWO4F405.285    
     &    P_FIELD,                                                         AWO4F405.286    
     &    Q_LEVELS,                                                        AWO4F405.287    
     &    RNOUT_SOOT,                                                      AWO4F405.288    
     &    A_LEVDEPC(JDELTA_AK),                                            AWO4F405.289    
     &    A_LEVDEPC(JDELTA_BK),                                            AWO4F405.290    
     &    D1(JPSTAR)                                                       AWO4F405.291    
     &    )                                                                AWO4F405.292    
                                                                           AWO4F405.293    
      ENDIF                                                                AWO4F405.294    
!                                                                          AWO4F405.295    
!                                                                          AWO4F405.296    
      IF (LEMCORR) THEN                                                    GSS1F304.763    
C                                                                          LSPP_CT1.136    
C ADD LARGE-SCALE RAIN AND SNOW AT THE SURFACE TO THE                      LSPP_CT1.137    
C DIABATIC HEATING FOR USE IN THE ENERGY CORRECTION                        LSPP_CT1.138    
C PROCEDURE                                                                LSPP_CT1.139    
C                                                                          LSPP_CT1.140    
       IF (LTIMER) THEN                                                    LSPP_CT1.141    
         CALL TIMER('FLX_DIAG',3)                                          LSPP_CT1.142    
       END IF                                                              LSPP_CT1.143    
C                                                                          LSPP_CT1.144    
      CALL FLUX_DIAG(LS_RAIN,COS_P_LATITUDE,                               APB5F401.144    
     &               P_FIELD,FIRST_POINT,POINTS,                           APB5F401.145    
     &               LC,SECS_PER_STEPim(atmos_im),D1(JNET_FLUX))           GSM3F404.50     
      CALL FLUX_DIAG(LS_SNOW,COS_P_LATITUDE,                               APB5F401.147    
     &               P_FIELD,FIRST_POINT,POINTS,                           APB5F401.148    
     &               (LC+LF),SECS_PER_STEPim(atmos_im),D1(JNET_FLUX))      GSM3F404.51     
C                                                                          LSPP_CT1.151    
       IF (LTIMER) THEN                                                    LSPP_CT1.152    
         CALL TIMER('FLX_DIAG',4)                                          LSPP_CT1.153    
       END IF                                                              LSPP_CT1.154    
C                                                                          LSPP_CT1.155    
      END IF     !    LEMCORR                                              GSS1F304.764    
                                                                           LSPP_CT1.157    
CL Copy diagnostic information to STASHWORK for STASH processing           LSPP_CT1.158    
                                                                           LSPP_CT1.159    
C Item 201 Large scale rain                                                LSPP_CT1.160    
                                                                           LSPP_CT1.161    
      IF(SF(201,4)) THEN                                                   LSPP_CT1.162    
                                                                           LSPP_CT1.163    
        CALL COPYDIAG(STASHWORK(si(201,4,im_index)),LS_RAIN,               GRB4F305.285    
     &       FIRST_POINT,LAST_POINT,P_FIELD,ROW_LENGTH,                    GPB1F403.1201   
     &       im_ident,4,201,                                               GPB1F403.1202   
*CALL ARGPPX                                                               GPB1F403.1203   
     &       ICODE,CMESSAGE)                                               GPB1F403.1204   
                                                                           GPB1F403.1205   
        IF (ICODE .GT. 0) GOTO 9999                                        GPB1F403.1206   
                                                                           LSPP_CT1.166    
C Code to convert rate to ammount for a given timestep                     LSPP_CT1.167    
                                                                           LSPP_CT1.168    
        DO I=1,P_FIELD                                                     LSPP_CT1.169    
          STASHWORK(si(201,4,im_index)+I-1)=                               GRB4F305.286    
     &    STASHWORK(SI(201,4,im_index)+I-1)*SECS_PER_STEPim(a_im)          ADR1F305.110    
        END DO                                                             LSPP_CT1.172    
                                                                           LSPP_CT1.173    
      END IF                                                               LSPP_CT1.174    
                                                                           LSPP_CT1.175    
C Item 202 Large scale snow                                                LSPP_CT1.176    
                                                                           LSPP_CT1.177    
      IF(SF(202,4)) THEN                                                   LSPP_CT1.178    
                                                                           LSPP_CT1.179    
        CALL COPYDIAG(STASHWORK(si(202,4,im_index)),LS_SNOW,               GRB4F305.287    
     &       FIRST_POINT,LAST_POINT,P_FIELD,ROW_LENGTH,                    GPB1F403.1207   
     &       im_ident,4,202,                                               GPB1F403.1208   
*CALL ARGPPX                                                               GPB1F403.1209   
     &       ICODE,CMESSAGE)                                               GPB1F403.1210   
                                                                           GPB1F403.1211   
        IF (ICODE .GT. 0) GOTO 9999                                        GPB1F403.1212   
                                                                           LSPP_CT1.182    
        DO I=1,P_FIELD                                                     LSPP_CT1.183    
          STASHWORK(si(202,4,im_index)+I-1)=                               GRB4F305.288    
     &    STASHWORK(SI(202,4,im_index)+I-1)*SECS_PER_STEPim(a_im)          ADR1F305.111    
        END DO                                                             LSPP_CT1.186    
                                                                           LSPP_CT1.187    
      END IF                                                               LSPP_CT1.188    
                                                                           LSPP_CT1.189    
C Item 203 Large scale rain                                                LSPP_CT1.190    
                                                                           LSPP_CT1.191    
      IF(SF(203,4)) THEN                                                   LSPP_CT1.192    
                                                                           LSPP_CT1.193    
        CALL COPYDIAG(STASHWORK(si(203,4,im_index)),LS_RAIN,               GRB4F305.289    
     &       FIRST_POINT,LAST_POINT,P_FIELD,ROW_LENGTH,                    GPB1F403.1213   
     &       im_ident,4,203,                                               GPB1F403.1214   
*CALL ARGPPX                                                               GPB1F403.1215   
     &       ICODE,CMESSAGE)                                               GPB1F403.1216   
                                                                           GPB1F403.1217   
        IF (ICODE .GT. 0) GOTO 9999                                        GPB1F403.1218   
                                                                           LSPP_CT1.196    
      END IF                                                               LSPP_CT1.197    
                                                                           LSPP_CT1.198    
C Item 204 Large scale snow                                                LSPP_CT1.199    
                                                                           LSPP_CT1.200    
      IF(SF(204,4)) THEN                                                   LSPP_CT1.201    
                                                                           LSPP_CT1.202    
        CALL COPYDIAG(STASHWORK(si(204,4,im_index)),LS_SNOW,               GRB4F305.290    
     &       FIRST_POINT,LAST_POINT,P_FIELD,ROW_LENGTH,                    GPB1F403.1219   
     &       im_ident,4,204,                                               GPB1F403.1220   
*CALL ARGPPX                                                               GPB1F403.1221   
     &       ICODE,CMESSAGE)                                               GPB1F403.1222   
                                                                           GPB1F403.1223   
        IF (ICODE .GT. 0) GOTO 9999                                        GPB1F403.1224   
                                                                           LSPP_CT1.205    
      END IF                                                               LSPP_CT1.206    
                                                                           LSPP_CT1.207    
                                                                           LSPP_CT1.208    
                                                                           LSPP_CT1.209    
        IF(SF(205,4)) THEN                                                 LSPP_CT1.210    
                                                                           LSPP_CT1.211    
CL Copy Cloud water to STASHWORK                                           LSPP_CT1.212    
                                                                           LSPP_CT1.213    
          CALL COPYDIAG_3D(STASHWORK(si(205,4,im_index)),D1(JQCL(1)),      GRB4F305.291    
     &        FIRST_POINT,LAST_POINT,P_FIELD,ROW_LENGTH,                   LSPP_CT1.215    
     &        P_LEVELS,STLIST(1,STINDEX(1,205,4,im_index)),LEN_STLIST,     GRB4F305.292    
     &        STASH_LEVELS,NUM_STASH_LEVELS+1,                             GPB1F403.1225   
     &        im_ident,4,205,                                              GPB1F403.1226   
*CALL ARGPPX                                                               GPB1F403.1227   
     &        ICODE,CMESSAGE)                                              GPB1F403.1228   
                                                                           LSPP_CT1.218    
          IF (ICODE.GT.0) THEN                                             LSPP_CT1.219    
            CMESSAGE="LSPP_CTL  : ERROR IN COPYDIAG_3D(cloud water)"       LSPP_CT1.220    
            RETURN                                                         LSPP_CT1.221    
          END IF                                                           LSPP_CT1.222    
                                                                           LSPP_CT1.223    
        END IF                                                             LSPP_CT1.224    
                                                                           LSPP_CT1.225    
        IF(SF(206,4)) THEN                                                 LSPP_CT1.226    
                                                                           LSPP_CT1.227    
CL Copy Cloud ice to STASHWORK                                             LSPP_CT1.228    
                                                                           LSPP_CT1.229    
          CALL COPYDIAG_3D(STASHWORK(si(206,4,im_index)),D1(JQCF(1)),      GRB4F305.293    
     &        FIRST_POINT,LAST_POINT,P_FIELD,ROW_LENGTH,                   LSPP_CT1.231    
     &        P_LEVELS,STLIST(1,STINDEX(1,206,4,im_index)),LEN_STLIST,     GRB4F305.294    
     &        STASH_LEVELS,NUM_STASH_LEVELS+1,                             GPB1F403.1229   
     &        im_ident,4,206,                                              GPB1F403.1230   
*CALL ARGPPX                                                               GPB1F403.1231   
     &        ICODE,CMESSAGE)                                              GPB1F403.1232   
                                                                           LSPP_CT1.234    
          IF (ICODE.GT.0) THEN                                             LSPP_CT1.235    
            CMESSAGE="LSPP_CTL  : ERROR IN COPYDIAG_3D(cloud ice)"         LSPP_CT1.236    
            RETURN                                                         LSPP_CT1.237    
          END IF                                                           LSPP_CT1.238    
                                                                           LSPP_CT1.239    
        END IF                                                             LSPP_CT1.240    
                                                                           LSPP_CT1.241    
C Item 207 Relative Humidity                                               LSPP_CT1.242    
                                                                           LSPP_CT1.243    
      IF(SF(207,4)) THEN                                                   LSPP_CT1.244    
        CALL SET_LEVELS_LIST(Q_LEVELS,LEN_STLIST,                          LSPP_CT1.245    
     &      STLIST(1,STINDEX(1,207,4,im_index)),                           GRB4F305.295    
     &      LIST,STASH_LEVELS,NUM_STASH_LEVELS+1,ICODE,CMESSAGE)           LSPP_CT1.247    
        IF (ICODE.GT.0) RETURN                                             LSPP_CT1.248    
                                                                           LSPP_CT1.249    
        LEVEL=0                                                            LSPP_CT1.250    
        DO J=1,Q_LEVELS                                                    LSPP_CT1.251    
          IF(LIST(J)) THEN                                                 LSPP_CT1.252    
            LEVEL=LEVEL+1                                                  LSPP_CT1.253    
            DO I=1,P_FIELD                                                 LSPP_CT1.254    
              P_WORK(I)=D1(JPSTAR+I-1)*A_LEVDEPC(JBK+J-1)+                 LSPP_CT1.255    
     &                   A_LEVDEPC(JAK+J-1)                                LSPP_CT1.256    
            END DO                                                         LSPP_CT1.257    
            CALL QSAT(QS_WORK,D1(JTHETA(J)),P_WORK,P_FIELD)                LSPP_CT1.258    
                                                                           LSPP_CT1.259    
            DO I=1,P_FIELD                                                 LSPP_CT1.260    
              STASHWORK(si(207,4,im_index)+(LEVEL-1)*P_FIELD+I-1)=         GRB4F305.296    
     &         D1(JQ(J)+I-1)/QS_WORK(I)*100.                               LSPP_CT1.262    
            END DO                                                         LSPP_CT1.263    
          END IF                                                           RB200193.62     
        END DO                                                             RB200193.63     
      END IF                                                               RB200193.64     
                                                                           RB200193.65     
C Item 208 Visibility                                                      RB200193.66     
                                                                           RB200193.67     
      IF(SF(208,4)) THEN                                                   RB200193.68     
        CALL SET_LEVELS_LIST(Q_LEVELS,LEN_STLIST,                          RB200193.69     
     &      STLIST(1,STINDEX(1,208,4,im_index)),                           GRB4F305.297    
     &      LIST,STASH_LEVELS,NUM_STASH_LEVELS+1,ICODE,CMESSAGE)           RB200193.71     
        IF (ICODE.GT.0) RETURN                                             RB200193.72     
                                                                           RB200193.73     
        LEVEL=0                                                            RB200193.74     
        DO J=1,Q_LEVELS                                                    RB200193.75     
          IF(LIST(J)) THEN                                                 RB200193.76     
            LEVEL=LEVEL+1                                                  RB200193.77     
            DO I=1,P_FIELD                                                 RB200193.78     
              P_WORK(I)=D1(JPSTAR+I-1)*A_LEVDEPC(JBK+J-1)+                 RB200193.79     
     &                   A_LEVDEPC(JAK+J-1)                                RB200193.80     
            END DO                                                         RB200193.81     
            CALL QSAT_WAT(QS_WORK,D1(JTHETA(J)),P_WORK,P_FIELD)            RB200193.82     
C  Change QS_WORK from QSAT(water) to RH                                   RB200193.83     
            DO  I = 1,P_FIELD                                              RB200193.84     
              QS_WORK(I) = D1(JQ(J)+I-1)/QS_WORK(I)*100.0                  RB200193.85     
            END DO                                                         RB200193.86     
                                                                           RB200193.87     
            CALL VISBTY(A_LEVDEPC(JAK+J-1),A_LEVDEPC(JBK+J-1),             APC0F405.112    
     &                  D1(JPSTAR),D1(JTHETA(J)),D1(JQ(J)),                APC0F405.113    
     &                  D1(JQCL(J)),D1(JQCF(J)),                           APC0F405.114    
     &                  D1(JMURK(LEVEL)),                                  APC0F405.115    
     &                  0.5,RHCRIT(J),L_MURK,    ! 0.5 for median vis      APC0F405.116    
     &                  P_FIELD,                                           APC3F304.93     
     &                STASHWORK(si(208,4,im_index)+(LEVEL-1)*P_FIELD))     GRB4F305.298    
          END IF                                                           LSPP_CT1.264    
        END DO                                                             LSPP_CT1.265    
      END IF                                                               LSPP_CT1.266    
                                                                           LSPP_CT1.267    
!                                                                          AWO4F401.37     
      IF (L_SULPC_SO2) THEN                                                AWO4F401.38     
!                                                                          AWO4F401.39     
! Write LSPSCVGD_TRACER to STASHWORK array .                               AWO4F401.40     
!                                                                          AWO4F401.41     
      IF(SF(211,4)) THEN                ! write scavenged SO2 to STASH     AWO4F401.42     
       CALL COPYDIAG(STASHWORK(SI(211,4,im_index)),LSCAV_SO2,              AWO4F401.43     
     &               FIRST_POINT,LAST_POINT,P_FIELD,ROW_LENGTH,            GPB1F403.1233   
     &               im_ident,4,211,                                       GPB1F403.1234   
*CALL ARGPPX                                                               GPB1F403.1235   
     &               ICODE,CMESSAGE)                                       GPB1F403.1236   
                                                                           GPB1F403.1237   
       IF (ICODE .GT. 0) GOTO 9999                                         GPB1F403.1238   
      ENDIF                                                                AWO4F401.45     
!                                                                          AWO4F405.34     
      IF(SF(216,4)) THEN                                                   AWO4F405.35     
       CALL COPYDIAG(STASHWORK(SI(216,4,im_index)),LSCAV_SO2,              AWO4F405.36     
     &               FIRST_POINT,LAST_POINT,P_FIELD,ROW_LENGTH,            AWO4F405.37     
     &               im_ident,4,216,                                       AWO4F405.38     
*CALL ARGPPX                                                               AWO4F405.39     
     &               ICODE,CMESSAGE)                                       AWO4F405.40     
                                                                           AWO4F405.41     
       IF (ICODE .GT. 0) GOTO 9999                                         AWO4F405.42     
!                                                                          AWO4F405.43     
! Convert amount scavenged per tstep to flux per sec                       AWO4F405.44     
        DO I=1,P_FIELD                                                     AWO4F405.45     
        STASHWORK(SI(216,4,im_index)+I-1)=                                 AWO4F405.46     
     &     STASHWORK(SI(216,4,im_index)+I-1)/SECS_PER_STEPim(atmos_im)     AWO4F405.47     
        END DO                                                             AWO4F405.48     
      ENDIF                                                                AWO4F405.49     
!                                                                          AWO4F405.50     
!                                                                          AWO4F401.46     
!                                                                          AWO4F405.51     
       IF (L_SULPC_NH3) THEN                                               AWO4F405.52     
!                                                                          AWO4F405.53     
       IF(SF(215,4)) THEN              ! write scavenged NH3 to STASH      AWO4F405.54     
       CALL COPYDIAG(STASHWORK(SI(215,4,im_index)),LSCAV_NH3,              AWO4F405.55     
     &               FIRST_POINT,LAST_POINT,P_FIELD,ROW_LENGTH,            AWO4F405.56     
     &               im_ident,4,215,                                       AWO4F405.57     
*CALL ARGPPX                                                               AWO4F405.58     
     &               ICODE,CMESSAGE)                                       AWO4F405.59     
                                                                           AWO4F405.60     
       IF (ICODE .GT. 0) GOTO 9999                                         AWO4F405.61     
!                                                                          AWO4F405.62     
! Convert amount scavenged per tstep to flux per sec                       AWO4F405.63     
        DO I=1,P_FIELD                                                     AWO4F405.64     
        STASHWORK(SI(215,4,im_index)+I-1)=                                 AWO4F405.65     
     &     STASHWORK(SI(215,4,im_index)+I-1)/SECS_PER_STEPim(atmos_im)     AWO4F405.66     
        END DO                                                             AWO4F405.67     
       ENDIF                                                               AWO4F405.68     
!                                                                          AWO4F405.69     
       END IF                  ! end L_SULPC_NH3 condition                 AWO4F405.70     
      IF(SF(212,4)) THEN              ! write scavenged SO4_AIT to STASH   AWO4F401.47     
       CALL COPYDIAG(STASHWORK(SI(212,4,im_index)),LSCAV_SO4AIT,           AWO4F401.48     
     &               FIRST_POINT,LAST_POINT,P_FIELD,ROW_LENGTH,            GPB1F403.1239   
     &               im_ident,4,212,                                       GPB1F403.1240   
*CALL ARGPPX                                                               GPB1F403.1241   
     &               ICODE,CMESSAGE)                                       GPB1F403.1242   
                                                                           GPB1F403.1243   
       IF (ICODE .GT. 0) GOTO 9999                                         GPB1F403.1244   
      ENDIF                                                                AWO4F401.50     
!                                                                          AWO4F405.71     
      IF(SF(217,4)) THEN                                                   AWO4F405.72     
       CALL COPYDIAG(STASHWORK(SI(217,4,im_index)),LSCAV_SO4AIT,           AWO4F405.73     
     &               FIRST_POINT,LAST_POINT,P_FIELD,ROW_LENGTH,            AWO4F405.74     
     &               im_ident,4,217,                                       AWO4F405.75     
*CALL ARGPPX                                                               AWO4F405.76     
     &               ICODE,CMESSAGE)                                       AWO4F405.77     
                                                                           AWO4F405.78     
       IF (ICODE .GT. 0) GOTO 9999                                         AWO4F405.79     
!                                                                          AWO4F405.80     
! Convert amount scavenged per tstep to flux per sec                       AWO4F405.81     
        DO I=1,P_FIELD                                                     AWO4F405.82     
        STASHWORK(SI(217,4,im_index)+I-1)=                                 AWO4F405.83     
     &     STASHWORK(SI(217,4,im_index)+I-1)/SECS_PER_STEPim(atmos_im)     AWO4F405.84     
        END DO                                                             AWO4F405.85     
      ENDIF                                                                AWO4F405.86     
!                                                                          AWO4F405.87     
!                                                                          AWO4F401.51     
      IF(SF(213,4)) THEN              ! write scavenged SO4_ACC to STASH   AWO4F401.52     
       CALL COPYDIAG(STASHWORK(SI(213,4,im_index)),LSCAV_SO4ACC,           AWO4F401.53     
     &               FIRST_POINT,LAST_POINT,P_FIELD,ROW_LENGTH,            GPB1F403.1245   
     &               im_ident,4,213,                                       GPB1F403.1246   
*CALL ARGPPX                                                               GPB1F403.1247   
     &               ICODE,CMESSAGE)                                       GPB1F403.1248   
                                                                           GPB1F403.1249   
       IF (ICODE .GT. 0) GOTO 9999                                         GPB1F403.1250   
      ENDIF                                                                AWO4F401.55     
!                                                                          AWO4F405.88     
      IF(SF(218,4)) THEN                                                   AWO4F405.89     
       CALL COPYDIAG(STASHWORK(SI(218,4,im_index)),LSCAV_SO4ACC,           AWO4F405.90     
     &               FIRST_POINT,LAST_POINT,P_FIELD,ROW_LENGTH,            AWO4F405.91     
     &               im_ident,4,218,                                       AWO4F405.92     
*CALL ARGPPX                                                               AWO4F405.93     
     &               ICODE,CMESSAGE)                                       AWO4F405.94     
                                                                           AWO4F405.95     
       IF (ICODE .GT. 0) GOTO 9999                                         AWO4F405.96     
!                                                                          AWO4F405.97     
! Convert amount scavenged per tstep to flux per sec                       AWO4F405.98     
        DO I=1,P_FIELD                                                     AWO4F405.99     
        STASHWORK(SI(218,4,im_index)+I-1)=                                 AWO4F405.100    
     &     STASHWORK(SI(218,4,im_index)+I-1)/SECS_PER_STEPim(atmos_im)     AWO4F405.101    
        END DO                                                             AWO4F405.102    
      ENDIF                                                                AWO4F405.103    
!                                                                          AWO4F405.104    
!                                                                          AWO4F401.56     
      IF(SF(214,4)) THEN              ! write scavenged SO4_DIS to STASH   AWO4F401.57     
!                                                                          AWO4F401.58     
! First add RNOUT_SO4DIS and LSCAV_SO4DIS                                  AWO4F401.59     
       DO I=FIRST_POINT,LAST_POINT                                         AWO4F401.60     
        LSCAV_SO4DIS(I) = LSCAV_SO4DIS(I)+RNOUT_SO4DIS(I)                  AWO4F401.61     
       END DO                                                              AWO4F401.62     
!                                                                          AWO4F401.63     
       CALL COPYDIAG(STASHWORK(SI(214,4,im_index)),LSCAV_SO4DIS,           AWO4F401.64     
     &               FIRST_POINT,LAST_POINT,P_FIELD,ROW_LENGTH,            GPB1F403.1251   
     &               im_ident,4,214,                                       GPB1F403.1252   
*CALL ARGPPX                                                               GPB1F403.1253   
     &               ICODE,CMESSAGE)                                       GPB1F403.1254   
                                                                           GPB1F403.1255   
       IF (ICODE .GT. 0) GOTO 9999                                         GPB1F403.1256   
      ENDIF                                                                AWO4F401.66     
!                                                                          AWO4F405.105    
      IF(SF(219,4)) THEN                                                   AWO4F405.106    
       CALL COPYDIAG(STASHWORK(SI(219,4,im_index)),LSCAV_SO4DIS,           AWO4F405.107    
     &               FIRST_POINT,LAST_POINT,P_FIELD,ROW_LENGTH,            AWO4F405.108    
     &               im_ident,4,219,                                       AWO4F405.109    
*CALL ARGPPX                                                               AWO4F405.110    
     &               ICODE,CMESSAGE)                                       AWO4F405.111    
                                                                           AWO4F405.112    
       IF (ICODE .GT. 0) GOTO 9999                                         AWO4F405.113    
!                                                                          AWO4F405.114    
! Convert amount scavenged per tstep to flux per sec                       AWO4F405.115    
        DO I=1,P_FIELD                                                     AWO4F405.116    
        STASHWORK(SI(219,4,im_index)+I-1)=                                 AWO4F405.117    
     &     STASHWORK(SI(219,4,im_index)+I-1)/SECS_PER_STEPim(atmos_im)     AWO4F405.118    
        END DO                                                             AWO4F405.119    
      ENDIF                                                                AWO4F405.120    
!                                                                          AWO4F405.121    
!                                                                          AWO4F401.67     
      END IF         ! End L_SULPC_SO2 condition                           AWO4F401.68     
! Convert units of soot rainout and washout deposition fluxes              AWO4F405.232    
! from kg/m2/ts to kg/m2/s.                                                AWO4F405.233    
                                                                           AWO4F405.234    
      IF (L_SOOT) THEN                                                     AWO4F405.235    
        DO I=FIRST_POINT,LAST_POINT                                        AWO4F405.236    
          RNOUT_SOOT(I) = RNOUT_SOOT(I)/SECS_PER_STEPim(atmos_im)          AWO4F405.237    
        END DO                                                             AWO4F405.238    
!                                                                          AWO4F405.239    
        DO I=FIRST_POINT,LAST_POINT                                        AWO4F405.240    
          LSCAV_AGEDSOOT(I) = LSCAV_AGEDSOOT(I)/                           AWO4F405.241    
     &                        SECS_PER_STEPim(atmos_im)                    AWO4F405.242    
        END DO                                                             AWO4F405.243    
                                                                           AWO4F405.244    
!                                                                          AWO4F405.245    
! Write rainout flux to STASH                                              AWO4F405.246    
        IF(SF(220,4)) THEN      ! Rainout flux of aged soot                AWO4F405.247    
          CALL COPYDIAG(STASHWORK(SI(220,4,im_index)),RNOUT_SOOT,          AWO4F405.248    
     &               FIRST_POINT,LAST_POINT,P_FIELD,ROW_LENGTH,            AWO4F405.249    
     &               im_ident,4,220,                                       AWO4F405.250    
*CALL ARGPPX                                                               AWO4F405.251    
     &               ICODE,CMESSAGE)                                       AWO4F405.252    
          IF (ICODE.GT.0) RETURN                                           AWO4F405.253    
        ENDIF                                                              AWO4F405.254    
                                                                           AWO4F405.255    
! Write washout flux to STASH                                              AWO4F405.256    
        IF(SF(221,4)) THEN    ! Washout (below cloud scavenging) flux      AWO4F405.257    
                              ! of aged soot                               AWO4F405.258    
          CALL COPYDIAG(STASHWORK(SI(221,4,im_index)),LSCAV_AGEDSOOT,      AWO4F405.259    
     &               FIRST_POINT,LAST_POINT,P_FIELD,ROW_LENGTH,            AWO4F405.260    
     &               im_ident,4,221,                                       AWO4F405.261    
*CALL ARGPPX                                                               AWO4F405.262    
     &               ICODE,CMESSAGE)                                       AWO4F405.263    
          IF (ICODE.GT.0) RETURN                                           AWO4F405.264    
        ENDIF                                                              AWO4F405.265    
      ENDIF  ! L_SOOT                                                      AWO4F405.266    
!                                                                          AWO4F405.267    
!                                                                          AWO4F405.268    
!                                                                          ADM0F405.53     
        IF(SF(222,4)) THEN                                                 ADM0F405.54     
!                                                                          ADM0F405.55     
!  Copy 3D field of rain rate out of layer (kg/m2/s) to STASHWORK          ADM0F405.56     
!                                                                          ADM0F405.57     
          CALL COPYDIAG_3D(STASHWORK(si(222,4,im_index)),LS_RAIN3D,        ADM0F405.58     
     &        FIRST_POINT,LAST_POINT,P_FIELD,ROW_LENGTH,                   ADM0F405.59     
     &        P_LEVELS,STLIST(1,STINDEX(1,222,4,im_index)),LEN_STLIST,     ADM0F405.60     
     &        STASH_LEVELS,NUM_STASH_LEVELS+1,                             ADM0F405.61     
     &        im_ident,4,222,                                              ADM0F405.62     
*CALL ARGPPX                                                               ADM0F405.63     
     &        ICODE,CMESSAGE)                                              ADM0F405.64     
!                                                                          ADM0F405.65     
          IF (ICODE.GT.0) THEN                                             ADM0F405.66     
            CMESSAGE="LSPP_CTL  : ERROR IN COPYDIAG_3D(3D rainrate)"       ADM0F405.67     
            RETURN                                                         ADM0F405.68     
          END IF                                                           ADM0F405.69     
!                                                                          ADM0F405.70     
        END IF                                                             ADM0F405.71     
!                                                                          ADM0F405.72     
        IF(SF(223,4)) THEN                                                 ADM0F405.73     
!                                                                          ADM0F405.74     
!  Copy 3D field of snow rate out of layer (kg/m2/s) to STASHWORK          ADM0F405.75     
!                                                                          ADM0F405.76     
          CALL COPYDIAG_3D(STASHWORK(si(223,4,im_index)),LS_SNOW3D,        ADM0F405.77     
     &        FIRST_POINT,LAST_POINT,P_FIELD,ROW_LENGTH,                   ADM0F405.78     
     &        P_LEVELS,STLIST(1,STINDEX(1,223,4,im_index)),LEN_STLIST,     ADM0F405.79     
     &        STASH_LEVELS,NUM_STASH_LEVELS+1,                             ADM0F405.80     
     &        im_ident,4,223,                                              ADM0F405.81     
*CALL ARGPPX                                                               ADM0F405.82     
     &        ICODE,CMESSAGE)                                              ADM0F405.83     
!                                                                          ADM0F405.84     
          IF (ICODE.GT.0) THEN                                             ADM0F405.85     
            CMESSAGE="LSPP_CTL  : ERROR IN COPYDIAG_3D(3D snowrate)"       ADM0F405.86     
            RETURN                                                         ADM0F405.87     
          END IF                                                           ADM0F405.88     
!                                                                          ADM0F405.89     
        END IF                                                             ADM0F405.90     
!                                                                          ADM0F405.91     
! Need to produce diagnsotic 225 before 224 in order to save memory.       ADM0F405.92     
!                                                                          ADM0F405.93     
        IF(SF(225,4)) THEN                                                 ADM0F405.94     
!                                                                          ADM0F405.95     
!  Supercooled 3D rain content. It is equal to                             ADM0F405.96     
!  the 3D rainrate at T < 0 and equal to 0 at T > 0                        ADM0F405.97     
!  Alter the array LS_RAIN3D directly                                      ADM0F405.98     
!                                                                          ADM0F405.99     
          DO J=1,Q_LEVELS                                                  ADM0F405.100    
            DO I=1,P_FIELD                                                 ADM0F405.101    
              IF (D1(JTHETA(J)+I-1) .GE. ZERODEGC) THEN                    ADM0F405.102    
! Warm temperatures                                                        ADM0F405.103    
                LS_RAIN3D(I,J)=0.0                                         ADM0F405.104    
              ENDIF                                                        ADM0F405.105    
            ENDDO                                                          ADM0F405.106    
          ENDDO                                                            ADM0F405.107    
! Copy to stashwork                                                        ADM0F405.108    
          CALL COPYDIAG_3D(STASHWORK(si(225,4,im_index)),LS_RAIN3D,        ADM0F405.109    
     &        FIRST_POINT,LAST_POINT,P_FIELD,ROW_LENGTH,                   ADM0F405.110    
     &        P_LEVELS,STLIST(1,STINDEX(1,225,4,im_index)),LEN_STLIST,     ADM0F405.111    
     &        STASH_LEVELS,NUM_STASH_LEVELS+1,                             ADM0F405.112    
     &        im_ident,4,225,                                              ADM0F405.113    
*CALL ARGPPX                                                               ADM0F405.114    
     &        ICODE,CMESSAGE)                                              ADM0F405.115    
!                                                                          ADM0F405.116    
          IF (ICODE.GT.0) THEN                                             ADM0F405.117    
      CMESSAGE="LSPP_CTL  : ERROR IN COPYDIAG_3D(Supercooled 3D rain)"     ADM0F405.118    
            RETURN                                                         ADM0F405.119    
          END IF                                                           ADM0F405.120    
!                                                                          ADM0F405.121    
        END IF                                                             ADM0F405.122    
!                                                                          ADM0F405.123    
        IF(SF(224,4)) THEN                                                 ADM0F405.124    
!                                                                          ADM0F405.125    
!  Supercooled liquid water content. It is equal to                        ADM0F405.126    
!  the liquid water content at T < 0 and equal to 0 at T > 0               ADM0F405.127    
!  Use LS_RAIN3D as the array in order to save memory                      ADM0F405.128    
!                                                                          ADM0F405.129    
          DO J=1,Q_LEVELS                                                  ADM0F405.130    
            DO I=1,P_FIELD                                                 ADM0F405.131    
              IF (D1(JTHETA(J)+I-1) .LT. ZERODEGC) THEN                    ADM0F405.132    
! Supercooled temperatures                                                 ADM0F405.133    
                LS_RAIN3D(I,J)=D1(JQCL(J)+I-1)                             ADM0F405.134    
              ELSE                                                         ADM0F405.135    
! Warm temperatures                                                        ADM0F405.136    
                LS_RAIN3D(I,J)=0.0                                         ADM0F405.137    
              ENDIF                                                        ADM0F405.138    
            ENDDO                                                          ADM0F405.139    
          ENDDO                                                            ADM0F405.140    
! Copy to stashwork                                                        ADM0F405.141    
          CALL COPYDIAG_3D(STASHWORK(si(224,4,im_index)),LS_RAIN3D,        ADM0F405.142    
     &        FIRST_POINT,LAST_POINT,P_FIELD,ROW_LENGTH,                   ADM0F405.143    
     &        P_LEVELS,STLIST(1,STINDEX(1,224,4,im_index)),LEN_STLIST,     ADM0F405.144    
     &        STASH_LEVELS,NUM_STASH_LEVELS+1,                             ADM0F405.145    
     &        im_ident,4,224,                                              ADM0F405.146    
*CALL ARGPPX                                                               ADM0F405.147    
     &        ICODE,CMESSAGE)                                              ADM0F405.148    
!                                                                          ADM0F405.149    
          IF (ICODE.GT.0) THEN                                             ADM0F405.150    
          CMESSAGE="LSPP_CTL  : ERROR IN COPYDIAG_3D(Supercooled QCL)"     ADM0F405.151    
            RETURN                                                         ADM0F405.152    
          END IF                                                           ADM0F405.153    
!                                                                          ADM0F405.154    
        END IF                                                             ADM0F405.155    
!                                                                          ADM0F405.156    
C call STASH to process output                                             LSPP_CT1.268    
                                                                           LSPP_CT1.269    
      IF(LTIMER) THEN                                                      LSPP_CT1.270    
        CALL TIMER('STASH   ',3)                                           LSPP_CT1.271    
      END IF                                                               LSPP_CT1.272    
                                                                           LSPP_CT1.273    
      CALL STASH(a_sm,a_im,4,STASHWORK,                                    GKR0F305.948    
*CALL ARGSIZE                                                              @DYALLOC.2246   
*CALL ARGD1                                                                @DYALLOC.2247   
*CALL ARGDUMA                                                              @DYALLOC.2248   
*CALL ARGDUMO                                                              @DYALLOC.2249   
*CALL ARGDUMW                                                              GKR1F401.225    
*CALL ARGSTS                                                               @DYALLOC.2250   
*CALL ARGPPX                                                               GKR0F305.949    
     &           ICODE,CMESSAGE)                                           @DYALLOC.2254   
                                                                           LSPP_CT1.275    
      IF(LTIMER) THEN                                                      LSPP_CT1.276    
        CALL TIMER('STASH   ',4)                                           LSPP_CT1.277    
      END IF                                                               LSPP_CT1.278    
                                                                           LSPP_CT1.279    
 9999 CONTINUE                                                             GPB1F403.1257   
      RETURN                                                               LSPP_CT1.280    
      END                                                                  LSPP_CT1.281    
                                                                           LSPP_CT1.282    
C -----------------------------------------------------                    LSPP_CT1.283    
                                                                           LSPP_CT1.284    
*ENDIF                                                                     LSPP_CT1.285