Index: /LMDZ4/branches/LMDZ4V5.0-dev/libf/phylmd/concvl.F
===================================================================
--- /LMDZ4/branches/LMDZ4V5.0-dev/libf/phylmd/concvl.F	(revision 1335)
+++ /LMDZ4/branches/LMDZ4V5.0-dev/libf/phylmd/concvl.F	(revision 1336)
@@ -1,6 +1,2 @@
-
-!
-! $Header$
-!
       SUBROUTINE concvl (iflag_con,iflag_clos,
      .             dtime,paprs,pplay,
@@ -89,5 +85,8 @@
        REAL em_ph(klon,klev+1),em_p(klon,klev)
        REAL upwd(klon,klev),dnwd(klon,klev),dnwdbis(klon,klev)
-       REAL Ma(klon,klev), mip(klon,klev),Vprecip(klon,klev)
+
+!!       REAL Ma(klon,klev), mip(klon,klev),Vprecip(klon,klev)     !jyg
+       REAL Ma(klon,klev), mip(klon,klev),Vprecip(klon,klev+1)     !jyg
+
        real da(klon,klev),phi(klon,klev,klev),mp(klon,klev)
        REAL cape(klon),cin(klon),tvp(klon,klev)
@@ -254,4 +253,5 @@
          DO i=1,klon
          em_ph(i,k) = paprs(i,k) / 100.0
+         pmflxr(i,k)=0.
          pmflxs(i,k)=0.
       ENDDO
@@ -336,5 +336,6 @@
      $              em_p,em_ph,iflag,
      $              d_t,d_q,d_u,d_v,d_tra,rain,
-     $              pmflxr,cbmf,work1,work2,
+!!     $              pmflxr,cbmf,work1,work2,           !jyg
+     $              Vprecip,cbmf,work1,work2,            !jyg
      $              kbas,ktop,
      $              dtime,Ma,upwd,dnwd,dnwdbis,qcondc,wd,cape,
@@ -390,4 +391,15 @@
         ENDDO
       ENDDO
+c                                                  !jyg
+c--Separation neige/pluie (pour diagnostics)       !jyg
+      DO k = 1, klev                               !jyg
+      DO i = 1, klon                               !jyg
+       IF (t1(i,k).LT.RTT) THEN                    !jyg
+         pmflxs(i,k)=Vprecip(i,k)                  !jyg
+       ELSE                                        !jyg
+         pmflxr(i,k)=Vprecip(i,k)                  !jyg
+       ENDIF                                       !jyg
+      ENDDO                                        !jyg
+      ENDDO                                        !jyg
 c
 cc      IF (if_ebil.ge.2) THEN
Index: /LMDZ4/branches/LMDZ4V5.0-dev/libf/phylmd/conf_phys.F90
===================================================================
--- /LMDZ4/branches/LMDZ4V5.0-dev/libf/phylmd/conf_phys.F90	(revision 1335)
+++ /LMDZ4/branches/LMDZ4V5.0-dev/libf/phylmd/conf_phys.F90	(revision 1336)
@@ -1041,5 +1041,5 @@
 !Config Help = 
 !
-  alp_offset_omp = 0.01
+  alp_offset_omp = 0.
   call getin('alp_offset',alp_offset_omp)
 
Index: /LMDZ4/branches/LMDZ4V5.0-dev/libf/phylmd/cv3_routines.F
===================================================================
--- /LMDZ4/branches/LMDZ4V5.0-dev/libf/phylmd/cv3_routines.F	(revision 1335)
+++ /LMDZ4/branches/LMDZ4V5.0-dev/libf/phylmd/cv3_routines.F	(revision 1336)
@@ -2331,5 +2331,5 @@
       real upwd(nloc,nd), dnwd(nloc,nd), ma(nloc,nd)
       real dnwd0(nloc,nd), mip(nloc,nd)
-      real Vprecip(nloc,nd)
+      real Vprecip(nloc,nd+1)
       real tls(nloc,nd), tps(nloc,nd)
       real qcondc(nloc,nd)                               ! cld
@@ -2367,5 +2367,5 @@
       do il=1,ncum
        precip(il)=0.0
-c       Vprecip(il,nd+1)=0.0
+       Vprecip(il,nd+1)=0.0
        wd(il)=0.0     ! gust
       enddo
Index: /LMDZ4/branches/LMDZ4V5.0-dev/libf/phylmd/cv3a_uncompress.F
===================================================================
--- /LMDZ4/branches/LMDZ4V5.0-dev/libf/phylmd/cv3a_uncompress.F	(revision 1335)
+++ /LMDZ4/branches/LMDZ4V5.0-dev/libf/phylmd/cv3a_uncompress.F	(revision 1336)
@@ -39,5 +39,5 @@
       real ft(nloc,nd), fq(nloc,nd), fu(nloc,nd), fv(nloc,nd)
       real ftra(nloc,nd,ntra)
-      real Ma(nloc,nd),mip(nloc,nd),Vprecip(nloc,nd)
+      real Ma(nloc,nd),mip(nloc,nd),Vprecip(nloc,nd+1)
       real upwd(nloc,nd),dnwd(nloc,nd),dnwd0(nloc,nd)
       real qcondc(nloc,nd)
@@ -55,5 +55,5 @@
       real ft1(len,nd), fq1(len,nd), fu1(len,nd), fv1(len,nd)
       real ftra1(len,nd,ntra)
-      real Ma1(len,nd),mip1(len,nd),Vprecip1(len,nd)
+      real Ma1(len,nd),mip1(len,nd),Vprecip1(len,nd+1)
       real upwd1(len,nd),dnwd1(len,nd),dnwd01(len,nd)
       real qcondc1(len,nd)
Index: /LMDZ4/branches/LMDZ4V5.0-dev/libf/phylmd/cva_driver.F
===================================================================
--- /LMDZ4/branches/LMDZ4V5.0-dev/libf/phylmd/cva_driver.F	(revision 1335)
+++ /LMDZ4/branches/LMDZ4V5.0-dev/libf/phylmd/cva_driver.F	(revision 1336)
@@ -153,5 +153,6 @@
       real Ma1(len,nd)
       real mip1(len,nd)
-      real Vprecip1(len,nd)
+!      real Vprecip1(len,nd)
+      real Vprecip1(len,nd+1)
       real upwd1(len,nd)
       real dnwd1(len,nd)
@@ -406,5 +407,6 @@
       real tps(nloc,klev), qprime(nloc), tprime(nloc)
       real precip(nloc)
-      real Vprecip(nloc,klev)
+!      real Vprecip(nloc,klev)
+      real Vprecip(nloc,klev+1)
       real tra(nloc,klev,ntra), trap(nloc,klev,ntra)
       real ftra(nloc,klev,ntra), traent(nloc,klev,klev,ntra)
@@ -492,5 +494,6 @@
       call  zilch(Ma1     ,nword2)
       call  zilch(mip1    ,nword2)
-      call  zilch(Vprecip1,nword2)
+!      call  zilch(Vprecip1,nword2)
+      Vprecip1=0.
       call  zilch(upwd1   ,nword2)
       call  zilch(dnwd1   ,nword2)
Index: /LMDZ4/branches/LMDZ4V5.0-dev/libf/phylmd/ini_wake.F
===================================================================
--- /LMDZ4/branches/LMDZ4V5.0-dev/libf/phylmd/ini_wake.F	(revision 1335)
+++ /LMDZ4/branches/LMDZ4V5.0-dev/libf/phylmd/ini_wake.F	(revision 1336)
@@ -52,5 +52,6 @@
 c
 cCR: on rajoute ale et alp de la PBL precrits
-      open (99,file='wake.data',form='formatted',status='old',err=902)
+      open (99,file='ini_wake_param.data',form='formatted',
+     s      status='old',err=902)
       read (99,*) it
       read (99,*) w
Index: /LMDZ4/branches/LMDZ4V5.0-dev/libf/phylmd/thermcell_qsat.F90
===================================================================
--- /LMDZ4/branches/LMDZ4V5.0-dev/libf/phylmd/thermcell_qsat.F90	(revision 1336)
+++ /LMDZ4/branches/LMDZ4V5.0-dev/libf/phylmd/thermcell_qsat.F90	(revision 1336)
@@ -0,0 +1,85 @@
+subroutine thermcell_qsat(klon,mask,pplev,ptemp,pqt,pqsat)
+implicit none
+
+#include "YOMCST.h"
+#include "YOETHF.h"
+#include "FCTTRE.h"
+
+!====================================================================
+! DECLARATIONS
+!====================================================================
+
+! Arguments
+INTEGER klon
+REAL pplev(klon)
+REAL ptemp(klon),pqt(klon),pqsat(klon)
+LOGICAL mask(klon)
+
+! Variables locales
+INTEGER ig,iter
+REAL Tbef(klon),DT(klon)
+REAL tdelta,zcor,qlbef,zdelta,zcvm5,dqsat,num,denom,dqsat_dT
+logical Zsat
+REAL RLvCp
+REAL, SAVE :: DDT0=.01
+LOGICAL afaire(klon),tout_converge
+
+!====================================================================
+! INITIALISATIONS
+!====================================================================
+
+RLvCp = RLVTT/RCPD
+tout_converge=.false.
+afaire(:)=mask(:)
+DT(:)=0.
+
+
+!====================================================================
+! Routine a vectoriser en copiant mask dans converge et en mettant
+! la boucle sur les iterations a l'exterieur est en mettant
+! converge= false des que la convergence est atteinte.
+! Pr Tprec=Tl calcul de qsat
+! Si qsat>qT T=Tl, q=qT
+! Sinon DDT=(-Tprec+Tl+RLVCP (qT-qsat(T')) / (1+RLVCP dqsat/dt)
+! On cherche DDT < DDT0
+!====================================================================
+
+do ig=1,klon
+   if (mask(ig)) then
+               Tbef(ig)=ptemp(ig)
+               zdelta=MAX(0.,SIGN(1.,RTT-Tbef(ig)))
+               pqsat(ig)= R2ES * FOEEW(Tbef(ig),zdelta)/pplev(ig)
+               pqsat(ig)=MIN(0.5,pqsat(ig))
+               zcor=1./(1.-retv*pqsat(ig))
+               pqsat(ig)=pqsat(ig)*zcor
+               qlbef=max(0.,pqt(ig)-pqsat(ig))
+               afaire(ig)=qlbef>1.e-10
+               DT(ig) = 0.5*RLvCp*qlbef
+     endif
+enddo
+
+
+do iter=1,10
+    afaire(:)=(abs(DT(:))>DDT0).and.afaire(:)
+    do ig=1,klon
+               if (afaire(ig)) then
+                 Tbef(ig)=Tbef(ig)+DT(ig)
+                 zdelta=MAX(0.,SIGN(1.,RTT-Tbef(ig)))
+                 pqsat(ig)= R2ES * FOEEW(Tbef(ig),zdelta)/pplev(ig)
+                 pqsat(ig)=MIN(0.5,pqsat(ig))
+                 zcor=1./(1.-retv*pqsat(ig))
+                 pqsat(ig)=pqsat(ig)*zcor
+                 qlbef=pqt(ig)-pqsat(ig)
+                 zdelta=MAX(0.,SIGN(1.,RTT-Tbef(ig)))
+                 zcvm5=R5LES*(1.-zdelta) + R5IES*zdelta
+                 zcor=1./(1.-retv*pqsat(ig))
+                 dqsat_dT=FOEDE(Tbef(ig),zdelta,zcvm5,pqsat(ig),zcor)
+                 num=-Tbef(ig)+ptemp(ig)+RLvCp*qlbef
+                 denom=1.+RLvCp*dqsat_dT
+                 DT(ig)=num/denom
+               endif
+    enddo
+enddo
+
+return
+end
Index: /LMDZ4/branches/LMDZ4V5.0-dev/libf/phylmd/wake.F
===================================================================
--- /LMDZ4/branches/LMDZ4V5.0-dev/libf/phylmd/wake.F	(revision 1335)
+++ /LMDZ4/branches/LMDZ4V5.0-dev/libf/phylmd/wake.F	(revision 1336)
@@ -295,13 +295,13 @@
 
 ccc nrlmd Lecture du fichier wake_param.data
-c$$$      OPEN(99,file='wake_param.data',status='old',
-c$$$     $          form='formatted',err=9999)
-c$$$      READ(99,*,end=9998) stark
-c$$$      READ(99,*,end=9998) Alpk
-c$$$      READ(99,*,end=9998) wdens_ref
-c$$$      READ(99,*,end=9998) coefgw
-c$$$9998  Continue
-c$$$      CLOSE(99)
-c$$$9999  Continue
+      OPEN(99,file='wake_param.data',status='old',
+     $          form='formatted',err=9999)
+      READ(99,*,end=9998) stark
+      READ(99,*,end=9998) Alpk
+      READ(99,*,end=9998) wdens_ref
+      READ(99,*,end=9998) coefgw
+9998  Continue
+      CLOSE(99)
+9999  Continue
 c
 c   Initialisation de toutes des densites a wdens_ref.
