4 SUBROUTINE cvltr_scav(pdtime, da, phi,phi2,d1a,dam, mpIN,epIN, &
 
    5      sigd,sij,wght_cvfd,clw,elij,epmlmmm,eplamm,    &
 
    6      pmflxrin,pmflxsin,ev,te,wdtraina,wdtrainm,     &
 
    8      ccntraa_3d,ccntrenv_3d,coefcoli_3d,            &
 
    9      dtrcv,trsptd,dtrsscav,dtrsat,dtruscav,qdi,qpr, &
 
   10      qpa,qmel,qtrdi,dtrcvma,mint,                   &
 
   11      zmfd1a,zmfphi2,zmfdam)
 
   29   REAL,
INTENT(IN)                           :: pdtime
 
   30   REAL,
DIMENSION(klon,klev),
INTENT(IN)      :: da
 
   31   REAL,
DIMENSION(klon,klev,klev),
INTENT(IN) :: phi
 
   33   REAL,
DIMENSION(klon,klev),
INTENT(IN)      :: d1a,dam 
 
   34   REAL,
DIMENSION(klon,klev,klev),
INTENT(IN) :: phi2    
 
   36   REAL,
DIMENSION(klon,klev),
INTENT(IN)      :: mpIN
 
   37   REAL,
DIMENSION(klon,klev+1),
INTENT(IN)    :: paprs  
 
   38   INTEGER,
INTENT(IN)                        :: it     
 
   39   REAL,
DIMENSION(klon,klev,nbtr),
INTENT(IN) :: tr     
 
   40   REAL,
DIMENSION(klon,klev),
INTENT(IN)      :: upd   
 
   41   REAL,
DIMENSION(klon,klev),
INTENT(IN)      :: dnd   
 
   43   REAL,
DIMENSION(klon,klev),
INTENT(IN)      :: wdtrainA   
 
   44   REAL,
DIMENSION(klon,klev),
INTENT(IN)      :: wdtrainM   
 
   46   REAL,
DIMENSION(klon,klev+1),
INTENT(IN)      :: pmflxrIN   
 
   48   REAL,
DIMENSION(klon,klev+1),
INTENT(IN)      :: pmflxsIN   
 
   49   REAL,
DIMENSION(klon,klev),
INTENT(IN)      :: ev         
 
   50   REAL,
DIMENSION(klon,klev),
INTENT(IN)      :: epIN
 
   51   REAL,
DIMENSION(klon,klev),
INTENT(IN)      :: te 
 
   52   REAL,
DIMENSION(klon,klev,klev),
INTENT(IN) :: sij        
 
   53   REAL,
DIMENSION(klon,klev),
INTENT(IN)      :: wght_cvfd  
 
   54   REAL,
DIMENSION(klon,klev,klev),
INTENT(IN) :: elij       
 
   55   REAL,
DIMENSION(klon,klev,klev),
INTENT(IN) :: epmlmMm    
 
   56   REAL,
DIMENSION(klon,klev),
INTENT(IN)      :: eplaMm    
 
   58   REAL,
DIMENSION(klon,klev),
INTENT(IN)      :: clw        
 
   59   REAL,
DIMENSION(klon),
INTENT(IN)           :: sigd
 
   60   INTEGER,
DIMENSION(klon),
INTENT(IN)        :: icb,inb
 
   62   REAL,
DIMENSION(klon,klev),
INTENT(IN) :: ccntrAA_3d
 
   63   REAL,
DIMENSION(klon,klev),
INTENT(IN) :: ccntrENV_3d
 
   64   REAL,
DIMENSION(klon,klev),
INTENT(IN) :: coefcoli_3d
 
   67   REAL,
DIMENSION(klon,klev,nbtr),
INTENT(OUT)     :: dtrcv     
 
   68   REAL,
DIMENSION(klon,klev,nbtr),
INTENT(OUT)     :: dtrcvMA 
 
   69   REAL,
DIMENSION(klon,klev,nbtr),
INTENT(OUT)     :: trsptd    
 
   70   REAL,
DIMENSION(klon,klev,nbtr),
INTENT(OUT)     :: dtrSscav  
 
   71   REAL,
DIMENSION(klon,klev,nbtr),
INTENT(OUT)     :: dtrsat    
 
   72   REAL,
DIMENSION(klon,klev,nbtr),
INTENT(OUT)     :: dtrUscav  
 
   76   REAL,
DIMENSION(klon,klev)         :: dxpres   
 
   78   REAL,
DIMENSION(klon,nbtr)         :: qfeed     
 
   80   REAL,
DIMENSION(klon,klev,klev)    :: zmd
 
   81   REAL,
DIMENSION(klon,klev,klev)    :: za
 
   82   REAL,
DIMENSION(klon,klev,nbtr)    :: zmfd,zmfa
 
   83   REAL,
DIMENSION(klon,klev,nbtr)    :: zmfp,zmfu
 
   85   REAL,
DIMENSION(klon,klev,nbtr),
INTENT(OUT)    :: zmfd1a
 
   86   REAL,
DIMENSION(klon,klev,nbtr),
INTENT(OUT)    :: zmfdam
 
   87   REAL,
DIMENSION(klon,klev,nbtr),
INTENT(OUT)    :: zmfphi2
 
   90   REAL,
DIMENSION(klon,klev)         :: Pa, Pm  
 
   91   REAL,
DIMENSION(klon,klev)         :: pmflxs,pmflxr 
 
   92   REAL,
DIMENSION(klon,klev)         :: mp            
 
   93   REAL,
DIMENSION(klon,klev)         :: ep            
 
   94   REAL,
DIMENSION(klon,klev)         :: evap          
 
   95   REAL,
DIMENSION(klon,klev)         :: rho    
 
   97   REAL,
DIMENSION(klon,klev)         :: kappa 
 
   99   REAL,
DIMENSION(klon,klev,nbtr),
INTENT(OUT)    :: qTrdi 
 
  100   REAL,
DIMENSION(klon,klev,nbtr),
INTENT(OUT)    :: qDi  
 
  101   REAL,
DIMENSION(klon,klev,nbtr),
INTENT(OUT)    :: qPr  
 
  102   REAL,
DIMENSION(klon,klev,nbtr),
INTENT(OUT)    :: qPa  
 
  103   REAL,
DIMENSION(klon,klev,nbtr),
INTENT(OUT)    :: qMel 
 
  104   REAL,
DIMENSION(klon,klev,nbtr)                :: qMeltmp 
 
  105   REAL,
DIMENSION(klon,klev,nbtr)                :: qpmMint
 
  106   REAL,
DIMENSION(klon,klev),
INTENT(OUT)         :: Mint
 
  115   REAL,
PARAMETER                    :: rdrop=1.e-3     
 
  117   REAL,
DIMENSION(klon,klev)         :: imp              
 
  119   LOGICAL,
DIMENSION(klon,klev) :: NO_precip
 
  186         IF(ev(i,j).lt.1.e-16) 
THEN 
  189            evap(i,j)=ev(i,j)*sigd(i)
 
  197            IF(epin(i,j).LT.1.e-32) 
THEN 
  205         IF(mpin(i,j).LT.1.e-32) 
THEN 
  210         IF(pmflxsin(i,j).LT.1.e-32) 
THEN 
  213            pmflxs(i,j)=pmflxsin(i,j)
 
  215         IF(pmflxrin(i,j).LT.1.e-32) 
THEN 
  218            pmflxr(i,j)=pmflxrin(i,j)
 
  220         IF(wdtraina(i,j).LT.1.e-32) 
THEN 
  223            pa(i,j)=wdtraina(i,j)
 
  225         IF(wdtrainm(i,j).LT.1.e-32) 
THEN 
  228            pm(i,j)=wdtrainm(i,j)
 
  236         no_precip(i,j) = (pmflxr(i,j+1)+pmflxs(i,j+1)).LT.1.e-10&
 
  237              .AND.pa(i,j).LT.1.e-10.AND.pm(i,j).LT.1.e-10
 
  256         imp(i,j) = coefcoli_3d(i,j)*0.75e-3/rdrop *&
 
  257              0.5*(pmflxr(i,j+1)+pmflxs(i,j+1)+pmflxr(i,j)+pmflxs(i,j))
 
  278         zmd(i,k,k)=max(0.,mp(i,k)-mp(i,k+1))   
 
  284            IF(mp(i,j+1).GT.1.e-10) 
THEN 
  285               zmd(i,j,k)=zmd(i,j+1,k)*min(1.,mp(i,j)/mp(i,j+1)) 
 
  293            za(i,j,k)=max(0.,zmd(i,j+1,k)-zmd(i,j,k))
 
  301            IF(mp(i,j+1).GT.1.e-10) 
THEN 
  302               qtrdi(i,j+1,it)=qtrdi(i,j+1,it)+(zmd(i,j+1,k)/mp(i,j+1))*tr(i,k,it)
 
  315         za(i,j,j-1)=za(i,j,j-1)+mp(i,j)
 
  324            zmfd(i,j,it)=zmfd(i,j,it)+za(i,j,k)*(tr(i,k,it)-tr(i,j,it))
 
  336         qfeed(i,it)=qfeed(i,it)+wght_cvfd(i,j)*tr(i,j,it)
 
  345         zmfa(i,j,it)=da(i,j)*(qfeed(i,it)-tr(i,j,it))                     
 
  353            zmfp(i,j,it)=zmfp(i,j,it)+phi(i,j,k)*(tr(i,k,it)-tr(i,j,it))  
 
  360         zmfd1a(i,j,it)=d1a(i,j)*tr(i,1,it)   
 
  361         zmfdam(i,j,it)=dam(i,j)*tr(i,1,it)   
 
  367            zmfphi2(i,j,it)=zmfphi2(i,j,it)+phi2(i,j,k)*tr(i,k,it)  
 
  373         zmfu(i,j,it)=max(0.,upd(i,j+1)+dnd(i,j+1))*(tr(i,j+1,it)-tr(i,j,it))
 
  378         zmfu(i,j,it)=zmfu(i,j,it)+min(0.,upd(i,j)+dnd(i,j))*(tr(i,j,it)-tr(i,j-1,it))
 
  387         dxpres(i,k)=paprs(i,k)-paprs(i,k+1)
 
  395         IF(j.GE.icb(i).AND.j.LE.inb(i)) 
THEN 
  396            IF(clw(i,j).GT.1.e-16) 
THEN 
  398               qpa(i,j,it)=ccntraa_3d(i,j)*tr(i,1,it)/clw(i,j)
 
  412            IF(k.GE.icb(i).AND.k.LE.inb(i).AND.& 
 
  414               IF(elij(i,k,j).GT.1.e-16) 
THEN 
  418                  qmeltmp(i,j,it)=((1-ep(i,k))*ccntraa_3d(i,k)*tr(i,1,it)&
 
  419                       *(1.-sij(i,k,j))  +ccntrenv_3d(i,k)&
 
  420                       *tr(i,k,it)*sij(i,k,j)) / elij(i,k,j)
 
  424               qpmmint(i,j,it)=qpmmint(i,j,it) + qmeltmp(i,j,it)*epmlmmm(i,j,k)
 
  425               mint(i,j)=mint(i,j) + epmlmmm(i,j,k)
 
  433         IF(mint(i,j).GT.1.e-16) 
THEN 
  434            qmel(i,j,it)=qpmmint(i,j,it)/mint(i,j)
 
  444         IF(mp(i,j+1).GT.mp(i,j).AND.mp(i,j+1).GT.1.e-10) 
THEN   
  445            kappa(i,j)=((pmflxr(i,j+1)+pmflxs(i,j+1)+pa(i,j)+pm(i,j))*&
 
  446                 (-mp(i,j+1)-imp(i,j)/
rg*dxpres(i,j))&
 
  447                 + (imp(i,j)/
rg*dxpres(i,j))*(evap(i,j)/
rg*dxpres(i,j)))
 
  449         ELSEIF(mp(i,j).GT.mp(i,j+1).AND.mp(i,j).GT.1.e-10) then
 
  451               kappa(i,j)=((pmflxr(i,j+1)+pmflxs(i,j+1)+pa(i,j)+pm(i,j))*&
 
  452                    (-mp(i,2)-imp(i,j)/
rg*dxpres(i,j))&
 
  453                    + (imp(i,j)/
rg*dxpres(i,j))*(evap(i,j)/
rg*dxpres(i,j)))
 
  455               kappa(i,j)=((pmflxr(i,j+1)+pmflxs(i,j+1)+pa(i,j)+pm(i,j))*&
 
  456                    (-mp(i,j)-imp(i,j)/
rg*dxpres(i,j))&
 
  457                    + (imp(i,j)/
rg*dxpres(i,j))*(evap(i,j)/
rg*dxpres(i,j)))
 
  467         IF (abs(kappa(i,j)).LT.1.e-25) 
THEN     
  470               qdi(i,j,it)=qdi(i,j+1,it) 
 
  471            ELSEIF(mp(i,j+1).GT.mp(i,j).AND.mp(i,j+1).GT.1.e-10) 
THEN 
  472               qdi(i,j,it)=qdi(i,j+1,it)
 
  473            ELSEIF(mp(i,j).GT.mp(i,j+1).AND.mp(i,j).GT.1.e-10) then
 
  474               qdi(i,j,it)=(-mp(i,j+1)*(qdi(i,j+1,it)-tr(i,j,it))-mp(i,j)*tr(i,j,it))/(-mp(i,j))
 
  476               qdi(i,j,it)=tr(i,j,it) 
 
  479            IF(no_precip(i,j)) 
THEN 
  482               qpr(i,j,it)=((pmflxr(i,j+1)+pmflxs(i,j+1))*qpr(i,j+1,it)+&
 
  483                    pa(i,j)*qpa(i,j,it)+pm(i,j)*qmel(i,j,it)&
 
  484                    +imp(i,j)/
rg*dxpres(i,j)*qdi(i,j,it))/&
 
  485                    (pmflxr(i,j+1)+pmflxs(i,j+1)+pa(i,j)+pm(i,j))
 
  488            kappa(i,j)=1./kappa(i,j)     
 
  493               qdi(i,j,it)=tr(i,j,it)   
 
  498               if(mp(i,2).GT.1.e-10) 
THEN  
  499                  if(no_precip(i,j)) 
THEN  
  500                     qdi(i,j,it)=qdi(i,j+1,it)
 
  503                     qdi(i,j,it)=kappa(i,j)*(&
 
  504                          (-evap(i,j)/
rg*dxpres(i,j))*((pmflxr(i,j+1)+pmflxs(i,j+1))*qpr(i,j+1,it)+&
 
  505                          pa(i,j)*qpa(i,j,it)+pm(i,j)*qmel(i,j,it)) +&
 
  506                          (pmflxr(i,j+1)+pmflxs(i,j+1)+pa(i,j)+pm(i,j))*&
 
  507                          (-mp(i,j+1)*qdi(i,j+1,it)))
 
  509                     qpr(i,j,it)=kappa(i,j)*(&
 
  510                          (-mp(i,j+1)-imp(i,j)/
rg*dxpres(i,j))*&
 
  511                          ((pmflxr(i,j+1)+pmflxs(i,j+1))*qpr(i,j+1,it)+&
 
  512                          pa(i,j)*qpa(i,j,it)+pm(i,j)*qmel(i,j,it))&
 
  513                          +(-mp(i,j+1)*qdi(i,j+1,it)) * (imp(i,j)/
rg*dxpres(i,j)))
 
  517                  qdi(i,j,it)=tr(i,j,it) 
 
  518                  if(no_precip(i,j)) 
THEN 
  521                     qpr(i,j,it)=((pmflxr(i,j+1)+pmflxs(i,j+1))*qpr(i,j+1,it)+&
 
  522                          pa(i,j)*qpa(i,j,it)+pm(i,j)*qmel(i,j,it)&
 
  523                          +imp(i,j)/
rg*dxpres(i,j)*tr(i,j,it))/&
 
  524                          (pmflxr(i,j+1)+pmflxs(i,j+1)+pa(i,j)+pm(i,j))
 
  532               if(mp(i,j+1).GT.mp(i,j).AND.mp(i,j+1).GT.1.e-10) 
THEN  
  533                  if(no_precip(i,j)) 
THEN  
  534                     qdi(i,j,it)=qdi(i,j+1,it)
 
  537                     qdi(i,j,it)=kappa(i,j)*(&
 
  538                          (-evap(i,j)/
rg*dxpres(i,j))*((pmflxr(i,j+1)+pmflxs(i,j+1))*qpr(i,j+1,it)+&
 
  539                          pa(i,j)*qpa(i,j,it)+pm(i,j)*qmel(i,j,it)) +&
 
  540                          (pmflxr(i,j+1)+pmflxs(i,j+1)+pa(i,j)+pm(i,j))*&
 
  541                          (-mp(i,j+1)*qdi(i,j+1,it)))
 
  543                     qpr(i,j,it)=kappa(i,j)*(&
 
  544                          (-mp(i,j+1)-imp(i,j)/
rg*dxpres(i,j))*&
 
  545                          ((pmflxr(i,j+1)+pmflxs(i,j+1))*qpr(i,j+1,it)+&
 
  546                          pa(i,j)*qpa(i,j,it)+pm(i,j)*qmel(i,j,it))&
 
  547                          +(-mp(i,j+1)*qdi(i,j+1,it)) * (imp(i,j)/
rg*dxpres(i,j)))
 
  550               ELSEIF(mp(i,j).GT.mp(i,j+1).AND.mp(i,j).GT.1.e-10) 
THEN  
  551                  if(no_precip(i,j)) 
THEN 
  552                     qdi(i,j,it)=(-mp(i,j+1)*(qdi(i,j+1,it)-tr(i,j,it))-mp(i,j)*tr(i,j,it))/(-mp(i,j))
 
  555                     qdi(i,j,it)=kappa(i,j)*(&
 
  556                          (-evap(i,j)/
rg*dxpres(i,j))*((pmflxr(i,j+1)+pmflxs(i,j+1))*qpr(i,j+1,it)+&
 
  557                          pa(i,j)*qpa(i,j,it)+pm(i,j)*qmel(i,j,it)) +&
 
  558                          (pmflxr(i,j+1)+pmflxs(i,j+1)+pa(i,j)+pm(i,j))*&
 
  559                          (-mp(i,j+1)*(qdi(i,j+1,it)-tr(i,j,it))-mp(i,j)*tr(i,j,it)))
 
  561                     qpr(i,j,it)=kappa(i,j)*(&
 
  562                          (-mp(i,j)-imp(i,j)/
rg*dxpres(i,j))*&
 
  563                          ((pmflxr(i,j+1)+pmflxs(i,j+1))*qpr(i,j+1,it)+&
 
  564                          pa(i,j)*qpa(i,j,it)+pm(i,j)*qmel(i,j,it))&
 
  565                          +(-mp(i,j+1)*(qdi(i,j+1,it)-tr(i,j,it))-mp(i,j)*tr(i,j,it))*&
 
  566                          (imp(i,j)/
rg*dxpres(i,j)))
 
  570                  qdi(i,j,it)=tr(i,j,it) 
 
  571                  if(no_precip(i,j)) 
THEN 
  574                     qpr(i,j,it)=((pmflxr(i,j+1)+pmflxs(i,j+1))*qpr(i,j+1,it)+&
 
  575                          pa(i,j)*qpa(i,j,it)+pm(i,j)*qmel(i,j,it)&
 
  576                          +imp(i,j)/
rg*dxpres(i,j)*tr(i,j,it))/&
 
  577                          (pmflxr(i,j+1)+pmflxs(i,j+1)+pa(i,j)+pm(i,j))
 
  609         tdcvma=zmfd(i,k,it)+zmfu(i,k,it)+zmfa(i,k,it)+zmfp(i,k,it)   
 
  610         trsptrac=zmfu(i,k,it)+zmfa(i,k,it)+zmfp(i,k,it)
 
  615         scavtrac=-ccntraa_3d(i,k)*zmfd1a(i,k,it)&
 
  616              -zmfphi2(i,k,it)*ccntrenv_3d(i,k)&
 
  617              -zmfdam(i,k,it)*ccntraa_3d(i,k)
 
  619         if(k.LE.inb(i).AND.k.GT.1) 
THEN    
  621            if(mp(i,k+1).GT.mp(i,k).AND.mp(i,k+1).GT.1.e-10) 
THEN 
  622               uscavtrac= (-mp(i,k)+mp(i,k+1))*(qdi(i,k,it)-tr(i,k,it))&
 
  623                    + mp(i,k)*(tr(i,k-1,it)-tr(i,k,it))
 
  630            ELSEIF(mp(i,k).GT.mp(i,k+1).AND.mp(i,k).GT.1.e-10) 
THEN 
  631               uscavtrac= mp(i,k)*(tr(i,k-1,it)-tr(i,k,it))
 
  637               if(no_precip(i,k)) 
THEN 
  641                  uscavtrac=-imp(i,k)*tr(i,k,it)*dxpres(i,k)/
rg+evap(i,k)*qpr(i,k,it)*dxpres(i,k)/
rg 
  655            if(mp(i,2).GT.1.e-10) 
THEN   
  656               uscavtrac= (-0.+mp(i,2))*(qdi(i,k,it)-tr(i,k,it)) 
 
  664               if(no_precip(i,1)) 
THEN 
  667                  uscavtrac=-imp(i,k)*tr(i,k,it)*dxpres(i,k)/
rg+evap(i,k)*qpr(i,k,it)*dxpres(i,k)/
rg 
  677         trsptd(i,k,it)=trsptrac*pdtimerg/dxpres(i,k)              
 
  678         dtrsscav(i,k,it)=scavtrac*pdtimerg/dxpres(i,k)            
 
  679         dtruscav(i,k,it)=uscavtrac*pdtimerg/dxpres(i,k)           
 
  680         dtrsat(i,k,it)=(trsptrac+scavtrac)*pdtimerg/dxpres(i,k)   
 
  681         dtrcv(i,k,it)=(trsptrac+scavtrac+uscavtrac)*pdtimerg/dxpres(i,k)
 
  683         dtrcvma(i,k,it)=tdcvma*pdtimerg/dxpres(i,k) 
 
!$Id Turb_fcg_gcssold get_uvd it
 
!$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 &zphi geo500!IM on interpole a chaque pas de temps le paprs
 
character(len=20), dimension(:), allocatable, save tname
 
!$Id sig2feed!common comconema2 iflag_cvl_sigd common comconema1 epmax
 
subroutine cvltr_scav(pdtime, da, phi, phi2, d1a, dam, mpIN, epIN, sigd, sij, wght_cvfd, clw, elij, epmlmMm, eplaMm, pmflxrIN, pmflxsIN, ev, te, wdtrainA, wdtrainM, paprs, it, tr, upd, dnd, inb, icb, ccntrAA_3d, ccntrENV_3d, coefcoli_3d, dtrcv, trsptd, dtrSscav, dtrsat, dtrUscav, qDi, qPr, qPa, qMel, qTrdi, dtrcvMA, Mint, zmfd1a, zmfphi2, zmfdam)
 
!$Id!Parameters for nlm real sigd