Index: LMDZ5/trunk/libf/phylmd/physiq.F
===================================================================
--- LMDZ5/trunk/libf/phylmd/physiq.F	(revision 1506)
+++ LMDZ5/trunk/libf/phylmd/physiq.F	(revision 1507)
@@ -173,4 +173,6 @@
       save iflag_ratqs
 c$OMP THREADPRIVATE(iflag_ratqs)
+      real facteur,zfratqs1,zfratqs2
+
       REAL lambda_th(klon,klev),zz,znum,zden
       REAL wmax_th(klon)
@@ -924,5 +926,4 @@
       save fact_cldcon,facttemps
 c$OMP THREADPRIVATE(fact_cldcon,facttemps)
-      real facteur
 
       integer iflag_cldcon
@@ -1440,5 +1441,5 @@
 cCR:04.12.07: initialisations poches froides
 c Controle de ALE et ALP pour la fermeture convective (jyg)
-          if (iflag_wake.eq.1) then
+          if (iflag_wake>=1) then
             CALL ini_wake(0.,0.,it_wape_prescr,wape_prescr,fip_prescr
      s                  ,alp_bl_prescr, ale_bl_prescr)
@@ -1934,4 +1935,5 @@
 ! ajout des tendances de la diffusion turbulente
       CALL add_phys_tend(d_u_vdf,d_v_vdf,d_t_vdf,d_q_vdf,dql0,'vdf')
+
 !-----------------------------------------------------------------------------------------
 
@@ -2054,5 +2056,5 @@
       do k=1,klev
             do i=1,klon
-             if (iflag_wake.eq.1) then
+             if (iflag_wake>=1) then
              t_wake(i,k) = t_seri(i,k)
      .           +(1-wake_s(i))*wake_deltat(i,k)
@@ -2071,4 +2073,5 @@
             enddo
          enddo
+
       
 cc--   Calcul de l'energie disponible ALE (J/kg) et de la puissance disponible ALP (W/m2)
@@ -2081,5 +2084,5 @@
 c
 ccalcul de ale_wake et alp_wake
-       if (iflag_wake.eq.1) then
+       if (iflag_wake>=1) then
          if (itap .le. it_wape_prescr) then
           do i = 1,klon
@@ -2343,5 +2346,5 @@
 cpour la couche limite diffuse pour l instant
 c
-      if (iflag_wake.eq.1) then
+      if (iflag_wake>=1) then
       DO k=1,klev
         DO i=1,klon
@@ -2358,4 +2361,9 @@
         ENDDO
       ENDDO
+
+      if (iflag_wake==2) then
+         dt_dwn(:,:)= dt_dwn(:,:)+(d_t_eva(:,:)+d_t_lsc(:,:))/dtime
+         dq_dwn(:,:)= dq_dwn(:,:)+(d_q_eva(:,:)+d_q_lsc(:,:))/dtime
+      endif
 c
 ccalcul caracteristiques de la poche froide
@@ -2474,4 +2482,8 @@
       endif
 
+      do i=1,klon
+         zmax_th(i)=pphi(i,lmax_th(i))/rg
+      enddo
+
          endif
 
@@ -2604,5 +2616,5 @@
          enddo
 
-      else
+      else if (iflag_ratqs.eq.2) then
 
          do k=1,klev
@@ -2620,4 +2632,17 @@
             enddo
          enddo
+
+      else if (iflag_ratqs==3) then
+         do k=1,klev
+           ratqss(:,k)=ratqsbas+(ratqshaut-ratqsbas)
+     s     *min( ((paprs(:,1)-pplay(:,k))/70000.)**2 , 1. )
+         enddo
+
+      else if (iflag_ratqs==4) then
+         do k=1,klev
+           ratqss(:,k)=ratqsbas+0.5*(ratqshaut-ratqsbas)
+     s     *( tanh( (50000.-pplay(:,k))/20000.) + 1.)
+         enddo
+
       endif
 
@@ -2659,8 +2684,24 @@
 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
          ratqs(:,:)=max(ratqs(:,:),ratqss(:,:))
-      else
+      else if (iflag_cldcon<=6) then
 !   on ne prend que le ratqs stable pour fisrtilp
          ratqs(:,:)=ratqss(:,:)
+      else
+          zfratqs1=exp(-pdtphys/10800.)
+          zfratqs2=exp(-pdtphys/10800.)
+!         print*,'RAPPEL RATQS 1 ',zfratqs1,zfratqs2
+!    s    ,ratqss(1,14),ratqs(1,14),ratqsc(1,14)
+          do k=1,klev
+             do i=1,klon
+                if (ratqsc(i,k).gt.1.e-10) then
+                   ratqs(i,k)=ratqs(i,k)*zfratqs2
+     s             +(iflag_cldcon/100.)*ratqsc(i,k)*(1.-zfratqs2)
+                endif
+                ratqs(i,k)=min(ratqs(i,k)*zfratqs1
+     s          +ratqss(i,k)*(1.-zfratqs1),0.5)
+             enddo
+          enddo
       endif
+
 
 
@@ -2844,5 +2885,7 @@
       if (iflag_cldcon>=5) then
 
-         ptconvth(:,:)=fm_therm(:,:)>0.
+        do k=1,klev
+         ptconvth(:,k)=fm_therm(:,k+1)>0.
+        enddo
 
        if (iflag_coupl==4) then
@@ -2890,4 +2933,12 @@
 
       ENDIF
+
+!     plulsc(:)=0.
+!     do k=1,klev,-1
+!        do i=1,klon
+!              zzz=prfl(:,k)+psfl(:,k)
+!           if (.not.ptconvth.zzz.gt.0.)
+!        enddo prfl, psfl,
+!     enddo
 c
 c 2. NUAGES STARTIFORMES
@@ -3355,5 +3406,5 @@
        IF (MOD(itap,NINT(freq_cosp/dtime)).EQ.0) THEN
 
-!       print*,'freq_cosp',freq_cosp
+       print*,'freq_cosp',freq_cosp
           mr_ozone=wo(:, :, 1) * dobson_u * 1e3 / zmasse
 !       print*,'Dans physiq.F avant appel cosp ref_liq,ref_ice=',
@@ -3714,4 +3765,34 @@
 
 
+
+c=============================================================
+! Separation entre thermiques et non thermiques dans les sorties
+! de fisrtilp
+c=============================================================
+
+      if (iflag_thermals>1) then
+      d_t_lscth=0.
+      d_t_lscst=0.
+      d_q_lscth=0.
+      d_q_lscst=0.
+      do k=1,klev
+         do i=1,klon
+            if (ptconvth(i,k)) then
+                d_t_lscth(i,k)=d_t_eva(i,k)+d_t_lsc(i,k)
+                d_q_lscth(i,k)=d_q_eva(i,k)+d_q_lsc(i,k)
+            else
+                d_t_lscst(i,k)=d_t_eva(i,k)+d_t_lsc(i,k)
+                d_q_lscst(i,k)=d_q_eva(i,k)+d_q_lsc(i,k)
+            endif
+         enddo
+      enddo
+
+      do i=1,klon
+      plul_st(i)=prfl(i,lmax_th(i)+1)+psfl(i,lmax_th(i)+1)
+      plul_th(i)=prfl(i,1)+psfl(i,1)
+      enddo
+      endif
+
+ 
 #include "phys_output_write.h"
 
