Index: trunk/LMDZ.GENERIC/libf/phystd/thermcell_closure.F90
===================================================================
--- trunk/LMDZ.GENERIC/libf/phystd/thermcell_closure.F90	(revision 2064)
+++ trunk/LMDZ.GENERIC/libf/phystd/thermcell_closure.F90	(revision 2127)
@@ -2,10 +2,9 @@
 !
 !
-      SUBROUTINE thermcell_closure(ngrid,nlay,ptimestep,rho,zlev,             &
-      &                            lalim,alim_star,f_star,                    &
-      &                            zmax,wmax,f,lev_out)
+SUBROUTINE thermcell_closure(ngrid,nlay,ptimestep,rho,zlev,                   &
+                             lmax,alim_star,zmax,wmax,f)
       
-!==============================================================================
-!thermcell_closure: fermeture, determination de f
+!===============================================================================
+!  Purpose: fermeture, determination de f
 !
 ! Modification 7 septembre 2009
@@ -15,5 +14,5 @@
 ! l'idee etant que le choix se fasse a l'appel de thermcell_closure
 ! 3. Vectorisation en mettant les boucles en l l'exterieur avec des if
-!==============================================================================
+!===============================================================================
       
       USE thermcell_mod
@@ -22,32 +21,30 @@
       
       
-!=============================================================================
+!===============================================================================
 ! Declaration
-!=============================================================================
+!===============================================================================
       
-!      inputs:
-!      -------
+!     Inputs:
+!     -------
       
-      INTEGER ngrid,nlay
-      INTEGER lalim(ngrid)
-      INTEGER lev_out                           ! niveau pour les print
+      INTEGER ngrid, nlay
+      INTEGER lmax(ngrid)
       
-      REAL alim_star(ngrid,nlay)
-      REAL f_star(ngrid,nlay+1)
+      REAL ptimestep
       REAL rho(ngrid,nlay)
       REAL zlev(ngrid,nlay)
+      REAL alim_star(ngrid,nlay)
       REAL zmax(ngrid)
       REAL wmax(ngrid)
-      REAL ptimestep
       
-!      outputs:
-!      --------
+!     Outputs:
+!     --------
       
       REAL f(ngrid)
       
-!      local:
-!      ------
+!     Local:
+!     ------
       
-      INTEGER ig,k 
+      INTEGER ig, l 
       INTEGER llmax
       
@@ -56,7 +53,7 @@
       REAL zdenom(ngrid)
       
-!==============================================================================
+!===============================================================================
 ! Initialization
-!==============================================================================
+!===============================================================================
       
       alim_star2(:) = 0.
@@ -67,28 +64,28 @@
       llmax = 1
       
-!==============================================================================
+!===============================================================================
 ! Closure
-!==============================================================================
+!===============================================================================
       
-!------------------------------------------------------------------------------
-! Indice vertical max (max de lalim) atteint par les thermiques sur le domaine
-!------------------------------------------------------------------------------
+!-------------------------------------------------------------------------------
+! Indice vertical max atteint par les thermiques sur le domaine
+!-------------------------------------------------------------------------------
       
       DO ig=1,ngrid
-         IF (lalim(ig)>llmax) THEN
-            llmax = lalim(ig)
+         IF (lmax(ig).GT.llmax) THEN
+            llmax = lmax(ig)
          ENDIF
       ENDDO
       
-!------------------------------------------------------------------------------
+!-------------------------------------------------------------------------------
 ! Calcul des integrales sur la verticale de alim_star et de alim_star^2/(rho dz)
-!------------------------------------------------------------------------------
+!-------------------------------------------------------------------------------
       
-      DO k=1,llmax-1
+      DO l=1,llmax-1
          DO ig=1,ngrid
-            IF (k<lalim(ig)) THEN
-               alim_star2(ig) = alim_star2(ig) + alim_star(ig,k)**2           &
-               &              / (rho(ig,k) * (zlev(ig,k+1) - zlev(ig,k)))
-               alim_star_tot(ig) = alim_star_tot(ig) + alim_star(ig,k)
+            IF (l < lmax(ig)) THEN
+               alim_star2(ig) = alim_star2(ig) + alim_star(ig,l)**2           &
+               &              / (rho(ig,l) * (zlev(ig,l+1) - zlev(ig,l)))
+               alim_star_tot(ig) = alim_star_tot(ig) + alim_star(ig,l)
             ENDIF
          ENDDO
@@ -96,10 +93,13 @@
       
       DO ig=1,ngrid
-         IF (alim_star2(ig)>1.e-10) THEN
+         IF (alim_star2(ig).GT.0.) THEN
             f(ig) = wmax(ig) * alim_star_tot(ig)                              &
-            &     / (max(500.,zmax(ig)) * r_aspect_thermals * alim_star2(ig))
+            &     / (max(1.,zmax(ig)) * r_aspect_thermals * alim_star2(ig))
+         ELSE
+            f(ig) = 0.
          ENDIF
       ENDDO
       
+      
 RETURN
 END
