Index: LMDZ6/trunk/libf/dyn3d/vlsplt.F
===================================================================
--- LMDZ6/trunk/libf/dyn3d/vlsplt.F	(revision 4005)
+++ LMDZ6/trunk/libf/dyn3d/vlsplt.F	(revision 4007)
@@ -139,5 +139,6 @@
       END
       RECURSIVE SUBROUTINE vlx(q,pente_max,masse,u_m,iq)
-      USE infotrac, ONLY : nqtot,nqfils,nqdesc,iqfils ! CRisi
+      USE infotrac, ONLY : nqtot,nqfils,nqdesc,iqfils, ! CRisi
+     &                     qperemin,masseqmin,ratiomin ! MVals et CRisi
 
 c     Auteurs:   P.Le Van, F.Hourdin, F.Forget 
@@ -456,6 +457,13 @@
           DO ij=iip2,ip1jm
            ! On a besoin de q et masse seulement entre iip2 et ip1jm 
-           masseq(ij,l,iq2)=masse(ij,l,iq)*q(ij,l,iq)
-           Ratio(ij,l,iq2)=q(ij,l,iq2)/q(ij,l,iq)
+           !masseq(ij,l,iq2)=masse(ij,l,iq)*q(ij,l,iq)
+           !Ratio(ij,l,iq2)=q(ij,l,iq2)/q(ij,l,iq)
+           !Mvals: veiller a ce qu'on n'ait pas de denominateur nul
+           masseq(ij,l,iq2)=max(masse(ij,l,iq)*q(ij,l,iq),masseqmin)
+           if (q(ij,l,iq).gt.qperemin) then
+             Ratio(ij,l,iq2)=q(ij,l,iq2)/q(ij,l,iq)
+           else
+             Ratio(ij,l,iq2)=ratiomin
+           endif
           enddo   
          enddo
@@ -473,5 +481,6 @@
       DO l=1,llm
          DO ij=iip2+1,ip1jm
-            new_m=masse(ij,l,iq)+u_m(ij-1,l)-u_m(ij,l)
+            !MVals: veiller a ce qu'on ait pas de denominateur nul
+            new_m=max(masse(ij,l,iq)+u_m(ij-1,l)-u_m(ij,l),masseqmin)
             q(ij,l,iq)=(q(ij,l,iq)*masse(ij,l,iq)+
      &      u_mq(ij-1,l)-u_mq(ij,l))
@@ -489,5 +498,5 @@
       ! On calcule q entre iip2+1,ip1jm -> on fait pareil pour ratio 
       ! puis on boucle en longitude
-      if (nqdesc(iq).gt.0) then  
+      if (nqfils(iq).gt.0) then  
        do ifils=1,nqdesc(iq)
          iq2=iqfils(ifils,iq)  
@@ -510,5 +519,6 @@
       END
       RECURSIVE SUBROUTINE vly(q,pente_max,masse,masse_adv_v,iq)
-      USE infotrac, ONLY : nqtot,nqfils,nqdesc,iqfils ! CRisi
+      USE infotrac, ONLY : nqtot,nqfils,nqdesc,iqfils, ! CRisi
+     &                     qperemin,masseqmin
 c
 c     Auteurs:   P.Le Van, F.Hourdin, F.Forget 
@@ -777,6 +787,13 @@
            ! attention, chaque fils doit avoir son masseq, sinon, le 1er
            ! fils ecrase le masseq de ses freres.
-           masseq(ij,l,iq2)=masse(ij,l,iq)*q(ij,l,iq)
-           Ratio(ij,l,iq2)=q(ij,l,iq2)/q(ij,l,iq)     
+           !masseq(ij,l,iq2)=masse(ij,l,iq)*q(ij,l,iq)
+           !Ratio(ij,l,iq2)=q(ij,l,iq2)/q(ij,l,iq)     
+           !MVals: veiller a ce qu'on n'ait pas de denominateur nul
+           masseq(ij,l,iq2)=max(masse(ij,l,iq)*q(ij,l,iq),masseqmin)
+           if (q(ij,l,iq).gt.qperemin) then
+             Ratio(ij,l,iq2)=q(ij,l,iq2)/q(ij,l,iq)
+           else
+             Ratio(ij,l,iq2)=ratiomin
+           endif 
           enddo   
          enddo
@@ -871,5 +888,6 @@
       END
       RECURSIVE SUBROUTINE vlz(q,pente_max,masse,w,iq)
-      USE infotrac, ONLY : nqtot,nqfils,nqdesc,iqfils ! CRisi 
+      USE infotrac, ONLY : nqtot,nqfils,nqdesc,iqfils, ! CRisi 
+     &                     qperemin,masseqmin,ratiomin ! MVals et CRisi
 c
 c     Auteurs:   P.Le Van, F.Hourdin, F.Forget 
@@ -997,6 +1015,13 @@
          DO l=1,llm
           DO ij=1,ip1jmp1
-           masseq(ij,l,iq2)=masse(ij,l,iq)*q(ij,l,iq)
-           Ratio(ij,l,iq2)=q(ij,l,iq2)/q(ij,l,iq)        
+           !masseq(ij,l,iq2)=masse(ij,l,iq)*q(ij,l,iq)
+           !Ratio(ij,l,iq2)=q(ij,l,iq2)/q(ij,l,iq)        
+           !MVals: veiller a ce qu'on n'ait pas de denominateur nul
+           masseq(ij,l,iq2)=max(masse(ij,l,iq)*q(ij,l,iq),masseqmin)
+           if (q(ij,l,iq).gt.qperemin) then
+             Ratio(ij,l,iq2)=q(ij,l,iq2)/q(ij,l,iq)
+           else
+             Ratio(ij,l,iq2)=ratiomin
+           endif      
           enddo   
          enddo
Index: LMDZ6/trunk/libf/phylmdiso/infotrac_phy.F90
===================================================================
--- LMDZ6/trunk/libf/phylmdiso/infotrac_phy.F90	(revision 4005)
+++ LMDZ6/trunk/libf/phylmdiso/infotrac_phy.F90	(revision 4007)
@@ -42,6 +42,7 @@
 
 ! Name variables
-  CHARACTER(len=20), ALLOCATABLE, DIMENSION(:), SAVE :: tname ! tracer short name for restart and diagnostics
-  CHARACTER(len=23), ALLOCATABLE, DIMENSION(:), SAVE :: ttext ! tracer long name for diagnostics
+  INTEGER,PARAMETER :: tname_lenmax=128 
+  CHARACTER(len=tname_lenmax), ALLOCATABLE, DIMENSION(:), SAVE :: tname ! tracer short name for restart and diagnostics
+  CHARACTER(len=tname_lenmax+3), ALLOCATABLE, DIMENSION(:), SAVE :: ttext ! tracer long name for diagnostics
 !$OMP THREADPRIVATE(tname,ttext)
 
@@ -138,11 +139,11 @@
     INTEGER,INTENT(IN) :: id_BIN01_strat_
 #endif
-    CHARACTER(len=20),INTENT(IN) :: tname_(nqtot_) ! tracer short name for restart and diagnostics
-    CHARACTER(len=23),INTENT(IN) :: ttext_(nqtot_) ! tracer long name for diagnostics
-    CHARACTER(len=4),INTENT(IN) :: type_trac_
+    CHARACTER(len=*),INTENT(IN) :: tname_(nqtot_) ! tracer short name for restart and diagnostics
+    CHARACTER(len=*),INTENT(IN) :: ttext_(nqtot_) ! tracer long name for diagnostics
+    CHARACTER(len=*),INTENT(IN) :: type_trac_
     INTEGER,INTENT(IN) :: niadv_ (nqtot_) ! equivalent dyn / physique
     INTEGER,INTENT(IN) :: conv_flg_(nbtr_)
     INTEGER,INTENT(IN) :: pbl_flg_(nbtr_)
-    CHARACTER(len=8),INTENT(IN) :: solsym_(nbtr_)
+    CHARACTER(len=*),INTENT(IN) :: solsym_(nbtr_)
     ! Isotopes:
     INTEGER,INTENT(IN) :: nqfils_(nqtot_)
