Index: LMDZ4/trunk/libf/phylmd/thermcell_flux2.F90
===================================================================
--- LMDZ4/trunk/libf/phylmd/thermcell_flux2.F90	(revision 1146)
+++ LMDZ4/trunk/libf/phylmd/thermcell_flux2.F90	(revision 1403)
@@ -1,2 +1,5 @@
+!
+! $Id$
+!
       SUBROUTINE thermcell_flux2(ngrid,klev,ptimestep,masse, &
      &       lalim,lmax,alim_star,  &
@@ -38,5 +41,5 @@
       REAL zfm
 
-      integer igout
+      integer igout,lout
       integer lev_out
       integer lunout1
@@ -46,4 +49,9 @@
       REAL fomass_max,alphamax
       save fomass_max,alphamax
+
+      logical check_debug,labort_gcm
+
+      character (len=20) :: modname='thermcell_flux2'
+      character (len=80) :: abort_message
 
       fomass_max=0.5
@@ -78,6 +86,10 @@
 ! Verification de la nullite des entrainement et detrainement au dessus
 ! de lmax(ig)
-!-------------------------------------------------------------------------
-
+! Active uniquement si check_debug=.true. ou prt_level>=10
+!-------------------------------------------------------------------------
+
+      check_debug=.false..or.prt_level>=10
+
+      if (check_debug) then
       do l=1,klev
          do ig=1,ngrid
@@ -88,5 +100,4 @@
                     print*,'alim_star(ig,l)',alim_star(ig,l)
                     print*,'detr_star(ig,l)',detr_star(ig,l)
-!                   stop
                endif
             else
@@ -96,9 +107,12 @@
                     print*,'alim_star(ig,l)',alim_star(ig,l)
                     print*,'detr_star(ig,l)',detr_star(ig,l)
-                    stop
+                    abort_message = ''
+                    labort_gcm=.true.
+                    CALL abort_gcm (modname,abort_message,1)
                endif
             endif
          enddo
       enddo
+      endif
 
 !-------------------------------------------------------------------------
@@ -253,9 +267,23 @@
 
 !     do l=1,klev
+
+
+
+         labort_gcm=.false.
          do ig=1,ngrid
             if (entr(ig,l)<0.) then
-               print*,'N1 ig,l,entr',ig,l,entr(ig,l)
-               stop 'entr negatif'
-            endif
+               labort_gcm=.true.
+               igout=ig
+               lout=l
+            endif
+         enddo
+
+         if (labort_gcm) then
+            print*,'N1 ig,l,entr',igout,lout,entr(igout,lout)
+            abort_message = 'entr negatif'
+            CALL abort_gcm (modname,abort_message,1)
+         endif
+
+         do ig=1,ngrid
             if (detr(ig,l).gt.fm(ig,l)) then
                ncorecfm6=ncorecfm6+1
@@ -280,12 +308,23 @@
                entr(ig,l)=0.
             endif
-
+         enddo
+
+         labort_gcm=.false.
+         do ig=1,ngrid
             if (entr(ig,l).lt.0.) then
-               print*,'ig,l,lmax(ig)',ig,l,lmax(ig)
-               print*,'entr(ig,l)',entr(ig,l)
-               print*,'fm(ig,l)',fm(ig,l)
-               stop 'probleme dans thermcell flux'
-            endif
-         enddo
+               labort_gcm=.true.
+               igout=ig
+            endif
+         enddo
+         if (labort_gcm) then
+            ig=igout
+            print*,'ig,l,lmax(ig)',ig,l,lmax(ig)
+            print*,'entr(ig,l)',entr(ig,l)
+            print*,'fm(ig,l)',fm(ig,l)
+            abort_message = 'probleme dans thermcell flux'
+            CALL abort_gcm (modname,abort_message,1)
+         endif
+
+
 !     enddo
       endif
@@ -305,14 +344,23 @@
                detr(ig,l)=detr(ig,l)+fm(ig,l+1)
                fm(ig,l+1)=0.
-!              print*,'fm2<0',l+1,lmax(ig)
                ncorecfm2=ncorecfm2+1
             endif
+         enddo
+
+         labort_gcm=.false.
+         do ig=1,ngrid
             if (detr(ig,l).lt.0.) then
+               labort_gcm=.true.
+               igout=ig
+            endif
+        enddo
+        if (labort_gcm) then
+               ig=igout
                print*,'cas 2 : ig,l,lmax(ig)',ig,l,lmax(ig)
                print*,'detr(ig,l)',detr(ig,l)
                print*,'fm(ig,l)',fm(ig,l)
-               stop 'probleme dans thermcell flux'
-            endif
-        enddo
+               abort_message = 'probleme dans thermcell flux'
+               CALL abort_gcm (modname,abort_message,1)
+        endif
 !    enddo
 
@@ -379,4 +427,5 @@
 
       if (1.eq.1) then
+      labort_gcm=.false.
       do l=1,klev-1
          do ig=1,ngrid
@@ -399,4 +448,20 @@
                    else
                       if(l.ge.lmax(ig).and.0.eq.1) then
+                         igout=ig
+                         lout=l
+                         labort_gcm=.true.
+                      endif
+                      entr(ig,l+1)=entr(ig,l+1)-ddd
+                      detr(ig,l)=0.
+                      fm(ig,l+1)=fm(ig,l)+entr(ig,l)
+                      detr(ig,l)=0.
+                   endif
+                endif
+            endif
+         enddo
+      enddo
+      if (labort_gcm) then
+                         ig=igout
+                         l=lout
                          print*,'ig,l',ig,l
                          print*,'eee0',eee0
@@ -413,15 +478,7 @@
                          print*,'fm(ig,l+1)',fm(ig,l+1)
                          print*,'fm(ig,l)',fm(ig,l)
-                         stop 'probleme dans thermcell_flux'
-                      endif
-                      entr(ig,l+1)=entr(ig,l+1)-ddd
-                      detr(ig,l)=0.
-                      fm(ig,l+1)=fm(ig,l)+entr(ig,l)
-                      detr(ig,l)=0.
-                   endif
-                endif
-            endif
-         enddo
-      enddo
+                         abort_message = 'probleme dans thermcell_flux'
+                         CALL abort_gcm (modname,abort_message,1)
+      endif
       endif
 !                  
