2     SUBROUTINE convection( KLON, KLEV, KIDIA, KFDIA, KBDIA, KTDIA,             &
 
    3                            pdtconv, odeep, oshal, orefresh_all, odown, kice,   &
 
    4                            osettadj, ptadjd, ptadjs,                           &
 
    7                            pt, prv, prc, pri, pu, pv, pw,                      &
 
    8                            kcount, ptten, prvten, prcten, priten,              &
 
   10                            pumf, pdmf, pprlflx, pprsflx, pcape, kcltop, kclbas,& 
 
   11                            ochtrans, kch1, pch1, pch1ten                       )
 
   70 INTEGER,                  
INTENT(IN) :: KLON     
 
   71 INTEGER,                  
INTENT(IN) :: KLEV     
 
   72 INTEGER,                  
INTENT(IN) :: KIDIA    
 
   73 INTEGER,                  
INTENT(IN) :: KFDIA    
 
   74 INTEGER,                  
INTENT(IN) :: KBDIA    
 
   76 INTEGER,                  
INTENT(IN) :: KTDIA    
 
   79 REAL,                     
INTENT(IN) :: PDTCONV  
 
   82 LOGICAL,                  
INTENT(IN) :: ODEEP    
 
   83 LOGICAL,                  
INTENT(IN) :: OSHAL    
 
   84 LOGICAL,                  
INTENT(IN) :: OREFRESH_ALL 
 
   86 LOGICAL,                  
INTENT(IN) :: ODOWN    
 
   88 INTEGER,                  
INTENT(IN) :: KICE     
 
   90 INTEGER,                  
INTENT(IN) :: KENSM    
 
   94 LOGICAL,                  
INTENT(IN) :: OSETTADJ 
 
   96 REAL,                     
INTENT(IN) :: PTADJD   
 
   97 REAL,                     
INTENT(IN) :: PTADJS   
 
   99 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(IN) :: PT     
 
  100 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(IN) :: PRV    
 
  101 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(IN) :: PRC    
 
  102 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(IN) :: PRI    
 
  103 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(IN) :: PU     
 
  104 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(IN) :: PV     
 
  105 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(IN) :: PW     
 
  106 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(IN) :: PPABS  
 
  107 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(IN) :: PZZ    
 
  108 REAL, 
DIMENSION(KLON),      
INTENT(IN) :: PDXDY  
 
  110 INTEGER, 
DIMENSION(KLON), 
INTENT(INOUT):: KCOUNT   
 
  112 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(INOUT):: PTTEN  
 
  113 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(INOUT):: PRVTEN 
 
  114 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(INOUT):: PRCTEN 
 
  115 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(INOUT):: PRITEN 
 
  116 REAL, 
DIMENSION(KLON),      
INTENT(INOUT):: PPRTEN 
 
  117 REAL, 
DIMENSION(KLON),      
INTENT(INOUT):: PPRSTEN
 
  120 LOGICAL,                    
INTENT(IN)        :: OCHTRANS 
 
  122 INTEGER,                    
INTENT(IN)        :: KCH1     
 
  123 REAL, 
DIMENSION(KLON,KLEV,KCH1), 
INTENT(IN)   :: PCH1     
 
  124 REAL, 
DIMENSION(KLON,KLEV,KCH1), 
INTENT(INOUT):: PCH1TEN  
 
  128 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(INOUT) :: PUMF   
 
  129 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(INOUT) :: PDMF   
 
  130 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(INOUT) :: PPRLFLX
 
  131 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(INOUT) :: PPRSFLX
 
  132 REAL, 
DIMENSION(KLON),   
INTENT(INOUT)    :: PCAPE  
 
  133 INTEGER, 
DIMENSION(KLON),
INTENT(INOUT)    :: KCLTOP 
 
  134 INTEGER, 
DIMENSION(KLON),
INTENT(INOUT)    :: KCLBAS 
 
  140 INTEGER  :: JI, JK, JN  
 
  142 REAL, 
DIMENSION(KLON)               :: ZTIMEC, ZPRLTEN
 
  145 REAL, 
DIMENSION(:,:), 
ALLOCATABLE   :: ZTTENS, ZRVTENS, ZRCTENS, ZRITENS,  &
 
  147 REAL, 
DIMENSION(:,:,:), 
ALLOCATABLE :: ZCH1TENS
 
  148 INTEGER, 
DIMENSION(:), 
ALLOCATABLE  :: ICLBASS, ICLTOPS
 
  153 REAL, 
DIMENSION(:,:,:), 
ALLOCATABLE :: ZTTENE   
 
  154 REAL, 
DIMENSION(:,:,:), 
ALLOCATABLE :: ZRVTENE  
 
  155 REAL, 
DIMENSION(:,:,:), 
ALLOCATABLE :: ZRCTENE  
 
  156 REAL, 
DIMENSION(:,:,:), 
ALLOCATABLE :: ZRITENE  
 
  157 REAL, 
DIMENSION(:,:),   
ALLOCATABLE :: ZPRLTENE 
 
  158 REAL, 
DIMENSION(:,:),   
ALLOCATABLE :: ZPRSTENE 
 
  159 REAL, 
DIMENSION(:,:,:), 
ALLOCATABLE :: ZUMFE    
 
  160 REAL, 
DIMENSION(:,:,:), 
ALLOCATABLE :: ZDMFE    
 
  161 REAL, 
DIMENSION(:,:,:), 
ALLOCATABLE :: ZPRLFLXE 
 
  162 REAL, 
DIMENSION(:,:,:), 
ALLOCATABLE :: ZPRSFLXE 
 
  163 REAL, 
DIMENSION(:,:,:,:),
ALLOCATABLE:: ZCH1TENE 
 
  164 INTEGER, 
DIMENSION(:,:),
ALLOCATABLE :: ICLTOPE  
 
  165 INTEGER, 
DIMENSION(:,:),
ALLOCATABLE :: ICLBASE  
 
  166 REAL, 
DIMENSION(:),     
ALLOCATABLE :: ZEDUMMY  
 
  167 INTEGER, 
DIMENSION(:),  
ALLOCATABLE :: IEDUMMY  
 
  168 REAL, 
DIMENSION(:),     
ALLOCATABLE :: ZWEIGHT  
 
  177     ALLOCATE( zttens(klon,klev) ); 
ALLOCATE( zrvtens(klon,klev) ) 
 
  178     ALLOCATE( zrctens(klon,klev) ); 
ALLOCATE( zritens(klon,klev) ) 
 
  179     ALLOCATE( zch1tens(klon,klev,kch1) ) 
 
  180     ALLOCATE( zumfs(klon,klev) )
 
  181     ALLOCATE( iclbass(klon) ); 
ALLOCATE( icltops(klon) )
 
  188 kens = min( kensm, 3 )
 
  190     ALLOCATE( zttene(klon,klev,kens) )
 
  191     ALLOCATE( zrvtene(klon,klev,kens) )
 
  192     ALLOCATE( zrctene(klon,klev,kens) )
 
  193     ALLOCATE( zritene(klon,klev,kens) )
 
  194     ALLOCATE( zumfe(klon,klev,kens) )
 
  195     ALLOCATE( zdmfe(klon,klev,kens) )
 
  196     ALLOCATE( zch1tene(klon,klev,kch1,kens) )
 
  197     ALLOCATE( zprlflxe(klon,klev,kens) )
 
  198     ALLOCATE( zprsflxe(klon,klev,kens) )
 
  199     ALLOCATE( zprltene(klon,kens) )
 
  200     ALLOCATE( zprstene(klon,kens) )
 
  201     ALLOCATE( icltope(klon,kens) )
 
  202     ALLOCATE( iclbase(klon,kens) )
 
  203     ALLOCATE( zedummy(klon) )
 
  204     ALLOCATE( iedummy(klon) )
 
  205     ALLOCATE( zweight(kens) )
 
  217     IF ( osettadj ) ztimec(:) = ptadjd
 
  220     CALL convect_deep( klon, klev, kidia, kfdia, kbdia, ktdia,           &
 
  221                           pdtconv, kice, orefresh_all, odown, osettadj,  & 
 
  222                           ppabs, pzz, pdxdy, ztimec,                     &
 
  223                           pt, prv, prc, pri, pu, pv, pw,                 &
 
  224                           kcount, ptten, prvten, prcten, priten,         &
 
  226                           kcltop, kclbas, pprlflx, pprsflx,              & 
 
  228                           ochtrans, kch1, pch1, pch1ten                  )
 
  239     CALL convect_deep( klon, klev, kidia, kfdia, kbdia, ktdia,                                   &
 
  240                           pdtconv, kice, orefresh_all, odown, osettadj,                          & 
 
  241                           ppabs, pzz, pdxdy, ztimec,                                             &
 
  242                           pt, prv, prc, pri, pu, pv, pw,                                         &
 
  243                           iedummy, zttene(:,:,1), zrvtene(:,:,1), zrctene(:,:,1), zritene(:,:,1),&
 
  244                           zprltene(:,1), zprstene(:,1),                                          &
 
  245                           icltope(:,1), iclbase(:,1), zprlflxe(:,:,1), zprsflxe(:,:,1),          & 
 
  246                           zumfe(:,:,1), zdmfe(:,:,1), zedummy,                                   &
 
  247                           ochtrans, kch1, pch1, zch1tene(:,:,:,1)                                )
 
  256     CALL convect_deep( klon, klev, kidia, kfdia, kbdia, ktdia,                                   &
 
  257                           pdtconv, kice, orefresh_all, odown, osettadj,                          & 
 
  258                           ppabs, pzz, pdxdy, ztimec,                                             &
 
  259                           pt, prv, prc, pri, pu, pv, pw*1.5+1.e-4,                               &
 
  260                           iedummy, zttene(:,:,2), zrvtene(:,:,2), zrctene(:,:,2), zritene(:,:,2),&
 
  261                           zprltene(:,2), zprstene(:,2),                                          &
 
  262                           icltope(:,2), iclbase(:,2), zprlflxe(:,:,2), zprsflxe(:,:,2),          & 
 
  263                           zumfe(:,:,2), zdmfe(:,:,2), zedummy,                                   &
 
  264                           ochtrans, kch1, pch1, zch1tene(:,:,:,2)                                )
 
  271     CALL convect_deep( klon, klev, kidia, kfdia, kbdia, ktdia,                                   &
 
  272                           pdtconv, kice, orefresh_all, odown, osettadj,                          & 
 
  273                           ppabs, pzz, pdxdy, ztimec,                                             &
 
  274                           pt, prv, prc, pri, pu, pv, pw*.5-1.e-4,                                &
 
  275                           iedummy, zttene(:,:,3), zrvtene(:,:,3), zrctene(:,:,3), zritene(:,:,3),&
 
  276                           zprltene(:,3), zprstene(:,3),                                          &
 
  277                           icltope(:,3), iclbase(:,3), zprlflxe(:,:,3), zprsflxe(:,:,3),          & 
 
  278                           zumfe(:,:,3), zdmfe(:,:,3), zedummy,                                   &
 
  279                           ochtrans, kch1, pch1, zch1tene(:,:,:,3)                                )
 
  283 IF ( .NOT. odeep ) 
THEN 
  310                              pdtconv, kice, osettadj, ptadjs,            &
 
  312                              pt, prv, prc, pri, pw,                      &
 
  313                              zttens, zrvtens, zrctens, zritens,          &
 
  314                              icltops, iclbass, zumfs,                    &
 
  315                              ochtrans, kch1, pch1, zch1tens              )
 
  317 IF ( .NOT. oshal ) 
THEN 
  334     IF ( kens == 1 ) zweight(:) = .5
 
  335     IF ( kens >  1 ) zweight(:) = 1.
 
  337        ptten(:,:)  = ptten(:,:)  + zweight(jn) * zttene(:,:,jn)
 
  338        prvten(:,:) = prvten(:,:) + zweight(jn) * zrvtene(:,:,jn)
 
  339        prcten(:,:) = prcten(:,:) + zweight(jn) * zrctene(:,:,jn)
 
  340        priten(:,:) = priten(:,:) + zweight(jn) * zritene(:,:,jn)
 
  341        pprlflx(:,:)= pprlflx(:,:)+ zweight(jn) * zprlflxe(:,:,jn)
 
  342        pprsflx(:,:)= pprsflx(:,:)+ zweight(jn) * zprsflxe(:,:,jn)
 
  343        pumf(:,:)   = pumf(:,:)   + zweight(jn) * zumfe(:,:,jn)
 
  344        pdmf(:,:)   = pdmf(:,:)   + zweight(jn) * zdmfe(:,:,jn)
 
  345        zprlten(:)  = zprlten(:)  + zweight(jn) * zprltene(:,jn)
 
  346        pprsten(:)  = pprsten(:)  + zweight(jn) * zprstene(:,jn)
 
  347        kcltop(:)   = max(kcltop(:), icltope(:,jn))
 
  348        kclbas(:)   = max(kclbas(:), iclbase(:,jn))
 
  350          & pch1ten(:,:,:) = pch1ten(:,:,:) + zweight(jn) * zch1tene(:,:,:,jn)
 
  353     zsum = 1. / ( 1. + sum( zweight(:) ) )
 
  356        ptten(:,:)  = ptten(:,:)  * zsum + zttens(:,:) 
 
  357        prvten(:,:) = prvten(:,:) * zsum + zrvtens(:,:)
 
  358        prcten(:,:) = prcten(:,:) * zsum + zrctens(:,:)
 
  359        priten(:,:) = priten(:,:) * zsum + zritens(:,:)
 
  360        pprlflx(:,:)= pprlflx(:,:)* zsum
 
  361        pprsflx(:,:)= pprsflx(:,:)* zsum
 
  362        pumf(:,:)   = pumf(:,:)   * zsum + zumfs(:,:)
 
  363        pdmf(:,:)   = pdmf(:,:)   * zsum
 
  364        pprten(:)   = ( zprlten(:) + pprsten(:) ) * zsum
 
  365        pprsten(:)  = pprsten(:)  * zsum
 
  366        kcltop(:)   = max(kcltop(:), icltops(:))
 
  367        kclbas(:)   = max(kclbas(:), iclbass(:))
 
  369           pch1ten(:,:,:) = pch1ten(:,:,:) * zsum + zch1tens(:,:,:)
 
  374        DEALLOCATE( iclbass ); 
DEALLOCATE( icltops )
 
  376        DEALLOCATE( zch1tens ) 
 
  377        DEALLOCATE( zrctens ); 
DEALLOCATE( zritens ) 
 
  378        DEALLOCATE( zttens ); 
DEALLOCATE( zrvtens ) 
 
  381        DEALLOCATE( zttene );   
DEALLOCATE( zrvtene )
 
  382        DEALLOCATE( zrctene );  
DEALLOCATE( zritene )
 
  383        DEALLOCATE( zumfe );    
DEALLOCATE( zdmfe )
 
  384        DEALLOCATE( zch1tene )
 
  385        DEALLOCATE( zprlflxe ); 
DEALLOCATE( zprsflxe )
 
  386        DEALLOCATE( zprltene ); 
DEALLOCATE( zprstene )
 
  387        DEALLOCATE( zedummy );  
DEALLOCATE( iedummy )
 
  388        DEALLOCATE( zweight )
 
  715     SUBROUTINE convect_deep( KLON, KLEV, KIDIA, KFDIA, KBDIA, KTDIA,           &
 
  716                                 pdtconv, kice, orefresh, odown, osettadj,      &
 
  717                                 ppabst, pzz, pdxdy, ptimec,                    &
 
  718                                 ptt, prvt, prct, prit, put, pvt, pwt,          &
 
  719                                 kcount, ptten, prvten, prcten, priten,         &
 
  721                                 kcltop, kclbas, pprlflx, pprsflx,              &
 
  723                                 och1conv, kch1, pch1, pch1ten                  )
 
  819 INTEGER,                    
INTENT(IN) :: KLON     
 
  820 INTEGER,                    
INTENT(IN) :: KLEV     
 
  821 INTEGER,                    
INTENT(IN) :: KIDIA    
 
  822 INTEGER,                    
INTENT(IN) :: KFDIA    
 
  823 INTEGER,                    
INTENT(IN) :: KBDIA    
 
  825 INTEGER,                    
INTENT(IN) :: KTDIA    
 
  828 REAL,                       
INTENT(IN) :: PDTCONV  
 
  831 INTEGER,                    
INTENT(IN) :: KICE     
 
  833 LOGICAL,                    
INTENT(IN) :: OREFRESH 
 
  835 LOGICAL,                    
INTENT(IN) :: ODOWN    
 
  837 LOGICAL,                    
INTENT(IN) :: OSETTADJ 
 
  839 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(IN) :: PTT      
 
  840 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(IN) :: PRVT     
 
  841 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(IN) :: PRCT     
 
  842 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(IN) :: PRIT     
 
  843 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(IN) :: PUT      
 
  844 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(IN) :: PVT      
 
  845 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(IN) :: PWT      
 
  847 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(IN) :: PPABST   
 
  848 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(IN) :: PZZ      
 
  849 REAL, 
DIMENSION(KLON),      
INTENT(IN) :: PDXDY    
 
  850 REAL, 
DIMENSION(KLON),      
INTENT(IN) :: PTIMEC   
 
  853 INTEGER, 
DIMENSION(KLON),   
INTENT(INOUT):: KCOUNT 
 
  855 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(INOUT):: PTTEN  
 
  857 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(INOUT):: PRVTEN 
 
  858 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(INOUT):: PRCTEN 
 
  859 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(INOUT):: PRITEN 
 
  860 REAL, 
DIMENSION(KLON),      
INTENT(INOUT):: PPRLTEN
 
  862 REAL, 
DIMENSION(KLON),      
INTENT(INOUT):: PPRSTEN
 
  864 INTEGER, 
DIMENSION(KLON),   
INTENT(INOUT):: KCLTOP 
 
  865 INTEGER, 
DIMENSION(KLON),   
INTENT(INOUT):: KCLBAS 
 
  868 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(INOUT):: PPRLFLX
 
  869 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(INOUT):: PPRSFLX
 
  870 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(INOUT):: PUMF   
 
  871 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(INOUT):: PDMF   
 
  872 REAL, 
DIMENSION(KLON),      
INTENT(INOUT):: PCAPE  
 
  874 LOGICAL,                    
INTENT(IN) :: OCH1CONV 
 
  875 INTEGER,                    
INTENT(IN) :: KCH1     
 
  876 REAL, 
DIMENSION(KLON,KLEV,KCH1), 
INTENT(IN) :: PCH1
 
  877 REAL, 
DIMENSION(KLON,KLEV,KCH1), 
INTENT(INOUT):: PCH1TEN
 
  882 INTEGER  :: ITEST, ICONV, ICONV1    
 
  888 INTEGER  :: JK, JKP, JKM            
 
  890 REAL     :: ZEPS, ZEPSA, ZEPSB      
 
  891 REAL     :: ZCPORD, ZRDOCP          
 
  893 LOGICAL, 
DIMENSION(KLON, KLEV)     :: GTRIG3 
 
  894 LOGICAL, 
DIMENSION(KLON)           :: GTRIG  
 
  895 REAL, 
DIMENSION(KLON,KLEV)         :: ZTHT, ZSTHV, ZSTHES  
 
  897 REAL, 
DIMENSION(KLON)              :: ZTIME  
 
  898 REAL, 
DIMENSION(KLON)              :: ZWORK2, ZWORK2B 
 
  903 INTEGER, 
DIMENSION(:),
ALLOCATABLE  :: IDPL    
 
  904 INTEGER, 
DIMENSION(:),
ALLOCATABLE  :: IPBL    
 
  905 INTEGER, 
DIMENSION(:),
ALLOCATABLE  :: ILCL    
 
  906 INTEGER, 
DIMENSION(:),
ALLOCATABLE  :: IETL    
 
  907 INTEGER, 
DIMENSION(:),
ALLOCATABLE  :: ICTL    
 
  908 INTEGER, 
DIMENSION(:),
ALLOCATABLE  :: ILFS    
 
  909 INTEGER, 
DIMENSION(:),
ALLOCATABLE  :: IDBL    
 
  910 INTEGER, 
DIMENSION(:),
ALLOCATABLE  :: IML     
 
  912 INTEGER, 
DIMENSION(:), 
ALLOCATABLE :: ISDPL   
 
  913 INTEGER, 
DIMENSION(:),
ALLOCATABLE  :: ISPBL   
 
  914 INTEGER, 
DIMENSION(:), 
ALLOCATABLE :: ISLCL   
 
  915 REAL, 
DIMENSION(:), 
ALLOCATABLE    :: ZSTHLCL 
 
  916 REAL, 
DIMENSION(:), 
ALLOCATABLE    :: ZSTLCL  
 
  917 REAL, 
DIMENSION(:), 
ALLOCATABLE    :: ZSRVLCL 
 
  918 REAL, 
DIMENSION(:), 
ALLOCATABLE    :: ZSWLCL  
 
  919 REAL, 
DIMENSION(:), 
ALLOCATABLE    :: ZSZLCL  
 
  920 REAL, 
DIMENSION(:), 
ALLOCATABLE    :: ZSTHVELCL
 
  921 REAL, 
DIMENSION(:), 
ALLOCATABLE    :: ZSDXDY  
 
  924 REAL, 
DIMENSION(:,:), 
ALLOCATABLE  :: ZZ      
 
  925 REAL, 
DIMENSION(:,:), 
ALLOCATABLE  :: ZPRES   
 
  926 REAL, 
DIMENSION(:,:), 
ALLOCATABLE  :: ZDPRES  
 
  928 REAL, 
DIMENSION(:,:), 
ALLOCATABLE  :: ZU      
 
  929 REAL, 
DIMENSION(:,:), 
ALLOCATABLE  :: ZV      
 
  930 REAL, 
DIMENSION(:,:), 
ALLOCATABLE  :: ZW      
 
  931 REAL, 
DIMENSION(:,:), 
ALLOCATABLE  :: ZTT     
 
  932 REAL, 
DIMENSION(:,:), 
ALLOCATABLE  :: ZTH     
 
  933 REAL, 
DIMENSION(:,:), 
ALLOCATABLE  :: ZTHV    
 
  934 REAL, 
DIMENSION(:,:), 
ALLOCATABLE  :: ZTHL    
 
  935 REAL, 
DIMENSION(:,:), 
ALLOCATABLE  :: ZTHES, ZTHEST 
 
  936 REAL, 
DIMENSION(:,:), 
ALLOCATABLE  :: ZRW     
 
  937 REAL, 
DIMENSION(:,:), 
ALLOCATABLE  :: ZRV     
 
  938 REAL, 
DIMENSION(:,:), 
ALLOCATABLE  :: ZRC     
 
  939 REAL, 
DIMENSION(:,:), 
ALLOCATABLE  :: ZRI     
 
  940 REAL, 
DIMENSION(:),   
ALLOCATABLE  :: ZDXDY   
 
  943 REAL, 
DIMENSION(:,:), 
ALLOCATABLE  :: ZUMF    
 
  944 REAL, 
DIMENSION(:,:), 
ALLOCATABLE  :: ZUER    
 
  945 REAL, 
DIMENSION(:,:), 
ALLOCATABLE  :: ZUDR    
 
  946 REAL, 
DIMENSION(:,:), 
ALLOCATABLE  :: ZUPR    
 
  948 REAL, 
DIMENSION(:,:), 
ALLOCATABLE  :: ZUTHL   
 
  949 REAL, 
DIMENSION(:,:), 
ALLOCATABLE  :: ZUTHV   
 
  950 REAL, 
DIMENSION(:,:), 
ALLOCATABLE  :: ZURW    
 
  951 REAL, 
DIMENSION(:,:), 
ALLOCATABLE  :: ZURC    
 
  952 REAL, 
DIMENSION(:,:), 
ALLOCATABLE  :: ZURI    
 
  953 REAL, 
DIMENSION(:,:), 
ALLOCATABLE  :: ZURR    
 
  955 REAL, 
DIMENSION(:,:), 
ALLOCATABLE  :: ZURS    
 
  957 REAL, 
DIMENSION(:),   
ALLOCATABLE  :: ZUTPR   
 
  958 REAL, 
DIMENSION(:),   
ALLOCATABLE  :: ZMFLCL  
 
  959 REAL, 
DIMENSION(:),   
ALLOCATABLE  :: ZCAPE   
 
  960 REAL, 
DIMENSION(:),   
ALLOCATABLE  :: ZTHLCL  
 
  961 REAL, 
DIMENSION(:),   
ALLOCATABLE  :: ZTLCL   
 
  962 REAL, 
DIMENSION(:),   
ALLOCATABLE  :: ZRVLCL  
 
  963 REAL, 
DIMENSION(:),   
ALLOCATABLE  :: ZWLCL   
 
  964 REAL, 
DIMENSION(:),   
ALLOCATABLE  :: ZZLCL   
 
  965 REAL, 
DIMENSION(:),   
ALLOCATABLE  :: ZTHVELCL
 
  968 REAL, 
DIMENSION(:,:), 
ALLOCATABLE  :: ZDMF    
 
  969 REAL, 
DIMENSION(:,:), 
ALLOCATABLE  :: ZDER    
 
  970 REAL, 
DIMENSION(:,:), 
ALLOCATABLE  :: ZDDR    
 
  971 REAL, 
DIMENSION(:,:), 
ALLOCATABLE  :: ZDTHL   
 
  972 REAL, 
DIMENSION(:,:), 
ALLOCATABLE  :: ZDRW    
 
  973 REAL, 
DIMENSION(:),   
ALLOCATABLE  :: ZMIXF   
 
  974 REAL, 
DIMENSION(:),   
ALLOCATABLE  :: ZTPR    
 
  975 REAL, 
DIMENSION(:),   
ALLOCATABLE  :: ZSPR    
 
  976 REAL, 
DIMENSION(:),   
ALLOCATABLE  :: ZDTEVR  
 
  977 REAL, 
DIMENSION(:),   
ALLOCATABLE  :: ZPREF   
 
  978 REAL, 
DIMENSION(:,:), 
ALLOCATABLE  :: ZDTEVRF 
 
  979 REAL, 
DIMENSION(:,:), 
ALLOCATABLE  :: ZPRLFLX 
 
  980 REAL, 
DIMENSION(:,:), 
ALLOCATABLE  :: ZPRSFLX 
 
  983 REAL, 
DIMENSION(:,:), 
ALLOCATABLE  :: ZLMASS  
 
  984 REAL, 
DIMENSION(:),   
ALLOCATABLE  :: ZTIMEA  
 
  985 REAL, 
DIMENSION(:),   
ALLOCATABLE  :: ZTIMEC, ZTIMED
 
  988 REAL, 
DIMENSION(:,:), 
ALLOCATABLE  :: ZTHC    
 
  989 REAL, 
DIMENSION(:,:), 
ALLOCATABLE  :: ZRVC    
 
  990 REAL, 
DIMENSION(:,:), 
ALLOCATABLE  :: ZRCC    
 
  991 REAL, 
DIMENSION(:,:), 
ALLOCATABLE  :: ZRIC    
 
  992 REAL, 
DIMENSION(:,:), 
ALLOCATABLE  :: ZWSUB   
 
  994 LOGICAL, 
DIMENSION(:),
ALLOCATABLE  :: GTRIG1  
 
  995 LOGICAL, 
DIMENSION(:),
ALLOCATABLE  :: GWORK   
 
  996 INTEGER, 
DIMENSION(:),
ALLOCATABLE  :: IINDEX, IJINDEX, IJSINDEX, IJPINDEX
 
  997 REAL, 
DIMENSION(:),   
ALLOCATABLE  :: ZCPH    
 
  998 REAL, 
DIMENSION(:),   
ALLOCATABLE  :: ZLV, ZLS
 
 1002 REAL, 
DIMENSION(:,:,:), 
ALLOCATABLE:: ZCH1    
 
 1003 REAL, 
DIMENSION(:,:,:), 
ALLOCATABLE:: ZCH1C   
 
 1004 REAL, 
DIMENSION(:,:),   
ALLOCATABLE:: ZWORK3  
 
 1005 LOGICAL, 
DIMENSION(:,:,:),
ALLOCATABLE::GTRIG4 
 
 1015 jcvexb = max( 0, kbdia - 1 )
 
 1018 jcvext = max( 0, ktdia - 1 )
 
 1026 kcount(iib:iie) = kcount(iib:iie) - 1 
 
 1028 IF ( orefresh ) 
THEN 
 1033 gtrig(:)  = kcount(:) <= 0
 
 1034 itest = count( gtrig(:) )
 
 1035 IF ( itest == 0 ) 
RETURN   
 1043 gtrig3(:,:) = spread( gtrig(:), dim=2, ncopies=iks )
 
 1044 WHERE ( gtrig3(:,:) ) 
 
 1063 IF ( och1conv ) 
THEN 
 1064    ALLOCATE( gtrig4(klon,klev,kch1) )
 
 1065    gtrig4(:,:,:) = spread( gtrig3(:,:), dim=3, ncopies=kch1 )
 
 1066    WHERE( gtrig4(:,:,:) ) pch1ten(:,:,:) = 0.
 
 1067    DEALLOCATE( gtrig4 )
 
 1089    IF ( ppabst(ji,jk) > 40.e2 ) 
THEN 
 1090       ztht(ji,jk)  = ptt(ji,jk) * ( 
xp00 / ppabst(ji,jk) ) ** zrdocp
 
 1091       zsthv(ji,jk) = ztht(ji,jk) * ( 1. + zepsa * prvt(ji,jk) ) /              &
 
 1092                      ( 1. + prvt(ji,jk) + prct(ji,jk) + prit(ji,jk) )
 
 1099       zes = min( 1., zeps * zes / ( ppabst(ji,jk) - zes ) )
 
 1100       zsthes(ji,jk) = ptt(ji,jk) * ( ztht(ji,jk) / ptt(ji,jk) ) **             &
 
 1101                 ( 1. - 0.28 * zes ) * exp( min(500.,                           &
 
 1102                                            ( 3374.6525 / ptt(ji,jk) - 2.5403 ) &
 
 1103                                           * zes * ( 1. + 0.81 * zes ) ) )
 
 1118      ALLOCATE( zpres(itest,iks) )
 
 1119      ALLOCATE( zz(itest,iks) )
 
 1120      ALLOCATE( zw(itest,iks) )
 
 1121      ALLOCATE( zth(itest,iks) )
 
 1122      ALLOCATE( zthv(itest,iks) )
 
 1123      ALLOCATE( zthest(itest,iks) )
 
 1124      ALLOCATE( zrv(itest,iks) )
 
 1125      ALLOCATE( zsthlcl(itest) )
 
 1126      ALLOCATE( zstlcl(itest) )
 
 1127      ALLOCATE( zsrvlcl(itest) )
 
 1128      ALLOCATE( zswlcl(itest) )
 
 1129      ALLOCATE( zszlcl(itest) )
 
 1130      ALLOCATE( zsthvelcl(itest) )
 
 1131      ALLOCATE( isdpl(itest) )
 
 1132      ALLOCATE( ispbl(itest) )
 
 1133      ALLOCATE( islcl(itest) )
 
 1134      ALLOCATE( zsdxdy(itest) )
 
 1135      ALLOCATE( gtrig1(itest) )
 
 1136      ALLOCATE( zcape(itest) )
 
 1137      ALLOCATE( iindex(klon) )
 
 1138      ALLOCATE( ijsindex(itest) )
 
 1142      ijsindex(:) = pack( iindex(:), mask=gtrig(:) )
 
 1147      zpres(ji,jk)  = ppabst(jl,jk)
 
 1148      zz(ji,jk)     = pzz(jl,jk)
 
 1149      zth(ji,jk)    = ztht(jl,jk)
 
 1150      zthv(ji,jk)   = zsthv(jl,jk)
 
 1151      zthest(ji,jk) = zsthes(jl,jk)
 
 1152      zrv(ji,jk)    = max( 0., prvt(jl,jk) )
 
 1153      zw(ji,jk)     = pwt(jl,jk)
 
 1158      zsdxdy(ji)    = pdxdy(jl)
 
 1169      islcl(:) = max( ikb, 2 )   
 
 1175                                  zpres, zth, zthv, zthest,                 &
 
 1176                                  zrv, zw, zz, zsdxdy,                      &
 
 1177                                  zsthlcl, zstlcl, zsrvlcl, zswlcl, zszlcl, &
 
 1178                                  zsthvelcl, islcl, isdpl, ispbl, gtrig1,   &
 
 1183         pcape(jl) = zcape(ji)
 
 1190      DEALLOCATE( zthest )
 
 1202      iconv = count( gtrig1(:) )
 
 1203      IF ( iconv == 0 )  
THEN  
 1204          DEALLOCATE( zsthlcl )
 
 1205          DEALLOCATE( zstlcl )
 
 1206          DEALLOCATE( zsrvlcl )
 
 1207          DEALLOCATE( zswlcl )
 
 1208          DEALLOCATE( zszlcl )
 
 1209          DEALLOCATE( zsthvelcl )
 
 1210          DEALLOCATE( zsdxdy )
 
 1214          DEALLOCATE( gtrig1 )
 
 1215          DEALLOCATE( iindex )
 
 1216          DEALLOCATE( ijsindex )
 
 1222          ALLOCATE( idpl(iconv) )
 
 1223          ALLOCATE( ipbl(iconv) )
 
 1224          ALLOCATE( ilcl(iconv) )
 
 1225          ALLOCATE( ictl(iconv) )
 
 1226          ALLOCATE( ietl(iconv) )
 
 1230          ALLOCATE( zz(iconv,iks) )
 
 1231          ALLOCATE( zpres(iconv,iks) )
 
 1232          ALLOCATE( zdpres(iconv,iks) )
 
 1233          ALLOCATE( zu(iconv,iks) )
 
 1234          ALLOCATE( zv(iconv,iks) )
 
 1235          ALLOCATE( ztt(iconv, iks) )
 
 1236          ALLOCATE( zth(iconv,iks) )
 
 1237          ALLOCATE( zthv(iconv,iks) )
 
 1238          ALLOCATE( zthl(iconv,iks) )
 
 1239          ALLOCATE( zthes(iconv,iks) )
 
 1240          ALLOCATE( zrv(iconv,iks) )
 
 1241          ALLOCATE( zrc(iconv,iks) )
 
 1242          ALLOCATE( zri(iconv,iks) )
 
 1243          ALLOCATE( zrw(iconv,iks) )
 
 1244          ALLOCATE( zdxdy(iconv) )
 
 1248          ALLOCATE( zumf(iconv,iks) )
 
 1249          ALLOCATE( zuer(iconv,iks) )
 
 1250          ALLOCATE( zudr(iconv,iks) )
 
 1251          ALLOCATE( zupr(iconv,iks) )
 
 1252          ALLOCATE( zuthl(iconv,iks) )
 
 1253          ALLOCATE( zuthv(iconv,iks) )
 
 1254          ALLOCATE( zurw(iconv,iks) )
 
 1255          ALLOCATE( zurc(iconv,iks) )
 
 1256          ALLOCATE( zuri(iconv,iks) )
 
 1257          ALLOCATE( zurr(iconv,iks) )
 
 1258          ALLOCATE( zurs(iconv,iks) )
 
 1259          ALLOCATE( zutpr(iconv) )
 
 1260          ALLOCATE( zthlcl(iconv) )
 
 1261          ALLOCATE( ztlcl(iconv) )
 
 1262          ALLOCATE( zrvlcl(iconv) )
 
 1263          ALLOCATE( zwlcl(iconv) )
 
 1264          ALLOCATE( zmflcl(iconv) )
 
 1265          ALLOCATE( zzlcl(iconv) )
 
 1266          ALLOCATE( zthvelcl(iconv) )
 
 1267          ALLOCATE( zcape(iconv) )
 
 1271          ALLOCATE( ijindex(iconv) )
 
 1272          ALLOCATE( ijpindex(iconv) )
 
 1273          ALLOCATE( zcph(iconv) )
 
 1274          ALLOCATE( zlv(iconv) )
 
 1275          ALLOCATE( zls(iconv) )
 
 1282          gtrig(:)      = unpack( gtrig1(:), mask=gtrig(:), field=.
false. )  
 
 1283          ijindex(:)    = pack( iindex(:), mask=gtrig(:) )
 
 1288          zz(ji,jk)     = pzz(jl,jk)
 
 1289          zpres(ji,jk)  = ppabst(jl,jk)
 
 1290          ztt(ji,jk)    = ptt(jl,jk)
 
 1291          zth(ji,jk)    = ztht(jl,jk)
 
 1292          zthes(ji,jk)  = zsthes(jl,jk)
 
 1293          zrv(ji,jk)    = max( 0., prvt(jl,jk) )
 
 1294          zrc(ji,jk)    = max( 0., prct(jl,jk) )
 
 1295          zri(ji,jk)    = max( 0., prit(jl,jk) )
 
 1296          zthv(ji,jk)   = zsthv(jl,jk)
 
 1297          zu(ji,jk)     = put(jl,jk)
 
 1298          zv(ji,jk)     = pvt(jl,jk)
 
 1301     IF ( osettadj ) 
THEN 
 1302          ALLOCATE( ztimed(iconv) )
 
 1305             ztimed(ji) = ptimec(jl)
 
 1312     ijpindex(:) = pack( ijsindex(:), mask=gtrig1(:) )
 
 1315          idpl(ji)      = isdpl(jl)
 
 1316          ipbl(ji)      = ispbl(jl)
 
 1317          ilcl(ji)      = islcl(jl)
 
 1318          zthlcl(ji)    = zsthlcl(jl)
 
 1319          ztlcl(ji)     = zstlcl(jl)
 
 1320          zrvlcl(ji)    = zsrvlcl(jl)
 
 1321          zwlcl(ji)     = zswlcl(jl)
 
 1322          zzlcl(ji)     = zszlcl(jl)
 
 1323          zthvelcl(ji)  = zsthvelcl(jl)
 
 1324          zdxdy(ji)     = zsdxdy(jl)
 
 1326          ALLOCATE( gwork(iconv) )
 
 1327          gwork(:)      = pack( gtrig1(:),  mask=gtrig1(:) ) 
 
 1328          DEALLOCATE( gtrig1 )
 
 1329          ALLOCATE( gtrig1(iconv) )
 
 1330          gtrig1(:)     = gwork(:)
 
 1333          DEALLOCATE( ijpindex )
 
 1337          DEALLOCATE( zsthlcl )
 
 1338          DEALLOCATE( zstlcl )
 
 1339          DEALLOCATE( zsrvlcl )
 
 1340          DEALLOCATE( zswlcl )
 
 1341          DEALLOCATE( zszlcl )
 
 1342          DEALLOCATE( zsthvelcl )
 
 1343          DEALLOCATE( zsdxdy )
 
 1350         DO jk = ikb + 1, ike
 
 1351             zdpres(:,jk)  = zpres(:,jk-1) - zpres(:,jk)
 
 1358             zrw(:,jk)  = zrv(:,jk) + zrc(:,jk) + zri(:,jk)
 
 1362             zthl(:,jk) = zcph(:) * ztt(:,jk) + ( 1. + zrw(:,jk) ) * 
xg * zz(:,jk) &
 
 1363                          - zlv(:) * zrc(:,jk) - zls(:) * zri(:,jk)
 
 1375                zmflcl(ji) = zpres(ji,jk) / ( 
xrd * ztt(ji,jk) *                &
 
 1385                            kice, zpres, zdpres, zz, zthl, zthv, zthes, zrw, &
 
 1386                            zthlcl, ztlcl, zrvlcl, zwlcl, zzlcl, zthvelcl,   & 
 
 1387                            zmflcl, gtrig1, ilcl, idpl, ipbl,                &
 
 1388                            zumf, zuer, zudr, zuthl, zuthv, zurw,            &
 
 1389                            zurc, zuri, zurr, zurs, zupr,                    &
 
 1390                            zutpr, zcape, ictl, ietl                         )
 
 1399      iconv1 = count(gtrig1) 
 
 1401      IF ( iconv1 > 0 )  
THEN 
 1408         ALLOCATE( ilfs(iconv) )
 
 1409         ALLOCATE( idbl(iconv) )
 
 1410         ALLOCATE( iml(iconv) )
 
 1411         ALLOCATE( zdmf(iconv,iks) )
 
 1412         ALLOCATE( zder(iconv,iks) )
 
 1413         ALLOCATE( zddr(iconv,iks) )
 
 1414         ALLOCATE( zdthl(iconv,iks) )
 
 1415         ALLOCATE( zdrw(iconv,iks) )
 
 1416         ALLOCATE( zlmass(iconv,iks) )
 
 1418            zlmass(:,jk)  = zdxdy(:) * zdpres(:,jk) / 
xg   
 1420                 zlmass(:,ikb) = zlmass(:,ikb+1)
 
 1421         ALLOCATE( zmixf(iconv) )
 
 1422         ALLOCATE( ztpr(iconv) )
 
 1423         ALLOCATE( zspr(iconv) )
 
 1424         ALLOCATE( zdtevr(iconv) )
 
 1425         ALLOCATE( zpref(iconv) )
 
 1426         ALLOCATE( zdtevrf(iconv,iks) )
 
 1427         ALLOCATE( zprlflx(iconv,iks) )
 
 1428         ALLOCATE( zprsflx(iconv,iks) )
 
 1432         ALLOCATE( ztimea(iconv) )
 
 1433         ALLOCATE( ztimec(iconv) )
 
 1434         ALLOCATE( zthc(iconv,iks) )
 
 1435         ALLOCATE( zrvc(iconv,iks) )
 
 1436         ALLOCATE( zrcc(iconv,iks) )
 
 1437         ALLOCATE( zric(iconv,iks) )
 
 1438         ALLOCATE( zwsub(iconv,iks) )
 
 1449                                  zu, zv, zpres, zz, zdxdy, ilcl, ictl, &
 
 1453         IF ( .NOT. odown ) zpref(:) = 1.
 
 1456         ztimec(:) = max( 1800., min( 3600., ztimea(:) ) )
 
 1457         ztimec(:) = 
REAL( INT( ZTIMEC(:) / PDTCONV ) ) * PDTCONV
 
 1458         ztimec(:) = max( pdtconv, ztimec(:) ) 
 
 1459         IF ( osettadj ) 
THEN 
 1460              ztimec(:) = max( pdtconv, ztimed(:) )
 
 1468         DO jk = ike, ikb, -1
 
 1469           WHERE( ztt(:,jk) <= 
xtt )  iml(:) = jk
 
 1473                                 kice, zpres, zdpres, zz, zth, zthes,       & 
 
 1475                                 zpref, ilcl, ictl, ietl,                   &
 
 1476                                 zuthl, zurw, zurc, zuri,                   &
 
 1477                                 zdmf, zder, zddr, zdthl, zdrw,             &
 
 1478                                 zmixf, zdtevr, ilfs, idbl, iml,            &
 
 1487                                    zpres,zumf, zuer, zudr, zupr, zutpr, zurw,&
 
 1488                                    zdmf, zder, zddr, zdthl, zdrw,            &
 
 1489                                    zpref, ztpr, zmixf, zdtevr,               &
 
 1490                                    ilfs, idbl, ilcl, ictl, ietl,             &
 
 1500                              zpres, zdpres, zz, zdxdy, zlmass,           &
 
 1501                              zthl, zth, zrw, zrc, zri, gtrig1,           &
 
 1502                              zthc, zrvc, zrcc, zric, zwsub,              &
 
 1503                              ilcl, idpl, ipbl, ilfs, ictl, iml,          &
 
 1504                              zumf, zuer, zudr, zuthl, zurw,              &
 
 1506                              zdmf, zder, zddr, zdthl, zdrw,              &
 
 1507                              ztpr, zspr, zdtevr,                         &
 
 1510                              zdtevrf, zprlflx, zprsflx )
 
 1527          zthc(:,jk) = ( zthc(:,jk) - zth(:,jk) ) / ztimec(:)             &
 
 1528            * ( zpres(:,jk) / 
xp00 ) ** zrdocp 
 
 1529          zrvc(:,jk) = ( zrvc(:,jk) - zrw(:,jk) + zrc(:,jk) + zri(:,jk) ) &
 
 1532          zrcc(:,jk) = ( zrcc(:,jk) - zrc(:,jk) ) / ztimec(:)
 
 1533          zric(:,jk) = ( zric(:,jk) - zri(:,jk) ) / ztimec(:) 
 
 1535          zprlflx(:,jk) = zprlflx(:,jk) / ( 
xrholw * zdxdy(:) )
 
 1536          zprsflx(:,jk) = zprsflx(:,jk) / ( 
xrholw * zdxdy(:) )
 
 1540       zprlflx(:,ikb) = zprlflx(:,ikb+1)
 
 1541       zprsflx(:,ikb) = zprsflx(:,ikb+1)
 
 1549        jkm = maxval( ictl(:) )
 
 1552        DO jk = jkm, ikb+1, -1
 
 1555            zwork2(ji) = zwork2(ji) + ( zrvc(ji,jk) + zrcc(ji,jk) + zric(ji,jk) ) *   & 
 
 1556                                              (zpres(ji,jk) - zpres(ji,jkp)) / 
xg 
 1568          IF ( ztpr(ji) > 0.) 
THEN 
 1570            zwork2(ji) = ( ztpr(ji) / zdxdy(ji) + zwork2(ji) ) * 
xg /                 &
 
 1571                                         ( zpres(ji,ikb+1) - zpres(ji,jkp) )
 
 1580        DO jk = jkm, ikb+1, -1
 
 1582            IF ( ztpr(ji) > 0. .AND. jk <= ictl(ji) ) 
THEN 
 1583                 zrvc(ji,jk) = zrvc(ji,jk) - zwork2(ji)                                
 
 1597          ptten(jl,jk)   = zthc(ji,jk)
 
 1598          prvten(jl,jk)  = zrvc(ji,jk)
 
 1599          prcten(jl,jk)  = zrcc(ji,jk)
 
 1600          priten(jl,jk)  = zric(ji,jk)
 
 1602          pprlflx(jl,jk) = zprlflx(ji,jk)
 
 1603          pprsflx(jl,jk) = zprsflx(ji,jk)
 
 1614        ztpr(:)   = ztpr(:) / ( 
xrholw * zdxdy(:) ) 
 
 1615        zspr(:)   = zspr(:) / ( 
xrholw * zdxdy(:) ) 
 
 1616        ztpr(:)   = ztpr(:) - zspr(:) 
 
 1620         pprlten(jl) = ztpr(ji)
 
 1621         pprsten(jl) = zspr(ji)
 
 1628      ilcl(:) = min( ilcl(:), ictl(:) )
 
 1631         kcltop(jl) = ictl(ji)
 
 1632         kclbas(jl) = ilcl(ji)
 
 1649        ztime(jl)  =  ztimec(ji)
 
 1650        zwork2(jl) =  ztimea(ji)
 
 1651        zwork2(jl) =  min( zwork2(jl), ztime(jl) )
 
 1652        zwork2(jl) =  max( zwork2(jl), pdtconv )
 
 1653        IF ( gtrig(jl) )  kcount(jl) = int( zwork2(jl) / pdtconv )
 
 1654        IF ( gtrig(jl) .AND. pprlten(jl)<1.e-14 ) kcount(jl) = 0
 
 1662   IF ( och1conv ) 
THEN 
 1664        ALLOCATE( zch1(iconv,iks,kch1) )
 
 1665        ALLOCATE( zch1c(iconv,iks,kch1) )
 
 1666        ALLOCATE( zwork3(iconv,kch1) )
 
 1671           zch1(ji,jk,:) = pch1(jl,jk,:)
 
 1676                                    idpl, ipbl, ilcl, ictl, ilfs, idbl,  &
 
 1677                                    zumf, zuer, zudr, zdmf, zder, zddr,  &
 
 1678                                    ztimec, zdxdy, zmixf, zlmass, zwsub, &
 
 1683           zch1c(:,jk,jn) = ( zch1c(:,jk,jn)- zch1(:,jk,jn) ) / ztimec(:)
 
 1692        jkm = maxval( ictl(:) )
 
 1694        DO jk = jkm, ikb+1, -1
 
 1697            zwork3(ji,:) = zwork3(ji,:) + zch1c(ji,jk,:) *                    &
 
 1698                               (zpres(ji,jk) - zpres(ji,jkp)) / 
xg 
 1705          IF ( ztpr(ji) > 0.) 
THEN 
 1707            zwork3(ji,:) = zwork3(ji,:) *                                     &
 
 1708                                     xg / ( zpres(ji,ikb+1) - zpres(ji,jkp) )
 
 1714        DO jk = jkm, ikb+1, -1
 
 1716            IF ( ztpr(ji) > 0. .AND. jk <= ictl(ji) ) 
THEN 
 1717                 zch1c(ji,jk,:) = zch1c(ji,jk,:) - zwork3(ji,:)
 
 1718                 zch1c(ji,jk,:) = max( zch1c(ji,jk,:), -zch1(ji,jk,:)/ztimec(ji) )
 
 1726           pch1ten(jl,jk,:) = zch1c(ji,jk,:)
 
 1736        zumf(:,jk)  = zumf(:,jk) / zdxdy(:) 
 
 1737        zdmf(:,jk)  = zdmf(:,jk) / zdxdy(:)
 
 1740     WHERE ( pprlten(:)<1.e-14 ) zwork2(:) = 0.
 
 1744        pumf(jl,jk) = zumf(ji,jk) * zwork2(jl)
 
 1745        pdmf(jl,jk) = zdmf(ji,jk) * zwork2(jl)
 
 1760       DEALLOCATE( zlmass )
 
 1764       DEALLOCATE( zdtevr )
 
 1769       DEALLOCATE( zdtevrf )
 
 1770       DEALLOCATE( zprlflx )
 
 1771       DEALLOCATE( zprsflx )
 
 1775       DEALLOCATE( ztimea )
 
 1776       DEALLOCATE( ztimec )
 
 1783        IF ( och1conv ) 
THEN 
 1786            DEALLOCATE( zwork3 )
 
 1803     DEALLOCATE( zdpres )
 
 1831     DEALLOCATE( zthlcl )
 
 1833     DEALLOCATE( zrvlcl )
 
 1836     DEALLOCATE( zthvelcl )
 
 1837     DEALLOCATE( zmflcl )
 
 1839     IF ( osettadj ) 
DEALLOCATE( ztimed )
 
 1843     DEALLOCATE( iindex )
 
 1844     DEALLOCATE( ijindex )
 
 1845     DEALLOCATE( ijsindex )
 
 1846     DEALLOCATE( gtrig1 )
 
 1852                                         ppres, 
pth, pthv, pthes,              &
 
 1853                                         prv, pw, pz, pdxdy,                   &
 
 1854                                         pthlcl, ptlcl, prvlcl, pwlcl, pzlcl,  &
 
 1855                                         pthvelcl, klcl, kdpl, kpbl, otrig,    &
 
 1933 INTEGER, 
INTENT(IN)                   :: KLON      
 
 1934 INTEGER, 
INTENT(IN)                   :: KLEV      
 
 1935 REAL, 
DIMENSION(KLON),     
INTENT(IN) :: PDXDY     
 
 1936 REAL, 
DIMENSION(KLON,KLEV),
INTENT(IN) :: PTH, PTHV 
 
 1937 REAL, 
DIMENSION(KLON,KLEV),
INTENT(IN) :: PTHES     
 
 1938 REAL, 
DIMENSION(KLON,KLEV),
INTENT(IN) :: PRV       
 
 1939 REAL, 
DIMENSION(KLON,KLEV),
INTENT(IN) :: PPRES     
 
 1940 REAL, 
DIMENSION(KLON,KLEV),
INTENT(IN) :: PZ        
 
 1941 REAL, 
DIMENSION(KLON,KLEV),
INTENT(IN) :: PW        
 
 1943 REAL, 
DIMENSION(KLON),     
INTENT(OUT):: PTHLCL    
 
 1944 REAL, 
DIMENSION(KLON),     
INTENT(OUT):: PTLCL     
 
 1945 REAL, 
DIMENSION(KLON),     
INTENT(OUT):: PRVLCL    
 
 1946 REAL, 
DIMENSION(KLON),     
INTENT(OUT):: PWLCL     
 
 1947 REAL, 
DIMENSION(KLON),     
INTENT(OUT):: PZLCL     
 
 1948 REAL, 
DIMENSION(KLON),     
INTENT(OUT):: PTHVELCL  
 
 1949 LOGICAL, 
DIMENSION(KLON),  
INTENT(OUT):: OTRIG     
 
 1950 INTEGER, 
DIMENSION(KLON),  
INTENT(INOUT):: KLCL    
 
 1951 INTEGER, 
DIMENSION(KLON),  
INTENT(INOUT):: KDPL    
 
 1952 INTEGER, 
DIMENSION(KLON),  
INTENT(INOUT):: KPBL    
 
 1953 REAL, 
DIMENSION(KLON),     
INTENT(OUT):: PCAPE     
 
 1957 INTEGER :: JKK, JK, JKP, JKM, JKDL, JL, JKT, JT
 
 1959 INTEGER :: IIE, IKB, IKE                       
 
 1961 REAL    :: ZCPORD, ZRDOCP                      
 
 1963 REAL, 
DIMENSION(KLON) :: ZTHLCL, ZTLCL, ZRVLCL, & 
 
 1964                                ZWLCL,  ZZLCL, ZTHVELCL  
 
 1965 INTEGER, 
DIMENSION(KLON) :: IDPL, IPBL, ILCL      
 
 1966 REAL, 
DIMENSION(KLON) :: ZPLCL    
 
 1967 REAL, 
DIMENSION(KLON) :: ZZDPL    
 
 1968 REAL, 
DIMENSION(KLON) :: ZTHVLCL  
 
 1969 REAL, 
DIMENSION(KLON) :: ZTMIX    
 
 1970 REAL, 
DIMENSION(KLON) :: ZEVMIX   
 
 1971 REAL, 
DIMENSION(KLON) :: ZDPTHMIX, ZPRESMIX 
 
 1972 REAL, 
DIMENSION(KLON) :: ZCAPE    
 
 1973 REAL, 
DIMENSION(KLON) :: ZTHEUL   
 
 1974 REAL, 
DIMENSION(KLON) :: ZLV, ZCPH
 
 1975 REAL, 
DIMENSION(KLON) :: ZDP      
 
 1976 REAL, 
DIMENSION(KLON) :: ZTOP     
 
 1977 REAL, 
DIMENSION(KLON,KLEV):: ZCAP 
 
 1979 REAL, 
DIMENSION(KLON) :: ZWORK1, ZWORK2, ZWORK3    
 
 1980 LOGICAL, 
DIMENSION(KLON) :: GTRIG, GTRIG2          
 
 1981 LOGICAL, 
DIMENSION(KLON) :: GWORK1                 
 
 2013 pzlcl(:)   = pz(:,ikb)
 
 2014 zzdpl(:)   = pz(:,ikb)
 
 2024 DO jk = ikb + 1, ike - 2
 
 2028    IF ( pz(1,jk) - pz(1,ikb) < 12.e3 ) jt = jk 
 
 2035 jkp = minval( idpl(:) ) + 1
 
 2040      gwork1(:) = zzdpl(:) - pz(:,ikb) < 
xzlcl 
 2048         zzdpl(:)    = pz(:,jkk)
 
 2056      DO jk = jkk, ike - 1
 
 2059          IF ( gwork1(ji) .AND. zdpthmix(ji) < 
xzpbl ) 
THEN 
 2061             zwork1(ji)   = ppres(ji,jk) - ppres(ji,jkm)
 
 2062             zdpthmix(ji) = zdpthmix(ji) + zwork1(ji)
 
 2063             zpresmix(ji) = zpresmix(ji) + ppres(ji,jk) * zwork1(ji)
 
 2064             zthlcl(ji)   = zthlcl(ji)   + pth(ji,jk)   * zwork1(ji)
 
 2065             zrvlcl(ji)   = zrvlcl(ji)   + prv(ji,jk)   * zwork1(ji)
 
 2068         IF ( minval( zdpthmix(:) ) >= 
xzpbl ) 
EXIT 
 2074         zpresmix(:) = zpresmix(:) / zdpthmix(:)
 
 2077         zthlcl(:)   = zthlcl(:)   / zdpthmix(:) + 
xdthpbl 
 2078         zrvlcl(:)   = zrvlcl(:)   / zdpthmix(:) + 
xdrvpbl 
 2079         zthvlcl(:)  = zthlcl(:) * ( 1. + zepsa * zrvlcl(:) )                 &
 
 2080                                                                 / ( 1. + zrvlcl(:) )
 
 2089         ztmix(:)  = zthlcl(:) * ( zpresmix(:) / 
xp00 ) ** zrdocp 
 
 2090         zevmix(:) = zrvlcl(:) * zpresmix(:) / ( zrvlcl(:) + zeps )
 
 2091         zevmix(:) = max( 1.e-8, zevmix(:) )
 
 2092         zwork1(:) = log( zevmix(:) / 613.3 )
 
 2094         zwork1(:) = ( 4780.8 - 32.19 * zwork1(:) ) / ( 17.502 - zwork1(:) ) 
 
 2096         ztlcl(:)  = zwork1(:) - ( .212 + 1.571e-3 * ( zwork1(:) - 
xtt )      &
 
 2097                    - 4.36e-4 * ( ztmix(:) - 
xtt ) ) * ( ztmix(:) - zwork1(:) )
 
 2098         ztlcl(:)  = min( ztlcl(:), ztmix(:) )
 
 2099         zplcl(:)  = 
xp00 * ( ztlcl(:) / zthlcl(:) ) ** zcpord
 
 2110         zwork2(:) = zwork1(:) / ztlcl(:) * ( 
xbetaw / ztlcl(:) - 
xgamw ) 
 
 2111         zwork2(:) = ( zwork1(:) - zrvlcl(:) ) /                              &
 
 2112                         ( 1. + zlv(:) / zcph(:) * zwork2(:) )
 
 2113         ztlcl(:)  = ztlcl(:) - zlv(:) / zcph(:) * zwork2(:)
 
 2123      WHERE( gwork1(:) .AND. zrvlcl(:) > zwork1(:) )
 
 2124         zwork2(:) = zwork1(:) / ztmix(:) * ( 
xbetaw / ztmix(:) - 
xgamw ) 
 
 2125         zwork2(:) = ( zwork1(:) - zrvlcl(:) ) /                              &
 
 2126                        ( 1. + zlv(:) / zcph(:) * zwork2(:) ) 
 
 2127         ztlcl(:)  = ztmix(:) - zlv(:) / zcph(:) * zwork2(:)
 
 2128         zrvlcl(:) = zrvlcl(:) - zwork2(:)
 
 2129         zplcl(:)  = zpresmix(:)
 
 2130         zthlcl(:) = ztlcl(:) * ( 
xp00 / zplcl(:) ) ** zrdocp
 
 2131         zthvlcl(:)= zthlcl(:) * ( 1. + zepsa * zrvlcl(:) )                   &
 
 2132                               / ( 1. + zrvlcl(:) )
 
 2139     DO jk = jkk, ike - 1
 
 2141          IF ( zplcl(ji) <= ppres(ji,jk) .AND. gwork1(ji) ) ilcl(ji) = jk + 1
 
 2152         zdp(ji)    = log( zplcl(ji) / ppres(ji,jkm) ) /                     &
 
 2153                      log( ppres(ji,jk) / ppres(ji,jkm) )
 
 2154         zwork1(ji) = pthv(ji,jkm) + ( pthv(ji,jk) - pthv(ji,jkm) ) * zdp(ji) 
 
 2157         zwork2(ji) = pz(ji,jkm) + ( pz(ji,jk) - pz(ji,jkm) ) * zdp(ji)
 
 2160         zthvelcl(:) = zwork1(:) 
 
 2161         zzlcl(:)    = zwork2(:)
 
 2177         zwork1(ji) =  ( pw(ji,jk)  +  pw(ji,jkdl)*zzlcl(ji)/pz(ji,jkdl) ) * .5 &  
 
 2178                            * sqrt( pdxdy(ji) / 
xa25 )
 
 2182         zwork2(:) = sign( 1., zwork1(:) ) 
 
 2183         zwork1(:) = 
xwtrig * zwork2(:) * abs( zwork1(:) ) ** 0.333       &
 
 2184                            * ( 
xp00 / zplcl(:) ) ** zrdocp
 
 2191         zwork3(ji) = 
xg * zwork1(ji) * ( zzlcl(ji) - pz(ji,jkdl) )       &
 
 2192                        / ( pthv(ji,jkdl) + zthvelcl(ji) )
 
 2195        zwlcl(:)  = 1. + .5 * zwork2(:) * sqrt( abs( zwork3(:) ) ) 
 
 2196        gtrig(:)  = zthvlcl(:) - zthvelcl(:) + zwork1(:) > 0. .AND.       &
 
 2206      ztheul(:) = ztlcl(:) * ( zthlcl(:) / ztlcl(:) )                       &
 
 2207                                              ** ( 1. - 0.28 * zrvlcl(:) )  &
 
 2208                           * exp( ( 3374.6525 / ztlcl(:) - 2.5403 ) *       &
 
 2209                                zrvlcl(:) * ( 1. + 0.81 * zrvlcl(:) ) )
 
 2214      jkm = minval( ilcl(:) )
 
 2218            zwork1(ji) = ( 2. * ztheul(ji) /                                &
 
 2219             ( pthes(ji,jk) + pthes(ji,jl) ) - 1. ) * ( pz(ji,jk) - pz(ji,jl) )
 
 2220            IF ( jl < ilcl(ji) ) zwork1(ji) = 0.
 
 2221            zcape(ji)  = zcape(ji) + zwork1(ji)
 
 2222            zcap(ji,jkk) = zcap(ji,jkk) + 
xg * max( 0., zwork1(ji) ) 
 
 2223            zwork2(ji) = 
xnhgam * 
xg * zcape(ji) + 1.05 * zwlcl(ji) * zwlcl(ji)
 
 2225            zwork2(ji) = sign( 1., zwork2(ji) )
 
 2226            zwork3(ji) = zwork3(ji) + min(0., zwork2(ji) )
 
 2227            zwork3(ji) = max( -1., zwork3(ji) )
 
 2231            ztop(ji)   = pz(ji,jl) * .5 * ( 1. + zwork2(ji) ) * ( 1. + zwork3(ji) ) + &
 
 2232                         ztop(ji) * .5 * ( 1. - zwork2(ji) )
 
 2237      WHERE( ztop(:) - zzlcl(:) .GE. 
xcdepth  .AND. gtrig(:) .AND. gtrig2(:) )
 
 2240         pthlcl(:)   = zthlcl(:)    
 
 2241         prvlcl(:)   = zrvlcl(:)
 
 2245         pthvelcl(:) = zthvelcl(:)
 
 2254        pcape(ji) = maxval( zcap(ji,:) ) 
 
 2261                                                                   kice, ppres, pdpres, pz, pthl, pthv, pthes, prw, &
 
 2262                                   pthlcl, ptlcl, prvlcl, pwlcl, pzlcl, pthvelcl,   &
 
 2263                                   pmflcl, otrig, klcl, kdpl, kpbl,                 &
 
 2264                                   pumf, puer, pudr, puthl, puthv, purw,            &
 
 2265                                   purc, puri, purr, purs, pupr,                    &
 
 2266                                   putpr, pcape, kctl, ketl )
 
 2345 INTEGER, 
INTENT(IN)                    :: KLON  
 
 2346 INTEGER, 
INTENT(IN)                    :: KLEV  
 
 2347 INTEGER, 
INTENT(IN)                    :: KICE  
 
 2349 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(IN) :: PTHL  
 
 2350 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(IN) :: PTHV  
 
 2351 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(IN) :: PTHES 
 
 2352 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(IN) :: PRW   
 
 2354 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(IN) :: PPRES 
 
 2355 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(IN) :: PDPRES
 
 2357 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(IN) :: PZ    
 
 2358 REAL, 
DIMENSION(KLON),     
INTENT(IN) :: PTHLCL 
 
 2359 REAL, 
DIMENSION(KLON),     
INTENT(IN) :: PTLCL  
 
 2360 REAL, 
DIMENSION(KLON),     
INTENT(IN) :: PRVLCL 
 
 2361 REAL, 
DIMENSION(KLON),     
INTENT(IN) :: PWLCL  
 
 2362 REAL, 
DIMENSION(KLON),     
INTENT(IN) :: PMFLCL 
 
 2364 REAL, 
DIMENSION(KLON),     
INTENT(IN) :: PZLCL  
 
 2365 REAL, 
DIMENSION(KLON),     
INTENT(IN) :: PTHVELCL  
 
 2366 LOGICAL, 
DIMENSION(KLON),  
INTENT(INOUT):: OTRIG
 
 2367 INTEGER, 
DIMENSION(KLON),  
INTENT(IN) :: KLCL   
 
 2368 INTEGER, 
DIMENSION(KLON),  
INTENT(IN) :: KDPL   
 
 2369 INTEGER, 
DIMENSION(KLON),  
INTENT(IN) :: KPBL   
 
 2372 INTEGER, 
DIMENSION(KLON),  
INTENT(OUT):: KCTL   
 
 2373 INTEGER, 
DIMENSION(KLON),  
INTENT(OUT):: KETL   
 
 2375 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(OUT):: PUMF  
 
 2376 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(OUT):: PUER  
 
 2377 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(OUT):: PUDR  
 
 2378 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(OUT):: PUTHL 
 
 2379 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(OUT):: PUTHV 
 
 2380 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(OUT):: PURW  
 
 2381 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(OUT):: PURC  
 
 2382 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(OUT):: PURI  
 
 2383 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(OUT):: PURR  
 
 2385 REAL, 
DIMENSION(KLON,KLEV),   
INTENT(OUT)::PURS 
 
 2387 REAL, 
DIMENSION(KLON,KLEV),   
INTENT(OUT)::PUPR 
 
 2389 REAL, 
DIMENSION(KLON),     
INTENT(OUT):: PUTPR  
 
 2391 REAL, 
DIMENSION(KLON),     
INTENT(OUT):: PCAPE  
 
 2395 INTEGER :: IIE, IKB, IKE  
 
 2397 INTEGER :: JK, JKP, JKM, JK1, JK2, JKMIN  
 
 2398 REAL    :: ZEPSA, ZCVOCD  
 
 2399 REAL    :: ZCPORD, ZRDOCP 
 
 2401 REAL, 
DIMENSION(KLON)    :: ZUT             
 
 2402 REAL, 
DIMENSION(KLON)    :: ZUW1, ZUW2      
 
 2404 REAL, 
DIMENSION(KLON)    :: ZE1,ZE2,ZD1,ZD2 
 
 2406 REAL, 
DIMENSION(KLON)    :: ZMIXF           
 
 2407 REAL, 
DIMENSION(KLON)    :: ZCPH            
 
 2408 REAL, 
DIMENSION(KLON)    :: ZLV, ZLS        
 
 2409 REAL, 
DIMENSION(KLON)    :: ZURV            
 
 2410 REAL, 
DIMENSION(KLON)    :: ZPI             
 
 2411 REAL, 
DIMENSION(KLON)    :: ZTHEUL          
 
 2412 REAL, 
DIMENSION(KLON)    :: ZWORK1, ZWORK2, ZWORK3, ZWORK4, ZWORK5,   &
 
 2414 INTEGER, 
DIMENSION(KLON) :: IWORK           
 
 2415 LOGICAL, 
DIMENSION(KLON) :: GWORK1, GWORK2, GWORK4, GWORK5 
 
 2417 LOGICAL, 
DIMENSION(KLON,KLEV) :: GWORK6     
 
 2450 zuw1(:)    = pwlcl(:) * pwlcl(:)
 
 2473 ztheul(:) = ptlcl(:) * ( pthlcl(:) / ptlcl(:) ) ** ( 1. - 0.28 * prvlcl(:) )  &
 
 2474             * exp( ( 3374.6525 / ptlcl(:) - 2.5403 ) *                        &
 
 2475                                    prvlcl(:) * ( 1. + 0.81 * prvlcl(:) ) )
 
 2478 zwork1(:) = ( 
xcpd + prvlcl(:) * 
xcpv ) * ptlcl(:)                            &
 
 2479             + ( 1. + prvlcl(:) ) * 
xg * pzlcl(:)
 
 2485 jkp = maxval( klcl(:) )
 
 2486 jkm = minval( kdpl(:) )
 
 2489     IF ( jk >= kdpl(ji) .AND. jk < klcl(ji) ) 
THEN 
 2490         pumf(ji,jk)  = pmflcl(ji)
 
 2491         puthl(ji,jk) = zwork1(ji) 
 
 2492         puthv(ji,jk) = pthlcl(ji) * ( 1. + zepsa * prvlcl(ji) ) /             &
 
 2494         purw(ji,jk)  = prvlcl(ji) 
 
 2503 jkmin = minval( klcl(:) - 1 )
 
 2504 DO jk = max( ikb + 1, jkmin ), ike - 1
 
 2508   gwork4(:) = jk >= klcl(:) - 1 
 
 2509   gwork1(:) = gwork4(:) .AND. gwork2(:) 
 
 2512   WHERE( jk == klcl(:) - 1 ) zwork6(:) = 0. 
 
 2519     zwork1(:) = purc(:,jk) + purr(:,jk)
 
 2520     zwork2(:) = puri(:,jk) + purs(:,jk)
 
 2521     CALL convect_condens( klon, kice, ppres(:,jkp), puthl(:,jk), purw(:,jk),&
 
 2522                           zwork1, zwork2, pz(:,jkp), gwork1, zut, zurv,     &
 
 2523                           purc(:,jkp), puri(:,jkp), zlv, zls, zcph )
 
 2526   zpi(:) = ( 
xp00 / ppres(:,jkp) ) ** zrdocp   
 
 2529     puthv(:,jkp) = zpi(:) * zut(:) * ( 1. + zepsa * zurv(:) )           &  
 
 2530                          / ( 1. + purw(:,jk) )     
 
 2537     zwork3(:) = pz(:,jkp) - pz(:,jk) * zwork6(:) -         &
 
 2538                      ( 1. - zwork6(:) ) * pzlcl(:)          
 
 2539     zwork4(:) = pthv(:,jk) * zwork6(:) +                   &
 
 2540                  ( 1. - zwork6(:) ) * pthvelcl(:)
 
 2541     zwork5(:) = 2. * zuw1(:) * puer(:,jk) / max( .1, pumf(:,jk) )
 
 2542     zuw2(:)   = zuw1(:) + zwork3(:) * 
xnhgam * 
xg *        & 
 
 2543                   ( ( puthv(:,jk) + puthv(:,jkp) ) /       &
 
 2544                   ( zwork4(:) + pthv(:,jkp) ) - 1. )       & 
 
 2553                        ( sqrt( max( 1.e-2, zuw2(:) ) ) +                   &
 
 2554                          sqrt( max( 1.e-2, zuw1(:) ) ) )          
 
 2555     purr(:,jkp) = 0.5 * ( purc(:,jk) + purc(:,jkp) + puri(:,jk) + puri(:,jkp) )&
 
 2556                       * ( 1. - exp( - 
xrconv  * zwork3(:) / zwork2(:) ) )
 
 2557     pupr(:,jkp) = purr(:,jkp) * pumf(:,jk) 
 
 2558     putpr(:)    = putpr(:) + pupr(:,jkp)   
 
 2559     zwork2(:)   = purr(:,jkp) / max( 1.e-8, purc(:,jkp) + puri(:,jkp) )
 
 2560     purr(:,jkp) = zwork2(:) * purc(:,jkp)          
 
 2561     purs(:,jkp) = zwork2(:) * puri(:,jkp)          
 
 2567     purw(:,jkp)  = purw(:,jk) - purr(:,jkp) - purs(:,jkp) 
 
 2568     purc(:,jkp)  = purc(:,jkp) - purr(:,jkp)
 
 2569     puri(:,jkp)  = puri(:,jkp) - purs(:,jkp)       
 
 2570     puthl(:,jkp) = ( 
xcpd + purw(:,jkp) * 
xcpv ) * zut(:)                     &
 
 2571                    + ( 1. + purw(:,jkp) ) * 
xg * pz(:,jkp)                    &
 
 2572                    - zlv(:) * purc(:,jkp) - zls(:) * puri(:,jkp)             
 
 2590     zwork1(:) = zmixf(:) * pthl(:,jkp)                                     &
 
 2591                      + ( 1. - zmixf(:) ) * puthl(:,jkp) 
 
 2592     zwork2(:) = zmixf(:) * prw(:,jkp)                                      &
 
 2593                      + ( 1. - zmixf(:) ) * purw(:,jkp)  
 
 2596                           purc(:,jkp), puri(:,jkp), pz(:,jkp), gwork1, zut,&
 
 2597                           zwork3, zwork4, zwork5, zlv, zls, zcph )
 
 2601     zwork3(:) = zut(:) * zpi(:) * ( 1. + zepsa * (                         &
 
 2602                 zwork2(:) - zwork4(:) - zwork5(:) ) ) / ( 1. + zwork2(:) )
 
 2605     zmixf(:) = max( 0., puthv(:,jkp) - pthv(:,jkp) ) * zmixf(:) /          &
 
 2606                               ( puthv(:,jkp) - zwork3(:) + 1.e-10 )
 
 2607     zmixf(:) = max( 0., min( 1., zmixf(:) ) )
 
 2620   zwork1(:) = 
xentr * 
xg / 
xcrad * pumf(:,jk) * ( pz(:,jkp) - pz(:,jk) )
 
 2624   WHERE ( gwork1(:) ) zwork2(:) = 1.
 
 2625   WHERE ( puthv(:,jkp) > pthv(:,jkp) )
 
 2628     puer(:,jkp) = 0.5 * zwork1(:) * ( ze1(:) + ze2(:) ) * zwork2(:)
 
 2629     pudr(:,jkp) = 0.5 * zwork1(:) * ( zd1(:) + zd2(:) ) * zwork2(:)
 
 2632     pudr(:,jkp) = zwork1(:) * zwork2(:)
 
 2638    WHERE ( puthv(:,jkp) > pthv(:,jkp) .AND. jk > klcl(:) + 1 &   
 
 2649   WHERE( gwork1(:) )                                                   &
 
 2650         gwork2(:) = pumf(:,jk) - pudr(:,jkp) > 10. .AND. zuw2(:) > 0.        
 
 2651   WHERE ( gwork2(:) ) kctl(:) = jkp   
 
 2652   gwork1(:) = gwork2(:) .AND. gwork4(:)
 
 2654   IF ( count( gwork2(:) ) == 0 ) 
EXIT            
 2664     zwork3(:)   = pz(:,jkp) - pz(:,jk) * zwork6(:) -                      &
 
 2665                   ( 1. - zwork6(:) ) *  pzlcl(:)              
 
 2666     zwork2(:)   = pthes(:,jk) + ( 1. - zwork6(:) ) *                      &
 
 2667      ( pthes(:,jkp) - pthes(:,jk) ) / ( pz(:,jkp) - pz(:,jk) ) *          &
 
 2668      ( pzlcl(:) - pz(:,jk) ) 
 
 2671     zwork1(:) = ( 2. * ztheul(:) ) / ( zwork2(:) + pthes(:,jkp) ) - 1.   
 
 2672     pcape(:)  = pcape(:) + 
xg * zwork3(:) * max( 0., zwork1(:) )
 
 2679     pumf(:,jkp)  = pumf(:,jk) - pudr(:,jkp) + puer(:,jkp) 
 
 2680     pumf(:,jkp)  = max( pumf(:,jkp), 0.1 )
 
 2681     puthl(:,jkp) = ( pumf(:,jk) * puthl(:,jk) +                              &
 
 2682                      puer(:,jkp) * pthl(:,jk) - pudr(:,jkp) * puthl(:,jk) )  &
 
 2683                     / pumf(:,jkp) + puthl(:,jkp) - puthl(:,jk)
 
 2684     purw(:,jkp)  = ( pumf(:,jk) * purw(:,jk) +                               &
 
 2685                      puer(:,jkp) * prw(:,jk) - pudr(:,jkp) * purw(:,jk) )    &
 
 2686                     / pumf(:,jkp) - purr(:,jkp) - purs(:,jkp)
 
 2701           otrig(ji) = pz(ji,jk) - pzlcl(ji) >= 
xcdepth               &
 
 2702                      .AND. pcape(ji) > 1. 
 
 2704     WHERE( .NOT. otrig(:) )
 
 2707 ketl(:) = max( ketl(:), klcl(:) + 2 )
 
 2708 ketl(:) = min( ketl(:), kctl(:) )
 
 2716 WHERE ( ketl(:) == kctl(:) ) zwork1(:) = 1.
 
 2720     pudr(ji,jk)   = pudr(ji,jk) +                                    &
 
 2721                           ( pumf(ji,jk) - puer(ji,jk) )  * zwork1(ji)  
 
 2722     puer(ji,jk)   = puer(ji,jk) * ( 1. - zwork1(ji) )
 
 2723     pumf(ji,jk)   = pumf(ji,jk) * ( 1. - zwork1(ji) )
 
 2735 jk1 = minval( ketl(:) )
 
 2736 jk2 = maxval( kctl(:) )
 
 2739     IF( jk > ketl(ji) .AND. jk <= kctl(ji) ) 
THEN 
 2740         zwork1(ji) = zwork1(ji) + pdpres(ji,jk)
 
 2747     zwork1(ji) = pumf(ji,jk) / max( 1., zwork1(ji) )
 
 2750 DO jk = jk1 + 1, jk2
 
 2753     IF ( jk > ketl(ji) .AND. jk <= kctl(ji) ) 
THEN 
 2755         putpr(ji)    = putpr(ji) - pupr(ji,jk)
 
 2756         pudr(ji,jk)  = pdpres(ji,jk) * zwork1(ji)
 
 2757         pumf(ji,jk)  = pumf(ji,jkp) - pudr(ji,jk)
 
 2758         pupr(ji,jk)  = pumf(ji,jkp) * ( purr(ji,jk) + purs(ji,jk) )
 
 2759         putpr(ji)    = putpr(ji) + pupr(ji,jk)
 
 2774      zwork2(ji) = ppres(ji,jk) - ppres(ji,jkp) + pdpres(ji,jk)
 
 2777 jkp = maxval( iwork(:) )
 
 2780    IF ( jk >= kdpl(ji)  .AND. jk <= iwork(ji) ) 
THEN 
 2781        puer(ji,jk) = puer(ji,jk) + pmflcl(ji) * pdpres(ji,jk) / ( zwork2(ji) + 0.1 )
 
 2782        pumf(ji,jk) = pumf(ji,jk-1) + puer(ji,jk)
 
 2796 gwork6(:,:) = spread( otrig(:), dim=2, ncopies=klev )
 
 2797 WHERE ( .NOT. otrig(:) ) putpr(:) = 0.
 
 2798 WHERE ( .NOT. gwork6(:,:) )
 
 2802     puthl(:,:) = pthl(:,:)
 
 2803     purw(:,:)  = prw(:,:)
 
 2814                                   kice, ppres, pthl, prw, prco, prio, pz, owork1, &
 
 2815                                   pt, pew, prc, pri, plv, pls, pcph   )
 
 2883 INTEGER, 
INTENT(IN)                :: KLON    
 
 2884 INTEGER, 
INTENT(IN)                :: KICE    
 
 2886 REAL, 
DIMENSION(KLON),   
INTENT(IN) :: PPRES  
 
 2887 REAL, 
DIMENSION(KLON),   
INTENT(IN) :: PTHL   
 
 2888 REAL, 
DIMENSION(KLON),   
INTENT(IN) :: PRW    
 
 2889 REAL, 
DIMENSION(KLON),   
INTENT(IN) :: PRCO   
 
 2890 REAL, 
DIMENSION(KLON),   
INTENT(IN) :: PRIO   
 
 2891 REAL, 
DIMENSION(KLON),   
INTENT(IN) :: PZ     
 
 2892 LOGICAL, 
DIMENSION(KLON),
INTENT(IN) :: OWORK1 
 
 2895 REAL, 
DIMENSION(KLON),   
INTENT(OUT):: PT     
 
 2896 REAL, 
DIMENSION(KLON),   
INTENT(OUT):: PRC    
 
 2897 REAL, 
DIMENSION(KLON),   
INTENT(OUT):: PRI    
 
 2898 REAL, 
DIMENSION(KLON),   
INTENT(OUT):: PLV    
 
 2899 REAL, 
DIMENSION(KLON),   
INTENT(OUT):: PLS    
 
 2900 REAL, 
DIMENSION(KLON),   
INTENT(OUT):: PCPH   
 
 2901 REAL, 
DIMENSION(KLON),   
INTENT(OUT):: PEW    
 
 2910 REAL, 
DIMENSION(KLON)    :: ZEI           
 
 2911 REAL, 
DIMENSION(KLON)    :: ZWORK1, ZWORK2, ZWORK3, ZT 
 
 2931      zwork1(:) = ( 1. + prw(:) ) * 
xg * pz(:)
 
 2932      pt(:)     = ( pthl(:) + prco(:) * 
xlvtt + prio(:) * 
xlstt - zwork1(:) )   &
 
 2934      pt(:)     = max(180., min( 330., pt(:) ) ) 
 
 2944      pew(:) = zeps * pew(:) / ( ppres(:) - pew(:) )
 
 2945      zei(:) = zeps * zei(:) / ( ppres(:) - zei(:) )    
 
 2951      zwork2(:) = max( 0., min(1., zwork2(:) ) ) 
 
 2952      zwork2(:) = zwork2(:) * zwork2(:)
 
 2953      IF ( kice == 0 ) zwork2(:) = 1.
 
 2954      zwork3(:) = ( 1. - zwork2(:) ) * zei(:) + zwork2(:) * pew(:)
 
 2955      prc(:)    = max( 0., zwork2(:) * ( prw(:) - zwork3(:) ) )
 
 2956      pri(:)    = max( 0., ( 1. - zwork2(:) ) * ( prw(:) - zwork3(:) ) )
 
 2957      zt(:)     = ( pthl(:) + prc(:) * plv(:) + pri(:) * pls(:) - zwork1(:) )   &
 
 2959      pt(:) = pt(:) + ( zt(:) - pt(:) ) * 0.4  
 
 2960      pt(:) = max( 175., min( 330., pt(:) ) )
 
 2967                                       ppres, 
pt, pew, plv, pls, pcph )      
 
 3025 INTEGER,                
INTENT(IN) :: KLON    
 
 3026 REAL, 
DIMENSION(KLON),  
INTENT(IN) :: PPRES   
 
 3027 REAL, 
DIMENSION(KLON),  
INTENT(IN) :: PT      
 
 3029 REAL, 
DIMENSION(KLON),  
INTENT(OUT):: PEW     
 
 3030 REAL, 
DIMENSION(KLON),  
INTENT(OUT):: PLV     
 
 3031 REAL, 
DIMENSION(KLON),  
INTENT(OUT):: PLS     
 
 3032 REAL, 
DIMENSION(KLON),  
INTENT(OUT):: PCPH    
 
 3036 REAL, 
DIMENSION(KLON)              :: ZT      
 
 3044     zt(:)     = min( 400., max( pt(:), 10. ) ) 
 
 3046     pew(:)    = zeps * pew(:) / ( ppres(:) - pew(:) )
 
 3056                                        pmixc, kmf, per, pdr ) 
 
 3111 INTEGER,               
INTENT(IN) :: KLON   
 
 3112 INTEGER,               
INTENT(IN) :: KMF    
 
 3113 REAL, 
DIMENSION(KLON), 
INTENT(IN) :: PMIXC  
 
 3115 REAL, 
DIMENSION(KLON), 
INTENT(OUT):: PER    
 
 3116 REAL, 
DIMENSION(KLON), 
INTENT(OUT):: PDR    
 
 3120 REAL    :: ZSIGMA = 0.166666667                   
 
 3121 REAL    :: ZFE    = 4.931813949                   
 
 3122 REAL    :: ZSQRTP = 2.506628,  zp  = 0.33267      
 
 3123 REAL    :: ZA1    = 0.4361836, za2 =-0.1201676    
 
 3124 REAL    :: ZA3    = 0.9372980, zt1 = 0.500498     
 
 3125 REAL    :: ZE45   = 0.01111                       
 
 3127 REAL, 
DIMENSION(KLON) :: ZX, ZY, ZW1, ZW2         
 
 3138       zx(:)  = 6. * pmixc(:) - 3.
 
 3139       zw1(:) = 1. / ( 1.+ zp * abs( zx(:) ) )
 
 3140       zy(:)  = exp( -0.5 * zx(:) * zx(:) )
 
 3141       zw2(:) = za1 * zw1(:) + za2 * zw1(:) * zw1(:) +                   &
 
 3142                za3 * zw1(:) * zw1(:) * zw1(:)
 
 3143       zw11   = za1 * zt1 + za2 * zt1 * zt1 + za3 * zt1 * zt1 * zt1
 
 3146 WHERE ( kmf == 1 .AND. zx(:) >= 0. )
 
 3147                 per(:) = zsigma * ( 0.5 * ( zsqrtp - ze45 * zw11                 &
 
 3148                                  - zy(:) * zw2(:) ) + zsigma * ( ze45 - zy(:) ) )        &
 
 3149                                  - 0.5 * ze45 * pmixc(:) * pmixc(:)
 
 3150                 pdr(:) = zsigma*( 0.5 * ( zy(:) * zw2(:) - ze45 * zw11   )       &
 
 3151                                  + zsigma * ( ze45 - zy(:) ) )                           &
 
 3152                                  - ze45 * ( 0.5 + 0.5 * pmixc(:) * pmixc(:) - pmixc(:) )
 
 3154 WHERE ( kmf == 1 .AND. zx(:) < 0. ) 
 
 3155                 per(:) = zsigma*( 0.5 * ( zy(:) * zw2(:) - ze45 * zw11   )       &
 
 3156                                  + zsigma * ( ze45 - zy(:) ) )                           &
 
 3157                                  - 0.5 * ze45 * pmixc(:) * pmixc(:)
 
 3158                 pdr(:) = zsigma * ( 0.5 * ( zsqrtp - ze45 * zw11 - zy(:)         &
 
 3159                                  * zw2(:) ) + zsigma * ( ze45 - zy(:) ) )                &
 
 3160                                  - ze45 * ( 0.5 + 0.5 * pmixc(:) * pmixc(:) - pmixc(:) )
 
 3163       per(:) = per(:) * zfe
 
 3164       pdr(:) = pdr(:) * zfe
 
 3176                                                                      pu, pv, ppres, pz, pdxdy, klcl, kctl, &
 
 3234 INTEGER, 
INTENT(IN)                    :: KLON   
 
 3235 INTEGER, 
INTENT(IN)                    :: KLEV   
 
 3236 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(IN) :: PPRES  
 
 3237 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(IN) :: PU     
 
 3238 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(IN) :: PV     
 
 3239 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(IN) :: PZ     
 
 3240 REAL, 
DIMENSION(KLON),      
INTENT(IN) :: PDXDY  
 
 3241 INTEGER, 
DIMENSION(KLON),   
INTENT(IN) :: KLCL   
 
 3242 INTEGER, 
DIMENSION(KLON),   
INTENT(IN) :: KCTL   
 
 3244 REAL, 
DIMENSION(KLON),      
INTENT(OUT):: PTIMEA 
 
 3245 REAL, 
DIMENSION(KLON),      
INTENT(OUT):: PPREF  
 
 3250 INTEGER :: IIE, IKB, IKE                      
 
 3252 INTEGER :: JK, JKLC, JKP5, JKCT               
 
 3254 INTEGER, 
DIMENSION(KLON)  :: IP500       
 
 3255 REAL, 
DIMENSION(KLON)     :: ZCBH        
 
 3256 REAL, 
DIMENSION(KLON)     :: ZWORK1, ZWORK2, ZWORK3  
 
 3275     WHERE ( ppres(:,jk) >= 500.e2 ) ip500(:) = jk
 
 3288    zwork1(ji) = sqrt( pu(ji,jklc) * pu(ji,jklc) +           &
 
 3289                                       pv(ji,jklc) * pv(ji,jklc)  ) 
 
 3290    zwork2(ji) = sqrt( pu(ji,jkp5) * pu(ji,jkp5) +           &
 
 3291                                       pv(ji,jkp5) * pv(ji,jkp5)  ) 
 
 3292    zwork3(ji) = sqrt( pu(ji,jkct) * pu(ji,jkct) +           &
 
 3293                                       pv(ji,jkct) * pv(ji,jkct)  ) 
 
 3296 zwork2(:) = max( 0.1, 0.5 * ( zwork1(:) + zwork2(:) ) )
 
 3298 ptimea(:) = sqrt( pdxdy(:) ) / zwork2(:) 
 
 3307 zwork2(:) = sign( 1., zwork3(:) - zwork1(:) )
 
 3311     zwork1(ji) = ( pu(ji,jkct) - pu(ji,jklc) )  *          &
 
 3312                  ( pu(ji,jkct) - pu(ji,jklc) )  +          &
 
 3313                  ( pv(ji,jkct) - pv(ji,jklc) )  *          &
 
 3314                  ( pv(ji,jkct) - pv(ji,jklc) )  
 
 3315     zwork1(ji) = 1.e3 * zwork2(ji) * sqrt( zwork1(ji) ) /  &
 
 3316                          max( 1.e-2, pz(ji,jkct) - pz(ji,jklc) )
 
 3319 ppref(:)  = 1.591 + zwork1(:) * ( -.639 + zwork1(:) * (        &
 
 3320                                                                 9.53e-2 - zwork1(:) * 4.96e-3 ) ) 
 
 3321 ppref(:)  = max( .4, min( ppref(:), .92 ) )
 
 3328    zcbh(ji)   = max( 3., ( pz(ji,jklc) - pz(ji,ikb) ) * 3.281e-3 ) 
 
 3330 zwork1(:) = .9673 + zcbh(:) * ( -.7003 + zcbh(:) * ( .1622 + &
 
 3331                       zcbh(:) *  ( -1.2570e-2 + zcbh(:) * ( 4.2772e-4 -  &
 
 3332               zcbh(:) * 5.44e-6 ) ) ) )
 
 3333 zwork1(:) = max( .4, min( .92, 1./ ( 1. + zwork1(:) ) ) )
 
 3338 ppref(:) = 0.5 * ( ppref(:) + zwork1(:) )
 
 3344                                    kice, ppres, pdpres, pz, 
pth, pthes,       &
 
 3346                                    ppref, klcl, kctl, ketl,                   &
 
 3347                                    puthl, purw, purc, puri,                   &
 
 3348                                    pdmf, pder, pddr, pdthl, pdrw,             &
 
 3349                                    pmixf, pdtevr, klfs, kdbl, kml,            &
 
 3425 INTEGER,                    
INTENT(IN) :: KLON  
 
 3426 INTEGER,                    
INTENT(IN) :: KLEV  
 
 3427 INTEGER,                    
INTENT(IN) :: KICE  
 
 3429 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(IN) :: PTH   
 
 3430 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(IN) :: PTHES 
 
 3431 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(IN) :: PRW   
 
 3433 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(IN) :: PRC   
 
 3434 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(IN) :: PRI   
 
 3435 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(IN) :: PPRES 
 
 3436 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(IN) :: PDPRES
 
 3438 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(IN) :: PZ    
 
 3439 INTEGER, 
DIMENSION(KLON),   
INTENT(IN) :: KLCL  
 
 3440 INTEGER, 
DIMENSION(KLON),   
INTENT(IN) :: KCTL  
 
 3441 INTEGER, 
DIMENSION(KLON),   
INTENT(IN) :: KETL  
 
 3443 INTEGER, 
DIMENSION(KLON),   
INTENT(IN) :: KML   
 
 3444 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(IN) :: PUTHL 
 
 3445 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(IN) :: PURW  
 
 3446 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(IN) :: PURC  
 
 3447 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(IN) :: PURI  
 
 3448 REAL, 
DIMENSION(KLON),      
INTENT(IN) :: PPREF 
 
 3451 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(OUT):: PDMF   
 
 3452 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(OUT):: PDER   
 
 3453 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(OUT):: PDDR   
 
 3454 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(OUT):: PDTHL  
 
 3455 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(OUT):: PDRW   
 
 3456 REAL, 
DIMENSION(KLON),      
INTENT(OUT):: PMIXF  
 
 3457 REAL, 
DIMENSION(KLON),      
INTENT(OUT):: PDTEVR 
 
 3459 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(OUT):: PDTEVRF
 
 3460 INTEGER, 
DIMENSION(KLON),  
INTENT(OUT):: KLFS    
 
 3461 INTEGER, 
DIMENSION(KLON),  
INTENT(OUT):: KDBL    
 
 3465 INTEGER :: IIE, IKB, IKE     
 
 3466 INTEGER :: JK, JKP, JKM, JKT 
 
 3469 REAL    :: ZCPORD, ZRDOCP 
 
 3471 REAL    :: ZEPSA, ZCVOCD  
 
 3473 INTEGER, 
DIMENSION(KLON) :: IDDT      
 
 3474 REAL, 
DIMENSION(KLON)    :: ZTHE      
 
 3475 REAL, 
DIMENSION(KLON)    :: ZDT, ZDTP 
 
 3476 REAL, 
DIMENSION(KLON)    :: ZCPH      
 
 3477 REAL, 
DIMENSION(KLON)    :: ZLV, ZLS  
 
 3478 REAL, 
DIMENSION(KLON)    :: ZDDT      
 
 3479 REAL, 
DIMENSION(KLON)    :: ZPI       
 
 3480 REAL, 
DIMENSION(KLON)    :: ZWORK1, ZWORK2, ZWORK3, ZWORK4,  &
 
 3482 LOGICAL, 
DIMENSION(KLON) :: GWORK1                         
 
 3511 zddt(:)    = pdpres(:,ikb+2)
 
 3514 iddt(:)    = kdbl(:) + 1
 
 3522 DO jk = minval( klcl(:) ) + 2, maxval( ketl(:) )
 
 3524       gwork1(ji) = jk >= klcl(ji) + 2 .AND. jk < ketl(ji)  
 
 3525       IF ( gwork1(ji) .AND. zwork1(ji) > pthes(ji,jk) ) 
THEN 
 3527          zwork1(ji) = min( zwork1(ji), pthes(ji,jk) )
 
 3539     zpi(ji)    = ( 
xp00 / ppres(ji,jk) ) ** zrdocp
 
 3541     zwork3(ji) = purw(ji,jk) - purc(ji,jk) - puri(ji,jk)
 
 3542     zdt(ji)    = pth(ji,jk) / zpi(ji) 
 
 3545     zcph(ji)   = 
xcpd + 
xcpv * purw(ji,jk)
 
 3546     zdt(ji)    = ( puthl(ji,jk) - ( 1. + purw(ji,jk) ) * 
xg * pz(ji,jk)       &
 
 3547                  + zlv(ji) * purc(ji,jk) + zls(ji) * puri(ji,jk) ) / zcph(ji)           
 
 3548     zwork1(ji) = zdt(ji) * zpi(ji) ** ( 1. - 0.28 * zwork3(ji) )              &
 
 3549                                   * exp( ( 3374.6525 / zdt(ji) - 2.5403 )     &
 
 3550                                   * zwork3(ji) * ( 1. + 0.81 * zwork3(ji) ) )
 
 3552     zdt(ji)    = pth(ji,jk) / zpi(ji)
 
 3555     zwork3(ji) = prw(ji,jk) - prc(ji,jk) - pri(ji,jk)
 
 3556     zcph(ji)   = 
xcpd + 
xcpv * prw(ji,jk)
 
 3557     zwork2(ji) = zdt(ji) * zpi(ji) ** ( 1. - 0.28 * zwork3(ji) )              &
 
 3558                                   * exp( ( 3374.6525 / zdt(ji) - 2.5403 )     &
 
 3559                                   * zwork3(ji) * ( 1. + 0.81 * zwork3(ji) ) )
 
 3561     pmixf(ji)  = max( 0., ( zwork1(ji) - pthes(ji,jk) ) )                   &
 
 3562                   / ( zwork1(ji) - zwork2(ji) + 1.e-10 )
 
 3563     pmixf(ji)  = max(0., min( 1., pmixf(ji) ) )
 
 3564     zwork4(ji) = ppres(ji,jk)
 
 3580      zwork1(ji) = 0.5 * ( purw(ji,jk) - purw(ji,jkp) )
 
 3585 WHERE( kml(:) > ikb + 2 )
 
 3586                   zwork3(:) = zwork1(:) * ( zls(:) - zlv(:) ) / zcph(:)
 
 3587                   zdt(:)    = zdt(:) - zwork3(:) * 
REAL(kice)
 
 3597      pdrw(ji,jk)  = pmixf(ji) * prw(ji,jk) + ( 1. - pmixf(ji) ) * purw(ji,jk)
 
 3598      zwork2(ji)   = pdrw(ji,jk) - ( 1. - pmixf(ji) )                          &
 
 3599                                      * ( purc(ji,jk) + puri(ji,jk) )
 
 3612     zwork1(:) = min( zwork2(:), zwork3(:) )
 
 3613     zwork3(:) = zwork3(:) * zwork4(:) / ( zwork3(:) + zeps ) 
 
 3614     zwork3(:) = log( zwork3(:) / 613.3 )
 
 3616     zwork3(:) = ( 4780.8 - 32.19 * zwork3(:) ) / ( 17.502 - zwork3(:) )
 
 3618     zwork3(:) = zwork3(:) - ( .212 + 1.571e-3 * ( zwork3(:) - 
xtt )          &
 
 3619                   - 4.36e-4 * ( zdt(:) - 
xtt ) ) * ( zdt(:) - zwork3(:) )
 
 3620     zwork4(:) = sign(0.5, zwork2(:) - zwork3(:) )
 
 3621     zdt(:)    = zdt(:) * ( .5 + zwork4(:) ) + ( .5 - zwork4(:) ) * zwork3(:) 
 
 3622     zwork2(:) = zdt(:) * zpi(:) ** ( 1. - 0.28 * zwork2(:) )                 &
 
 3623                                   * exp( ( 3374.6525 / zdt(:) - 2.5403 )     &
 
 3624                                   * zwork1(:) * ( 1. + 0.81 * zwork1(:) ) )
 
 3627 jkm = maxval( klfs(:) )
 
 3628 DO jk = jkm - 1, ikb + 1, -1
 
 3630      IF ( jk < klfs(ji) .AND. zwork2(ji) > pthes(ji,jk) .AND. gwork1(ji) ) 
THEN 
 3632           gwork1(ji) = .
false.
 
 3643      zwork1(ji)  = ppres(ji,jk) /                                            &
 
 3644                    ( 
xrd * zdt(ji) * ( 1. + zeps * zwork1(ji) ) ) 
 
 3645      pdmf(ji,jk) = - ( 1. - ppref(ji) ) * zwork1(ji) * 
xpi * 
xcrad * 
xcrad 
 3646      pdthl(ji,jk)= zwork2(ji)   
 
 3647      zwork2(ji)  = pdmf(ji,jk)
 
 3649      pder(ji,jk) = - pmixf(ji) * pdmf(ji,jk)
 
 3658 DO jk = ikb + 2, jkm
 
 3659       zwork1(:) = zwork1(:) + pdpres(:,jk)
 
 3660       WHERE ( jk > kdbl(:) .AND. zwork1(:) <= 
xzpbl )
 
 3679 DO jk =  jkm - 1, ikb + 1, -1
 
 3682     IF ( jk < klfs(ji) .AND. jk >= iddt(ji) )  
THEN 
 3683       pder(ji,jk)  = - zwork2(ji) * 
xentr * pdpres(ji,jkp) / 
xcrad  
 3685       pdmf(ji,jk)  = pdmf(ji,jkp) - pder(ji,jk) 
 
 3686       zpi(ji)      = ( 
xp00 / ppres(ji,jk) ) ** zrdocp
 
 3687       zdt(ji)      = pth(ji,jk) / zpi(ji)
 
 3688       zwork1(ji)   = prw(ji,jk) - prc(ji,jk) - pri(ji,jk)
 
 3689       zthe(ji)     = zdt(ji) * zpi(ji) ** ( 1. - 0.28 * zwork1(ji) )           &
 
 3690                                * exp( ( 3374.6525 / zdt(ji) - 2.5403 )         &
 
 3691                                * zwork1(ji) * ( 1. + 0.81 * zwork1(ji) ) )
 
 3694       pdthl(ji,jk) = ( pdthl(ji,jkp) * pdmf(ji,jkp) - zthe(ji) * pder(ji,jk)    &
 
 3695                     ) / ( pdmf(ji,jk) - 1.e-7 )      
 
 3696       pdrw(ji,jk)  = ( pdrw(ji,jkp) * pdmf(ji,jkp) - prw(ji,jk) * pder(ji,jk)   &
 
 3697                     ) / ( pdmf(ji,jk) - 1.e-7 )       
 
 3699     IF ( jk < iddt(ji) .AND. jk >= kdbl(ji) )   
THEN 
 3701       pddr(ji,jk)  = - pdmf(ji,jl) * pdpres(ji,jkp) / zddt(ji) 
 
 3702       pdmf(ji,jk)  = pdmf(ji,jkp) + pddr(ji,jk) 
 
 3703       pdthl(ji,jk) = pdthl(ji,jkp)
 
 3704       pdrw(ji,jk)  = pdrw(ji,jkp)
 
 3716 jkt = maxval( iddt(:) )
 
 3717 DO jk = ikb + 1, jkt
 
 3719        zpi(:) = ( 
xp00 / ppres(:,jk) ) ** zrdocp
 
 3720        zdt(:) = pth(:,jk) / zpi(:)
 
 3729        zdtp(:) = pdthl(:,jk) / ( zpi(:) ** ( 1. - 0.28 * zwork1(:) )         &
 
 3730                       * exp( ( 3374.6525 / zdt(:) - 2.5403 )                 &
 
 3731                              * zwork1(:) * ( 1. + 0.81 * zwork1(:) ) ) )
 
 3732        zdt(:)  = 0.4 * zdtp(:) + 0.6 * zdt(:) 
 
 3740    zwork2(:) = zwork1(:) / zdt(:) * ( 
xbetaw / zdt(:) - 
xgamw ) 
 
 3741    zwork2(:) = zlv(:) / zcph(:) * zwork1(:) * ( 1. - 
xrhdbc ) /              &
 
 3742                     ( 1. + zlv(:) / zcph(:) * zwork2(:) ) 
 
 3743    zdt(:)    = zdt(:) + zwork2(:)
 
 3747    zwork3(:)    = zwork3(:) * 
xrhdbc 
 3748    zwork1(:)    = max( 0., zwork3(:) - pdrw(:,jk) ) 
 
 3749    pdtevr(:)    = pdtevr(:) + zwork1(:) * pddr(:,jk) 
 
 3750    pdtevrf(:,jk)= pdtevrf(:,jk) + zwork1(:) * pddr(:,jk) 
 
 3752    pdrw(:,jk)   = max( pdrw(:,jk), zwork3(:) ) 
 
 3753    pdthl(:,jk)  = ( ( 
xcpd + pdrw(:,jk) * 
xcpv ) * zdt(:)                    &
 
 3754                     + ( 1. + pdrw(:,jk) ) * 
xg * pz(:,jk) ) 
 
 3764 WHERE ( pdtevr(:) < 1. .OR. klfs(:) == ikb + 1 ) zwork2(:) = 0.
 
 3766       kdbl(:)     = kdbl(:) * int( zwork2(:) ) + ( 1 - int( zwork2(:) ) ) * ikb
 
 3767       klfs(:)     = klfs(:) * int( zwork2(:) ) + ( 1 - int( zwork2(:) ) ) * ikb
 
 3768       pdmf(:,jk)  = pdmf(:,jk)  * zwork2(:)
 
 3769       pder(:,jk)  = pder(:,jk)  * zwork2(:) 
 
 3770       pddr(:,jk)  = pddr(:,jk)  * zwork2(:) 
 
 3771       zwork1(:)   = 
REAL( KLFS(:) - JK )          
 3772       zwork1(:)   = max( 0.,min(1.,zwork1(:) ) ) 
 
 3773       pdthl(:,jk) = pdthl(:,jk) * zwork2(:) * zwork1(:)
 
 3774       pdrw(:,jk)  = pdrw(:,jk)  * zwork2(:) * zwork1(:)
 
 3775       pdtevr(:)   = pdtevr(:)   * zwork2(:)
 
 3776       pdtevrf(:,jk)= pdtevrf(:,jk) * zwork2(:)
 
 3782                                         ppres, pumf, puer, pudr,           &
 
 3783                                         pupr, putpr, purw,                 &
 
 3784                                         pdmf, pder, pddr, pdthl, pdrw,     &
 
 3785                                         ppref, ptpr, pmixf, pdtevr,        &
 
 3786                                         klfs, kdbl, klcl, kctl, ketl,      &
 
 3848 INTEGER,                    
INTENT(IN) :: KLON  
 
 3849 INTEGER,                    
INTENT(IN) :: KLEV  
 
 3850 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(IN) :: PPRES 
 
 3851 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(IN) :: PURW  
 
 3852 REAL, 
DIMENSION(KLON),      
INTENT(IN) :: PUTPR 
 
 3853 REAL, 
DIMENSION(KLON),      
INTENT(IN) :: PPREF 
 
 3854 REAL, 
DIMENSION(KLON),      
INTENT(IN) :: PMIXF 
 
 3855 INTEGER, 
DIMENSION(KLON),   
INTENT(IN) :: KLCL  
 
 3856 INTEGER, 
DIMENSION(KLON),   
INTENT(IN) :: KCTL  
 
 3857 INTEGER, 
DIMENSION(KLON),   
INTENT(IN) :: KETL  
 
 3859 INTEGER, 
DIMENSION(KLON),  
INTENT(INOUT) :: KLFS 
 
 3860 INTEGER, 
DIMENSION(KLON),  
INTENT(INOUT) :: KDBL 
 
 3862 REAL, 
DIMENSION(KLON),      
INTENT(INOUT) :: PDTEVR 
 
 3864 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(INOUT) :: PDTEVRF
 
 3865 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(INOUT) :: PUMF   
 
 3866 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(INOUT) :: PUER   
 
 3867 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(INOUT) :: PUDR   
 
 3868 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(INOUT) :: PUPR   
 
 3869 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(INOUT) :: PDMF   
 
 3870 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(INOUT) :: PDER   
 
 3871 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(INOUT) :: PDDR   
 
 3872 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(INOUT) :: PDTHL  
 
 3873 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(INOUT) :: PDRW   
 
 3875 REAL, 
DIMENSION(KLON),     
INTENT(OUT)   :: PTPR    
 
 3880 INTEGER :: IIE, IKB, IKE        
 
 3881 INTEGER :: JK, JKT1, JKT2, JKT3 
 
 3884 INTEGER, 
DIMENSION(KLON) :: IPRL
 
 3885 REAL, 
DIMENSION(KLON)    :: ZWORK1, ZWORK2, ZWORK3,     &
 
 3886                                                                     ZWORK4, ZWORK5, ZWORK6 
 
 3897 jkt1 = maxval( klfs(:) )
 
 3898 jkt2 = maxval( kctl(:) )
 
 3899 jkt3 = minval( klcl(:) )
 
 3909 WHERE ( pdtevr(:) == 0. )
 
 3913 IF ( count( pdtevr(:) > 0. ) == 0 ) 
RETURN  
 3928      zwork1(ji) = pdtevr(ji) / min( -1.e-1, pdmf(ji,jk) )
 
 3929      zwork6(ji) = pdmf(ji,jk)
 
 3942      zwork5(ji) = ppres(ji,jk)
 
 3947     WHERE ( jk >= klcl(:) .AND. ppres(:,jk) >= zwork5(:) - 
xusrdpth )
 
 3948                 ptpr(:) = ptpr(:) + pupr(:,jk)
 
 3952 iprl(:) = min( ketl(:), iprl(:) )
 
 3956      ptpr(ji) = pumf(ji,jk+1) * purw(ji,jk+1) + ptpr(ji) 
 
 3959 ptpr(:) = ppref(:) * min( putpr(:), ptpr(:) )
 
 3960 zwork4(:) = putpr(:) - ptpr(:) 
 
 3970      WHERE ( jk >= klcl(:) .AND. jk <= klfs(:) )
 
 3971                    zwork5(:) = zwork5(:) +  pupr(:,jk)
 
 3977      zwork2(ji) = ( 1. - ppref(ji) ) * zwork5(ji) *                     &
 
 3978                   ( 1. - pmixf(ji) ) / max( 1.e-1, pumf(ji,jk) )
 
 3990 zwork1(:) = zwork4(:) / ( zwork1(:) + zwork2(:) + 1.e-8 ) 
 
 3991 zwork2(:) = zwork1(:) / min( -1.e-1, zwork6(:) ) 
 
 3995 WHERE ( zwork1(:) > 0. .OR. pdtevr(:) < 1. ) 
 
 4005      pdmf(:,jk)  = pdmf(:,jk)  * zwork2(:)
 
 4006      pder(:,jk)  = pder(:,jk)  * zwork2(:)  
 
 4007      pddr(:,jk)  = pddr(:,jk)  * zwork2(:)  
 
 4008    pdtevrf(:,jk) = pdtevrf(:,jk)* zwork2(:)  
 
 4009      pdrw(:,jk)  = pdrw(:,jk)  * zwork3(:)  
 
 4010      pdthl(:,jk) = pdthl(:,jk) * zwork3(:)  
 
 4012 zwork4(:) = zwork2(:)
 
 4022     zwork2(ji) = ( 1. - zwork6(ji) ) + zwork6(ji) *                   &
 
 4023                                   ( pumf(ji,jk) - ( 1. - pmixf(ji) ) * zwork1(ji) ) / &
 
 4024                                   max( 1.e-1, pumf(ji,jk) )
 
 4028 jkt1  = maxval( klfs(:) )  
 
 4031       IF ( jk <= klfs(ji) ) 
THEN 
 4032                 pumf(ji,jk)  = pumf(ji,jk)  * zwork2(ji) 
 
 4033                 puer(ji,jk)  = puer(ji,jk)  * zwork2(ji)
 
 4034                 pudr(ji,jk)  = pudr(ji,jk)  * zwork2(ji)
 
 4035                 pupr(ji,jk)  = pupr(ji,jk)  * zwork2(ji)
 
 4044 WHERE ( pdtevr(:) > 0. )
 
 4045     pdtevr(:)  = pdtevr(:) * zwork4(:)
 
 4046     ptpr(:)    = ptpr(:) + ppref(:) * zwork5(:) * ( zwork2(:) - 1. )
 
 4055                                  ppres, pdpres, pz, pdxdy, plmass,           &
 
 4056                                  pthl, 
pth, prw, prc, pri, otrig1,           &
 
 4057                                  pthc, prwc, prcc, pric, pwsub,              &
 
 4058                                  klcl, kdpl, kpbl, klfs, kctl, kml,          &
 
 4059                                  pumf, puer, pudr, puthl, purw,              &
 
 4061                                  pdmf, pder, pddr, pdthl, pdrw,              &
 
 4062                                  ptpr, pspr, pdtevr,                         &
 
 4065                                  pdtevrf, pprlflx, pprsflx                   )
 
 4142 INTEGER,                   
INTENT(IN) :: KLON   
 
 4143 INTEGER,                   
INTENT(IN) :: KLEV   
 
 4144 INTEGER, 
DIMENSION(KLON),  
INTENT(IN) :: KLFS   
 
 4145 INTEGER, 
DIMENSION(KLON),  
INTENT(IN) :: KLCL   
 
 4146 INTEGER, 
DIMENSION(KLON),  
INTENT(IN) :: KCTL   
 
 4147 INTEGER, 
DIMENSION(KLON),  
INTENT(IN) :: KDPL   
 
 4148 INTEGER, 
DIMENSION(KLON),  
INTENT(IN) :: KPBL   
 
 4149 INTEGER, 
DIMENSION(KLON),  
INTENT(IN) :: KML    
 
 4150 REAL, 
DIMENSION(KLON),  
INTENT(INOUT) :: PTIMEC 
 
 4151 REAL, 
DIMENSION(KLON),     
INTENT(IN) :: PDXDY  
 
 4152 REAL, 
DIMENSION(KLON,KLEV),
INTENT(IN) :: PTHL   
 
 4153 REAL, 
DIMENSION(KLON,KLEV),
INTENT(IN) :: PTH    
 
 4154 REAL, 
DIMENSION(KLON,KLEV),
INTENT(IN) :: PRW    
 
 4156 REAL, 
DIMENSION(KLON,KLEV),
INTENT(IN) :: PRC    
 
 4157 REAL, 
DIMENSION(KLON,KLEV),
INTENT(IN) :: PRI    
 
 4158 LOGICAL, 
DIMENSION(KLON),  
INTENT(IN) :: OTRIG1 
 
 4162 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(IN) :: PPRES  
 
 4163 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(IN) :: PDPRES 
 
 4165 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(IN) :: PLMASS 
 
 4166 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(IN) :: PZ     
 
 4167 REAL, 
DIMENSION(KLON),     
INTENT(IN)  :: PCAPE  
 
 4168 INTEGER,                
INTENT(OUT)   :: KFTSTEPS
 
 4172 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(INOUT):: PUMF  
 
 4173 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(INOUT):: PUER  
 
 4174 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(INOUT):: PUDR  
 
 4175 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(INOUT):: PUPR  
 
 4177 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(IN)  :: PUTHL  
 
 4178 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(IN)  :: PURW   
 
 4179 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(IN)  :: PURC   
 
 4180 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(IN)  :: PURI   
 
 4182 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(INOUT):: PDMF  
 
 4183 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(INOUT):: PDER  
 
 4184 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(INOUT):: PDDR  
 
 4185 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(IN)   :: PDTHL 
 
 4186 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(IN)   :: PDRW  
 
 4187 REAL, 
DIMENSION(KLON),      
INTENT(INOUT):: PTPR  
 
 4188 REAL, 
DIMENSION(KLON),      
INTENT(OUT)  :: PSPR  
 
 4189 REAL, 
DIMENSION(KLON),      
INTENT(INOUT):: PDTEVR
 
 4191 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(OUT)  :: PTHC  
 
 4192 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(OUT)  :: PRWC  
 
 4193 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(OUT)  :: PRCC  
 
 4194 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(OUT)  :: PRIC  
 
 4195 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(OUT)  :: PWSUB 
 
 4197 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(INOUT):: PDTEVRF
 
 4198 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(OUT)  :: PPRLFLX
 
 4199 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(OUT)  :: PPRSFLX
 
 4203 INTEGER :: IIE, IKB, IKE  
 
 4205 INTEGER :: JK, JKP, JKMAX 
 
 4209 REAL    :: ZCPORD, ZRDOCP 
 
 4210 REAL    :: ZCVOCD, ZEPSA  
 
 4212 REAL, 
DIMENSION(KLON,KLEV) :: ZTHLC       
 
 4214 REAL, 
DIMENSION(KLON,KLEV) :: ZOMG        
 
 4215 REAL, 
DIMENSION(KLON,KLEV) :: ZUMF        
 
 4216 REAL, 
DIMENSION(KLON,KLEV) :: ZUER        
 
 4217 REAL, 
DIMENSION(KLON,KLEV) :: ZUDR        
 
 4218 REAL, 
DIMENSION(KLON,KLEV) :: ZDMF        
 
 4219 REAL, 
DIMENSION(KLON,KLEV) :: ZDER        
 
 4220 REAL, 
DIMENSION(KLON,KLEV) :: ZDDR        
 
 4221 REAL, 
DIMENSION(KLON)     :: ZTPR         
 
 4222 REAL, 
DIMENSION(KLON)     :: ZDTEVR       
 
 4223 REAL, 
DIMENSION(KLON,KLEV):: ZPRLFLX      
 
 4224 REAL, 
DIMENSION(KLON,KLEV):: ZPRSFLX      
 
 4225 REAL, 
DIMENSION(KLON)     :: ZPRMELT      
 
 4226 REAL, 
DIMENSION(KLON)     :: ZPRMELTO     
 
 4227 REAL, 
DIMENSION(KLON)     :: ZADJ         
 
 4228 REAL, 
DIMENSION(KLON)     :: ZADJMAX      
 
 4229 REAL, 
DIMENSION(KLON)     :: ZCAPE        
 
 4230 REAL, 
DIMENSION(KLON)     :: ZTIMEC       
 
 4231 REAL, 
DIMENSION(KLON,KLEV):: ZTIMC        
 
 4233 REAL, 
DIMENSION(KLON)     :: ZTHLCL       
 
 4234 REAL, 
DIMENSION(KLON)     :: ZRVLCL       
 
 4235 REAL, 
DIMENSION(KLON)     :: ZZLCL        
 
 4236 REAL, 
DIMENSION(KLON)     :: ZTLCL        
 
 4237 REAL, 
DIMENSION(KLON)     :: ZTELCL       
 
 4238 REAL, 
DIMENSION(KLON)     :: ZTHEUL       
 
 4239 REAL, 
DIMENSION(KLON)     :: ZTHES1, ZTHES2
 
 4240 REAL, 
DIMENSION(KLON,KLEV) :: ZTHMFIN, ZTHMFOUT, ZRWMFIN, ZRWMFOUT
 
 4241 REAL, 
DIMENSION(KLON,KLEV) :: ZRCMFIN, ZRCMFOUT, ZRIMFIN, ZRIMFOUT
 
 4243 REAL, 
DIMENSION(KLON)     :: ZPI          
 
 4244 REAL, 
DIMENSION(KLON)     :: ZLV          
 
 4245 REAL, 
DIMENSION(KLON)     :: ZLS          
 
 4246 REAL, 
DIMENSION(KLON)     :: ZLM          
 
 4247 REAL, 
DIMENSION(KLON)     :: ZCPH         
 
 4248 REAL, 
DIMENSION(KLON)     :: ZMELDPTH     
 
 4249 INTEGER, 
DIMENSION(KLON)  :: ITSTEP       
 
 4250 INTEGER, 
DIMENSION(KLON)  :: ICOUNT       
 
 4251 INTEGER, 
DIMENSION(KLON)  :: ILCL         
 
 4252 INTEGER, 
DIMENSION(KLON)  :: IWORK1       
 
 4253 REAL, 
DIMENSION(KLON)     :: ZWORK1, ZWORK2, ZWORK3, ZWORK4, ZWORK5
 
 4254 REAL, 
DIMENSION(KLON,KLEV):: ZWORK6
 
 4255 LOGICAL, 
DIMENSION(KLON)  :: GWORK1, GWORK3
 
 4256 LOGICAL, 
DIMENSION(KLON,KLEV) :: GWORK4    
 
 4275 gwork4(:,:) = .
false.  
 
 4285 WHERE( .NOT. otrig1(:) ) zwork5(:) = 0. 
 
 4295 jkmax  = maxval( kctl(:) )
 
 4301 zumf(:,:)  = pumf(:,:)
 
 4302 zuer(:,:)  = puer(:,:)
 
 4303 zudr(:,:)  = pudr(:,:)
 
 4304 zdmf(:,:)  = pdmf(:,:)
 
 4305 zder(:,:)  = pder(:,:)
 
 4306 zddr(:,:)  = pddr(:,:)
 
 4308 zdtevr(:)  = pdtevr(:)
 
 4327 DO jk = jkmax + 1, ikb + 1, -1
 
 4332      zwork2(ji)    = pupr(ji,jk) / ( purc(ji,jk) + puri(ji,jk) + 1.e-8 )
 
 4333      zprmelt(ji)   = zprmelt(ji) + puri(ji,jk) * zwork2(ji)
 
 4334      zwork1(ji)    = zwork1(ji) + purc(ji,jk) * zwork2(ji) - pdtevrf(ji,jk)
 
 4335      zprlflx(ji,jk)= max( 0., zwork1(ji) )
 
 4336      zprmelt(ji)   = zprmelt(ji) + min( 0., zwork1(ji) )
 
 4337      zprsflx(ji,jk)= zprmelt(ji) 
 
 4338      IF ( kml(ji) >= jk .AND. zmeldpth(ji) <= 
xmeldpth ) 
THEN                  
 4339           zpi(ji)    = ( ppres(ji,jk) / 
xp00 ) ** zrdocp 
 
 4340           zwork3(ji) = pth(ji,jk) * zpi(ji)            
 
 4343           zcph(ji)   = 
xcpd + 
xcpv * prw(ji,jk)
 
 4344           zmeldpth(ji) = zmeldpth(ji) + pdpres(ji,jk)
 
 4345           zwork6(ji,jk)= zlm(ji) * ptimec(ji) / plmass(ji,jk) * pdpres(ji,jk)
 
 4353 DO jk = jkmax, ikb + 1, -1
 
 4354     zwork1(:) = zprmelt(:) * pdpres(:,jk) / max( 
xmeldpth, zmeldpth(:) )
 
 4355     zwork2(:) = zwork2(:) + zwork1(:) * zomg(:,jk)
 
 4356     zprlflx(:,jk) = zprlflx(:,jk) + zwork2(:) 
 
 4357     zprsflx(:,jk) = zprsflx(:,jk) - zwork2(:)
 
 4359 WHERE( zprsflx(:,:) < 1. ) zprsflx(:,:)=0.
 
 4360 zprmelto(:) = zprmelt(:)
 
 4369 iwork1(:) = max( ilcl(:), klfs(:) )
 
 4370 jkp = minval( kdpl(:) )
 
 4373     IF( jk > kdpl(ji) .AND. jk <= iwork1(ji) ) 
THEN 
 4374         zwork1(ji)  = plmass(ji,jk) /                                      &
 
 4375                   ( ( puer(ji,jk) + pder(ji,jk) + 1.e-5 ) * ptimec(ji) )
 
 4376         zadjmax(ji) = min( zadjmax(ji), zwork1(ji) )
 
 4382 gwork1(:) = otrig1(:)  
 
 4386   zthlc(:,:) = pthl(:,:) 
 
 4387   prwc(:,:)  = prw(:,:)
 
 4388   prcc(:,:)  = prc(:,:)
 
 4389   pric(:,:)  = pri(:,:)
 
 4390   pthc(:,:)  = pth(:,:)
 
 4398      ztimec(:) = ptimec(:)
 
 4399      gwork4(:,:)   = spread( gwork1(:), dim=2, ncopies=iks )
 
 4400      WHERE( gwork4(:,:) ) pwsub(:,:) = 0.
 
 4403      DO jk = ikb + 1, jkmax
 
 4404            jkp = max( ikb + 1, jk - 1 )
 
 4405            WHERE ( gwork1(:) .AND. jk <= kctl(:) )
 
 4413              zwork1(:)   = - ( puer(:,jkp) + pder(:,jkp) -                   &
 
 4414                            pudr(:,jkp) - pddr(:,jkp) ) / plmass(:,jkp)
 
 4416              pwsub(:,jk) = pwsub(:,jkp) - pdpres(:,jk-1) * zwork1(:)
 
 4425              zwork1(:) = 
xstabt * pdpres(:,jkp) / ( abs( pwsub(:,jk) ) + 1.e-10 )
 
 4427              ztimec(:) = min( ztimec(:), zwork1(:) ) 
 
 4430              zomg(:,jk) = pwsub(:,jk) * pdxdy(:) / 
xg  
 4435      WHERE( gwork4(:,:) )
 
 4436            zthlc(:,:) = pthl(:,:) 
 
 4437            prwc(:,:)  = prw(:,:)  
 
 4438            prcc(:,:)  = prc(:,:)
 
 4439            pric(:,:)  = pri(:,:)
 
 4440            pthc(:,:)  = pth(:,:)
 
 4451        zwork1(ji) = pudr(ji,jk) * pdpres(ji,jk) / ( plmass(ji,jk) + .1 )    &
 
 4454     WHERE( gwork1(:) .AND. abs( zwork1(:) ) - .01 > 0. )
 
 4461         pwsub(:,jk) = pwsub(:,jk) * zwork5(:)
 
 4462         zprlflx(:,jk) = zprlflx(:,jk) * zwork5(:)
 
 4463         zprsflx(:,jk) = zprsflx(:,jk) * zwork5(:)
 
 4465     gwork4(:,1:ikb) = .
false.
 
 4466     gwork4(:,iks)   = .
false.
 
 4468     itstep(:) = int( ptimec(:) / ztimec(:) ) + 1 
 
 4469     ztimec(:) = ptimec(:) / 
REAL( ITSTEP(:) )  
 4471     ztimc(:,:)= spread( ztimec(:), dim=2, ncopies=iks )
 
 4476     kftsteps = maxval( itstep(:) )
 
 4477     DO jstep = 1, kftsteps 
 
 4479                  icount(:) = icount(:) + 1
 
 4481                      gwork3(:) =  itstep(:) >= icount(:) .AND. gwork1(:) 
 
 4497          DO jk = ikb + 1, jkmax
 
 4498          gwork4(:,jk) = gwork3(:) .AND. jk <= kctl(:)
 
 4499          jkp = max( ikb + 1, jk - 1 )
 
 4501            IF ( gwork3(ji) ) 
THEN 
 4503                zwork1(ji)       = sign( 1., zomg(ji,jk) )
 
 4504                zwork2(ji)       = 0.5 * ( 1. + zwork1(ji) )
 
 4505                zwork1(ji)       = 0.5 * ( 1. - zwork1(ji) )
 
 4506                zthmfin(ji,jk)   = - zomg(ji,jk) * zthlc(ji,jkp) * zwork1(ji)
 
 4507                zthmfout(ji,jk)  =   zomg(ji,jk) * zthlc(ji,jk)  * zwork2(ji)
 
 4508                zthmfin(ji,jkp)  = zthmfin(ji,jkp)  + zthmfout(ji,jk) * zwork2(ji)
 
 4509                zthmfout(ji,jkp) = zthmfout(ji,jkp) + zthmfin(ji,jk)  * zwork1(ji)
 
 4510                zrwmfin(ji,jk)   = - zomg(ji,jk) * prwc(ji,jkp) * zwork1(ji)
 
 4511                zrwmfout(ji,jk)  =   zomg(ji,jk) * prwc(ji,jk)  * zwork2(ji)
 
 4512                zrwmfin(ji,jkp)  = zrwmfin(ji,jkp)  + zrwmfout(ji,jk) * zwork2(ji)
 
 4513                zrwmfout(ji,jkp) = zrwmfout(ji,jkp) + zrwmfin(ji,jk)  * zwork1(ji)
 
 4514                zrcmfin(ji,jk)   = - zomg(ji,jk) * prcc(ji,jkp) * zwork1(ji)
 
 4515                zrcmfout(ji,jk)  =   zomg(ji,jk) * prcc(ji,jk)  * zwork2(ji)
 
 4516                zrcmfin(ji,jkp)  = zrcmfin(ji,jkp)  + zrcmfout(ji,jk) * zwork2(ji)
 
 4517                zrcmfout(ji,jkp) = zrcmfout(ji,jkp) + zrcmfin(ji,jk)  * zwork1(ji)
 
 4518                zrimfin(ji,jk)   = - zomg(ji,jk) * pric(ji,jkp) * zwork1(ji)
 
 4519                zrimfout(ji,jk)  =   zomg(ji,jk) * pric(ji,jk)  * zwork2(ji)
 
 4520                zrimfin(ji,jkp)  = zrimfin(ji,jkp)  + zrimfout(ji,jk) * zwork2(ji)
 
 4521                zrimfout(ji,jkp) = zrimfout(ji,jkp) + zrimfin(ji,jk)  * zwork1(ji)
 
 4527          WHERE ( gwork4(:,:) )
 
 4536            zthlc(:,:) = zthlc(:,:) + ztimc(:,:) / plmass(:,:) * (      &
 
 4537                           zthmfin(:,:) + pudr(:,:) * puthl(:,:)  +     &
 
 4538                           pddr(:,:) * pdthl(:,:) - zthmfout(:,:) -     &
 
 4539                         ( puer(:,:) + pder(:,:) ) * pthl(:,:)   )
 
 4540            prwc(:,:)  = prwc(:,:) + ztimc(:,:) / plmass(:,:) *  (      &
 
 4541                          zrwmfin(:,:) + pudr(:,:) * purw(:,:)  +       &
 
 4542                          pddr(:,:) * pdrw(:,:) - zrwmfout(:,:) -       &
 
 4543                         ( puer(:,:) + pder(:,:) ) * prw(:,:)    )    
 
 4544            prcc(:,:)  = prcc(:,:) + ztimc(:,:) / plmass(:,:) *  (      &
 
 4545                zrcmfin(:,:) + pudr(:,:) * purc(:,:) - zrcmfout(:,:) -  &
 
 4546                         ( puer(:,:) + pder(:,:) ) * prc(:,:)    )    
 
 4547            pric(:,:)  = pric(:,:) + ztimc(:,:) / plmass(:,:) *  (      &
 
 4548                zrimfin(:,:) + pudr(:,:) * puri(:,:) - zrimfout(:,:) -  & 
 
 4549                         ( puer(:,:) + pder(:,:) ) * pri(:,:)    )    
 
 4562       DO jk = jkmax, ikb + 1, -1
 
 4563             zthlc(:,jk) = zthlc(:,jk) -                                &
 
 4564                zprmelt(:) * zwork6(:,jk) / max( 
xmeldpth, zmeldpth(:) )
 
 4571       DO jk = ikb + 1, jkmax
 
 4573          IF( gwork1(ji) .AND. jk <= kctl(ji) ) 
THEN 
 4574            zpi(ji)    = ( 
xp00 / ppres(ji,jk) ) ** zrdocp
 
 4575            zcph(ji)   = 
xcpd + prwc(ji,jk) * 
xcpv 
 4576            zwork2(ji) = pth(ji,jk) / zpi(ji)  
 
 4580            zwork2(ji) = ( zthlc(ji,jk) + zlv(ji) * prcc(ji,jk) + zls(ji) * pric(ji,jk) &
 
 4581                        - (1. + prwc(ji,jk) ) * 
xg * pz(ji,jk) ) / zcph(ji)
 
 4582            zwork2(ji) = max( 180., min( 340., zwork2(ji) ) )
 
 4583            pthc(ji,jk)= zwork2(ji) * zpi(ji) 
 
 4595                                      ppres, pthc, prwc, pz, gwork1,        &
 
 4596                                      zthlcl, zrvlcl, zzlcl, ztlcl, ztelcl, &
 
 4600        ztlcl(:)  = max( 230., min( 335., ztlcl(:) ) )  
 
 4601        ztelcl(:) = max( 230., min( 335., ztelcl(:) ) )
 
 4602        zthlcl(:) = max( 230., min( 345., zthlcl(:) ) )
 
 4603        zrvlcl(:) = max(   0., min(   1., zrvlcl(:) ) )
 
 4610        zpi(:)    = zthlcl(:) / ztlcl(:)
 
 4611        zpi(:)    = max( 0.95, min( 1.5, zpi(:) ) )
 
 4612        zwork1(:) = 
xp00 / zpi(:) ** zcpord 
 
 4615        zwork3(:) = min(   .1, max(   0., zwork3(:) ) )
 
 4618        ztheul(:) = ztlcl(:) * zpi(:) ** ( 1. - 0.28 * zrvlcl(:) )            &
 
 4619                                   * exp( ( 3374.6525 / ztlcl(:) - 2.5403 )   &
 
 4620                                   * zrvlcl(:) * ( 1. + 0.81 * zrvlcl(:) ) )
 
 4623        zthes1(:) = ztelcl(:) * zpi(:) ** ( 1. - 0.28 * zwork3(:) )           &
 
 4624                                   * exp( ( 3374.6525 / ztelcl(:) - 2.5403 )  &
 
 4625                                   * zwork3(:) * ( 1. + 0.81 * zwork3(:) ) )
 
 4627       DO jk = minval( ilcl(:) ), jkmax
 
 4631           IF ( jk == ilcl(ji) ) zwork4(ji) = 0.
 
 4636           gwork3(ji)  = jk >= ilcl(ji) .AND. jk <= kctl(ji) .AND. gwork1(ji) 
 
 4638           zpi(ji)     = ( 
xp00 / ppres(ji,jk) ) ** zrdocp
 
 4639           zwork2(ji)  = pthc(ji,jk) / zpi(ji)
 
 4646           IF ( gwork3(ji) ) 
THEN 
 4647               zthes2(ji)  = zwork2(ji) * zpi(ji) ** ( 1. - 0.28 * zwork3(ji) )   &
 
 4648                                    * exp( ( 3374.6525 / zwork2(ji) - 2.5403 ) &
 
 4649                                    * zwork3(ji) * ( 1. + 0.81 * zwork3(ji) ) )
 
 4651               zwork3(ji)  = pz(ji,jk) - pz(ji,jkp) * zwork4(ji) -                &
 
 4652                            ( 1. - zwork4(ji) ) * zzlcl(ji)    
 
 4653               zwork1(ji)  = ( 2. * ztheul(ji) ) / ( zthes1(ji) + zthes2(ji) ) - 1.
 
 4654               zcape(ji)   = zcape(ji) + 
xg * zwork3(ji) * max( 0., zwork1(ji) )
 
 4655               zthes1(ji)  = zthes2(ji)
 
 4666            zwork1(:) = max( pcape(:) - zcape(:), 0.1 * pcape(:) )
 
 4667            zwork2(:) = zcape(:) / ( pcape(:) + 1.e-8 )
 
 4669            gwork1(:) = zwork2(:) > 0.1 .OR. zcape(:) == 0. 
 
 4672        WHERE ( zcape(:) == 0. .AND. gwork1(:) )  zadj(:) = zadj(:) * 0.5
 
 4673        WHERE ( zcape(:) /= 0. .AND. gwork1(:) )                              &
 
 4674                zadj(:) = zadj(:) * 
xstabc * pcape(:) / ( zwork1(:) + 1.e-8 )
 
 4675        zadj(:) = min( zadj(:), zadjmax(:) )  
 
 4683                                     pumf, zumf, puer, zuer, pudr, zudr,   &
 
 4684                                     pdmf, zdmf, pder, zder, pddr, zddr,   &
 
 4685                                     zprmelt, zprmelto, pdtevr, zdtevr,    &
 
 4687                                     pprlflx, zprlflx, pprsflx, zprsflx    )
 
 4690       IF ( count( gwork1(:) ) == 0 ) 
EXIT  
 4699   prwc(:,jk) = max( 0., prwc(:,jk) - prcc(:,jk) - pric(:,jk) )
 
 4703 pspr(:) = zprmelt(:) * ( 1. - zmeldpth(:) / 
xmeldpth )
 
 4704 pspr(:) = max( 0., pspr(:) )
 
 4710                                         pumf, pzumf, puer, pzuer, pudr, pzudr, &
 
 4711                                         pdmf, pzdmf, pder, pzder, pddr, pzddr, &
 
 4712                                         pprmelt, pzprmelt, pdtevr, pzdtevr,    &
 
 4714                                         pprlflx, pzprlfl, pprsflx, pzprsfl     )
 
 4772 INTEGER,                    
INTENT(IN) :: KLON     
 
 4773 INTEGER,                    
INTENT(IN) :: KLEV     
 
 4774 REAL, 
DIMENSION(KLON),      
INTENT(IN) :: PADJ     
 
 4777 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(INOUT) :: PUMF  
 
 4778 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(INOUT) :: PZUMF 
 
 4779 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(INOUT) :: PUER  
 
 4780 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(INOUT) :: PZUER 
 
 4781 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(INOUT) :: PUDR  
 
 4782 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(INOUT) :: PZUDR 
 
 4783 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(INOUT) :: PDMF  
 
 4784 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(INOUT) :: PZDMF 
 
 4785 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(INOUT) :: PDER  
 
 4786 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(INOUT) :: PZDER 
 
 4787 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(INOUT) :: PDDR  
 
 4788 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(INOUT) :: PZDDR 
 
 4789 REAL, 
DIMENSION(KLON),   
INTENT(INOUT):: PTPR     
 
 4790 REAL, 
DIMENSION(KLON),   
INTENT(INOUT):: PZTPR    
 
 4791 REAL, 
DIMENSION(KLON),   
INTENT(INOUT):: PDTEVR   
 
 4792 REAL, 
DIMENSION(KLON),   
INTENT(INOUT):: PZDTEVR  
 
 4793 REAL, 
DIMENSION(KLON),   
INTENT(INOUT):: PPRMELT  
 
 4794 REAL, 
DIMENSION(KLON),   
INTENT(INOUT):: PZPRMELT 
 
 4795 REAL, 
DIMENSION(KLON,KLEV),
INTENT(INOUT)  :: PPRLFLX
 
 4796 REAL, 
DIMENSION(KLON,KLEV),
INTENT(INOUT)  :: PZPRLFL
 
 4797 REAL, 
DIMENSION(KLON,KLEV),
INTENT(INOUT)  :: PPRSFLX
 
 4798 REAL, 
DIMENSION(KLON,KLEV),
INTENT(INOUT)  :: PZPRSFL
 
 4803 INTEGER :: IIE, IKB, IKE                 
 
 4821           pprmelt(:)  = pzprmelt(:)   * padj(:)
 
 4822           pdtevr(:)   = pzdtevr(:)    * padj(:)
 
 4823           ptpr(:)     = pztpr(:)      * padj(:)
 
 4825      DO jk = ikb + 1, ike
 
 4826                   pumf(:,jk)  = pzumf(:,jk)   * padj(:)
 
 4827           puer(:,jk)  = pzuer(:,jk)   * padj(:)
 
 4828           pudr(:,jk)  = pzudr(:,jk)   * padj(:)
 
 4829           pdmf(:,jk)  = pzdmf(:,jk)   * padj(:)
 
 4830           pder(:,jk)  = pzder(:,jk)   * padj(:)
 
 4831           pddr(:,jk)  = pzddr(:,jk)   * padj(:)
 
 4832           pprlflx(:,jk) = pzprlfl(:,jk) * padj(:)
 
 4833           pprsflx(:,jk) = pzprsfl(:,jk) * padj(:)
 
 4839                                           ppres, 
pth, prv, pz, owork1,        &
 
 4840                                          pthlcl, prvlcl, pzlcl, ptlcl, ptelcl,&
 
 4912 INTEGER,                    
INTENT(IN) :: KLON  
 
 4913 INTEGER,                    
INTENT(IN) :: KLEV  
 
 4914 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(IN) :: PTH   
 
 4915 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(IN) :: PRV   
 
 4916 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(IN) :: PPRES 
 
 4917 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(IN) :: PZ    
 
 4918 INTEGER, 
DIMENSION(KLON),   
INTENT(IN) :: KDPL  
 
 4919 INTEGER, 
DIMENSION(KLON),   
INTENT(IN) :: KPBL  
 
 4920 LOGICAL, 
DIMENSION(KLON),   
INTENT(IN) :: OWORK1
 
 4922 REAL, 
DIMENSION(KLON),     
INTENT(OUT):: PTHLCL 
 
 4923 REAL, 
DIMENSION(KLON),     
INTENT(OUT):: PRVLCL 
 
 4924 REAL, 
DIMENSION(KLON),     
INTENT(OUT):: PZLCL  
 
 4925 REAL, 
DIMENSION(KLON),     
INTENT(OUT):: PTLCL  
 
 4926 REAL, 
DIMENSION(KLON),     
INTENT(OUT):: PTELCL 
 
 4927 INTEGER, 
DIMENSION(KLON),  
INTENT(OUT):: KLCL   
 
 4931 INTEGER :: JK, JKM, JKMIN, JKMAX      
 
 4933 INTEGER :: IIE, IKB, IKE              
 
 4935 REAL    :: ZCPORD, ZRDOCP 
 
 4937 REAL, 
DIMENSION(KLON) :: ZPLCL    
 
 4938 REAL, 
DIMENSION(KLON) :: ZTMIX    
 
 4939 REAL, 
DIMENSION(KLON) :: ZEVMIX   
 
 4940 REAL, 
DIMENSION(KLON) :: ZDPTHMIX, ZPRESMIX 
 
 4941 REAL, 
DIMENSION(KLON) :: ZLV, ZCPH
 
 4942 REAL, 
DIMENSION(KLON) :: ZDP      
 
 4943 REAL, 
DIMENSION(KLON) :: ZWORK1, ZWORK2     
 
 4970 pzlcl(:)    = pz(:,ikb)
 
 4979      jkmax = maxval( kpbl(:) )
 
 4980      jkmin = minval( kdpl(:) )
 
 4981      DO jk = ikb + 1, jkmax
 
 4984         IF ( jk >= kdpl(ji) .AND. jk <= kpbl(ji) ) 
THEN 
 4986             zwork1(ji)   = ppres(ji,jk) - ppres(ji,jkm)
 
 4987             zdpthmix(ji) = zdpthmix(ji) + zwork1(ji)
 
 4988             zpresmix(ji) = zpresmix(ji) + ppres(ji,jk) * zwork1(ji)
 
 4989             pthlcl(ji)   = pthlcl(ji)   + pth(ji,jk)   * zwork1(ji)
 
 4990             prvlcl(ji)   = prvlcl(ji)   + prv(ji,jk)   * zwork1(ji)
 
 4999         zpresmix(:) = zpresmix(:) / zdpthmix(:)
 
 5000         pthlcl(:)   = pthlcl(:)   / zdpthmix(:)
 
 5001         prvlcl(:)   = prvlcl(:)   / zdpthmix(:)
 
 5010         ztmix(:)  = pthlcl(:) * ( zpresmix(:) / 
xp00 ) ** zrdocp
 
 5011         zevmix(:) = prvlcl(:) * zpresmix(:) / ( prvlcl(:) + zeps )
 
 5012         zevmix(:) = max( 1.e-8, zevmix(:) )
 
 5013         zwork1(:) = log( zevmix(:) / 613.3 )
 
 5015         zwork1(:) = ( 4780.8 - 32.19 * zwork1(:) ) / ( 17.502 - zwork1(:) ) 
 
 5017         ptlcl(:)  = zwork1(:) - ( .212 + 1.571e-3 * ( zwork1(:) - 
xtt )      &
 
 5018                   - 4.36e-4 * ( ztmix(:) - 
xtt ) ) * ( ztmix(:) - zwork1(:) )
 
 5019         ptlcl(:)  = min( ptlcl(:), ztmix(:) )
 
 5020         zplcl(:)  = 
xp00 * ( ptlcl(:) / pthlcl(:) ) ** zcpord
 
 5024      zplcl(:) = min( 2.e5, max( 10., zplcl(:) ) ) 
 
 5033         zwork2(:) = zwork1(:) / ptlcl(:) * ( 
xbetaw / ptlcl(:) - 
xgamw ) 
 
 5034         zwork2(:) = ( zwork1(:) - prvlcl(:) ) /                              &
 
 5035                         ( 1. + zlv(:) / zcph(:) * zwork2(:) ) 
 
 5036         ptlcl(:)  = ptlcl(:) - zlv(:) / zcph(:) * zwork2(:)
 
 5046      WHERE( owork1(:) .AND. prvlcl(:) > zwork1(:) )
 
 5047         zwork2(:) = zwork1(:) / ztmix(:) * ( 
xbetaw / ztmix(:) - 
xgamw ) 
 
 5048         zwork2(:) = ( zwork1(:) - prvlcl(:) ) /                              &
 
 5049                         ( 1. + zlv(:) / zcph(:) * zwork2(:) )
 
 5050         ptlcl(:)  = ztmix(:) + zlv(:) / zcph(:) * zwork2(:)
 
 5051         prvlcl(:) = prvlcl(:) - zwork2(:)
 
 5052         zplcl(:)  = zpresmix(:)
 
 5053         pthlcl(:) = ptlcl(:) * ( 
xp00 / zplcl(:) ) ** zrdocp
 
 5060      DO jk = jkmin, ike - 1
 
 5062         IF ( zplcl(ji) <= ppres(ji,jk) .AND. owork1(ji) ) 
THEN 
 5064             pzlcl(ji) = pz(ji,jk+1)
 
 5076         zdp(ji)     = log( zplcl(ji) / ppres(ji,jkm) ) /                     &
 
 5077                       log( ppres(ji,jk) / ppres(ji,jkm) )
 
 5078         zwork1(ji)  = pth(ji,jk)  * ( ppres(ji,jk) / 
xp00 ) ** zrdocp
 
 5079         zwork2(ji)  = pth(ji,jkm) * ( ppres(ji,jkm) / 
xp00 ) ** zrdocp
 
 5080         zwork1(ji)  = zwork2(ji) + ( zwork1(ji) - zwork2(ji) ) * zdp(ji) 
 
 5083         zwork2(ji) = pz(ji,jkm) + ( pz(ji,jk) - pz(ji,jkm) ) * zdp(ji)
 
 5086        ptelcl(:) = zwork1(:)
 
 5087        pzlcl(:)  = zwork2(:)
 
 5095                                          kdpl, kpbl, klcl, kctl, klfs, kdbl, &
 
 5096                                          pumf, puer, pudr, pdmf, pder, pddr, &
 
 5097                                          ptimec, pdxdy, pmixf, plmass, pwsub,&
 
 5149 INTEGER,                
INTENT(IN) :: KLON     
 
 5150 INTEGER,                
INTENT(IN) :: KLEV     
 
 5151 INTEGER,                
INTENT(IN) :: KCH      
 
 5153 REAL,
DIMENSION(KLON,KLEV,KCH),
INTENT(IN) :: PCH1 
 
 5154 REAL,
DIMENSION(KLON,KLEV,KCH),
INTENT(OUT):: PCH1C
 
 5156 INTEGER, 
DIMENSION(KLON), 
INTENT(IN) :: KDPL   
 
 5157 INTEGER, 
DIMENSION(KLON), 
INTENT(IN) :: KPBL   
 
 5158 INTEGER, 
DIMENSION(KLON), 
INTENT(IN) :: KLCL   
 
 5159 INTEGER, 
DIMENSION(KLON), 
INTENT(IN) :: KCTL   
 
 5160 INTEGER, 
DIMENSION(KLON), 
INTENT(IN) :: KLFS   
 
 5161 INTEGER, 
DIMENSION(KLON), 
INTENT(IN) :: KDBL   
 
 5163 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(IN) :: PUMF 
 
 5164 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(IN) :: PUER 
 
 5165 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(IN) :: PUDR 
 
 5166 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(IN) :: PDMF 
 
 5167 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(IN) :: PDER 
 
 5168 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(IN) :: PDDR 
 
 5170 REAL, 
DIMENSION(KLON),     
INTENT(IN) :: PTIMEC
 
 5171 REAL, 
DIMENSION(KLON),     
INTENT(IN) :: PDXDY 
 
 5172 REAL, 
DIMENSION(KLON),     
INTENT(IN) :: PMIXF 
 
 5173 REAL, 
DIMENSION(KLON,KLEV),
INTENT(IN) :: PLMASS
 
 5174 REAL, 
DIMENSION(KLON,KLEV),
INTENT(IN) :: PWSUB 
 
 5175 INTEGER,                
INTENT(IN) :: KFTSTEPS  
 
 5181 INTEGER :: IIE, IKB, IKE  
 
 5187 INTEGER :: JKLC, JKLD, JKLP, JKMAX 
 
 5189 REAL, 
DIMENSION(KLON,KLEV)     :: ZOMG 
 
 5190 REAL, 
DIMENSION(KLON,KLEV,KCH) :: ZUCH1, ZDCH1 
 
 5191 REAL, 
DIMENSION(KLON)          :: ZTIMEC  
 
 5192 REAL, 
DIMENSION(KLON,KLEV)     :: ZTIMC
 
 5193 REAL, 
DIMENSION(KLON,KLEV,KCH) :: ZCH1MFIN, ZCH1MFOUT
 
 5195 REAL, 
DIMENSION(KLON,KCH)      :: ZWORK1, ZWORK2, ZWORK3
 
 5207 jkmax  = maxval( kctl(:) )
 
 5222     zwork1(ji,:) = .5 * ( pch1(ji,jkld,:) + pch1(ji,jklp,:) )
 
 5228 DO jk = minval( kdpl(:) ), jkmax
 
 5233        IF ( kdpl(ji) <= jk .AND. klcl(ji) > jk )                             &
 
 5234             zuch1(ji,jk,jn) = zwork1(ji,jn)
 
 5236        IF ( klcl(ji) - 1 <= jk .AND. kctl(ji) > jk ) 
THEN 
 5239            zuch1(ji,jkp,jn) = ( pumf(ji,jk) * zuch1(ji,jk,jn) +              &
 
 5240                                 puer(ji,jkp) * pch1(ji,jk,jn) )  /           & 
 
 5241                               ( pumf(ji,jkp) + pudr(ji,jkp) + 1.e-7 )
 
 5256 zwork1(:,:) = spread( pmixf(:), dim=2, ncopies=inch1 )
 
 5259      zdch1(ji,jk,:) = zwork1(ji,:) * pch1(ji,jk,:) +                          &
 
 5260                                        ( 1. - zwork1(ji,:) ) * zuch1(ji,jk,:)
 
 5266 DO jk = maxval( klfs(:) ), ikb + 1, -1
 
 5270       IF ( jk <= klfs(ji) .AND. jkp >= kdbl(ji) ) 
THEN 
 5271        zdch1(ji,jkp,jn) = ( zdch1(ji,jk,jn) * pdmf(ji,jk) -              &
 
 5272                             pch1(ji,jk,jn) *  pder(ji,jkp) ) /           &
 
 5273                           ( pdmf(ji,jkp) - pddr(ji,jkp) - 1.e-7 ) 
 
 5283 pch1c(:,ikb:ike,:) = pch1(:,ikb:ike,:) 
 
 5286    zomg(:,jk) = pwsub(:,jk) * pdxdy(:) / 
xg  
 5289 ztimec(:) = ptimec(:) / 
REAL( KFTSTEPS )  
 5291 WHERE ( ptimec(:) < 1. ) ztimec(:) = 0.
 
 5292 ztimc(:,:)= spread( ztimec(:), dim=2, ncopies=iks )
 
 5294 zch1mfin(:,:,:)   = 0.
 
 5295 zch1mfout(:,:,:)  = 0.
 
 5297 DO jstep = 1, kftsteps 
 
 5299       DO jk = ikb + 1, jkmax
 
 5300           jkp = max( ikb + 1, jk - 1 )
 
 5301                   zwork3(:,:) = spread( zomg(:,jk), dim=2, ncopies=inch1 )
 
 5302           zwork1(:,:) = sign( 1., zwork3(:,:) )
 
 5303           zwork2(:,:) = 0.5 * ( 1. + zwork1(:,:) )
 
 5304           zwork1(:,:) = 0.5 * ( 1. - zwork1(:,:) )
 
 5305           zch1mfin(:,jk,:)  = - zwork3(:,:) * pch1c(:,jkp,:) * zwork1(:,:)
 
 5306           zch1mfout(:,jk,:) =   zwork3(:,:) * pch1c(:,jk,:)  * zwork2(:,:)
 
 5307          zch1mfin(:,jkp,:) = zch1mfin(:,jkp,:) + zch1mfout(:,jk,:) * zwork2(:,:)
 
 5308          zch1mfout(:,jkp,:)= zch1mfout(:,jkp,:) + zch1mfin(:,jk,:) * zwork1(:,:)
 
 5312        DO jk = ikb + 1, jkmax
 
 5313          pch1c(:,jk,jn) = pch1c(:,jk,jn) + ztimc(:,jk) / plmass(:,jk) *  (    &
 
 5314                       zch1mfin(:,jk,jn) + pudr(:,jk) * zuch1(:,jk,jn) +       &
 
 5315                       pddr(:,jk) * zdch1(:,jk,jn) - zch1mfout(:,jk,jn) -      &
 
 5316                       ( puer(:,jk) + pder(:,jk) ) * pch1(:,jk,jn)    )
 
 5317          pch1c(:,jk,jn) = max( 0., pch1c(:,jk,jn) )
 
 5472                                    pdtconv, kice, osettadj, ptadjs,               &
 
 5474                                    ptt, prvt, prct, prit, pwt,                    &
 
 5475                                    ptten, prvten, prcten, priten,                 &
 
 5476                                    kcltop, kclbas, pumf,                          &
 
 5477                                    och1conv, kch1, pch1, pch1ten                  )
 
 5570 INTEGER,                    
INTENT(IN) :: KLON     
 
 5571 INTEGER,                    
INTENT(IN) :: KLEV     
 
 5572 INTEGER,                    
INTENT(IN) :: KIDIA    
 
 5573 INTEGER,                    
INTENT(IN) :: KFDIA    
 
 5574 INTEGER,                    
INTENT(IN) :: KBDIA    
 
 5576 INTEGER,                    
INTENT(IN) :: KTDIA    
 
 5579 REAL,                       
INTENT(IN) :: PDTCONV  
 
 5582 INTEGER,                    
INTENT(IN) :: KICE     
 
 5584 LOGICAL,                    
INTENT(IN) :: OSETTADJ 
 
 5586 REAL,                       
INTENT(IN) :: PTADJS   
 
 5587 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(IN) :: PTT      
 
 5588 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(IN) :: PRVT     
 
 5589 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(IN) :: PRCT     
 
 5590 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(IN) :: PRIT     
 
 5591 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(IN) :: PWT      
 
 5593 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(IN) :: PPABST   
 
 5594 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(IN) :: PZZ      
 
 5596 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(INOUT):: PTTEN  
 
 5598 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(INOUT):: PRVTEN 
 
 5599 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(INOUT):: PRCTEN 
 
 5600 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(INOUT):: PRITEN 
 
 5601 INTEGER, 
DIMENSION(KLON),   
INTENT(INOUT):: KCLTOP 
 
 5602 INTEGER, 
DIMENSION(KLON),   
INTENT(INOUT):: KCLBAS 
 
 5605 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(INOUT):: PUMF   
 
 5607 LOGICAL,                    
INTENT(IN) :: OCH1CONV 
 
 5608 INTEGER,                    
INTENT(IN) :: KCH1     
 
 5609 REAL, 
DIMENSION(KLON,KLEV,KCH1), 
INTENT(IN) :: PCH1
 
 5610 REAL, 
DIMENSION(KLON,KLEV,KCH1), 
INTENT(INOUT):: PCH1TEN
 
 5615 INTEGER  :: ITEST, ICONV, ICONV1    
 
 5621 INTEGER  :: JK, JKP, JKM            
 
 5623 REAL     :: ZEPS, ZEPSA, ZEPSB      
 
 5624 REAL     :: ZCPORD, ZRDOCP          
 
 5626 LOGICAL, 
DIMENSION(KLON, KLEV)     :: GTRIG3 
 
 5627 LOGICAL, 
DIMENSION(KLON)           :: GTRIG  
 
 5628 REAL, 
DIMENSION(KLON,KLEV)         :: ZTHT, ZSTHV, ZSTHES  
 
 5629 REAL, 
DIMENSION(KLON)              :: ZTIME  
 
 5630 REAL, 
DIMENSION(KLON)              :: ZWORK2, ZWORK2B 
 
 5635 INTEGER, 
DIMENSION(:),
ALLOCATABLE  :: IDPL    
 
 5636 INTEGER, 
DIMENSION(:),
ALLOCATABLE  :: IPBL    
 
 5637 INTEGER, 
DIMENSION(:),
ALLOCATABLE  :: ILCL    
 
 5638 INTEGER, 
DIMENSION(:),
ALLOCATABLE  :: IETL    
 
 5639 INTEGER, 
DIMENSION(:),
ALLOCATABLE  :: ICTL    
 
 5640 INTEGER, 
DIMENSION(:),
ALLOCATABLE  :: ILFS    
 
 5642 INTEGER, 
DIMENSION(:), 
ALLOCATABLE :: ISDPL   
 
 5643 INTEGER, 
DIMENSION(:),
ALLOCATABLE  :: ISPBL   
 
 5644 INTEGER, 
DIMENSION(:), 
ALLOCATABLE :: ISLCL   
 
 5645 REAL, 
DIMENSION(:), 
ALLOCATABLE    :: ZSTHLCL 
 
 5646 REAL, 
DIMENSION(:), 
ALLOCATABLE    :: ZSTLCL  
 
 5647 REAL, 
DIMENSION(:), 
ALLOCATABLE    :: ZSRVLCL 
 
 5648 REAL, 
DIMENSION(:), 
ALLOCATABLE    :: ZSWLCL  
 
 5649 REAL, 
DIMENSION(:), 
ALLOCATABLE    :: ZSZLCL  
 
 5650 REAL, 
DIMENSION(:), 
ALLOCATABLE    :: ZSTHVELCL
 
 5651 REAL, 
DIMENSION(:), 
ALLOCATABLE    :: ZSDXDY  
 
 5654 REAL, 
DIMENSION(:,:), 
ALLOCATABLE  :: ZZ      
 
 5655 REAL, 
DIMENSION(:,:), 
ALLOCATABLE  :: ZPRES   
 
 5656 REAL, 
DIMENSION(:,:), 
ALLOCATABLE  :: ZDPRES  
 
 5658 REAL, 
DIMENSION(:,:), 
ALLOCATABLE  :: ZW      
 
 5659 REAL, 
DIMENSION(:,:), 
ALLOCATABLE  :: ZTT     
 
 5660 REAL, 
DIMENSION(:,:), 
ALLOCATABLE  :: ZTH     
 
 5661 REAL, 
DIMENSION(:,:), 
ALLOCATABLE  :: ZTHV    
 
 5662 REAL, 
DIMENSION(:,:), 
ALLOCATABLE  :: ZTHL    
 
 5663 REAL, 
DIMENSION(:,:), 
ALLOCATABLE  :: ZTHES, ZTHEST 
 
 5664 REAL, 
DIMENSION(:,:), 
ALLOCATABLE  :: ZRW     
 
 5665 REAL, 
DIMENSION(:,:), 
ALLOCATABLE  :: ZRV     
 
 5666 REAL, 
DIMENSION(:,:), 
ALLOCATABLE  :: ZRC     
 
 5667 REAL, 
DIMENSION(:,:), 
ALLOCATABLE  :: ZRI     
 
 5668 REAL, 
DIMENSION(:),   
ALLOCATABLE  :: ZDXDY   
 
 5671 REAL, 
DIMENSION(:,:), 
ALLOCATABLE  :: ZUMF    
 
 5672 REAL, 
DIMENSION(:,:), 
ALLOCATABLE  :: ZUER    
 
 5673 REAL, 
DIMENSION(:,:), 
ALLOCATABLE  :: ZUDR    
 
 5674 REAL, 
DIMENSION(:,:), 
ALLOCATABLE  :: ZUTHL   
 
 5675 REAL, 
DIMENSION(:,:), 
ALLOCATABLE  :: ZUTHV   
 
 5676 REAL, 
DIMENSION(:,:), 
ALLOCATABLE  :: ZURW    
 
 5677 REAL, 
DIMENSION(:,:), 
ALLOCATABLE  :: ZURC    
 
 5678 REAL, 
DIMENSION(:,:), 
ALLOCATABLE  :: ZURI    
 
 5679 REAL, 
DIMENSION(:),   
ALLOCATABLE  :: ZMFLCL  
 
 5680 REAL, 
DIMENSION(:),   
ALLOCATABLE  :: ZCAPE   
 
 5681 REAL, 
DIMENSION(:),   
ALLOCATABLE  :: ZTHLCL  
 
 5682 REAL, 
DIMENSION(:),   
ALLOCATABLE  :: ZTLCL   
 
 5683 REAL, 
DIMENSION(:),   
ALLOCATABLE  :: ZRVLCL  
 
 5684 REAL, 
DIMENSION(:),   
ALLOCATABLE  :: ZWLCL   
 
 5685 REAL, 
DIMENSION(:),   
ALLOCATABLE  :: ZZLCL   
 
 5686 REAL, 
DIMENSION(:),   
ALLOCATABLE  :: ZTHVELCL
 
 5689 REAL, 
DIMENSION(:,:), 
ALLOCATABLE  :: ZDMF    
 
 5690 REAL, 
DIMENSION(:,:), 
ALLOCATABLE  :: ZDER    
 
 5691 REAL, 
DIMENSION(:,:), 
ALLOCATABLE  :: ZDDR    
 
 5694 REAL, 
DIMENSION(:,:), 
ALLOCATABLE  :: ZLMASS  
 
 5695 REAL, 
DIMENSION(:),   
ALLOCATABLE  :: ZTIMEC  
 
 5697 REAL, 
DIMENSION(:,:), 
ALLOCATABLE  :: ZTHC    
 
 5698 REAL, 
DIMENSION(:,:), 
ALLOCATABLE  :: ZRVC    
 
 5699 REAL, 
DIMENSION(:,:), 
ALLOCATABLE  :: ZRCC    
 
 5700 REAL, 
DIMENSION(:,:), 
ALLOCATABLE  :: ZRIC    
 
 5701 REAL, 
DIMENSION(:,:), 
ALLOCATABLE  :: ZWSUB   
 
 5703 LOGICAL, 
DIMENSION(:),
ALLOCATABLE  :: GTRIG1  
 
 5704 LOGICAL, 
DIMENSION(:),
ALLOCATABLE  :: GWORK   
 
 5705 INTEGER, 
DIMENSION(:),
ALLOCATABLE  :: IINDEX, IJINDEX, IJSINDEX, IJPINDEX
 
 5706 REAL, 
DIMENSION(:),   
ALLOCATABLE  :: ZCPH    
 
 5707 REAL, 
DIMENSION(:),   
ALLOCATABLE  :: ZLV, ZLS
 
 5712 REAL, 
DIMENSION(:,:,:), 
ALLOCATABLE:: ZCH1    
 
 5713 REAL, 
DIMENSION(:,:,:), 
ALLOCATABLE:: ZCH1C   
 
 5714 REAL, 
DIMENSION(:,:),   
ALLOCATABLE:: ZWORK3  
 
 5715 LOGICAL, 
DIMENSION(:,:,:),
ALLOCATABLE::GTRIG4 
 
 5725 jcvexb = max( 0, kbdia - 1 )
 
 5728 jcvext = max( 0, ktdia - 1)
 
 5737 gtrig(iib:iie) = .
true.
 
 5738 itest = count( gtrig(:) )
 
 5739 IF ( itest == 0 ) 
RETURN  
 5747 gtrig3(:,:) = spread( gtrig(:), dim=2, ncopies=iks )
 
 5748 WHERE ( gtrig3(:,:) ) 
 
 5761 IF ( och1conv ) 
THEN 
 5762     ALLOCATE( gtrig4(klon,klev,kch1) )
 
 5763     gtrig4(:,:,:) = spread( gtrig3(:,:), dim=3, ncopies=kch1 )
 
 5764     WHERE( gtrig4(:,:,:) ) pch1ten(:,:,:) = 0.
 
 5765     DEALLOCATE( gtrig4 )
 
 5787    IF ( ppabst(ji,jk) > 40.e2 ) 
THEN 
 5788       ztht(ji,jk)  = ptt(ji,jk) * ( 
xp00 / ppabst(ji,jk) ) ** zrdocp
 
 5789       zsthv(ji,jk) = ztht(ji,jk) * ( 1. + zepsa * prvt(ji,jk) ) /              &
 
 5790                      ( 1. + prvt(ji,jk) + prct(ji,jk) + prit(ji,jk) )
 
 5797       zes = min( 1., zeps * zes / ( ppabst(ji,jk) - zes ) )
 
 5798       zsthes(ji,jk) = ptt(ji,jk) * ( ztht(ji,jk) / ptt(ji,jk) ) **             &
 
 5799                 ( 1. - 0.28 * zes ) * exp( min(500.,                           &
 
 5800                                            ( 3374.6525 / ptt(ji,jk) - 2.5403 ) &
 
 5801                                           * zes * ( 1. + 0.81 * zes ) ) )
 
 5816      ALLOCATE( zpres(itest,iks) )
 
 5817      ALLOCATE( zz(itest,iks) )
 
 5818      ALLOCATE( zw(itest,iks) )
 
 5819      ALLOCATE( zth(itest,iks) )
 
 5820      ALLOCATE( zthv(itest,iks) )
 
 5821      ALLOCATE( zthest(itest,iks) )
 
 5822      ALLOCATE( zrv(itest,iks) )
 
 5823      ALLOCATE( zsthlcl(itest) )
 
 5824      ALLOCATE( zstlcl(itest) )
 
 5825      ALLOCATE( zsrvlcl(itest) )
 
 5826      ALLOCATE( zswlcl(itest) )
 
 5827      ALLOCATE( zszlcl(itest) )
 
 5828      ALLOCATE( zsthvelcl(itest) )
 
 5829      ALLOCATE( isdpl(itest) )
 
 5830      ALLOCATE( ispbl(itest) )
 
 5831      ALLOCATE( islcl(itest) )
 
 5832      ALLOCATE( zsdxdy(itest) )
 
 5833      ALLOCATE( gtrig1(itest) )
 
 5834      ALLOCATE( iindex(klon) )
 
 5835      ALLOCATE( ijsindex(itest) )
 
 5839      ijsindex(:) = pack( iindex(:), mask=gtrig(:) )
 
 5844      zpres(ji,jk)  = ppabst(jl,jk)
 
 5845      zz(ji,jk)     = pzz(jl,jk)
 
 5846      zth(ji,jk)    = ztht(jl,jk)
 
 5847      zthv(ji,jk)   = zsthv(jl,jk)
 
 5848      zthest(ji,jk) = zsthes(jl,jk)
 
 5849      zrv(ji,jk)    = max( 0., prvt(jl,jk) )
 
 5850      zw(ji,jk)     = pwt(jl,jk)
 
 5866      islcl(:) = max( ikb, 2 )   
 
 5871                                  zpres, zth, zthv, zthest,                 &
 
 5872                                  zrv, zw, zz, zsdxdy,                      &
 
 5873                                  zsthlcl, zstlcl, zsrvlcl, zswlcl, zszlcl, &
 
 5874                                  zsthvelcl, islcl, isdpl, ispbl, gtrig1    )
 
 5880      DEALLOCATE( zthest )
 
 5891      iconv = count( gtrig1(:) )
 
 5892      IF ( iconv == 0 )  
THEN  
 5893          DEALLOCATE( zsthlcl )
 
 5894          DEALLOCATE( zstlcl )
 
 5895          DEALLOCATE( zsrvlcl )
 
 5896          DEALLOCATE( zswlcl )
 
 5897          DEALLOCATE( zszlcl )
 
 5898          DEALLOCATE( zsthvelcl )
 
 5899          DEALLOCATE( zsdxdy )
 
 5903          DEALLOCATE( gtrig1 )
 
 5904          DEALLOCATE( iindex )
 
 5905          DEALLOCATE( ijsindex )
 
 5911          ALLOCATE( idpl(iconv) )
 
 5912          ALLOCATE( ipbl(iconv) )
 
 5913          ALLOCATE( ilcl(iconv) )
 
 5914          ALLOCATE( ictl(iconv) )
 
 5915          ALLOCATE( ietl(iconv) )
 
 5919          ALLOCATE( zz(iconv,iks) )
 
 5920          ALLOCATE( zpres(iconv,iks) )
 
 5921          ALLOCATE( zdpres(iconv,iks) )
 
 5922          ALLOCATE( ztt(iconv, iks) )
 
 5923          ALLOCATE( zth(iconv,iks) )
 
 5924          ALLOCATE( zthv(iconv,iks) )
 
 5925          ALLOCATE( zthl(iconv,iks) )
 
 5926          ALLOCATE( zthes(iconv,iks) )
 
 5927          ALLOCATE( zrv(iconv,iks) )
 
 5928          ALLOCATE( zrc(iconv,iks) )
 
 5929          ALLOCATE( zri(iconv,iks) )
 
 5930          ALLOCATE( zrw(iconv,iks) )
 
 5931          ALLOCATE( zdxdy(iconv) )
 
 5935          ALLOCATE( zumf(iconv,iks) )
 
 5936          ALLOCATE( zuer(iconv,iks) )
 
 5937          ALLOCATE( zudr(iconv,iks) )
 
 5938          ALLOCATE( zuthl(iconv,iks) )
 
 5939          ALLOCATE( zuthv(iconv,iks) )
 
 5940          ALLOCATE( zurw(iconv,iks) )
 
 5941          ALLOCATE( zurc(iconv,iks) )
 
 5942          ALLOCATE( zuri(iconv,iks) )
 
 5943          ALLOCATE( zthlcl(iconv) )
 
 5944          ALLOCATE( ztlcl(iconv) )
 
 5945          ALLOCATE( zrvlcl(iconv) )
 
 5946          ALLOCATE( zwlcl(iconv) )
 
 5947          ALLOCATE( zmflcl(iconv) )
 
 5948          ALLOCATE( zzlcl(iconv) )
 
 5949          ALLOCATE( zthvelcl(iconv) )
 
 5950          ALLOCATE( zcape(iconv) )
 
 5954          ALLOCATE( ijindex(iconv) )
 
 5955          ALLOCATE( ijpindex(iconv) )
 
 5956          ALLOCATE( zcph(iconv) )
 
 5957          ALLOCATE( zlv(iconv) )
 
 5958          ALLOCATE( zls(iconv) )
 
 5965          gtrig(:)      = unpack( gtrig1(:), mask=gtrig(:), field=.
false. )  
 
 5966          ijindex(:)    = pack( iindex(:), mask=gtrig(:) )
 
 5971          zz(ji,jk)     = pzz(jl,jk)
 
 5972          zpres(ji,jk)  = ppabst(jl,jk)
 
 5973          ztt(ji,jk)    = ptt(jl,jk)
 
 5974          zth(ji,jk)    = ztht(jl,jk)
 
 5975          zthes(ji,jk)  = zsthes(jl,jk)
 
 5976          zrv(ji,jk)    = max( 0., prvt(jl,jk) )
 
 5977          zrc(ji,jk)    = max( 0., prct(jl,jk) )
 
 5978          zri(ji,jk)    = max( 0., prit(jl,jk) )
 
 5979          zthv(ji,jk)   = zsthv(jl,jk)
 
 5986     ijpindex(:) = pack( ijsindex(:), mask=gtrig1(:) )
 
 5989          idpl(ji)      = isdpl(jl)
 
 5990          ipbl(ji)      = ispbl(jl)
 
 5991          ilcl(ji)      = islcl(jl)
 
 5992          zthlcl(ji)    = zsthlcl(jl)
 
 5993          ztlcl(ji)     = zstlcl(jl)
 
 5994          zrvlcl(ji)    = zsrvlcl(jl)
 
 5995          zwlcl(ji)     = zswlcl(jl)
 
 5996          zzlcl(ji)     = zszlcl(jl)
 
 5997          zthvelcl(ji)  = zsthvelcl(jl)
 
 5998          zdxdy(ji)     = zsdxdy(jl)
 
 6000          ALLOCATE( gwork(iconv) )
 
 6001          gwork(:)      = pack( gtrig1(:),  mask=gtrig1(:) ) 
 
 6002          DEALLOCATE( gtrig1 )
 
 6003          ALLOCATE( gtrig1(iconv) )
 
 6004          gtrig1(:)     = gwork(:)
 
 6007          DEALLOCATE( ijpindex )
 
 6011          DEALLOCATE( zsthlcl )
 
 6012          DEALLOCATE( zstlcl )
 
 6013          DEALLOCATE( zsrvlcl )
 
 6014          DEALLOCATE( zswlcl )
 
 6015          DEALLOCATE( zszlcl )
 
 6016          DEALLOCATE( zsthvelcl )
 
 6017          DEALLOCATE( zsdxdy )
 
 6024         DO jk = ikb + 1, ike
 
 6025             zdpres(:,jk)  = zpres(:,jk-1) - zpres(:,jk)
 
 6032             zrw(:,jk)  = zrv(:,jk) + zrc(:,jk) + zri(:,jk)
 
 6036             zthl(:,jk) = zcph(:) * ztt(:,jk) + ( 1. + zrw(:,jk) ) * 
xg * zz(:,jk) &
 
 6037                          - zlv(:) * zrc(:,jk) - zls(:) * zri(:,jk)
 
 6052          zmflcl(:) = 
xa25 * 1.e-3
 
 6056                                 kice, zpres, zdpres, zz, zthl, zthv, zthes, zrw, &
 
 6057                                 zthlcl, ztlcl, zrvlcl, zwlcl, zzlcl, zthvelcl,   & 
 
 6058                                 zmflcl, gtrig1, ilcl, idpl, ipbl,                &
 
 6059                                 zumf, zuer, zudr, zuthl, zuthv, zurw,            &
 
 6060                                 zurc, zuri, zcape, ictl, ietl                    )
 
 6069      iconv1 = count(gtrig1) 
 
 6071      IF ( iconv1 > 0 )  
THEN 
 6078         ALLOCATE( zdmf(iconv,iks) )
 
 6079         ALLOCATE( zder(iconv,iks) )
 
 6080         ALLOCATE( zddr(iconv,iks) )
 
 6081         ALLOCATE( ilfs(iconv) )
 
 6082         ALLOCATE( zlmass(iconv,iks) )
 
 6088            zlmass(:,jk)  = zdxdy(:) * zdpres(:,jk) / 
xg   
 6090                 zlmass(:,ikb) = zlmass(:,ikb+1)
 
 6094         ALLOCATE( ztimec(iconv) )
 
 6095         ALLOCATE( zthc(iconv,iks) )
 
 6096         ALLOCATE( zrvc(iconv,iks) )
 
 6097         ALLOCATE( zrcc(iconv,iks) )
 
 6098         ALLOCATE( zric(iconv,iks) )
 
 6099         ALLOCATE( zwsub(iconv,iks) )
 
 6106         IF ( osettadj ) ztimec(:) = ptadjs
 
 6114                                   zpres, zdpres, zz, zdxdy, zlmass,    &
 
 6115                                   zthl, zth, zrw, zrc, zri, gtrig1,    &
 
 6116                                   zthc, zrvc, zrcc, zric, zwsub,       &
 
 6117                                   ilcl, idpl, ipbl, ictl,              &
 
 6118                                   zumf, zuer, zudr, zuthl, zurw,       &
 
 6119                                   zurc, zuri, zcape, ztimec, iftsteps  )
 
 6136          zthc(:,jk) = ( zthc(:,jk) - zth(:,jk) ) / ztimec(:)             &
 
 6137            * ( zpres(:,jk) / 
xp00 ) ** zrdocp 
 
 6138          zrvc(:,jk) = ( zrvc(:,jk) - zrw(:,jk) + zrc(:,jk) + zri(:,jk) ) &
 
 6141          zrcc(:,jk) = ( zrcc(:,jk) - zrc(:,jk) ) / ztimec(:)
 
 6142          zric(:,jk) = ( zric(:,jk) - zri(:,jk) ) / ztimec(:)
 
 6152        jkm = maxval( ictl(:) )
 
 6155        DO jk = jkm, ikb+1, -1
 
 6158            zw1 =  zrvc(ji,jk) + zrcc(ji,jk) + zric(ji,jk)
 
 6159            zwork2(ji) = zwork2(ji) +  zw1 *          & 
 
 6160                                              (zpres(ji,jk) - zpres(ji,jkp)) / 
xg 
 6161            zw1 = ( 
xcpd + 
xcpv * zrw(ji,jk) )* zthc(ji,jk)   - &
 
 6164            zwork2b(ji) = zwork2b(ji) + zw1 *         & 
 
 6165                                              (zpres(ji,jk) - zpres(ji,jkp)) / 
xg 
 6172          IF ( ictl(ji) > 2 ) 
THEN 
 6174            zwork2(ji) =  zwork2(ji) * 
xg / ( zpres(ji,ikb+1) - zpres(ji,jkp) )
 
 6175            zwork2b(ji) = zwork2b(ji) * 
xg / ( zpres(ji,ikb+1) - zpres(ji,jkp) )
 
 6181        DO jk = jkm, ikb+1, -1
 
 6183            IF ( ictl(ji) > 2 .AND. jk <= ictl(ji) ) 
THEN 
 6184                  zrvc(ji,jk) = zrvc(ji,jk) - zwork2(ji)                                
 
 6185                  zthc(ji,jk) = zthc(ji,jk) - zwork2b(ji) / ( 
xcpd + 
xcpv * zrw(ji,jk) )
 
 6196          ptten(jl,jk)   = zthc(ji,jk)
 
 6197          prvten(jl,jk)  = zrvc(ji,jk)
 
 6198          prcten(jl,jk)  = zrcc(ji,jk)
 
 6199          priten(jl,jk)  = zric(ji,jk)
 
 6207      ilcl(:) = min( ilcl(:), ictl(:) )
 
 6210         kcltop(jl) = ictl(ji)
 
 6211         kclbas(jl) = ilcl(ji)
 
 6218   IF ( och1conv ) 
THEN 
 6220        ALLOCATE( zch1(iconv,iks,kch1) )
 
 6221        ALLOCATE( zch1c(iconv,iks,kch1) )
 
 6222        ALLOCATE( zwork3(iconv,kch1) )
 
 6227           zch1(ji,jk,:) = pch1(jl,jk,:)
 
 6232                                    idpl, ipbl, ilcl, ictl, ilfs, ilfs,      &
 
 6233                                    zumf, zuer, zudr, zdmf, zder, zddr,      &
 
 6234                                    ztimec, zdxdy, zdmf(:,1), zlmass, zwsub, &
 
 6239           zch1c(:,jk,jn) = ( zch1c(:,jk,jn)- zch1(:,jk,jn) ) / ztimec(:)
 
 6249        jkm = maxval( ictl(:) )
 
 6251        DO jk = jkm, ikb+1, -1
 
 6254            zwork3(ji,:) = zwork3(ji,:) + zch1c(ji,jk,:) *                    &
 
 6255                               (zpres(ji,jk) - zpres(ji,jkp)) / 
xg 
 6263            zwork3(ji,:) = zwork3(ji,:) *                                     &
 
 6264                                     xg / ( zpres(ji,ikb+1) - zpres(ji,jkp) )
 
 6269        DO jk = jkm, ikb+1, -1
 
 6271            IF ( jk <= ictl(ji) ) 
THEN 
 6272                 zch1c(ji,jk,:) = zch1c(ji,jk,:) - zwork3(ji,:)
 
 6281           pch1ten(jl,jk,:) = zch1c(ji,jk,:)
 
 6291        zumf(:,jk)  = zumf(:,jk) / zdxdy(:) 
 
 6297        pumf(jl,jk) = zumf(ji,jk) * zwork2(jl)
 
 6311       DEALLOCATE( zlmass )
 
 6315       DEALLOCATE( ztimec )
 
 6322        IF ( och1conv ) 
THEN 
 6325            DEALLOCATE( zwork3 )
 
 6342     DEALLOCATE( zdpres )
 
 6364     DEALLOCATE( zthlcl )
 
 6366     DEALLOCATE( zrvlcl )
 
 6369     DEALLOCATE( zthvelcl )
 
 6370     DEALLOCATE( zmflcl )
 
 6375     DEALLOCATE( iindex )
 
 6376     DEALLOCATE( ijindex )
 
 6377     DEALLOCATE( ijsindex )
 
 6378     DEALLOCATE( gtrig1 )
 
 6384                                         ppres, 
pth, pthv, pthes,              &
 
 6385                                         prv, pw, pz, pdxdy,                   &
 
 6386                                         pthlcl, ptlcl, prvlcl, pwlcl, pzlcl,  &
 
 6387                                         pthvelcl, klcl, kdpl, kpbl, otrig     )
 
 6465 INTEGER, 
INTENT(IN)                   :: KLON      
 
 6466 INTEGER, 
INTENT(IN)                   :: KLEV      
 
 6467 REAL, 
DIMENSION(KLON),     
INTENT(IN) :: PDXDY     
 
 6468 REAL, 
DIMENSION(KLON,KLEV),
INTENT(IN) :: PTH, PTHV 
 
 6469 REAL, 
DIMENSION(KLON,KLEV),
INTENT(IN) :: PTHES     
 
 6470 REAL, 
DIMENSION(KLON,KLEV),
INTENT(IN) :: PRV       
 
 6471 REAL, 
DIMENSION(KLON,KLEV),
INTENT(IN) :: PPRES     
 
 6472 REAL, 
DIMENSION(KLON,KLEV),
INTENT(IN) :: PZ        
 
 6473 REAL, 
DIMENSION(KLON,KLEV),
INTENT(IN) :: PW        
 
 6475 REAL, 
DIMENSION(KLON),     
INTENT(OUT):: PTHLCL    
 
 6476 REAL, 
DIMENSION(KLON),     
INTENT(OUT):: PTLCL     
 
 6477 REAL, 
DIMENSION(KLON),     
INTENT(OUT):: PRVLCL    
 
 6478 REAL, 
DIMENSION(KLON),     
INTENT(OUT):: PWLCL     
 
 6479 REAL, 
DIMENSION(KLON),     
INTENT(OUT):: PZLCL     
 
 6480 REAL, 
DIMENSION(KLON),     
INTENT(OUT):: PTHVELCL  
 
 6481 LOGICAL, 
DIMENSION(KLON),  
INTENT(OUT):: OTRIG     
 
 6482 INTEGER, 
DIMENSION(KLON),  
INTENT(INOUT):: KLCL    
 
 6483 INTEGER, 
DIMENSION(KLON),  
INTENT(INOUT):: KDPL    
 
 6484 INTEGER, 
DIMENSION(KLON),  
INTENT(INOUT):: KPBL    
 
 6488 INTEGER :: JKK, JK, JKP, JKM, JL, JKT, JT      
 
 6490 INTEGER :: IIE, IKB, IKE                       
 
 6492 REAL    :: ZCPORD, ZRDOCP                      
 
 6494 REAL, 
DIMENSION(KLON) :: ZTHLCL, ZTLCL, ZRVLCL, & 
 
 6495                                ZWLCL,  ZZLCL, ZTHVELCL  
 
 6496 INTEGER, 
DIMENSION(KLON) :: IDPL, IPBL, ILCL      
 
 6497 REAL, 
DIMENSION(KLON) :: ZPLCL    
 
 6498 REAL, 
DIMENSION(KLON) :: ZZDPL    
 
 6499 REAL, 
DIMENSION(KLON) :: ZTHVLCL  
 
 6500 REAL, 
DIMENSION(KLON) :: ZTMIX    
 
 6501 REAL, 
DIMENSION(KLON) :: ZEVMIX   
 
 6502 REAL, 
DIMENSION(KLON) :: ZDPTHMIX, ZPRESMIX 
 
 6503 REAL, 
DIMENSION(KLON) :: ZCAPE    
 
 6504 REAL, 
DIMENSION(KLON) :: ZTHEUL   
 
 6505 REAL, 
DIMENSION(KLON) :: ZLV, ZCPH
 
 6506 REAL, 
DIMENSION(KLON) :: ZDP      
 
 6507 REAL, 
DIMENSION(KLON) :: ZTOP     
 
 6509 REAL, 
DIMENSION(KLON) :: ZWORK1, ZWORK2, ZWORK3    
 
 6510 LOGICAL, 
DIMENSION(KLON) :: GTRIG, GTRIG2          
 
 6511 LOGICAL, 
DIMENSION(KLON) :: GWORK1                 
 
 6543 pzlcl(:)   = pz(:,ikb)
 
 6544 zzdpl(:)   = pz(:,ikb)
 
 6553 DO jk = ikb + 1, ike - 2
 
 6557    IF ( pz(1,jk) - pz(1,ikb) < 5.e3 ) jt = jk 
 
 6564 jkp = minval( idpl(:) ) + 1
 
 6569      gwork1(:) = zzdpl(:) - pz(:,ikb) < 
xzlcl 
 6577         zzdpl(:)    = pz(:,jkk)
 
 6585      DO jk = jkk, ike - 1
 
 6588          IF ( gwork1(ji) .AND. zdpthmix(ji) < 
xzpbl ) 
THEN 
 6590             zwork1(ji)   = ppres(ji,jk) - ppres(ji,jkm)
 
 6591             zdpthmix(ji) = zdpthmix(ji) + zwork1(ji)
 
 6592             zpresmix(ji) = zpresmix(ji) + ppres(ji,jk) * zwork1(ji)
 
 6593             zthlcl(ji)   = zthlcl(ji)   + pth(ji,jk)   * zwork1(ji)
 
 6594             zrvlcl(ji)   = zrvlcl(ji)   + prv(ji,jk)   * zwork1(ji)
 
 6597         IF ( minval( zdpthmix(:) ) >= 
xzpbl ) 
EXIT 
 6603         zpresmix(:) = zpresmix(:) / zdpthmix(:)
 
 6604         zthlcl(:)   = zthlcl(:)   / zdpthmix(:) + 
xdtpert  
 6605         zrvlcl(:)   = zrvlcl(:)   / zdpthmix(:)
 
 6606         zthvlcl(:)  = zthlcl(:) * ( 1. + zepsa * zrvlcl(:) )                 &
 
 6607                                                                 / ( 1. + zrvlcl(:) )
 
 6616         ztmix(:)  = zthlcl(:) * ( zpresmix(:) / 
xp00 ) ** zrdocp 
 
 6617         zevmix(:) = zrvlcl(:) * zpresmix(:) / ( zrvlcl(:) + zeps )
 
 6618         zevmix(:) = max( 1.e-8, zevmix(:) )
 
 6619         zwork1(:) = log( zevmix(:) / 613.3 )
 
 6621         zwork1(:) = ( 4780.8 - 32.19 * zwork1(:) ) / ( 17.502 - zwork1(:) ) 
 
 6623         ztlcl(:)  = zwork1(:) - ( .212 + 1.571e-3 * ( zwork1(:) - 
xtt )      &
 
 6624                    - 4.36e-4 * ( ztmix(:) - 
xtt ) ) * ( ztmix(:) - zwork1(:) )
 
 6625         ztlcl(:)  = min( ztlcl(:), ztmix(:) )
 
 6626         zplcl(:)  = 
xp00 * ( ztlcl(:) / zthlcl(:) ) ** zcpord
 
 6637         zwork2(:) = zwork1(:) / ztlcl(:) * ( 
xbetaw / ztlcl(:) - 
xgamw ) 
 
 6638         zwork2(:) = ( zwork1(:) - zrvlcl(:) ) /                              &
 
 6639                         ( 1. + zlv(:) / zcph(:) * zwork2(:) ) 
 
 6640         ztlcl(:)  = ztlcl(:) - zlv(:) / zcph(:) * zwork2(:)
 
 6650      WHERE( gwork1(:) .AND. zrvlcl(:) > zwork1(:) )
 
 6651         zwork2(:) = zwork1(:) / ztmix(:) * ( 
xbetaw / ztmix(:) - 
xgamw ) 
 
 6652         zwork2(:) = ( zwork1(:) - zrvlcl(:) ) /                              &
 
 6653                        ( 1. + zlv(:) / zcph(:) * zwork2(:) ) 
 
 6654         ztlcl(:)  = ztmix(:) - zlv(:) / zcph(:) * zwork2(:)
 
 6655         zrvlcl(:) = zrvlcl(:) - zwork2(:)
 
 6656         zplcl(:)  = zpresmix(:)
 
 6657         zthlcl(:) = ztlcl(:) * ( 
xp00 / zplcl(:) ) ** zrdocp
 
 6658         zthvlcl(:)= zthlcl(:) * ( 1. + zepsa * zrvlcl(:) )                   &
 
 6659                               / ( 1. + zrvlcl(:) )
 
 6666     DO jk = jkk, ike - 1
 
 6668          IF ( zplcl(ji) <= ppres(ji,jk) .AND. gwork1(ji) ) ilcl(ji) = jk + 1
 
 6679         zdp(ji)    = log( zplcl(ji) / ppres(ji,jkm) ) /                     &
 
 6680                      log( ppres(ji,jk) / ppres(ji,jkm) )
 
 6681         zwork1(ji) = pthv(ji,jkm) + ( pthv(ji,jk) - pthv(ji,jkm) ) * zdp(ji) 
 
 6684         zwork2(ji) = pz(ji,jkm) + ( pz(ji,jk) - pz(ji,jkm) ) * zdp(ji)
 
 6687         zthvelcl(:) = zwork1(:) 
 
 6688         zzlcl(:)    = zwork2(:)
 
 6732      ztheul(:) = ztlcl(:) * ( zthlcl(:) / ztlcl(:) )                       &
 
 6733                                              ** ( 1. - 0.28 * zrvlcl(:) )  &
 
 6734                           * exp( ( 3374.6525 / ztlcl(:) - 2.5403 ) *       &
 
 6735                                zrvlcl(:) * ( 1. + 0.81 * zrvlcl(:) ) )
 
 6740      jkm = minval( ilcl(:) )
 
 6744            zwork1(ji) = ( 2. * ztheul(ji) /                                &
 
 6745             ( pthes(ji,jk) + pthes(ji,jl) ) - 1. ) * ( pz(ji,jk) - pz(ji,jl) )
 
 6746            IF ( jl < ilcl(ji) ) zwork1(ji) = 0.
 
 6747            zcape(ji)  = zcape(ji) + zwork1(ji)
 
 6748            zwork2(ji) = 
xnhgam * 
xg * zcape(ji) + 1.05 * zwlcl(ji) * zwlcl(ji)
 
 6750            zwork2(ji) = sign( 1., zwork2(ji) )
 
 6751            zwork3(ji) = zwork3(ji) + min(0., zwork2(ji) )
 
 6752            zwork3(ji) = max( -1., zwork3(ji) )
 
 6756            ztop(ji)   = pz(ji,jl) * .5 * ( 1. + zwork2(ji) ) * ( 1. + zwork3(ji) ) + &
 
 6757                         ztop(ji) * .5 * ( 1. - zwork2(ji) )
 
 6762      zwork2(:) = ztop(:) - zzlcl(:)
 
 6763      WHERE( zwork2(:)  .GE. 
xcdepth  .AND. zwork2(:) < 
xcdepth_d .AND. gtrig2(:) )
 
 6767         pthlcl(:)   = zthlcl(:)    
 
 6768         prvlcl(:)   = zrvlcl(:)
 
 6772         pthvelcl(:) = zthvelcl(:)
 
 6784                                                      kice, ppres, pdpres, pz, pthl, pthv, pthes, prw,&
 
 6785                                      pthlcl, ptlcl, prvlcl, pwlcl, pzlcl, pthvelcl,  &
 
 6786                                      pmflcl, otrig, klcl, kdpl, kpbl,                &
 
 6787                                      pumf, puer, pudr, puthl, puthv, purw,           &
 
 6788                                      purc, puri, pcape, kctl, ketl )
 
 6866 INTEGER, 
INTENT(IN)                    :: KLON  
 
 6867 INTEGER, 
INTENT(IN)                    :: KLEV  
 
 6868 INTEGER, 
INTENT(IN)                    :: KICE  
 
 6870 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(IN) :: PTHL  
 
 6871 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(IN) :: PTHV  
 
 6872 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(IN) :: PTHES 
 
 6873 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(IN) :: PRW   
 
 6875 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(IN) :: PPRES 
 
 6876 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(IN) :: PDPRES
 
 6878 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(IN) :: PZ    
 
 6879 REAL, 
DIMENSION(KLON),     
INTENT(IN) :: PTHLCL 
 
 6880 REAL, 
DIMENSION(KLON),     
INTENT(IN) :: PTLCL  
 
 6881 REAL, 
DIMENSION(KLON),     
INTENT(IN) :: PRVLCL 
 
 6882 REAL, 
DIMENSION(KLON),     
INTENT(IN) :: PWLCL  
 
 6883 REAL, 
DIMENSION(KLON),     
INTENT(IN) :: PMFLCL 
 
 6885 REAL, 
DIMENSION(KLON),     
INTENT(IN) :: PZLCL  
 
 6886 REAL, 
DIMENSION(KLON),     
INTENT(IN) :: PTHVELCL  
 
 6887 LOGICAL, 
DIMENSION(KLON),  
INTENT(INOUT):: OTRIG
 
 6888 INTEGER, 
DIMENSION(KLON),  
INTENT(IN) :: KLCL   
 
 6889 INTEGER, 
DIMENSION(KLON),  
INTENT(IN) :: KDPL   
 
 6890 INTEGER, 
DIMENSION(KLON),  
INTENT(IN) :: KPBL   
 
 6893 INTEGER, 
DIMENSION(KLON),  
INTENT(OUT):: KCTL   
 
 6894 INTEGER, 
DIMENSION(KLON),  
INTENT(OUT):: KETL   
 
 6896 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(OUT):: PUMF  
 
 6897 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(OUT):: PUER  
 
 6898 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(OUT):: PUDR  
 
 6899 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(OUT):: PUTHL 
 
 6900 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(OUT):: PUTHV 
 
 6901 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(OUT):: PURW  
 
 6902 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(OUT):: PURC  
 
 6903 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(OUT):: PURI  
 
 6904 REAL, 
DIMENSION(KLON),     
INTENT(OUT):: PCAPE  
 
 6908 INTEGER :: IIE, IKB, IKE  
 
 6910 INTEGER :: JK, JKP, JKM, JK1, JK2, JKMIN   
 
 6911 REAL    :: ZEPSA, ZCVOCD  
 
 6912 REAL    :: ZCPORD, ZRDOCP 
 
 6914 REAL, 
DIMENSION(KLON)    :: ZUT             
 
 6915 REAL, 
DIMENSION(KLON)    :: ZUW1, ZUW2      
 
 6917 REAL, 
DIMENSION(KLON)    :: ZE1,ZE2,ZD1,ZD2 
 
 6919 REAL, 
DIMENSION(KLON)    :: ZMIXF           
 
 6920 REAL, 
DIMENSION(KLON)    :: ZCPH            
 
 6921 REAL, 
DIMENSION(KLON)    :: ZLV, ZLS        
 
 6922 REAL, 
DIMENSION(KLON)    :: ZURV            
 
 6923 REAL, 
DIMENSION(KLON)    :: ZPI             
 
 6924 REAL, 
DIMENSION(KLON)    :: ZTHEUL          
 
 6925 REAL, 
DIMENSION(KLON)    :: ZWORK1, ZWORK2, ZWORK3, ZWORK4, ZWORK5,   &
 
 6927 INTEGER, 
DIMENSION(KLON) :: IWORK           
 
 6928 LOGICAL, 
DIMENSION(KLON) :: GWORK1, GWORK2, GWORK4, GWORK5 
 
 6930 LOGICAL, 
DIMENSION(KLON,KLEV) :: GWORK6     
 
 6959 zuw1(:)    = pwlcl(:) * pwlcl(:)
 
 6982 ztheul(:) = ptlcl(:) * ( pthlcl(:) / ptlcl(:) ) ** ( 1. - 0.28 * prvlcl(:) )  &
 
 6983             * exp( ( 3374.6525 / ptlcl(:) - 2.5403 ) *                        &
 
 6984                                    prvlcl(:) * ( 1. + 0.81 * prvlcl(:) ) )
 
 6987 zwork1(:) = ( 
xcpd + prvlcl(:) * 
xcpv ) * ptlcl(:)                            &
 
 6988             + ( 1. + prvlcl(:) ) * 
xg * pzlcl(:)
 
 6994 jkp = maxval( klcl(:) )
 
 6995 jkm = minval( kdpl(:) )
 
 6998    IF ( jk >= kdpl(ji) .AND. jk < klcl(ji) ) 
THEN 
 6999                 pumf(ji,jk)  = pmflcl(ji)
 
 7000                 puthl(ji,jk) = zwork1(ji) 
 
 7001                 puthv(ji,jk) = pthlcl(ji) * ( 1. + zepsa * prvlcl(ji) ) /             &
 
 7003         purw(ji,jk)  = prvlcl(ji) 
 
 7012 jkmin = minval( klcl(:) - 1 ) 
 
 7013 DO jk = max( ikb + 1, jkmin ), ike - 1
 
 7017   gwork4(:) = jk >= klcl(:) - 1 
 
 7018   gwork1(:) = gwork4(:) .AND. gwork2(:) 
 
 7021   WHERE( jk == klcl(:) - 1 ) zwork6(:) = 0. 
 
 7028     zwork1(:) = purc(:,jk) 
 
 7029     zwork2(:) = puri(:,jk) 
 
 7030     CALL convect_condens( klon, kice, ppres(:,jkp), puthl(:,jk), purw(:,jk),&
 
 7031                           zwork1, zwork2, pz(:,jkp), gwork1, zut, zurv,     &
 
 7032                           purc(:,jkp), puri(:,jkp), zlv, zls, zcph )
 
 7035   zpi(:) = ( 
xp00 / ppres(:,jkp) ) ** zrdocp   
 
 7038     puthv(:,jkp) = zpi(:) * zut(:) * ( 1. + zepsa * zurv(:) )           &  
 
 7039                          / ( 1. + purw(:,jk) )     
 
 7046     zwork3(:) = pz(:,jkp) - pz(:,jk) * zwork6(:) -         &
 
 7047                      ( 1. - zwork6(:) ) * pzlcl(:)          
 
 7048     zwork4(:) = pthv(:,jk) * zwork6(:) +                   &
 
 7049                  ( 1. - zwork6(:) ) * pthvelcl(:)
 
 7050     zwork5(:) = 2. * zuw1(:) * puer(:,jk) / max( .1, pumf(:,jk) )
 
 7051     zuw2(:)   = zuw1(:) + zwork3(:) * 
xnhgam * 
xg *        & 
 
 7052                   ( ( puthv(:,jk) + puthv(:,jkp) ) /       &
 
 7053                   ( zwork4(:) + pthv(:,jkp) ) - 1. )       & 
 
 7062                        ( sqrt( max( 1.e-2, zuw2(:) ) ) +                   &
 
 7063                          sqrt( max( 1.e-2, zuw1(:) ) ) )          
 
 7069     purw(:,jkp)  = purw(:,jk) 
 
 7070     purc(:,jkp)  = purc(:,jkp)
 
 7071     puri(:,jkp)  = puri(:,jkp)
 
 7072     puthl(:,jkp) = puthl(:,jk)
 
 7090     zwork1(:) = zmixf(:) * pthl(:,jkp)                                     &
 
 7091                      + ( 1. - zmixf(:) ) * puthl(:,jkp) 
 
 7092     zwork2(:) = zmixf(:) * prw(:,jkp)                                      &
 
 7093                      + ( 1. - zmixf(:) ) * purw(:,jkp)  
 
 7096                           purc(:,jkp), puri(:,jkp), pz(:,jkp), gwork1, zut,&
 
 7097                           zwork3, zwork4, zwork5, zlv, zls, zcph )
 
 7101     zwork3(:) = zut(:) * zpi(:) * ( 1. + zepsa * (                         &
 
 7102                 zwork2(:) - zwork4(:) - zwork5(:) ) ) / ( 1. + zwork2(:) )
 
 7105     zmixf(:) = max( 0., puthv(:,jkp) - pthv(:,jkp) ) * zmixf(:) /          &
 
 7106                               ( puthv(:,jkp) - zwork3(:) + 1.e-10 )
 
 7107     zmixf(:) = max( 0., min( 1., zmixf(:) ) )
 
 7120   zwork1(:) = 
xentr * 
xg / 
xcrad * pumf(:,jk) * ( pz(:,jkp) - pz(:,jk) )
 
 7124   WHERE ( gwork1(:) ) zwork2(:) = 1.
 
 7125   WHERE ( puthv(:,jkp) > pthv(:,jkp) )
 
 7126     puer(:,jkp) = 0.5 * zwork1(:) * ( ze1(:) + ze2(:) ) * zwork2(:)
 
 7127     pudr(:,jkp) = 0.5 * zwork1(:) * ( zd1(:) + zd2(:) ) * zwork2(:)
 
 7130     pudr(:,jkp) = zwork1(:) * zwork2(:)
 
 7136    WHERE ( puthv(:,jkp) > pthv(:,jkp) .AND. jk > klcl(:) + 1 &   
 
 7147   WHERE( gwork1(:) )                                                   &
 
 7148         gwork2(:) = pumf(:,jk) - pudr(:,jkp) > 10. .AND. zuw2(:) > 0.        
 
 7149   WHERE ( gwork2(:) ) kctl(:) = jkp   
 
 7150   gwork1(:) = gwork2(:) .AND. gwork4(:)
 
 7152   IF ( count( gwork2(:) ) == 0 ) 
EXIT            
 7162     zwork3(:)   = pz(:,jkp) - pz(:,jk) * zwork6(:) -                      &
 
 7163                   ( 1. - zwork6(:) ) *  pzlcl(:)              
 
 7164     zwork2(:)   = pthes(:,jk) + ( 1. - zwork6(:) ) *                      &
 
 7165      ( pthes(:,jkp) - pthes(:,jk) ) / ( pz(:,jkp) - pz(:,jk) ) *          &
 
 7166      ( pzlcl(:) - pz(:,jk) ) 
 
 7169     zwork1(:) = ( 2. * ztheul(:) ) / ( zwork2(:) + pthes(:,jkp) ) - 1.   
 
 7170     pcape(:)  = pcape(:) + 
xg * zwork3(:) * max( 0., zwork1(:) )
 
 7177     pumf(:,jkp)  = pumf(:,jk) - pudr(:,jkp) + puer(:,jkp) 
 
 7178     pumf(:,jkp)  = max( pumf(:,jkp), 0.1 )
 
 7179     puthl(:,jkp) = ( pumf(:,jk) * puthl(:,jk) +                              &
 
 7180                      puer(:,jkp) * pthl(:,jk) - pudr(:,jkp) * puthl(:,jk) )  &
 
 7182     purw(:,jkp)  = ( pumf(:,jk) * purw(:,jk) +                               &
 
 7183                      puer(:,jkp) * prw(:,jk) - pudr(:,jkp) * purw(:,jk) )    &
 
 7200           zwork1(ji) = pz(ji,jk) - pzlcl(ji)
 
 7201           otrig(ji) = zwork1(ji) >= 
xcdepth  .AND. zwork1(ji) < 3.e3        &
 
 7202                      .AND. pcape(ji) > 1. 
 
 7204     WHERE( .NOT. otrig(:) )
 
 7207 ketl(:) = max( ketl(:), klcl(:) + 2 )
 
 7208 ketl(:) = min( ketl(:), kctl(:) )
 
 7216 WHERE ( ketl(:) == kctl(:) ) zwork1(:) = 1.
 
 7220     pudr(ji,jk)   = pudr(ji,jk) +                                    &
 
 7221                           ( pumf(ji,jk) - puer(ji,jk) )  * zwork1(ji)  
 
 7222     puer(ji,jk)   = puer(ji,jk) * ( 1. - zwork1(ji) )
 
 7223     pumf(ji,jk)   = pumf(ji,jk) * ( 1. - zwork1(ji) )
 
 7235 jk1 = minval( ketl(:) )
 
 7236 jk2 = maxval( kctl(:) )
 
 7240     IF( jk > ketl(ji) .AND. jk <= kctl(ji) ) 
THEN 
 7241         zwork1(ji) = zwork1(ji) + pdpres(ji,jk)
 
 7248     zwork1(ji) = pumf(ji,jk) / max( 1., zwork1(ji) )
 
 7251 DO jk = jk1 + 1, jk2
 
 7254     IF ( jk > ketl(ji) .AND. jk <= kctl(ji) ) 
THEN 
 7255         pudr(ji,jk)  = pdpres(ji,jk) * zwork1(ji)
 
 7256         pumf(ji,jk)  = pumf(ji,jkp) - pudr(ji,jk)
 
 7271      zwork2(ji) = ppres(ji,jk) - ppres(ji,jkp) + pdpres(ji,jk)
 
 7274 jkp = maxval( iwork(:) )
 
 7277    IF ( jk >= kdpl(ji)  .AND. jk <= iwork(ji) ) 
THEN 
 7278        puer(ji,jk) = puer(ji,jk) + pmflcl(ji) * pdpres(ji,jk) / ( zwork2(ji) + 0.1 )
 
 7279        pumf(ji,jk) = pumf(ji,jk-1) + puer(ji,jk)
 
 7293 gwork6(:,:) = spread( otrig(:), dim=2, ncopies=klev )
 
 7294 WHERE ( .NOT. gwork6(:,:) )
 
 7298     puthl(:,:) = pthl(:,:)
 
 7299     purw(:,:)  = prw(:,:)
 
 7307                                       ppres, pdpres, pz, pdxdy, plmass,           &
 
 7308                                       pthl, 
pth, prw, prc, pri, otrig1,           &
 
 7309                                       pthc, prwc, prcc, pric, pwsub,              &
 
 7310                                       klcl, kdpl, kpbl, kctl,                     &
 
 7311                                       pumf, puer, pudr, puthl, purw,              &
 
 7312                                       purc, puri, pcape, ptimec, kftsteps         )
 
 7389 INTEGER,                   
INTENT(IN) :: KLON   
 
 7390 INTEGER,                   
INTENT(IN) :: KLEV   
 
 7391 INTEGER, 
DIMENSION(KLON),  
INTENT(IN) :: KLCL   
 
 7392 INTEGER, 
DIMENSION(KLON),  
INTENT(IN) :: KCTL   
 
 7393 INTEGER, 
DIMENSION(KLON),  
INTENT(IN) :: KDPL   
 
 7394 INTEGER, 
DIMENSION(KLON),  
INTENT(IN) :: KPBL   
 
 7395 REAL, 
DIMENSION(KLON),  
INTENT(INOUT) :: PTIMEC 
 
 7396 REAL, 
DIMENSION(KLON),     
INTENT(IN) :: PDXDY  
 
 7397 REAL, 
DIMENSION(KLON,KLEV),
INTENT(IN) :: PTHL   
 
 7398 REAL, 
DIMENSION(KLON,KLEV),
INTENT(IN) :: PTH    
 
 7399 REAL, 
DIMENSION(KLON,KLEV),
INTENT(IN) :: PRW    
 
 7401 REAL, 
DIMENSION(KLON,KLEV),
INTENT(IN) :: PRC    
 
 7402 REAL, 
DIMENSION(KLON,KLEV),
INTENT(IN) :: PRI    
 
 7403 LOGICAL, 
DIMENSION(KLON),  
INTENT(IN) :: OTRIG1 
 
 7407 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(IN) :: PPRES  
 
 7408 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(IN) :: PDPRES 
 
 7410 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(IN) :: PLMASS 
 
 7411 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(IN) :: PZ     
 
 7412 REAL, 
DIMENSION(KLON),     
INTENT(IN)  :: PCAPE  
 
 7413 INTEGER,                
INTENT(OUT)   :: KFTSTEPS
 
 7417 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(INOUT):: PUMF  
 
 7418 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(INOUT):: PUER  
 
 7419 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(INOUT):: PUDR  
 
 7420 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(IN)  :: PUTHL  
 
 7421 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(IN)  :: PURW   
 
 7422 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(IN)  :: PURC   
 
 7423 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(IN)  :: PURI   
 
 7425 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(OUT)  :: PTHC  
 
 7426 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(OUT)  :: PRWC  
 
 7427 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(OUT)  :: PRCC  
 
 7428 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(OUT)  :: PRIC  
 
 7429 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(OUT)  :: PWSUB 
 
 7433 INTEGER :: IIE, IKB, IKE  
 
 7435 INTEGER :: JK, JKP, JKMAX 
 
 7439 REAL    :: ZCPORD, ZRDOCP 
 
 7440 REAL    :: ZCVOCD, ZEPSA  
 
 7442 REAL, 
DIMENSION(KLON,KLEV) :: ZTHLC       
 
 7444 REAL, 
DIMENSION(KLON,KLEV) :: ZOMG        
 
 7445 REAL, 
DIMENSION(KLON,KLEV) :: ZUMF        
 
 7446 REAL, 
DIMENSION(KLON,KLEV) :: ZUER        
 
 7447 REAL, 
DIMENSION(KLON,KLEV) :: ZUDR        
 
 7448 REAL, 
DIMENSION(KLON)     :: ZADJ         
 
 7449 REAL, 
DIMENSION(KLON)     :: ZADJMAX      
 
 7450 REAL, 
DIMENSION(KLON)     :: ZCAPE        
 
 7451 REAL, 
DIMENSION(KLON)     :: ZTIMEC       
 
 7452 REAL, 
DIMENSION(KLON,KLEV):: ZTIMC        
 
 7454 REAL, 
DIMENSION(KLON)     :: ZTHLCL       
 
 7455 REAL, 
DIMENSION(KLON)     :: ZRVLCL       
 
 7456 REAL, 
DIMENSION(KLON)     :: ZZLCL        
 
 7457 REAL, 
DIMENSION(KLON)     :: ZTLCL        
 
 7458 REAL, 
DIMENSION(KLON)     :: ZTELCL       
 
 7459 REAL, 
DIMENSION(KLON)     :: ZTHEUL       
 
 7460 REAL, 
DIMENSION(KLON)     :: ZTHES1, ZTHES2
 
 7461 REAL, 
DIMENSION(KLON,KLEV) :: ZTHMFIN, ZTHMFOUT, ZRWMFIN, ZRWMFOUT
 
 7462 REAL, 
DIMENSION(KLON,KLEV) :: ZRCMFIN, ZRCMFOUT, ZRIMFIN, ZRIMFOUT
 
 7464 REAL, 
DIMENSION(KLON)     :: ZPI          
 
 7465 REAL, 
DIMENSION(KLON)     :: ZLV          
 
 7466 REAL, 
DIMENSION(KLON)     :: ZLS          
 
 7467 REAL, 
DIMENSION(KLON)     :: ZCPH         
 
 7468 INTEGER, 
DIMENSION(KLON)  :: ITSTEP       
 
 7469 INTEGER, 
DIMENSION(KLON)  :: ICOUNT       
 
 7470 INTEGER, 
DIMENSION(KLON)  :: ILCL         
 
 7471 INTEGER, 
DIMENSION(KLON)  :: IWORK1       
 
 7472 REAL, 
DIMENSION(KLON)     :: ZWORK1, ZWORK2, ZWORK3, ZWORK4, ZWORK5
 
 7473 LOGICAL, 
DIMENSION(KLON)  :: GWORK1, GWORK3
 
 7474 LOGICAL, 
DIMENSION(KLON,KLEV) :: GWORK4    
 
 7492 gwork4(:,:) = .
false.  
 
 7502 WHERE( .NOT. otrig1(:) ) zwork5(:) = 0. 
 
 7512 jkmax  = maxval( kctl(:) )
 
 7518 zumf(:,:)  = pumf(:,:)
 
 7519 zuer(:,:)  = puer(:,:)
 
 7520 zudr(:,:)  = pudr(:,:)
 
 7532 jkp = minval( kdpl(:) )
 
 7535     IF( jk > kdpl(ji) .AND. jk <= iwork1(ji) ) 
THEN 
 7536         zwork1(ji)  = plmass(ji,jk) / ( ( puer(ji,jk) + 1.e-5 ) * ptimec(ji) )
 
 7537         zadjmax(ji) = min( zadjmax(ji), zwork1(ji) )
 
 7543 gwork1(:) = otrig1(:)  
 
 7547   zthlc(:,jk) = pthl(:,jk) 
 
 7548   prwc(:,jk)  = prw(:,jk)
 
 7549   prcc(:,jk)  = prc(:,jk)
 
 7550   pric(:,jk)  = pri(:,jk)
 
 7551   pthc(:,jk)  = pth(:,jk)
 
 7559      ztimec(:) = ptimec(:)
 
 7560      gwork4(:,:)   = spread( gwork1(:), dim=2, ncopies=iks )
 
 7561      WHERE( gwork4(:,:) ) pwsub(:,:) = 0.
 
 7564      DO jk = ikb + 1, jkmax 
 
 7565            jkp = max( ikb + 1, jk - 1 )
 
 7566            WHERE ( gwork1(:) .AND. jk <= kctl(:) )
 
 7574              zwork1(:)   = - ( puer(:,jkp) - pudr(:,jkp) ) / plmass(:,jkp)
 
 7576              pwsub(:,jk) = pwsub(:,jkp) - pdpres(:,jk-1) * zwork1(:)
 
 7585              zwork1(:) = 
xstabt * pdpres(:,jkp) / ( abs( pwsub(:,jk) ) + 1.e-10 )
 
 7587              ztimec(:) = min( ztimec(:), zwork1(:) ) 
 
 7590              zomg(:,jk) = pwsub(:,jk) * pdxdy(:) / 
xg  
 7595      WHERE( gwork4(:,:) )
 
 7596            zthlc(:,:) = pthl(:,:) 
 
 7597            prwc(:,:)  = prw(:,:)  
 
 7598            prcc(:,:)  = prc(:,:)
 
 7599            pric(:,:)  = pri(:,:)
 
 7600            pthc(:,:)  = pth(:,:)
 
 7611        zwork1(ji) = pudr(ji,jk) * pdpres(ji,jk) / ( plmass(ji,jk) + .1 )    &
 
 7614     WHERE( gwork1(:) .AND. abs( zwork1(:) ) - .01 > 0. )
 
 7620         pwsub(:,jk) = pwsub(:,jk) * zwork5(:)
 
 7622     gwork4(:,1:ikb) = .
false.
 
 7623     gwork4(:,iks)   = .
false.
 
 7625     itstep(:) = int( ptimec(:) / ztimec(:) ) + 1 
 
 7626     ztimec(:) = ptimec(:) / 
REAL( ITSTEP(:) )  
 7628     ztimc(:,:)= spread( ztimec(:), dim=2, ncopies=iks )
 
 7633     kftsteps = maxval( itstep(:) )
 
 7634     DO jstep = 1, kftsteps 
 
 7636                  icount(:) = icount(:) + 1
 
 7638                      gwork3(:) =  itstep(:) >= icount(:) .AND. gwork1(:) 
 
 7654          DO jk = ikb + 1, jkmax
 
 7655          gwork4(:,jk) = gwork3(:) .AND. jk <= kctl(:)
 
 7656          jkp = max( ikb + 1, jk - 1 )
 
 7658            IF ( gwork3(ji) ) 
THEN 
 7660                zwork1(ji)       = sign( 1., zomg(ji,jk) )
 
 7661                zwork2(ji)       = 0.5 * ( 1. + zwork1(ji) )
 
 7662                zwork1(ji)       = 0.5 * ( 1. - zwork1(ji) )
 
 7663                zthmfin(ji,jk)   = - zomg(ji,jk) * zthlc(ji,jkp) * zwork1(ji)
 
 7664                zthmfout(ji,jk)  =   zomg(ji,jk) * zthlc(ji,jk)  * zwork2(ji)
 
 7665                zthmfin(ji,jkp)  = zthmfin(ji,jkp)  + zthmfout(ji,jk) * zwork2(ji)
 
 7666                zthmfout(ji,jkp) = zthmfout(ji,jkp) + zthmfin(ji,jk)  * zwork1(ji)
 
 7667                zrwmfin(ji,jk)   = - zomg(ji,jk) * prwc(ji,jkp) * zwork1(ji)
 
 7668                zrwmfout(ji,jk)  =   zomg(ji,jk) * prwc(ji,jk)  * zwork2(ji)
 
 7669                zrwmfin(ji,jkp)  = zrwmfin(ji,jkp)  + zrwmfout(ji,jk) * zwork2(ji)
 
 7670                zrwmfout(ji,jkp) = zrwmfout(ji,jkp) + zrwmfin(ji,jk)  * zwork1(ji)
 
 7671                zrcmfin(ji,jk)   = - zomg(ji,jk) * prcc(ji,jkp) * zwork1(ji)
 
 7672                zrcmfout(ji,jk)  =   zomg(ji,jk) * prcc(ji,jk)  * zwork2(ji)
 
 7673                zrcmfin(ji,jkp)  = zrcmfin(ji,jkp)  + zrcmfout(ji,jk) * zwork2(ji)
 
 7674                zrcmfout(ji,jkp) = zrcmfout(ji,jkp) + zrcmfin(ji,jk)  * zwork1(ji)
 
 7675                zrimfin(ji,jk)   = - zomg(ji,jk) * pric(ji,jkp) * zwork1(ji)
 
 7676                zrimfout(ji,jk)  =   zomg(ji,jk) * pric(ji,jk)  * zwork2(ji)
 
 7677                zrimfin(ji,jkp)  = zrimfin(ji,jkp)  + zrimfout(ji,jk) * zwork2(ji)
 
 7678                zrimfout(ji,jkp) = zrimfout(ji,jkp) + zrimfin(ji,jk)  * zwork1(ji)
 
 7684          WHERE ( gwork4(:,:) )
 
 7693            zthlc(:,:) = zthlc(:,:) + ztimc(:,:) / plmass(:,:) * (      &
 
 7694                           zthmfin(:,:) + pudr(:,:) * puthl(:,:)        &
 
 7695                       - zthmfout(:,:) - puer(:,:) * pthl(:,:)   )
 
 7696            prwc(:,:)  = prwc(:,:) + ztimc(:,:) / plmass(:,:) *  (      &
 
 7697                           zrwmfin(:,:) + pudr(:,:) * purw(:,:)          &
 
 7698                       - zrwmfout(:,:) - puer(:,:) * prw(:,:)    )    
 
 7699            prcc(:,:)  = prcc(:,:) + ztimc(:,:) / plmass(:,:) *  (      &
 
 7700                zrcmfin(:,:) + pudr(:,:) * purc(:,:) - zrcmfout(:,:) -  &
 
 7701                          puer(:,:) * prc(:,:)    )    
 
 7702            pric(:,:)  = pric(:,:) + ztimc(:,:) / plmass(:,:) *  (      &
 
 7703                zrimfin(:,:) + pudr(:,:) * puri(:,:) - zrimfout(:,:) -  & 
 
 7704                          puer(:,:) * pri(:,:)    )    
 
 7717       DO jk = ikb + 1, jkmax
 
 7719          IF( gwork1(ji) .AND. jk <= kctl(ji) ) 
THEN 
 7720            zpi(ji)    = ( 
xp00 / ppres(ji,jk) ) ** zrdocp
 
 7721            zcph(ji)   = 
xcpd + prwc(ji,jk) * 
xcpv 
 7722            zwork2(ji) = pth(ji,jk) / zpi(ji)  
 
 7726            zwork2(ji) = ( zthlc(ji,jk) + zlv(ji) * prcc(ji,jk) + zls(ji) * pric(ji,jk) &
 
 7727                        - (1. + prwc(ji,jk) ) * 
xg * pz(ji,jk) ) / zcph(ji)
 
 7728            zwork2(ji) = max( 180., min( 340., zwork2(ji) ) )
 
 7729            pthc(ji,jk)= zwork2(ji) * zpi(ji) 
 
 7741                                      ppres, pthc, prwc, pz, gwork1,        &
 
 7742                                      zthlcl, zrvlcl, zzlcl, ztlcl, ztelcl, &
 
 7746        ztlcl(:)  = max( 230., min( 335., ztlcl(:) ) )  
 
 7747        ztelcl(:) = max( 230., min( 335., ztelcl(:) ) )
 
 7748        zthlcl(:) = max( 230., min( 345., zthlcl(:) ) )
 
 7749        zrvlcl(:) = max(   0., min(   1., zrvlcl(:) ) )
 
 7756        zpi(:)    = zthlcl(:) / ztlcl(:)
 
 7757        zpi(:)    = max( 0.95, min( 1.5, zpi(:) ) )
 
 7758        zwork1(:) = 
xp00 / zpi(:) ** zcpord 
 
 7761        zwork3(:) = min(   .1, max(   0., zwork3(:) ) )
 
 7764        ztheul(:) = ztlcl(:) * zpi(:) ** ( 1. - 0.28 * zrvlcl(:) )            &
 
 7765                                   * exp( ( 3374.6525 / ztlcl(:) - 2.5403 )   &
 
 7766                                   * zrvlcl(:) * ( 1. + 0.81 * zrvlcl(:) ) )
 
 7769        zthes1(:) = ztelcl(:) * zpi(:) ** ( 1. - 0.28 * zwork3(:) )           &
 
 7770                                   * exp( ( 3374.6525 / ztelcl(:) - 2.5403 )  &
 
 7771                                   * zwork3(:) * ( 1. + 0.81 * zwork3(:) ) )
 
 7773       DO jk = minval( ilcl(:) ), jkmax
 
 7777           IF ( jk == ilcl(ji) ) zwork4(ji) = 0.
 
 7782           gwork3(ji)  = jk >= ilcl(ji) .AND. jk <= kctl(ji) .AND. gwork1(ji) 
 
 7784           zpi(ji)     = ( 
xp00 / ppres(ji,jk) ) ** zrdocp
 
 7785           zwork2(ji)  = pthc(ji,jk) / zpi(ji)
 
 7792           IF ( gwork3(ji) ) 
THEN 
 7793               zthes2(ji)  = zwork2(ji) * zpi(ji) ** ( 1. - 0.28 * zwork3(ji) )   &
 
 7794                                    * exp( ( 3374.6525 / zwork2(ji) - 2.5403 ) &
 
 7795                                    * zwork3(ji) * ( 1. + 0.81 * zwork3(ji) ) )
 
 7797               zwork3(ji)  = pz(ji,jk) - pz(ji,jkp) * zwork4(ji) -                &
 
 7798                            ( 1. - zwork4(ji) ) * zzlcl(ji)    
 
 7799               zwork1(ji)  = ( 2. * ztheul(ji) ) / ( zthes1(ji) + zthes2(ji) ) - 1.
 
 7800               zcape(ji)   = zcape(ji) + 
xg * zwork3(ji) * max( 0., zwork1(ji) )
 
 7801               zthes1(ji)  = zthes2(ji)
 
 7812            zwork1(:) = max( pcape(:) - zcape(:), 0.1 * pcape(:) )
 
 7813            zwork2(:) = zcape(:) / ( pcape(:) + 1.e-8 )
 
 7815            gwork1(:) = zwork2(:) > 0.1 .OR. zcape(:) == 0. 
 
 7818        WHERE ( zcape(:) == 0. .AND. gwork1(:) )  zadj(:) = zadj(:) * 0.5
 
 7819        WHERE ( zcape(:) /= 0. .AND. gwork1(:) )                              &
 
 7820                zadj(:) = zadj(:) * 
xstabc * pcape(:) / ( zwork1(:) + 1.e-8 )
 
 7821        zadj(:) = min( zadj(:), zadjmax(:) )  
 
 7829                                          pumf, zumf, puer, zuer, pudr, zudr    )
 
 7832       IF ( count( gwork1(:) ) == 0 ) 
EXIT  
 7841    prwc(:,jk) = max( 0., prwc(:,jk) - prcc(:,jk) - pric(:,jk) )
 
 7848                                              pumf, pzumf, puer, pzuer, pudr, pzudr  )
 
 7905 INTEGER,                    
INTENT(IN) :: KLON     
 
 7906 INTEGER,                    
INTENT(IN) :: KLEV     
 
 7907 REAL, 
DIMENSION(KLON),      
INTENT(IN) :: PADJ     
 
 7910 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(INOUT) :: PUMF  
 
 7911 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(INOUT) :: PZUMF 
 
 7912 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(INOUT) :: PUER  
 
 7913 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(INOUT) :: PZUER 
 
 7914 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(INOUT) :: PUDR  
 
 7915 REAL, 
DIMENSION(KLON,KLEV), 
INTENT(INOUT) :: PZUDR 
 
 7920 INTEGER :: IIE, IKB, IKE                 
 
 7938      DO jk = ikb + 1, ike
 
 7939                   pumf(:,jk)  = pzumf(:,jk)   * padj(:)
 
 7940           puer(:,jk)  = pzuer(:,jk)   * padj(:)
 
 7941           pudr(:,jk)  = pzudr(:,jk)   * padj(:)
 
subroutine convect_closure_shal(KLON, KLEV, PPRES, PDPRES, PZ, PDXDY, PLMASS, PTHL, PTH, PRW, PRC, PRI, OTRIG1, PTHC, PRWC, PRCC, PRIC, PWSUB, KLCL, KDPL, KPBL, KCTL, PUMF, PUER, PUDR, PUTHL, PURW, PURC, PURI, PCAPE, PTIMEC, KFTSTEPS)
 
subroutine convect_closure_adjust_shal(KLON, KLEV, PADJ, PUMF, PZUMF, PUER, PZUER, PUDR, PZUDR)
 
subroutine convect_satmixratio(KLON, PPRES, PT, PEW, PLV, PLS, PCPH)
 
INTERFACE SUBROUTINE RRTM_ECRT_140GP pth
 
subroutine convect_closure(KLON, KLEV, PPRES, PDPRES, PZ, PDXDY, PLMASS, PTHL, PTH, PRW, PRC, PRI, OTRIG1, PTHC, PRWC, PRCC, PRIC, PWSUB, KLCL, KDPL, KPBL, KLFS, KCTL, KML, PUMF, PUER, PUDR, PUTHL, PURW, PURC, PURI, PUPR, PDMF, PDER, PDDR, PDTHL, PDRW, PTPR, PSPR, PDTEVR, PCAPE, PTIMEC, KFTSTEPS, PDTEVRF, PPRLFLX, PPRSFLX)
 
subroutine convect_trigger_shal(KLON, KLEV, PPRES, PTH, PTHV, PTHES, PRV, PW, PZ, PDXDY, PTHLCL, PTLCL, PRVLCL, PWLCL, PZLCL, PTHVELCL, KLCL, KDPL, KPBL, OTRIG)
 
subroutine convect_closure_thrvlcl(KLON, KLEV, PPRES, PTH, PRV, PZ, OWORK1, PTHLCL, PRVLCL, PZLCL, PTLCL, PTELCL, KLCL, KDPL, KPBL)
 
subroutine convect_updraft_shal(KLON, KLEV, KICE, PPRES, PDPRES, PZ, PTHL, PTHV, PTHES, PRW, PTHLCL, PTLCL, PRVLCL, PWLCL, PZLCL, PTHVELCL, PMFLCL, OTRIG, KLCL, KDPL, KPBL, PUMF, PUER, PUDR, PUTHL, PUTHV, PURW, PURC, PURI, PCAPE, KCTL, KETL)
 
!$Id itapm1 ENDIF!IM on interpole les champs sur les niveaux STD de pression!IM a chaque pas de temps de la physique c!positionnement de l argument logique a false c!pour ne pas recalculer deux fois la meme chose!c!a cet effet un appel a plevel_new a ete deplace c!a la fin de la serie d appels c!la boucle DO nlevSTD a ete internalisee c!dans d ou la creation de cette routine c c!CALL false
 
subroutine convect_downdraft(KLON, KLEV, KICE, PPRES, PDPRES, PZ, PTH, PTHES, PRW, PRC, PRI, PPREF, KLCL, KCTL, KETL, PUTHL, PURW, PURC, PURI, PDMF, PDER, PDDR, PDTHL, PDRW, PMIXF, PDTEVR, KLFS, KDBL, KML, PDTEVRF)
 
subroutine convect_trigger_funct(KLON, KLEV, PPRES, PTH, PTHV, PTHES, PRV, PW, PZ, PDXDY, PTHLCL, PTLCL, PRVLCL, PWLCL, PZLCL, PTHVELCL, KLCL, KDPL, KPBL, OTRIG, PCAPE)
 
subroutine convect_updraft(KLON, KLEV, KICE, PPRES, PDPRES, PZ, PTHL, PTHV, PTHES, PRW, PTHLCL, PTLCL, PRVLCL, PWLCL, PZLCL, PTHVELCL, PMFLCL, OTRIG, KLCL, KDPL, KPBL, PUMF, PUER, PUDR, PUTHL, PUTHV, PURW, PURC, PURI, PURR, PURS, PUPR, PUTPR, PCAPE, KCTL, KETL)
 
subroutine ini_convpar_shal
 
!$Id itapm1 ENDIF!IM on interpole les champs sur les niveaux STD de pression!IM a chaque pas de temps de la physique c!positionnement de l argument logique a false c!pour ne pas recalculer deux fois la meme chose!c!a cet effet un appel a plevel_new a ete deplace c!a la fin de la serie d appels c!la boucle DO nlevSTD a ete internalisee c!dans d ou la creation de cette routine c c!CALL ulevSTD CALL &zphi philevSTD CALL &zx_rh rhlevSTD!DO klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon du jour ou toutes les read_climoz CALL true
 
subroutine convection(KLON, KLEV, KIDIA, KFDIA, KBDIA, KTDIA, PDTCONV, ODEEP, OSHAL, OREFRESH_ALL, ODOWN, KICE, OSETTADJ, PTADJD, PTADJS, KENSM, PPABS, PZZ, PDXDY, PT, PRV, PRC, PRI, PU, PV, PW, KCOUNT, PTTEN, PRVTEN, PRCTEN, PRITEN, PPRTEN, PPRSTEN, PUMF, PDMF, PPRLFLX, PPRSFLX, PCAPE, KCLTOP, KCLBAS, OCHTRANS, KCH1, PCH1, PCH1TEN)
 
subroutine convect_precip_adjust(KLON, KLEV, PPRES, PUMF, PUER, PUDR, PUPR, PUTPR, PURW, PDMF, PDER, PDDR, PDTHL, PDRW, PPREF, PTPR, PMIXF, PDTEVR, KLFS, KDBL, KLCL, KCTL, KETL, PDTEVRF)
 
subroutine convect_closure_adjust(KLON, KLEV, PADJ, PUMF, PZUMF, PUER, PZUER, PUDR, PZUDR, PDMF, PZDMF, PDER, PZDER, PDDR, PZDDR, PPRMELT, PZPRMELT, PDTEVR, PZDTEVR, PTPR, PZTPR, PPRLFLX, PZPRLFL, PPRSFLX, PZPRSFL)
 
subroutine convect_condens(KLON, KICE, PPRES, PTHL, PRW, PRCO, PRIO, PZ, OWORK1, PT, PEW, PRC, PRI, PLV, PLS, PCPH)
 
INTERFACE SUBROUTINE RRTM_ECRT_140GP pt
 
subroutine convect_mixing_funct(KLON, PMIXC, KMF, PER, PDR)
 
subroutine convect_deep(KLON, KLEV, KIDIA, KFDIA, KBDIA, KTDIA, PDTCONV, KICE, OREFRESH, ODOWN, OSETTADJ, PPABST, PZZ, PDXDY, PTIMEC, PTT, PRVT, PRCT, PRIT, PUT, PVT, PWT, KCOUNT, PTTEN, PRVTEN, PRCTEN, PRITEN, PPRLTEN, PPRSTEN, KCLTOP, KCLBAS, PPRLFLX, PPRSFLX, PUMF, PDMF, PCAPE, OCH1CONV, KCH1, PCH1, PCH1TEN)
 
subroutine convect_tstep_pref(KLON, KLEV, PU, PV, PPRES, PZ, PDXDY, KLCL, KCTL, PTIMEA, PPREF)
 
subroutine convect_chem_transport(KLON, KLEV, KCH, PCH1, PCH1C, KDPL, KPBL, KLCL, KCTL, KLFS, KDBL, PUMF, PUER, PUDR, PDMF, PDER, PDDR, PTIMEC, PDXDY, PMIXF, PLMASS, PWSUB, KFTSTEPS)
 
subroutine convect_shallow(KLON, KLEV, KIDIA, KFDIA, KBDIA, KTDIA, PDTCONV, KICE, OSETTADJ, PTADJS, PPABST, PZZ, PTT, PRVT, PRCT, PRIT, PWT, PTTEN, PRVTEN, PRCTEN, PRITEN, KCLTOP, KCLBAS, PUMF, OCH1CONV, KCH1, PCH1, PCH1TEN)