Index: LMDZ4/trunk/libf/phylmd/phytrac.F
===================================================================
--- LMDZ4/trunk/libf/phylmd/phytrac.F	(revision 524)
+++ LMDZ4/trunk/libf/phylmd/phytrac.F	(revision 541)
@@ -23,4 +23,5 @@
      I                    pde_d,
      I                    coefh,
+     I                    fm_therm,entr_therm,
      I                    yu1,
      I                    yv1,
@@ -130,5 +131,6 @@
       logical debutphy       ! le flag de l'initialisation de la physique
       logical lafin          ! le flag de la fin de la physique
-
+c Olivia      
+      integer isplit,nsplit
       REAL pmflxr(klon,klev+1), pmflxs(klon,klev+1)   !--lessivage convection
       REAL prfl(klon,klev+1),   psfl(klon,klev+1)     !--lessivage large-scale
@@ -146,4 +148,12 @@
       REAL pmfd(nlon,nlev)  ! flux de masse dans le panache descendant
       REAL pen_u(nlon,nlev) ! flux entraine dans le panache montant
+
+c
+c   thermiques:
+c   -----------
+c
+      real fm_therm(klon,klev+1),entr_therm(klon,klev)
+	real fm_therm1(klon,klev)
+c
       REAL pde_u(nlon,nlev) ! flux detraine dans le panache montant
       REAL pen_d(nlon,nlev) ! flux entraine dans le panache descendant
@@ -265,5 +275,8 @@
       REAL d_tr(klon,klev), d_trs(klon) ! tendances de traceurs 
       REAL d_tr_cl(klon,klev) ! tendance de traceurs  couche limite
-      REAL d_tr_cv(klon,klev) ! tendance de traceurs  convection 
+      REAL d_tr_cli(klon,klev,nbtr) ! tendance de traceurs  CL pour chq traceur
+      REAL d_tr_cv(klon,klev) ! tendance de traceurs  convection
+      REAL d_tr_cvi(klon,klev,nbtr) ! tendance de traceurs  conv pour chq traceur
+      REAL d_tr_th(klon,klev,nbtr) ! la tendance des thermiques
       REAL d_tr_dec(klon,klev,nbtr) ! la tendance de la decroissance 
 c                                   ! radioactive du rn - > pb 
@@ -280,4 +293,6 @@
       REAL flestottr(klon,klev,nbtr) ! flux de lessivage 
 c                                    ! dans chaque couche 
+      real zmasse(klon,klev)
+      real ztra_th(klon,klev)
 
 C
@@ -288,9 +303,14 @@
 c-------------
       logical first,couchelimite,convection,lessivage,sorties,
-     s        rnpb,inirnpb
-      save first,couchelimite,convection,lessivage,sorties,
-     s     inirnpb
-      data first,couchelimite,convection,lessivage,sorties
-     s     /.true.,.true.,.false.,.true.,.true./
+     s        rnpb,inirnpb,thermiques
+      save first,couchelimite,convection,lessivage,thermiques,
+     s        sorties,inirnpb
+c      data first,couchelimite,convection,lessivage,sorties
+c     s     /.true.,.true.,.false.,.true.,.true./
+c Olivia
+       data first,couchelimite,convection,lessivage,
+     s      thermiques,sorties
+     s     /.true.,.true.,.true.,.true.,.true.,.true./
+
 
 #ifdef INCA
@@ -522,4 +542,6 @@
       DO i = 1, klon
          tr_seri(i,k,it) = tr_seri(i,k,it) + d_tr_cv(i,k)
+	 d_tr_cvi(i,k,it)=d_tr_cv(i,k)
+c	 print*,'en k i d_tr_cv=',k,i,d_tr_cv(i,k)
       ENDDO
       ENDDO
@@ -541,4 +563,63 @@
 c      enddo
 
+
+c======================================================================
+c   Calcul de l'effet des thermiques
+c======================================================================
+
+      do k=1,klev
+         do i=1,klon
+            zmasse(i,k)=(paprs(i,k)-paprs(i,k+1))/rg
+         enddo
+      enddo
+
+c      print*,'masse dans ph ',zmasse
+      do it=1,nqmax
+         do k=1,klev
+            do i=1,klon
+               d_tr_th(i,k,it)=0.
+               tr_seri(i,k,it)=max(tr_seri(i,k,it),0.)
+               tr_seri(i,k,it)=min(tr_seri(i,k,it),1.e10)
+            enddo
+         enddo
+      enddo
+
+      if (thermiques) then
+        print*,'calcul de leffet des thermiques'
+        nsplit=10
+        DO it=1, nqmax
+c        WRITE(itn,'(i1)') it
+c        CALL minmaxqfi(tr_seri(1,1,it),1.e10,-1.e33,'conv it='//itn)
+c	     print*,'avant dqthermiquesretro'
+c             call dump2d(iim,jjm-1,tr_seri(2,1,1),'TR_SERI      ')
+
+         do isplit=1,nsplit
+c  Abderr 25 11 02
+C Thermiques 
+c	print*,'Avant dans phytrac',avant
+            call dqthermcell(klon,klev,pdtphys/nsplit
+     .       ,fm_therm,entr_therm,zmasse
+     .       ,tr_seri(1:klon,1:klev,it),d_tr,ztra_th)
+
+            do k=1,klev
+               do i=1,klon
+                  d_tr(i,k)=pdtphys*d_tr(i,k)/nsplit
+                  d_tr_th(i,k,it)=d_tr_th(i,k,it)+d_tr(i,k)
+                  tr_seri(i,k,it)=max(tr_seri(i,k,it)+d_tr(i,k),0.)
+               enddo
+            enddo
+          enddo ! nsplit
+          print*,'apres thermiques'
+c             call dump2d(iim,jjm-1,d_tr_th(1,1,1),'d_tr_th      ')
+c            do k=1,klev
+c	print*,'d_tr_th(',k,')=',tr_seri(280,k,1)
+c	   enddo
+
+c        WRITE(itn,'(i1)') it
+c        CALL minmaxqfi(tr_seri(1,1,it),1.e10,-1.e33,'therm it='//itn)
+       ENDDO ! it
+       endif ! Thermiques
+c       print*,'ATTENTION: sdans thermniques'
+      
 c======================================================================
 c   Calcul de l'effet de la couche limite
@@ -576,4 +657,5 @@
             DO i = 1, klon
               tr_seri(i,k,it) = tr_seri(i,k,it) + d_tr_cl(i,k)
+	      d_tr_cli(i,k,it)=d_tr_cl(i,k)
             ENDDO
           ENDDO
@@ -608,4 +690,5 @@
                DO i = 1, klon
                   tr_seri(i,k,it) = tr_seri(i,k,it) + d_tr(i,k)
+		  d_tr_cli(i,k,it)=d_tr_cl(i,k)
                ENDDO
             ENDDO
