*IF DEF,A05_3C                                                             DDRAUG3C.2      
C (c) CROWN COPYRIGHT 1997, METEOROLOGICAL OFFICE, All Rights Reserved.    DDRAUG3C.3      
C                                                                          DDRAUG3C.4      
C Use, duplication or disclosure of this code is subject to the            DDRAUG3C.5      
C restrictions as set forth in the contract.                               DDRAUG3C.6      
C                                                                          DDRAUG3C.7      
C                Meteorological Office                                     DDRAUG3C.8      
C                London Road                                               DDRAUG3C.9      
C                BRACKNELL                                                 DDRAUG3C.10     
C                Berkshire UK                                              DDRAUG3C.11     
C                RG12 2SZ                                                  DDRAUG3C.12     
C                                                                          DDRAUG3C.13     
C If no contract has been raised with this copy of the code, the use,      DDRAUG3C.14     
C duplication or disclosure of it is strictly prohibited.  Permission      DDRAUG3C.15     
C to do so must first be obtained in writing from the Head of Numerical    DDRAUG3C.16     
C Modelling at the above address.                                          DDRAUG3C.17     
C ******************************COPYRIGHT******************************    DDRAUG3C.18     
C                                                                          DDRAUG3C.19     
CLL  SUBROUTINE DDRAUGHT-----------------------------------------------    DDRAUG3C.20     
CLL                                                                        DDRAUG3C.21     
CLL  PURPOSE : DOWNDRAUGHT ROUTINE                                         DDRAUG3C.22     
CLL                                                                        DDRAUG3C.23     
CLL            CONVECTIVE DOWNDRAUGHT BASED ON PARCEL THEORY               DDRAUG3C.24     
CLL                                                                        DDRAUG3C.25     
CLL            CARRY OUT DRY DESCENT                                       DDRAUG3C.26     
CLL                                                                        DDRAUG3C.27     
CLL            CALCULATE SUBSATURATION                                     DDRAUG3C.28     
CLL                                                                        DDRAUG3C.29     
CLL            CALCULATE EFFECT ON THE ENVIRONMENT                         DDRAUG3C.30     
CLL                                                                        DDRAUG3C.31     
CLL  SUITABLE FOR SINGLE COLUMN MODEL USE                                  DDRAUG3C.32     
CLL                                                                        DDRAUG3C.33     
CLL                                                                        DDRAUG3C.34     
CLL  MODEL            MODIFICATION HISTORY:                                DDRAUG3C.35     
CLL VERSION  DATE                                                          DDRAUG3C.36     
!LL   4.4   17/10/97  New version optimised for T3E.                       DDRAUG3C.37     
!LL                   Single PE optimisations           D.Salmond          DDRAUG3C.38     
CLL   4.5    Jul. 98  Kill the IBM specific lines (JCThil)                 AJC1F405.28     
CLL                                                                        DDRAUG3C.39     
CLL  PROGRAMMING STANDARDS : UNIFIED MODEL DOCUMENTATION PAPER NO. 3       DDRAUG3C.40     
CLL  VERSION NO. 4  DATED 5/2/92                                           DDRAUG3C.41     
CLL                                                                        DDRAUG3C.42     
CLL  LOGICAL COMPONENTS COVERED:                                           DDRAUG3C.43     
CLL                                                                        DDRAUG3C.44     
CLL  SYSTEM TASK : P27                                                     DDRAUG3C.45     
CLL                                                                        DDRAUG3C.46     
CLL  DOCUMENTATION : UNIFIED MODEL DOCUMENTATION PAPER 27                  DDRAUG3C.47     
CLL                                                                        DDRAUG3C.48     
CLLEND-----------------------------------------------------------------    DDRAUG3C.49     
C                                                                          DDRAUG3C.50     
C*L  ARGUMENTS---------------------------------------------------------    DDRAUG3C.51     
C                                                                          DDRAUG3C.52     

      SUBROUTINE DDRAUGHT (NPNTS,NP_FULL,K,KCT,THDD_K,QDD_K,THE_K,          4,21DDRAUG3C.53     
     &                     THE_KM1,QE_K,QE_KM1,DTHBYDT_K,DTHBYDT_KM1,      DDRAUG3C.54     
     &                     DQBYDT_K,DQBYDT_KM1,FLX_DD_K,P_KM1,DELPK,       DDRAUG3C.55     
     &                     DELPKM1,EXK,EXKM1,DELTD,DELQD,AMDETK,EKM14,     DDRAUG3C.56     
     &                     EKM34,RAIN,SNOW,BDD_START,BDDWT_K,BDDWT_KM1,    DDRAUG3C.57     
     &                     BDD_ON,B_DD_END,CCA,L_MOM,UDD_K,VDD_K,          DDRAUG3C.58     
     &                     UE_K,VE_K,UE_KM1,VE_KM1,DUBYDT_K,DUBYDT_KM1,    DDRAUG3C.59     
     &                     DVBYDT_K,DVBYDT_KM1,DELUD,DELVD,EFLUX_U_DD,     DDRAUG3C.60     
     &                     EFLUX_V_DD,L_TRACER,                            DDRAUG3C.61     
     &                     NTRA,TRADD_K,TRAE_K,TRAE_KM1,DTRABYDT_K,        DDRAUG3C.62     
     &                     DTRABYDT_KM1,DELTRAD)                           DDRAUG3C.63     
C                                                                          DDRAUG3C.64     
      IMPLICIT NONE                                                        DDRAUG3C.65     
C                                                                          DDRAUG3C.66     
C-----------------------------------------------------------------------   DDRAUG3C.67     
C MODEL CONSTANTS                                                          DDRAUG3C.68     
C-----------------------------------------------------------------------   DDRAUG3C.69     
C                                                                          DDRAUG3C.70     
*CALL C_0_DG_C                                                             DDRAUG3C.71     
*CALL DDKMDET                                                              DDRAUG3C.72     
C                                                                          DDRAUG3C.73     
C-----------------------------------------------------------------------   DDRAUG3C.74     
C VECTOR LENGTHS AND LOOP COUNTERS                                         DDRAUG3C.75     
C-----------------------------------------------------------------------   DDRAUG3C.76     
C                                                                          DDRAUG3C.77     
C                                                                          DDRAUG3C.81     
      INTEGER I,KTRA                ! LOOP COUNTERS                        DDRAUG3C.82     
C                                                                          DDRAUG3C.83     
      INTEGER NPNTS                 ! IN NUMBER OF POINTS                  DDRAUG3C.84     
C                                                                          DDRAUG3C.85     
      INTEGER NP_FULL               ! IN FULL VECTOR LENGTH                DDRAUG3C.86     
C                                                                          DDRAUG3C.87     
      INTEGER NTRA                  ! NUMBER OF TRACERS                    DDRAUG3C.88     
C                                                                          DDRAUG3C.89     
      INTEGER K                     ! IN PRESENT MODEL LAYER               DDRAUG3C.90     
C                                                                          DDRAUG3C.91     
C-----------------------------------------------------------------------   DDRAUG3C.92     
C VARIABLES WHICH ARE INPUT                                                DDRAUG3C.93     
C-----------------------------------------------------------------------   DDRAUG3C.94     
C                                                                          DDRAUG3C.95     
      INTEGER KCT                   ! IN CONVECTIVE CLOUD TOP              DDRAUG3C.96     
C                                                                          DDRAUG3C.97     
      REAL THE_KM1(NPNTS)           ! IN POTENTIAL TEMPERATURE OF          DDRAUG3C.98     
                                    !    ENVIRONMENT IN LAYER K-1 (K)      DDRAUG3C.99     
C                                                                          DDRAUG3C.100    
      REAL QE_KM1(NPNTS)            ! IN MIXING RATIO OF ENVIRONMENT IN    DDRAUG3C.101    
                                    !    LAYER K-1 (KG/KG)                 DDRAUG3C.102    
C                                                                          DDRAUG3C.103    
      REAL UE_KM1(NPNTS)            ! IN U OF ENVIRONMENT IN LAYER K-1     DDRAUG3C.104    
                                    !    (M/S)                             DDRAUG3C.105    
C                                                                          DDRAUG3C.106    
      REAL VE_KM1(NPNTS)            ! IN V OF ENVIRONMENT IN LAYER K-1     DDRAUG3C.107    
                                    !    (M/S)                             DDRAUG3C.108    
C                                                                          DDRAUG3C.109    
      REAL TRAE_KM1(NP_FULL,NTRA)   ! IN TRACER CONTENT OF ENVIRONMENT     DDRAUG3C.110    
                                    !    IN LAYER K-1 (KG/KG)              DDRAUG3C.111    
C                                                                          DDRAUG3C.112    
      REAL P_KM1(NPNTS)             ! IN PRESSURE OF LAYER K-1 (PA)        DDRAUG3C.113    
C                                                                          DDRAUG3C.114    
      REAL DELPK(NPNTS)             ! IN CHANGE IN PRESSURE ACROSS         DDRAUG3C.115    
                                    !    LAYER K (PA)                      DDRAUG3C.116    
C                                                                          DDRAUG3C.117    
      REAL DELPKM1(NPNTS)           ! IN CHANGE IN PRESSURE ACROSS         DDRAUG3C.118    
                                    !    LAYER K-1 (PA)                    DDRAUG3C.119    
C                                                                          DDRAUG3C.120    
      REAL EXK(NPNTS)               ! IN EXNER RATIO IN LAYER K            DDRAUG3C.121    
C                                                                          DDRAUG3C.122    
      REAL EXKM1(NPNTS)             ! IN EXNER RATIO IN LAYER K-1          DDRAUG3C.123    
C                                                                          DDRAUG3C.124    
      REAL AMDETK(NPNTS)            ! IN MIXING DETRAINMENT RATE           DDRAUG3C.125    
C                                                                          DDRAUG3C.126    
      REAL EKM14(NPNTS)             ! IN EXNER RATIO AT LAYER K-1/4        DDRAUG3C.127    
C                                                                          DDRAUG3C.128    
      REAL EKM34(NPNTS)             ! IN EXNER RATIO AT LAYER K-3/4        DDRAUG3C.129    
C                                                                          DDRAUG3C.130    
      REAL DELTD(NPNTS)             ! IN COOLING NECESSARY TO ACHIEVE      DDRAUG3C.131    
                                    !    SATURATION (K)                    DDRAUG3C.132    
C                                                                          DDRAUG3C.133    
      REAL DELQD(NPNTS)             ! IN MOISTENING NECESSARY TO ACHIEVE   DDRAUG3C.134    
                                    !    SATURATION (KG/KG)                DDRAUG3C.135    
C                                                                          DDRAUG3C.136    
      REAL DELUD(NPNTS)             ! IN CHANGE TO ENVIRONMENT U DUE TO    DDRAUG3C.137    
                                    !    DOWNDRAUGHT FORMATION (M/S)       DDRAUG3C.138    
C                                                                          DDRAUG3C.139    
      REAL DELVD(NPNTS)             ! IN CHANGE TO ENVIRONMENT V DUE TO    DDRAUG3C.140    
                                    !    DOWNDRAUGHT FORMATION (M/S)       DDRAUG3C.141    
C                                                                          DDRAUG3C.142    
      REAL DELTRAD(NP_FULL,NTRA)    ! IN DEPLETION OF ENV. TRACER DUE      DDRAUG3C.143    
                                    !    TO DOWNDRAUGHT FORMATION          DDRAUG3C.144    
C                                                                          DDRAUG3C.145    
      LOGICAL BDDWT_K(NPNTS)        ! IN MASK FOR THOSE POINTS IN          DDRAUG3C.146    
                                    !    DOWNDRAUGHT WHERE PRECIPITATION   DDRAUG3C.147    
                                    !    IS LIQUID IN LAYER K              DDRAUG3C.148    
C                                                                          DDRAUG3C.149    
      LOGICAL BDDWT_KM1(NPNTS)      ! IN MASK FOR THOSE POINTS IN          DDRAUG3C.150    
                                    !    DOWNDRAUGHT WHERE PRECIPITATION   DDRAUG3C.151    
                                    !    IS LIQUID IN LAYER K-1            DDRAUG3C.152    
C                                                                          DDRAUG3C.153    
      LOGICAL L_TRACER              ! IN SWITCH FOR INCLUSION OF TRACERS   DDRAUG3C.154    
C                                                                          DDRAUG3C.155    
      LOGICAL L_MOM                 ! IN SWITCH FOR INCLUSION              DDRAUG3C.156    
                                    !    OF MOMENTUM TRANSPORTS            DDRAUG3C.157    
C                                                                          DDRAUG3C.158    
      REAL CCA(NPNTS)               ! IN CONVECTIVE CLOUD AMOUNT           DDRAUG3C.159    
C                                                                          DDRAUG3C.160    
C-----------------------------------------------------------------------   DDRAUG3C.161    
C VARIABLES WHICH ARE INPUT AND OUTPUT                                     DDRAUG3C.162    
C-----------------------------------------------------------------------   DDRAUG3C.163    
C                                                                          DDRAUG3C.164    
      REAL THDD_K(NPNTS)            ! INOUT                                DDRAUG3C.165    
                                    ! IN  POTENTIAL TEMPERATURE OF         DDRAUG3C.166    
                                    !     DOWNDRAUGHT IN LAYER K (K)       DDRAUG3C.167    
                                    ! OUT POTENTIAL TEMPERATURE RESET      DDRAUG3C.168    
                                    !     FOR NEXT LAYER (K)               DDRAUG3C.169    
C                                                                          DDRAUG3C.170    
      REAL QDD_K(NPNTS)             ! INOUT                                DDRAUG3C.171    
                                    ! IN  DOWNDRAUGHT MIXING RATIO OF      DDRAUG3C.172    
                                    !     LAYER K (KG/KG)                  DDRAUG3C.173    
                                    ! OUT MIXING RATIO RESET FOR NEXT      DDRAUG3C.174    
                                    !     LAYER (KG/KG)                    DDRAUG3C.175    
C                                                                          DDRAUG3C.176    
      REAL UDD_K(NPNTS)             ! INOUT                                DDRAUG3C.177    
                                    ! IN  DOWNDRAUGHT U IN LAYER K         DDRAUG3C.178    
                                    !     (M/S)                            DDRAUG3C.179    
                                    ! OUT U RESET FOR NEXT LAYER (M/S)     DDRAUG3C.180    
C                                                                          DDRAUG3C.181    
      REAL VDD_K(NPNTS)             ! INOUT                                DDRAUG3C.182    
                                    ! IN  DOWNDRAUGHT V IN LAYER K         DDRAUG3C.183    
                                    !     (M/S)                            DDRAUG3C.184    
                                    ! OUT V RESET FOR NEXT LAYER (M/S)     DDRAUG3C.185    
C                                                                          DDRAUG3C.186    
      REAL TRADD_K(NP_FULL,NTRA)    ! INOUT                                DDRAUG3C.187    
                                    ! IN  DOWNDRAUGHT TRACER CONTENT OF    DDRAUG3C.188    
                                    !     LAYER K (KG/KG)                  DDRAUG3C.189    
                                    ! OUT TRACER CONTENT RESET FOR NEXT    DDRAUG3C.190    
                                    !     LAYER (KG/KG)                    DDRAUG3C.191    
C                                                                          DDRAUG3C.192    
      REAL THE_K(NPNTS)             ! INOUT                                DDRAUG3C.193    
                                    ! IN  POTENTIAL TEMPERATURE OF         DDRAUG3C.194    
                                    !     ENVIRONMENT IN LAYER K (K)       DDRAUG3C.195    
                                    ! OUT ENVIRONMENT POTENTIAL            DDRAUG3C.196    
                                    !     TEMPERATURE RESET FOR NEXT       DDRAUG3C.197    
                                    !     LAYER (K)                        DDRAUG3C.198    
C                                                                          DDRAUG3C.199    
      REAL QE_K(NPNTS)              ! INOUT                                DDRAUG3C.200    
                                    ! IN  MIXING RATIO OF ENVIRONMENT      DDRAUG3C.201    
                                    !     LAYER K (KG/KG)                  DDRAUG3C.202    
                                    ! OUT ENVIRONMENT MIXING RATIO         DDRAUG3C.203    
                                    !     RESET FOR NEXT LAYER (KG/KG)     DDRAUG3C.204    
C                                                                          DDRAUG3C.205    
      REAL UE_K(NPNTS)              ! INOUT                                DDRAUG3C.206    
                                    ! IN  U OF ENVIRONMENT IN LAYER K      DDRAUG3C.207    
                                    !     (M/S)                            DDRAUG3C.208    
                                    ! OUT ENVIRONMENT U RESET FOR          DDRAUG3C.209    
                                    !     NEXT LAYER (M/S)                 DDRAUG3C.210    
C                                                                          DDRAUG3C.211    
      REAL VE_K(NPNTS)              ! INOUT                                DDRAUG3C.212    
                                    ! IN  V OF ENVIRONMENT IN LAYER K      DDRAUG3C.213    
                                    !     (M/S)                            DDRAUG3C.214    
                                    ! OUT ENVIRONMENT V RESET FOR          DDRAUG3C.215    
                                    !     NEXT LAYER (M/S)                 DDRAUG3C.216    
C                                                                          DDRAUG3C.217    
      REAL TRAE_K(NP_FULL,NTRA)     ! INOUT                                DDRAUG3C.218    
                                    ! IN  TRACER CONTENT OF ENVIRONMENT    DDRAUG3C.219    
                                    !     IN LAYER K (KG/KG)               DDRAUG3C.220    
                                    ! OUT ENVIRONMENT TRACER CONTENT       DDRAUG3C.221    
                                    !     RESET FOR NEXT LAYER (KG/KG)     DDRAUG3C.222    
C                                                                          DDRAUG3C.223    
      REAL FLX_DD_K(NPNTS)          ! INOUT                                DDRAUG3C.224    
                                    ! IN  DOWNDRAUGHT MASS FLUX OF         DDRAUG3C.225    
                                    !     LAYER K (PA/S)                   DDRAUG3C.226    
                                    ! OUT DOWNDRAUGHT MASS FLUX RESET      DDRAUG3C.227    
                                    !      FOR NEXT LAYER (PA/S)           DDRAUG3C.228    
C                                                                          DDRAUG3C.229    
      REAL RAIN(NPNTS)              ! INOUT                                DDRAUG3C.230    
                                    ! IN  AMOUNT OF RAIN (KG/M**2/S)       DDRAUG3C.231    
                                    ! OUT UPDATED RAINFALL (KG/M**2/S)     DDRAUG3C.232    
C                                                                          DDRAUG3C.233    
      REAL SNOW(NPNTS)              ! INOUT                                DDRAUG3C.234    
                                    ! IN  AMOUNT OF SNOW(KG/M**2/S)        DDRAUG3C.235    
                                    ! OUT UPDATED SNOWFALL (KG/M**2/S)     DDRAUG3C.236    
C                                                                          DDRAUG3C.237    
      REAL DTHBYDT_K(NPNTS)         ! INOUT                                DDRAUG3C.238    
                                    ! IN  INCREMENT TO MODEL POTENTIAL     DDRAUG3C.239    
                                    !     TEMPERATURE OF LAYER K (K/S)     DDRAUG3C.240    
                                    ! OUT UPDATED INCREMENT TO MODEL       DDRAUG3C.241    
                                    !     POTENTIAL TEMPERATURE IN         DDRAUG3C.242    
                                    !     LAYER K (K/S)                    DDRAUG3C.243    
C                                                                          DDRAUG3C.244    
      REAL DTHBYDT_KM1(NPNTS)       ! INOUT                                DDRAUG3C.245    
                                    ! IN  INCREMENT TO MODEL POTENTIAL     DDRAUG3C.246    
                                    !     TEMPERATURE IN LAYER K-1 (K/S)   DDRAUG3C.247    
                                    ! OUT UPDATED INCREMENT TO MODEL       DDRAUG3C.248    
                                    !     POTENTIAL TEMPERATURE IN         DDRAUG3C.249    
                                    !     LAYER K-1 (K/S)                  DDRAUG3C.250    
C                                                                          DDRAUG3C.251    
      REAL DQBYDT_K(NPNTS)          ! INOUT                                DDRAUG3C.252    
                                    ! IN  INCREMENT TO MODEL MIXING        DDRAUG3C.253    
                                    !     RATIO IN LAYER K (KG/KG/S)       DDRAUG3C.254    
                                    ! OUT UPDATED INCREMENT TO MODEL       DDRAUG3C.255    
                                    !     MIXING RATIO IN LAYER K          DDRAUG3C.256    
                                    !     (KG/KG/S)                        DDRAUG3C.257    
C                                                                          DDRAUG3C.258    
      REAL DQBYDT_KM1(NPNTS)        ! INOUT                                DDRAUG3C.259    
                                    ! IN  INCREMENT TO MODEL MIXING        DDRAUG3C.260    
                                    !     RATIO IN LAYER K-1 (KG/KG/S)     DDRAUG3C.261    
                                    ! OUT UPDATED INCREMENT TO MODEL       DDRAUG3C.262    
                                    !     MIXING RATIO IN LAYER K-1        DDRAUG3C.263    
                                    !     (KG/KG/S)                        DDRAUG3C.264    
C                                                                          DDRAUG3C.265    
      REAL DUBYDT_K(NPNTS)          ! INOUT                                DDRAUG3C.266    
                                    ! IN  INCREMENT TO MODEL U IN          DDRAUG3C.267    
                                    !     LAYER K (M/S**2)                 DDRAUG3C.268    
                                    ! OUT UPDATED INCREMENT TO MODEL       DDRAUG3C.269    
                                    !     U IN LAYER K (M/S**2)            DDRAUG3C.270    
C                                                                          DDRAUG3C.271    
      REAL DUBYDT_KM1(NPNTS)        ! INOUT                                DDRAUG3C.272    
                                    ! IN  INCREMENT TO MODEL U IN          DDRAUG3C.273    
                                    !     LAYER K-1 (M/S**2)               DDRAUG3C.274    
                                    ! OUT UPDATED INCREMENT TO MODEL       DDRAUG3C.275    
                                    !     U IN LAYER K-1 (M/S**2)          DDRAUG3C.276    
C                                                                          DDRAUG3C.277    
      REAL DVBYDT_K(NPNTS)          ! INOUT                                DDRAUG3C.278    
                                    ! IN  INCREMENT TO MODEL V IN          DDRAUG3C.279    
                                    !     LAYER K (M/S**2)                 DDRAUG3C.280    
                                    ! OUT UPDATED INCREMENT TO MODEL       DDRAUG3C.281    
                                    !     V IN LAYER K (M/S**2)            DDRAUG3C.282    
C                                                                          DDRAUG3C.283    
      REAL DVBYDT_KM1(NPNTS)        ! INOUT                                DDRAUG3C.284    
                                    ! IN  INCREMENT TO MODEL V IN          DDRAUG3C.285    
                                    !     LAYER K-1 (M/S**2)               DDRAUG3C.286    
                                    ! OUT UPDATED INCREMENT TO MODEL       DDRAUG3C.287    
                                    !     V IN LAYER K-1 (M/S**2)          DDRAUG3C.288    
C                                                                          DDRAUG3C.289    
      REAL DTRABYDT_K(NP_FULL,NTRA) ! INOUT                                DDRAUG3C.290    
                                    ! IN  INCREMENT TO MODEL TRACER        DDRAUG3C.291    
                                    !     CONTENTOF LAYER K (KG/KG/S)      DDRAUG3C.292    
                                    ! OUT UPDATED INCREMENT TO MODEL       DDRAUG3C.293    
                                    !     TRACER CONTENT IN LAYER K        DDRAUG3C.294    
                                    !     (KG/KG/S)                        DDRAUG3C.295    
C                                                                          DDRAUG3C.296    
      REAL DTRABYDT_KM1(NP_FULL,    ! INOUT                                DDRAUG3C.297    
     *                  NTRA)       ! IN  INCREMENT TO MODEL TRACER        DDRAUG3C.298    
                                    !     CONTENT IN LAYER K-1             DDRAUG3C.299    
                                    !     (KG/KG/S)                        DDRAUG3C.300    
                                    ! OUT UPDATED INCREMENT TO MODEL       DDRAUG3C.301    
                                    !     TRACER CONTENT IN LAYER K-1      DDRAUG3C.302    
                                    !     (KG/KG/S)                        DDRAUG3C.303    
C                                                                          DDRAUG3C.304    
      LOGICAL BDD_ON(NPNTS)         ! INOUT                                DDRAUG3C.305    
                                    ! IN  MASK FOR THOSE POINTS WHERE DD   DDRAUG3C.306    
                                    !     HAS CONTINUED FROM LAYER K+1     DDRAUG3C.307    
                                    ! OUT MASK FOR THOSE POINTS WHERE DD   DDRAUG3C.308    
                                    !     CONTINUES TO LAYER K-1           DDRAUG3C.309    
C                                                                          DDRAUG3C.310    
      REAL EFLUX_U_DD(NPNTS),       ! INOUT                                DDRAUG3C.311    
     *     EFLUX_V_DD(NPNTS)        ! IN  EDDY FLUX OF MOMENTUM DUE TO     DDRAUG3C.312    
                                    !     DD AT TOP OF A LAYER             DDRAUG3C.313    
                                    ! OUT EDDY FLUX OF MOMENTUM DUE TO     DDRAUG3C.314    
                                    !     DD AT BOTTOM OF A LAYER          DDRAUG3C.315    
C                                                                          DDRAUG3C.316    
C-----------------------------------------------------------------------   DDRAUG3C.317    
C VARIABLES WHICH ARE OUTPUT                                               DDRAUG3C.318    
C-----------------------------------------------------------------------   DDRAUG3C.319    
C                                                                          DDRAUG3C.320    
      LOGICAL BDD_START(NPNTS)      ! OUT MASK FOR THOSE POINTS WHERE      DDRAUG3C.321    
                                    !     DOWNDRAUGHT MAY START IN         DDRAUG3C.322    
                                    !     LAYER K-1                        DDRAUG3C.323    
C                                                                          DDRAUG3C.324    
      LOGICAL B_DD_END(NPNTS)       ! OUT MASK FOR THOSE POINTS WHERE      DDRAUG3C.325    
                                    !     DOWNDRAUGHT IS ENDING IN         DDRAUG3C.326    
                                    !     LAYER K-1                        DDRAUG3C.327    
C                                                                          DDRAUG3C.328    
C-----------------------------------------------------------------------   DDRAUG3C.329    
C VARIABLES WHICH ARE DEFINED LOCALLY                                      DDRAUG3C.330    
C-----------------------------------------------------------------------   DDRAUG3C.331    
C                                                                          DDRAUG3C.332    
C                                                                          DDRAUG3C.368    
      REAL THDD_KM1(NPNTS)          ! POTENTIAL TEMPERATURE OF             DDRAUG3C.369    
                                    ! DOWNDRAUGHT IN LAYER K-1 (K)         DDRAUG3C.370    
C                                                                          DDRAUG3C.371    
      REAL QDD_KM1(NPNTS)           ! DOWNDRAUGHT MIXING RATIO OF          DDRAUG3C.372    
                                    ! LAYER K-1 (KG/KG)                    DDRAUG3C.373    
C                                                                          DDRAUG3C.374    
      REAL UDD_KM1(NPNTS)           ! DOWNDRAUGHT U IN LAYER K-1 (M/S)     DDRAUG3C.375    
C                                                                          DDRAUG3C.376    
      REAL VDD_KM1(NPNTS)           ! DOWNDRAUGHT V IN LAYER K-1 (M/S)     DDRAUG3C.377    
C                                                                          DDRAUG3C.378    
      REAL TRADD_KM1(NPNTS,NTRA)    ! TRACER CONTENT OF DOWNDRAUGHT        DDRAUG3C.379    
                                    ! IN LAYER K-1 (KG/KG)                 DDRAUG3C.380    
C                                                                          DDRAUG3C.381    
      REAL QSATDD(NPNTS)            ! SATURATED DOWNDRAUGHT MIXING         DDRAUG3C.382    
                                    ! RATIO (KG/KG)                        DDRAUG3C.383    
C                                                                          DDRAUG3C.384    
      REAL TDD_KM1(NPNTS)           ! TEMPERATURE OF DOWNDRAUGHT           DDRAUG3C.385    
                                    ! IN LAYER K-1 (K)                     DDRAUG3C.386    
C                                                                          DDRAUG3C.387    
      REAL THDDS(NPNTS)             ! POTENTIAL TEMPERATURE OF             DDRAUG3C.388    
                                    ! SATURATED DOWNDRAUGHT (K)            DDRAUG3C.389    
C                                                                          DDRAUG3C.390    
      REAL QDDS(NPNTS)              ! SATURATED DOWNDRAUGHT MIXING         DDRAUG3C.391    
                                    ! RATIO (KG/KG)                        DDRAUG3C.392    
C                                                                          DDRAUG3C.393    
      REAL FLX_DD_KM1(NPNTS)        ! DOWNDRAUGHT MASS FLUX IN             DDRAUG3C.394    
                                    ! LAYER K-1 (PA/S)                     DDRAUG3C.395    
C                                                                          DDRAUG3C.396    
      REAL RAIN_TMP(NPNTS)          ! LIQUID PRECIPITATION STORE           DDRAUG3C.397    
C                                                                          DDRAUG3C.398    
      REAL SNOW_TMP(NPNTS)          ! SNOW STORE                           DDRAUG3C.399    
C                                                                          DDRAUG3C.400    
C                                                                          DDRAUG3C.402    
C-----------------------------------------------------------------------   DDRAUG3C.403    
C EXTERNAL ROUTINES CALLED                                                 DDRAUG3C.404    
C-----------------------------------------------------------------------   DDRAUG3C.405    
C                                                                          DDRAUG3C.406    
      EXTERNAL SATCAL, CRS_FRZL, QSAT, DEVAP, TERMDD,                      DDRAUG3C.407    
     *         DD_ENV, EVP                                                 DDRAUG3C.408    
C                                                                          DDRAUG3C.409    
C-----------------------------------------------------------------------   DDRAUG3C.410    
C CALCULATE MASK FOR THOSE POINTS IN DOWNDRAUGHT WHERE PRECIPITATION       DDRAUG3C.411    
C IS LIQUID                                                                DDRAUG3C.412    
C                                                                          DDRAUG3C.413    
C STORE PRECIPITATION IN LAYER K IN TEMPORARY VARIABLES                    DDRAUG3C.414    
C-----------------------------------------------------------------------   DDRAUG3C.415    
C                                                                          DDRAUG3C.416    
      DO I=1,NPNTS                                                         DDRAUG3C.417    
        IF (K .EQ. KCT+1 .OR. BDD_START(I)) THEN                           DDRAUG3C.418    
           BDDWT_K(I) = THDD_K(I)*EXK(I) .GT. TM                           DDRAUG3C.419    
        ELSE                                                               DDRAUG3C.420    
          BDDWT_K(I) = BDDWT_KM1(I)                                        DDRAUG3C.421    
        END IF                                                             DDRAUG3C.422    
          RAIN_TMP(I) = RAIN(I)                                            DDRAUG3C.423    
          SNOW_TMP(I) = SNOW(I)                                            DDRAUG3C.424    
C                                                                          DDRAUG3C.425    
C-----------------------------------------------------------------------   DDRAUG3C.426    
C DRY DESCENT FROM LAYER K TO K-1                                          DDRAUG3C.427    
C                                                                          DDRAUG3C.428    
C ENTRAINMENT CALCULATION                                                  DDRAUG3C.429    
C-----------------------------------------------------------------------   DDRAUG3C.430    
C                                                                          DDRAUG3C.431    
          THDD_KM1(I) = (THDD_K(I)+(EKM14(I)*THE_K(I)) +                   DDRAUG3C.432    
     *                  (1.0+EKM14(I))*EKM34(I)*THE_KM1(I)) /              DDRAUG3C.433    
     *                  ((1.0+EKM14(I))*(1.0+EKM34(I)))                    DDRAUG3C.434    
          QDD_KM1(I) = (QDD_K(I)+(EKM14(I)*QE_K(I)) +                      DDRAUG3C.435    
     *                 (1.0+EKM14(I))*EKM34(I)*QE_KM1(I))/                 DDRAUG3C.436    
     *                 ((1.0+EKM14(I))*(1.0+EKM34(I)))                     DDRAUG3C.437    
      END DO                                                               DDRAUG3C.438    
C                                                                          DDRAUG3C.439    
      IF(L_MOM)THEN                                                        DDRAUG3C.440    
        DO I=1,NPNTS                                                       DDRAUG3C.441    
C                                                                          DDRAUG3C.442    
          UDD_KM1(I) = (UDD_K(I)+(EKM14(I)*UE_K(I)) +                      DDRAUG3C.443    
     *                 (1.0+EKM14(I))*EKM34(I)*UE_KM1(I))/                 DDRAUG3C.444    
     *                 ((1.0+EKM14(I))*(1.0+EKM34(I)))                     DDRAUG3C.445    
          VDD_KM1(I) = (VDD_K(I)+(EKM14(I)*VE_K(I)) +                      DDRAUG3C.446    
     *                 (1.0+EKM14(I))*EKM34(I)*VE_KM1(I))/                 DDRAUG3C.447    
     *                 ((1.0+EKM14(I))*(1.0+EKM34(I)))                     DDRAUG3C.448    
C                                                                          DDRAUG3C.449    
C----------------------------------------------------------------------    DDRAUG3C.450    
C ADD AN IN-CLOUD PRESSURE GRADIENT TERM TO THE MOMENTUM INCREMENTS        DDRAUG3C.451    
C----------------------------------------------------------------------    DDRAUG3C.452    
C                                                                          DDRAUG3C.453    
          UDD_KM1(I) = UDD_KM1(I) - (0.7*(UE_K(I)-UE_KM1(I))/              DDRAUG3C.454    
     *                              (1.0+EKM34(I)))                        DDRAUG3C.455    
          VDD_KM1(I) = VDD_KM1(I) - (0.7*(VE_K(I)-VE_KM1(I))/              DDRAUG3C.456    
     *                              (1.0+EKM34(I)))                        DDRAUG3C.457    
        END DO                                                             DDRAUG3C.458    
      END IF                                                               DDRAUG3C.459    
C                                                                          DDRAUG3C.460    
C----------------------------------------------------------------------    DDRAUG3C.461    
C  DRY DESCENT FOR TRACERS                                                 DDRAUG3C.462    
C----------------------------------------------------------------------    DDRAUG3C.463    
C                                                                          DDRAUG3C.464    
      IF(L_TRACER)THEN                                                     DDRAUG3C.465    
C                                                                          DDRAUG3C.466    
        DO KTRA=1,NTRA                                                     DDRAUG3C.467    
          DO I=1,NPNTS                                                     DDRAUG3C.468    
C                                                                          DDRAUG3C.469    
          TRADD_KM1(I,KTRA)=(TRADD_K(I,KTRA)+(EKM14(I)*                    DDRAUG3C.470    
     *                      TRAE_K(I,KTRA)) +                              DDRAUG3C.471    
     *                      (1.0+EKM14(I))*EKM34(I)*TRAE_KM1(I,KTRA))/     DDRAUG3C.472    
     *                      ((1.0+EKM14(I))*(1.0+EKM34(I)))                DDRAUG3C.473    
C                                                                          DDRAUG3C.474    
          END DO                                                           DDRAUG3C.475    
        END DO                                                             DDRAUG3C.476    
C                                                                          DDRAUG3C.477    
      END IF                                                               DDRAUG3C.478    
C-----------------------------------------------------------------------   DDRAUG3C.479    
C UPDATE MASS FLUX  AND CALCULATE TEMPERATURE OF LAYER K-1                 DDRAUG3C.480    
C-----------------------------------------------------------------------   DDRAUG3C.481    
C                                                                          DDRAUG3C.482    
      DO I=1,NPNTS                                                         DDRAUG3C.483    
          FLX_DD_KM1(I) = FLX_DD_K(I)*(1.0+EKM34(I))*(1.0+EKM14(I))*       DDRAUG3C.484    
     *                (1.0-AMDETK(I))                                      DDRAUG3C.485    
C                                                                          DDRAUG3C.486    
          TDD_KM1(I) = THDD_KM1(I)*EXKM1(I)                                DDRAUG3C.487    
      END DO                                                               DDRAUG3C.488    
C                                                                          DDRAUG3C.489    
C-----------------------------------------------------------------------   DDRAUG3C.490    
C CALCULATE SUBSATURATION                                                  DDRAUG3C.491    
C CALCULATE TEMPERATURE IF BROUGHT TO SATURATION                           DDRAUG3C.492    
C-----------------------------------------------------------------------   DDRAUG3C.493    
C                                                                          DDRAUG3C.494    
       CALL SATCAL(NPNTS,TDD_KM1,THDD_KM1,P_KM1,QDDS,THDDS,                DDRAUG3C.495    
     &             K,EXKM1,QDD_KM1,THE_KM1)                                DDRAUG3C.496    
C                                                                          DDRAUG3C.497    
      DO I=1,NPNTS                                                         DDRAUG3C.498    
        BDDWT_KM1(I) = THDDS(I)*EXKM1(I) .GT. TM                           DDRAUG3C.499    
      END DO                                                               DDRAUG3C.500    
C                                                                          DDRAUG3C.501    
C-----------------------------------------------------------------------   DDRAUG3C.502    
C CALCULATE CHANGE OF PHASE DUE TO DOWNDRAUGHT SATURATION TEMPERATURE      DDRAUG3C.503    
C-----------------------------------------------------------------------   DDRAUG3C.504    
C                                                                          DDRAUG3C.505    
       CALL CRS_FRZL (NPNTS,RAIN,SNOW,THDD_KM1,EXKM1,FLX_DD_KM1,           DDRAUG3C.506    
     &                BDDWT_KM1)                                           DDRAUG3C.507    
C                                                                          DDRAUG3C.508    
      DO I=1,NPNTS                                                         DDRAUG3C.509    
        TDD_KM1(I) = THDD_KM1(I)*EXKM1(I)                                  DDRAUG3C.510    
      END DO                                                               DDRAUG3C.511    
C                                                                          DDRAUG3C.512    
C-----------------------------------------------------------------------   DDRAUG3C.513    
C RECALCULATE SUBSATURATION TEMPERATURE                                    DDRAUG3C.514    
C-----------------------------------------------------------------------   DDRAUG3C.515    
C                                                                          DDRAUG3C.516    
       CALL SATCAL(NPNTS,TDD_KM1,THDD_KM1,P_KM1,QDDS,THDDS,                DDRAUG3C.517    
     &             K,EXKM1,QDD_KM1,THE_KM1)                                DDRAUG3C.518    
C                                                                          DDRAUG3C.519    
C-----------------------------------------------------------------------   DDRAUG3C.520    
C CALCULATE MOISTURE SUBSATURATION                                         DDRAUG3C.521    
C-----------------------------------------------------------------------   DDRAUG3C.522    
C                                                                          DDRAUG3C.523    
       CALL QSAT(QSATDD,TDD_KM1,P_KM1,NPNTS)                               DDRAUG3C.524    
C                                                                          DDRAUG3C.525    
C-----------------------------------------------------------------------   DDRAUG3C.526    
C EVAPORATION CALCULATION AND ADJUSTMENT OF DOWNDRAUGHT TEMPERATURE        DDRAUG3C.527    
C AND MOISTURE                                                             DDRAUG3C.528    
C-----------------------------------------------------------------------   DDRAUG3C.529    
C                                                                          DDRAUG3C.530    
       CALL DEVAP (NPNTS,THDD_K,THDD_KM1,QDD_KM1,THDDS,QDDS,               DDRAUG3C.531    
     &             FLX_DD_KM1,EXK,EXKM1,QSATDD,RAIN,SNOW,                  DDRAUG3C.532    
     &             DELPKM1,BDDWT_KM1,CCA,P_KM1)                            DDRAUG3C.533    
C                                                                          DDRAUG3C.534    
C-----------------------------------------------------------------------   DDRAUG3C.535    
C CHECK IF PARCEL STILL NEGATIVELY BUOYANT SUCH THAT DOWNDRAUGHT CAN       DDRAUG3C.536    
C CONTINUE TO K-1                                                          DDRAUG3C.537    
C-----------------------------------------------------------------------   DDRAUG3C.538    
C                                                                          DDRAUG3C.539    
       CALL TERMDD (NPNTS,BDD_START,THDD_KM1,QDD_KM1,THE_KM1,              DDRAUG3C.540    
     &              QE_KM1,K,B_DD_END,BDD_ON)                              DDRAUG3C.541    
C                                                                          DDRAUG3C.542    
C-----------------------------------------------------------------------   DDRAUG3C.543    
C CALCULATE THE EFFECT ON THE ENVIRONMENT IN LAYER K                       DDRAUG3C.544    
C-----------------------------------------------------------------------   DDRAUG3C.545    
C                                                                          DDRAUG3C.546    
       CALL DD_ENV (NPNTS,NP_FULL,THDD_K,THDD_KM1,QDD_K,QDD_KM1,THE_K,     DDRAUG3C.547    
     &              THE_KM1,QE_K,QE_KM1,DTHBYDT_K,DTHBYDT_KM1,DQBYDT_K,    DDRAUG3C.548    
     &              DQBYDT_KM1,FLX_DD_K,FLX_DD_KM1,DELPK,DELPKM1,          DDRAUG3C.549    
     &              DELTD,DELQD,AMDETK,EKM14,B_DD_END,BDD_START,BDD_ON,    DDRAUG3C.550    
     &              L_MOM,UDD_K,VDD_K,UDD_KM1,VDD_KM1,UE_K,VE_K,UE_KM1,    DDRAUG3C.551    
     &              VE_KM1,DUBYDT_K,DUBYDT_KM1,DVBYDT_K,DVBYDT_KM1,        DDRAUG3C.552    
     &              DELUD,DELVD,EFLUX_U_DD,EFLUX_V_DD,                     DDRAUG3C.553    
     &              L_TRACER,NTRA,TRADD_K,TRADD_KM1,TRAE_K,                DDRAUG3C.554    
     &              TRAE_KM1,DTRABYDT_K,DTRABYDT_KM1,DELTRAD)              DDRAUG3C.555    
C                                                                          DDRAUG3C.556    
C-----------------------------------------------------------------------   DDRAUG3C.557    
C RESET DOWNDRAUGHT BIT VECTORS                                            DDRAUG3C.558    
C                                                                          DDRAUG3C.559    
C-----------------------------------------------------------------------   DDRAUG3C.560    
C                                                                          DDRAUG3C.561    
      DO I=1,NPNTS                                                         DDRAUG3C.562    
       BDD_START(I) = .FALSE.                                              DDRAUG3C.563    
       IF (.NOT. BDD_ON(I)) THEN                                           DDRAUG3C.564    
         RAIN(I) = RAIN_TMP(I)                                             DDRAUG3C.565    
         SNOW(I) = SNOW_TMP(I)                                             DDRAUG3C.566    
       END IF                                                              DDRAUG3C.567    
       IF (B_DD_END(I)) BDD_ON(I) = .FALSE.                                DDRAUG3C.568    
      END DO                                                               DDRAUG3C.569    
C                                                                          DDRAUG3C.570    
C-----------------------------------------------------------------------   DDRAUG3C.571    
C SWITCH POTENTIAL TEMPERATURE, MIXING RATIO, MOMENTUM, MASS FLUX          DDRAUG3C.572    
C AND TRACER READY FOR CALCULATION AT NEXT MODEL LAYER                     DDRAUG3C.573    
C-----------------------------------------------------------------------   DDRAUG3C.574    
C                                                                          DDRAUG3C.575    
      IF (K.GT.2) THEN                                                     DDRAUG3C.576    
        DO I=1,NPNTS                                                       DDRAUG3C.577    
         IF (BDD_ON(I)) THEN                                               DDRAUG3C.578    
          THDD_K(I) = THDD_KM1(I)                                          DDRAUG3C.579    
          QDD_K(I) = QDD_KM1(I)                                            DDRAUG3C.580    
          FLX_DD_K(I) = FLX_DD_KM1(I)                                      DDRAUG3C.581    
         END IF                                                            DDRAUG3C.582    
        END DO                                                             DDRAUG3C.583    
C                                                                          DDRAUG3C.584    
      IF(L_MOM)THEN                                                        DDRAUG3C.585    
        DO I=1,NPNTS                                                       DDRAUG3C.586    
         IF(BDD_ON(I))THEN                                                 DDRAUG3C.587    
          UDD_K(I) = UDD_KM1(I)                                            DDRAUG3C.588    
          VDD_K(I) = VDD_KM1(I)                                            DDRAUG3C.589    
         END IF                                                            DDRAUG3C.590    
        END DO                                                             DDRAUG3C.591    
      END IF                                                               DDRAUG3C.592    
C                                                                          DDRAUG3C.593    
       IF(L_TRACER)THEN                                                    DDRAUG3C.594    
C                                                                          DDRAUG3C.595    
        DO KTRA=1,NTRA                                                     DDRAUG3C.596    
          DO I=1,NPNTS                                                     DDRAUG3C.597    
            IF(BDD_ON(I))THEN                                              DDRAUG3C.598    
              TRADD_K(I,KTRA) = TRADD_KM1(I,KTRA)                          DDRAUG3C.599    
            END IF                                                         DDRAUG3C.600    
          END DO                                                           DDRAUG3C.601    
        END DO                                                             DDRAUG3C.602    
C                                                                          DDRAUG3C.603    
       END IF                                                              DDRAUG3C.604    
C                                                                          DDRAUG3C.605    
      END IF                                                               DDRAUG3C.606    
                                                                           DDRAUG3C.607    
      RETURN                                                               DDRAUG3C.608    
      END                                                                  DDRAUG3C.609    
C                                                                          DDRAUG3C.610    
*ENDIF                                                                     DDRAUG3C.611