4 SUBROUTINE cvltr(pdtime, da, phi,phi2,d1a,dam, mpIN,epIN, &
 
    6            sigd,sij,wght_cvfd,clw,elij,epmlmmm,eplamm,    &     
 
    7            pmflxrin,pmflxsin,ev,te,wdtraina,wdtrainm,     &
 
    9            dtrcv,trsptd,dtrsscav,dtrsat,dtruscav,qdi,qpr, &
 
   10            qpa,qmel,qtrdi,dtrcvma,mint,                   &
 
   11            zmfd1a,zmfphi2,zmfdam)
 
   27   REAL,
INTENT(IN)                           :: pdtime
 
   28   REAL,
DIMENSION(klon,klev),
INTENT(IN)      :: da
 
   29   REAL,
DIMENSION(klon,klev,klev),
INTENT(IN) :: phi
 
   31   REAL,
DIMENSION(klon,klev),
INTENT(IN)      :: d1a,dam 
 
   32   REAL,
DIMENSION(klon,klev,klev),
INTENT(IN) :: phi2    
 
   34   REAL,
DIMENSION(klon,klev),
INTENT(IN)      :: mpIN
 
   35   REAL,
DIMENSION(klon,klev+1),
INTENT(IN)    :: paprs  
 
   37   REAL,
DIMENSION(klon,klev,nbtr),
INTENT(IN) :: tr     
 
   38   INTEGER,
INTENT(IN)                        :: it 
 
   39   REAL,
DIMENSION(klon,klev),
INTENT(IN)      :: upd   
 
   40   REAL,
DIMENSION(klon,klev),
INTENT(IN)      :: dnd   
 
   42   REAL,
DIMENSION(klon,klev),
INTENT(IN)      :: wdtrainA   
 
   43   REAL,
DIMENSION(klon,klev),
INTENT(IN)      :: wdtrainM   
 
   44   REAL,
DIMENSION(klon,klev),
INTENT(IN)      :: pmflxrIN   
 
   45   REAL,
DIMENSION(klon,klev),
INTENT(IN)      :: pmflxsIN   
 
   46   REAL,
DIMENSION(klon,klev),
INTENT(IN)      :: ev         
 
   47   REAL,
DIMENSION(klon,klev),
INTENT(IN)      :: epIN
 
   48   REAL,
DIMENSION(klon,klev),
INTENT(IN)      :: te 
 
   49   REAL,
DIMENSION(klon,klev,klev),
INTENT(IN) :: sij        
 
   50   REAL,
DIMENSION(klon,klev),
INTENT(IN)      :: wght_cvfd  
 
   51   REAL,
DIMENSION(klon,klev,klev),
INTENT(IN) :: elij       
 
   52   REAL,
DIMENSION(klon,klev,klev),
INTENT(IN) :: epmlmMm    
 
   53   REAL,
DIMENSION(klon,klev),
INTENT(IN)      :: eplaMm    
 
   55   REAL,
DIMENSION(klon,klev),
INTENT(IN)      :: clw        
 
   56   REAL,
DIMENSION(klon),
INTENT(IN)           :: sigd
 
   57   INTEGER,
DIMENSION(klon),
INTENT(IN)        :: icb,inb
 
   59   REAL,
DIMENSION(klon,klev,nbtr),
INTENT(OUT)     :: dtrcv     
 
   60   REAL,
DIMENSION(klon,klev,nbtr),
INTENT(OUT)     :: dtrcvMA 
 
   61   REAL,
DIMENSION(klon,klev,nbtr),
INTENT(OUT)     :: trsptd    
 
   62   REAL,
DIMENSION(klon,klev,nbtr),
INTENT(OUT)     :: dtrSscav  
 
   63   REAL,
DIMENSION(klon,klev,nbtr),
INTENT(OUT)     :: dtrsat    
 
   64   REAL,
DIMENSION(klon,klev,nbtr),
INTENT(OUT)     :: dtrUscav  
 
   68   REAL,
DIMENSION(klon,klev)         :: dxpres   
 
   71   REAL,
DIMENSION(klon,klev,klev)    :: zmd
 
   72   REAL,
DIMENSION(klon,klev,klev)    :: za
 
   73   REAL,
DIMENSION(klon,klev,nbtr)    :: zmfd,zmfa
 
   74   REAL,
DIMENSION(klon,klev,nbtr)    :: zmfp,zmfu
 
   75   REAL,
DIMENSION(klon,nbtr)         :: qfeed     
 
   77   REAL,
DIMENSION(klon,klev,nbtr),
INTENT(OUT)    :: zmfd1a
 
   78   REAL,
DIMENSION(klon,klev,nbtr),
INTENT(OUT)    :: zmfdam
 
   79   REAL,
DIMENSION(klon,klev,nbtr),
INTENT(OUT)    :: zmfphi2
 
   82   REAL,
DIMENSION(klon,klev)         :: Pa, Pm  
 
   83   REAL,
DIMENSION(klon,klev)         :: pmflxs,pmflxr 
 
   84   REAL,
DIMENSION(klon,klev)         :: mp            
 
   85   REAL,
DIMENSION(klon,klev)         :: ep            
 
   86   REAL,
DIMENSION(klon,klev)         :: evap          
 
   87   REAL,
DIMENSION(klon,klev)         :: rho    
 
   89   REAL,
DIMENSION(klon,klev)         :: kappa 
 
   91   REAL,
DIMENSION(klon,klev,nbtr),
INTENT(OUT)    :: qTrdi 
 
   92   REAL,
DIMENSION(klon,klev,nbtr),
INTENT(OUT)    :: qDi  
 
   93   REAL,
DIMENSION(klon,klev,nbtr),
INTENT(OUT)    :: qPr  
 
   94   REAL,
DIMENSION(klon,klev,nbtr),
INTENT(OUT)    :: qPa  
 
   95   REAL,
DIMENSION(klon,klev,nbtr),
INTENT(OUT)    :: qMel 
 
   96   REAL,
DIMENSION(klon,klev,nbtr)                :: qMeltmp 
 
   97   REAL,
DIMENSION(klon,klev,nbtr)                :: qpmMint
 
   98   REAL,
DIMENSION(klon,klev),
INTENT(OUT)         :: Mint
 
  107   REAL,
PARAMETER                    :: rdrop=1.e-3     
 
  109   REAL,
DIMENSION(klon,klev)         :: imp              
 
  112   REAL                    :: ccntrENV_coef       
 
  115   LOGICAL,
DIMENSION(klon,klev) :: NO_precip
 
  127   call getin(
'ccntrAA_coef',ccntraa_coef)
 
  128   call getin(
'ccntrENV_coef',ccntrenv_coef)
 
  129   call getin(
'coefcoli',coefcoli)
 
  132   print*,
'cvltr coef lessivage convectif', ccntraa_coef,ccntrenv_coef,coefcoli
 
  163     imp(i,j) = coefcoli*0.75e-3/rdrop *&
 
  164              0.5*(pmflxr(i,j+1)+pmflxs(i,j+1)+pmflxr(i,j)+pmflxs(i,j))
 
  209     if(ev(i,j).lt.1.e-16) 
then 
  212      evap(i,j)=ev(i,j)*sigd(i)
 
  220     if(epin(i,j).lt.1.e-32) 
then 
  228     if(mpin(i,j).lt.1.e-32) 
then 
  233     if(pmflxsin(i,j).lt.1.e-32) 
then 
  236      pmflxs(i,j)=pmflxsin(i,j)
 
  238     if(pmflxrin(i,j).lt.1.e-32) 
then 
  241      pmflxr(i,j)=pmflxrin(i,j)
 
  243     if(wdtraina(i,j).lt.1.e-32) 
then 
  246      pa(i,j)=wdtraina(i,j)
 
  248     if(wdtrainm(i,j).lt.1.e-32) 
then 
  251      pm(i,j)=wdtrainm(i,j)
 
  259      no_precip(i,j) = (pmflxr(i,j+1)+pmflxs(i,j+1)).lt.1.e-10&
 
  260                     .and.pa(i,j).lt.1.e-10.and.pm(i,j).lt.1.e-10
 
  281         zmd(i,k,k)=max(0.,mp(i,k)-mp(i,k+1))   
 
  287            if(mp(i,j+1).gt.1.e-10) 
then 
  288               zmd(i,j,k)=zmd(i,j+1,k)*min(1.,mp(i,j)/mp(i,j+1)) 
 
  296            za(i,j,k)=max(0.,zmd(i,j+1,k)-zmd(i,j,k))
 
  304         if(mp(i,j+1).gt.1.e-10) 
then 
  305           qtrdi(i,j+1,it)=qtrdi(i,j+1,it)+(zmd(i,j+1,k)/mp(i,j+1))*tr(i,k,it)
 
  318         za(i,j,j-1)=za(i,j,j-1)+mp(i,j)
 
  327            zmfd(i,j,it)=zmfd(i,j,it)+za(i,j,k)*(tr(i,k,it)-tr(i,j,it))
 
  340         qfeed(i,it)=qfeed(i,it)+wght_cvfd(i,j)*tr(i,j,it)
 
  349         zmfa(i,j,it)=da(i,j)*(qfeed(i,it)-tr(i,j,it))                     
 
  357            zmfp(i,j,it)=zmfp(i,j,it)+phi(i,j,k)*(tr(i,k,it)-tr(i,j,it))  
 
  364         zmfd1a(i,j,it)=d1a(i,j)*tr(i,1,it)   
 
  365         zmfdam(i,j,it)=dam(i,j)*tr(i,1,it)   
 
  371           zmfphi2(i,j,it)=zmfphi2(i,j,it)+phi2(i,j,k)*tr(i,k,it)  
 
  377         zmfu(i,j,it)=max(0.,upd(i,j+1)+dnd(i,j+1))*(tr(i,j+1,it)-tr(i,j,it))
 
  382         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))
 
  391         dxpres(i,k)=paprs(i,k)-paprs(i,k+1)
 
  399         if(j.ge.icb(i).and.j.le.inb(i)) 
then 
  400           if(clw(i,j).gt.1.e-16) 
then 
  401            qpa(i,j,it)=ccntraa_coef*tr(i,1,it)/clw(i,j)
 
  415         if(k.ge.icb(i).and.k.le.inb(i).and.& 
 
  417             if(elij(i,k,j).gt.1.e-16) 
then 
  418              qmeltmp(i,j,it)=((1-ep(i,k))*ccntraa_coef*tr(i,1,it)&
 
  419                          *(1.-sij(i,k,j))  +ccntrenv_coef&
 
  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)
 
  612      scavtrac=-ccntraa_coef*zmfd1a(i,k,it)&
 
  613                -zmfphi2(i,k,it)*ccntrenv_coef&
 
  614                -zmfdam(i,k,it)*ccntraa_coef
 
  616    if(k.le.inb(i).and.k.gt.1) 
then    
  618       if(mp(i,k+1).gt.mp(i,k).and.mp(i,k+1).gt.1.e-10) 
then 
  619         uscavtrac= (-mp(i,k)+mp(i,k+1))*(qdi(i,k,it)-tr(i,k,it))&
 
  620                    + mp(i,k)*(tr(i,k-1,it)-tr(i,k,it))
 
  627       elseif(mp(i,k).gt.mp(i,k+1).and.mp(i,k).gt.1.e-10) 
then 
  628          uscavtrac= mp(i,k)*(tr(i,k-1,it)-tr(i,k,it))
 
  634         if(no_precip(i,k)) 
then 
  638           uscavtrac=-imp(i,k)*tr(i,k,it)*dxpres(i,k)/
rg+evap(i,k)*qpr(i,k,it)*dxpres(i,k)/
rg 
  644       if(mp(i,2).gt.1.e-10) 
then   
  645          uscavtrac= (-0.+mp(i,2))*(qdi(i,k,it)-tr(i,k,it)) 
 
  653         if(no_precip(i,1)) 
then 
  656           uscavtrac=-imp(i,k)*tr(i,k,it)*dxpres(i,k)/
rg+evap(i,k)*qpr(i,k,it)*dxpres(i,k)/
rg 
  666      trsptd(i,k,it)=trsptrac*pdtimerg/dxpres(i,k)              
 
  667      dtrsscav(i,k,it)=scavtrac*pdtimerg/dxpres(i,k)            
 
  668      dtruscav(i,k,it)=uscavtrac*pdtimerg/dxpres(i,k)           
 
  669      dtrsat(i,k,it)=(trsptrac+scavtrac)*pdtimerg/dxpres(i,k)   
 
  670      dtrcv(i,k,it)=(trsptrac+scavtrac+uscavtrac)*pdtimerg/dxpres(i,k)
 
  672      dtrcvma(i,k,it)=tdcvma*pdtimerg/dxpres(i,k) 
 
subroutine cvltr(pdtime, da, phi, phi2, d1a, dam, mpIN, epIN,
 
!$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
 
!$Id!Parameters for nlm real sigd