Index: LMDZ4/branches/LMDZ4-dev/libf/bibio/initdynav.F
===================================================================
--- LMDZ4/branches/LMDZ4-dev/libf/bibio/initdynav.F	(revision 1113)
+++ LMDZ4/branches/LMDZ4-dev/libf/bibio/initdynav.F	(revision 1114)
@@ -5,7 +5,8 @@
 c
       subroutine initdynav(infile,day0,anne0,tstep,t_ops,t_wrt
-     .                     ,nq,fileid)
+     .                     ,fileid)
 
        USE IOIPSL
+       USE infotrac, ONLY : nqtot, ttext
 
       implicit none
@@ -28,5 +29,4 @@
 C      t_ops: frequence de l'operation pour IOIPSL
 C      t_wrt: frequence d'ecriture sur le fichier
-C      nq: nombre de traceurs
 C
 C   Sortie:
@@ -48,5 +48,4 @@
 #include "description.h"
 #include "serre.h"
-#include "advtrac.h"
 
 C   Arguments
@@ -56,5 +55,4 @@
       real tstep, t_ops, t_wrt
       integer fileid
-      integer nq
       integer thoriid, zvertiid
 
@@ -136,5 +134,5 @@
 C  Traceurs
 C
-        DO iq=1,nq
+        DO iq=1,nqtot
           call histdef(fileid, ttext(iq), ttext(iq), '-',
      .             iip1, jjp1, thoriid, llm, 1, llm, zvertiid,
Index: LMDZ4/branches/LMDZ4-dev/libf/bibio/initfluxsto.F
===================================================================
--- LMDZ4/branches/LMDZ4-dev/libf/bibio/initfluxsto.F	(revision 1113)
+++ LMDZ4/branches/LMDZ4-dev/libf/bibio/initfluxsto.F	(revision 1114)
@@ -3,5 +3,5 @@
 !
       subroutine initfluxsto
-     .  (infile,tstep,t_ops,t_wrt,nq,
+     .  (infile,tstep,t_ops,t_wrt,
      .                    fileid,filevid,filedid)
 
@@ -27,5 +27,4 @@
 C      t_ops: frequence de l'operation pour IOIPSL
 C      t_wrt: frequence d'ecriture sur le fichier
-C      nq: nombre de traceurs
 C
 C   Sortie:
@@ -55,5 +54,5 @@
       real tstep, t_ops, t_wrt
       integer fileid, filevid,filedid
-      integer nq,ndex(1)
+      integer ndex(1)
       real nivd(1)
 
Index: LMDZ4/branches/LMDZ4-dev/libf/bibio/inithist.F
===================================================================
--- LMDZ4/branches/LMDZ4-dev/libf/bibio/inithist.F	(revision 1113)
+++ LMDZ4/branches/LMDZ4-dev/libf/bibio/inithist.F	(revision 1114)
@@ -2,8 +2,9 @@
 ! $Header$
 !
-      subroutine inithist(infile,day0,anne0,tstep,t_ops,t_wrt,nq,fileid,
+      subroutine inithist(infile,day0,anne0,tstep,t_ops,t_wrt,fileid,
      .                    filevid)
 
        USE IOIPSL
+       USE infotrac, ONLY : nqtot, ttext
 
       implicit none
@@ -47,5 +48,4 @@
 #include "description.h"
 #include "serre.h"
-#include "advtrac.h"
 
 C   Arguments
@@ -55,5 +55,4 @@
       real tstep, t_ops, t_wrt
       integer fileid, filevid
-      integer nq
 
 C   Variables locales
@@ -154,5 +153,5 @@
 C  Traceurs
 C
-        DO iq=1,nq
+        DO iq=1,nqtot
           call histdef(fileid, ttext(iq),  ttext(iq), '-',
      .             iip1, jjp1, thoriid, llm, 1, llm, zvertiid,
Index: LMDZ4/branches/LMDZ4-dev/libf/bibio/writedynav.F
===================================================================
--- LMDZ4/branches/LMDZ4-dev/libf/bibio/writedynav.F	(revision 1113)
+++ LMDZ4/branches/LMDZ4-dev/libf/bibio/writedynav.F	(revision 1114)
@@ -2,8 +2,9 @@
 ! $Header$
 !
-      subroutine writedynav( histid, nq, time, vcov, 
+      subroutine writedynav( histid, time, vcov, 
      ,                          ucov,teta,ppk,phi,q,masse,ps,phis)
 
       USE ioipsl
+      USE infotrac, ONLY : nqtot, ttext
       implicit none
 
@@ -15,5 +16,4 @@
 C   Entree:
 C      histid: ID du fichier histoire
-C      nqmx: nombre maxi de traceurs
 C      time: temps de l'ecriture
 C      vcov: vents v covariants
@@ -45,5 +45,4 @@
 #include "description.h"
 #include "serre.h"
-#include "advtrac.h"
 
 C
@@ -51,10 +50,10 @@
 C
 
-      INTEGER histid, nq
+      INTEGER histid
       REAL vcov(ip1jm,llm),ucov(ip1jmp1,llm) 
       REAL teta(ip1jmp1*llm),phi(ip1jmp1,llm),ppk(ip1jmp1*llm)                  
       REAL ps(ip1jmp1),masse(ip1jmp1,llm)                   
       REAL phis(ip1jmp1)                  
-      REAL q(ip1jmp1,llm,nq)
+      REAL q(ip1jmp1,llm,nqtot)
       integer time
 
@@ -119,5 +118,5 @@
 C  Traceurs
 C
-        DO iq=1,nq
+        DO iq=1,nqtot
           call histwrite(histid, ttext(iq), itau_w, q(:,:,iq), 
      .                   iip1*jjp1*llm, ndex3d)
Index: LMDZ4/branches/LMDZ4-dev/libf/bibio/writehist.F
===================================================================
--- LMDZ4/branches/LMDZ4-dev/libf/bibio/writehist.F	(revision 1113)
+++ LMDZ4/branches/LMDZ4-dev/libf/bibio/writehist.F	(revision 1114)
@@ -2,8 +2,9 @@
 ! $Header$
 !
-      subroutine writehist( histid, histvid, nq, time, vcov, 
+      subroutine writehist( histid, histvid, time, vcov, 
      ,                          ucov,teta,phi,q,masse,ps,phis)
 
       USE ioipsl
+      USE infotrac, ONLY : nqtot, ttext
       implicit none
 
@@ -16,5 +17,4 @@
 C      histid: ID du fichier histoire
 C      histvid:ID du fichier histoire pour les vents V (appele a disparaitre)
-C      nqmx: nombre maxi de traceurs
 C      time: temps de l'ecriture
 C      vcov: vents v covariants
@@ -46,5 +46,4 @@
 #include "description.h"
 #include "serre.h"
-#include "advtrac.h"
 
 C
@@ -52,10 +51,10 @@
 C
 
-      INTEGER histid, nq, histvid
+      INTEGER histid, histvid
       REAL vcov(ip1jm,llm),ucov(ip1jmp1,llm) 
       REAL teta(ip1jmp1,llm),phi(ip1jmp1,llm)                   
       REAL ps(ip1jmp1),masse(ip1jmp1,llm)                   
       REAL phis(ip1jmp1)                  
-      REAL q(ip1jmp1,llm,nq)
+      REAL q(ip1jmp1,llm,nqtot)
       integer time
 
@@ -102,5 +101,5 @@
 C  Traceurs
 C
-        DO iq=1,nq
+        DO iq=1,nqtot
           call histwrite(histid, ttext(iq), itau_w, q(:,:,iq), 
      .                   iip1*jjp1*llm, ndexu)
Index: LMDZ4/branches/LMDZ4-dev/libf/dyn3d/addfi.F
===================================================================
--- LMDZ4/branches/LMDZ4-dev/libf/dyn3d/addfi.F	(revision 1113)
+++ LMDZ4/branches/LMDZ4-dev/libf/dyn3d/addfi.F	(revision 1114)
@@ -2,7 +2,9 @@
 ! $Header$
 !
-      SUBROUTINE addfi(nq, pdt, leapf, forward,
+      SUBROUTINE addfi(pdt, leapf, forward,
      S          pucov, pvcov, pteta, pq   , pps ,
      S          pdufi, pdvfi, pdhfi,pdqfi, pdpfi  )
+
+      USE infotrac, ONLY : nqtot
       IMPLICIT NONE
 c
@@ -52,13 +54,11 @@
 c    -----------
 c
-      INTEGER nq
-
       REAL pdt
 c
       REAL pvcov(ip1jm,llm),pucov(ip1jmp1,llm)
-      REAL pteta(ip1jmp1,llm),pq(ip1jmp1,llm,nq),pps(ip1jmp1)
+      REAL pteta(ip1jmp1,llm),pq(ip1jmp1,llm,nqtot),pps(ip1jmp1)
 c
       REAL pdvfi(ip1jm,llm),pdufi(ip1jmp1,llm)
-      REAL pdqfi(ip1jmp1,llm,nq),pdhfi(ip1jmp1,llm),pdpfi(ip1jmp1)
+      REAL pdqfi(ip1jmp1,llm,nqtot),pdhfi(ip1jmp1,llm),pdpfi(ip1jmp1)
 c
       LOGICAL leapf,forward
@@ -125,5 +125,5 @@
       ENDDO
 
-      DO iq = 3, nq
+      DO iq = 3, nqtot
          DO k = 1,llm
             DO j = 1,ip1jmp1
@@ -148,5 +148,5 @@
 
 
-      DO iq = 1, nq
+      DO iq = 1, nqtot
         DO  k    = 1, llm
           DO  ij   = 1, iim
Index: LMDZ4/branches/LMDZ4-dev/libf/dyn3d/advtrac.F
===================================================================
--- LMDZ4/branches/LMDZ4-dev/libf/dyn3d/advtrac.F	(revision 1113)
+++ LMDZ4/branches/LMDZ4-dev/libf/dyn3d/advtrac.F	(revision 1114)
@@ -15,4 +15,6 @@
 c            M.A Filiberti (04/2002)
 c
+      USE infotrac
+
       IMPLICIT NONE
 c
@@ -28,5 +30,4 @@
 #include "ener.h"
 #include "description.h"
-#include "advtrac.h"
 
 c-------------------------------------------------------------------
@@ -39,5 +40,5 @@
       INTEGER iapptrac
       REAL pbaru(ip1jmp1,llm),pbarv(ip1jm,llm)
-      REAL q(ip1jmp1,llm,nqmx),masse(ip1jmp1,llm)
+      REAL q(ip1jmp1,llm,nqtot),masse(ip1jmp1,llm)
       REAL p( ip1jmp1,llmp1 ),teta(ip1jmp1,llm)
       REAL pk(ip1jmp1,llm)
@@ -52,7 +53,4 @@
       REAL pbarug(ip1jmp1,llm),pbarvg(ip1jm,llm),wg(ip1jmp1,llm) 
       REAL (kind=kind(1.d0)) :: t_initial, t_final, tps_cpu
-      real cpuadv(nqmx)
-      common/cpuadv/cpuadv
-
       INTEGER iadvtr
       INTEGER ij,l,iq,iiq
@@ -69,5 +67,5 @@
       REAL psppm(iim,jjp1) ! pression  au sol
       REAL unatppm(iim,jjp1,llm),vnatppm(iim,jjp1,llm)
-      REAL qppm(iim*jjp1,llm,nqmx)
+      REAL qppm(iim*jjp1,llm,nqtot)
       REAL fluxwppm(iim,jjp1,llm)
       REAL apppm(llmp1), bpppm(llmp1)
@@ -153,5 +151,5 @@
 c     Appel des sous programmes d'advection
 c-----------------------------------------------------------
-      do iq=1,nqmx
+      do iq=1,nqtot
 c        call clock(t_initial)
         if(iadv(iq) == 0) cycle 
Index: LMDZ4/branches/LMDZ4-dev/libf/dyn3d/advtrac.h
===================================================================
--- LMDZ4/branches/LMDZ4-dev/libf/dyn3d/advtrac.h	(revision 1113)
+++ 	(revision )
@@ -1,34 +1,0 @@
-!
-! $Header$
-!
-!-----------------------------------------------------------------------
-! INCLUDE 'advtrac.h'
-!
-!
-!  ATTENTION!!!!: ce fichier include est compatible format fixe/format libre
-!                 veillez à n'utiliser que des ! pour les commentaires
-!                 et à bien positionner les & des lignes de continuation 
-!                 (les placer en colonne 6 et en colonne 73)
-!
-
-      COMMON/advtr/iadv, hadv, vadv, tnom, tname, ttext, niadv,         &
-     &   nbtrac, nprath, mmt_adj, hadv_flg, vadv_flg, conv_flg,         &
-     &   pbl_flg, tracnam
-      INTEGER iadv(nqmx) ! indice schema de transport 
-      INTEGER hadv(nqmx) ! indice schema transport horizontal 
-      INTEGER vadv(nqmx) ! indice schema transport vertical 
-      INTEGER niadv(nqmx) ! equivalent dyn / physique
-      character (len=8) :: tnom(nqmx) ! nom court du traceur
-      character (len=10) :: tname(nqmx) ! nom du traceur pour restart
-      character (len=13) :: ttext(nqmx) ! nom long du traceur pour sorties
-
-
-      integer nbtrac
-      integer nprath
-      real    mmt_adj(iim+1,jjm+1,llm, 1) 
-      integer hadv_flg(nqmx)
-      integer vadv_flg(nqmx)
-      integer conv_flg(nqmx-2) 
-      integer pbl_flg(nqmx-2)
-      character (len=8) :: tracnam(nqmx-2) 
-!-----------------------------------------------------------------------
Index: LMDZ4/branches/LMDZ4-dev/libf/dyn3d/caladvtrac.F
===================================================================
--- LMDZ4/branches/LMDZ4-dev/libf/dyn3d/caladvtrac.F	(revision 1113)
+++ LMDZ4/branches/LMDZ4-dev/libf/dyn3d/caladvtrac.F	(revision 1114)
@@ -8,4 +8,5 @@
      *                   flxw, pk)
 c
+      USE infotrac
       IMPLICIT NONE
 c
@@ -24,10 +25,9 @@
 #include "comconst.h"
 #include "control.h"
-#include "advtrac.h"
 
 c   Arguments:
 c   ----------
       REAL pbaru( ip1jmp1,llm ),pbarv( ip1jm,llm),masse(ip1jmp1,llm)
-      REAL p( ip1jmp1,llmp1),q( ip1jmp1,llm,nqmx),dq( ip1jmp1,llm,2 )
+      REAL p( ip1jmp1,llmp1),q( ip1jmp1,llm,nqtot),dq( ip1jmp1,llm,2 )
       REAL teta( ip1jmp1,llm),pk( ip1jmp1,llm)
       REAL               :: flxw(ip1jmp1,llm)
Index: LMDZ4/branches/LMDZ4-dev/libf/dyn3d/calfis.F
===================================================================
--- LMDZ4/branches/LMDZ4-dev/libf/dyn3d/calfis.F	(revision 1113)
+++ LMDZ4/branches/LMDZ4-dev/libf/dyn3d/calfis.F	(revision 1114)
@@ -4,6 +4,5 @@
 C
 C
-      SUBROUTINE calfis(nq,
-     $                  lafin,
+      SUBROUTINE calfis(lafin,
      $                  rdayvrai,
      $                  heure,
@@ -32,4 +31,5 @@
 c    Auteur :  P. Le Van, F. Hourdin 
 c   .........
+      USE infotrac
 
       IMPLICIT NONE
@@ -90,7 +90,6 @@
 #include "paramet.h"
 #include "temps.h"
-#include "advtrac.h"
-
-      INTEGER ngridmx,nq
+
+      INTEGER ngridmx
       PARAMETER( ngridmx = 2+(jjm-1)*iim - 1/jjm   )
 
@@ -109,5 +108,5 @@
       REAL pteta(iip1,jjp1,llm)
       REAL pmasse(iip1,jjp1,llm)
-      REAL pq(iip1,jjp1,llm,nqmx)
+      REAL pq(iip1,jjp1,llm,nqtot)
       REAL pphis(iip1,jjp1)
       REAL pphi(iip1,jjp1,llm)
@@ -116,5 +115,5 @@
       REAL pducov(iip1,jjp1,llm)
       REAL pdteta(iip1,jjp1,llm)
-      REAL pdq(iip1,jjp1,llm,nqmx)
+      REAL pdq(iip1,jjp1,llm,nqtot)
 c
       REAL pps(iip1,jjp1)
@@ -125,5 +124,5 @@
       REAL pdufi(iip1,jjp1,llm)
       REAL pdhfi(iip1,jjp1,llm)
-      REAL pdqfi(iip1,jjp1,llm,nqmx)
+      REAL pdqfi(iip1,jjp1,llm,nqtot)
       REAL pdpsfi(iip1,jjp1)
 
@@ -142,5 +141,5 @@
 c
       REAL zufi(ngridmx,llm), zvfi(ngridmx,llm)
-      REAL ztfi(ngridmx,llm),zqfi(ngridmx,llm,nqmx)
+      REAL ztfi(ngridmx,llm),zqfi(ngridmx,llm,nqtot)
 c
       REAL pcvgu(ngridmx,llm), pcvgv(ngridmx,llm)
@@ -148,5 +147,5 @@
 c
       REAL zdufi(ngridmx,llm),zdvfi(ngridmx,llm)
-      REAL zdtfi(ngridmx,llm),zdqfi(ngridmx,llm,nqmx)
+      REAL zdtfi(ngridmx,llm),zdqfi(ngridmx,llm,nqtot)
       REAL zdpsrf(ngridmx)
 c
@@ -275,5 +274,5 @@
 c   ---------------
 c
-      DO iq=1,nq
+      DO iq=1,nqtot
           iiq=niadv(iq) 
          DO l=1,llm
@@ -444,5 +443,4 @@
       CALL physiq (ngridmx,
      .             llm,
-     .             nq,
      .             debut,
      .             lafin,
@@ -505,5 +503,5 @@
 c   ---------------------
 
-      DO iq=1,nqmx
+      DO iq=1,nqtot
          DO l=1,llm
             DO i=1,iip1
@@ -526,5 +524,5 @@
       pdqfi=0.
 C
-      DO iq=1,nq
+      DO iq=1,nqtot
          iiq=niadv(iq)
          DO l=1,llm
Index: LMDZ4/branches/LMDZ4-dev/libf/dyn3d/create_etat0_limit.F
===================================================================
--- LMDZ4/branches/LMDZ4-dev/libf/dyn3d/create_etat0_limit.F	(revision 1113)
+++ LMDZ4/branches/LMDZ4-dev/libf/dyn3d/create_etat0_limit.F	(revision 1114)
@@ -5,5 +5,5 @@
        USE dimphy
        USE comgeomphy
-
+       USE infotrac
 c
 c
@@ -28,29 +28,18 @@
 #include "paramet.h"
 #include "indicesol.h"
-#include "advtrac.h"
 #include  "control.h"
       REAL :: masque(iip1,jjp1)
 !      REAL :: pctsrf(iim*(jjm-1)+2, nbsrf)
 
-c initialisation traceurs
-      hadv_flg(:) = 0.
-      vadv_flg(:) = 0.
-      conv_flg(:) = 0.
-      pbl_flg(:)  = 0. 
-      tracnam(:)  = '        ' 
-      nprath = 1
-      nbtrac = 0
-      mmt_adj(:,:,:,:) = 1
-
       IF (config_inca /= 'none') THEN
 #ifdef INCA
          call init_const_lmdz(
-     $        nbtrac,anneeref,dayref,
+     $        nbtr,anneeref,dayref,
      $        iphysiq, day_step,nday)
 #endif
-         print *, 'nbtrac =' , nbtrac 
+         print *, 'nbtr =' , nbtr 
       END IF
 
-      CALL Init_Phys_lmdz(iim,jjp1,llm,nqmx-2,1,(jjm-1)*iim+2)
+      CALL Init_Phys_lmdz(iim,jjp1,llm,1,(jjm-1)*iim+2)
       call InitComgeomphy
 
Index: LMDZ4/branches/LMDZ4-dev/libf/dyn3d/dynetat0.F
===================================================================
--- LMDZ4/branches/LMDZ4-dev/libf/dyn3d/dynetat0.F	(revision 1113)
+++ LMDZ4/branches/LMDZ4-dev/libf/dyn3d/dynetat0.F	(revision 1114)
@@ -2,6 +2,8 @@
 ! $Header$
 !
-      SUBROUTINE dynetat0(fichnom,nq,vcov,ucov,
+      SUBROUTINE dynetat0(fichnom,vcov,ucov,
      .                    teta,q,masse,ps,phis,time)
+
+      USE infotrac
       IMPLICIT NONE
 
@@ -32,5 +34,4 @@
 #include "serre.h"
 #include "logic.h"
-#include "advtrac.h"
 
 c   Arguments:
@@ -38,7 +39,6 @@
 
       CHARACTER*(*) fichnom
-      INTEGER nq
       REAL vcov(ip1jm,llm),ucov(ip1jmp1,llm),teta(ip1jmp1,llm)
-      REAL q(ip1jmp1,llm,nq),masse(ip1jmp1,llm)
+      REAL q(ip1jmp1,llm,nqtot),masse(ip1jmp1,llm)
       REAL ps(ip1jmp1),phis(ip1jmp1)
 
@@ -315,6 +315,6 @@
 
 
-      IF(nq.GE.1) THEN
-      DO iq=1,nq
+      IF(nqtot.GE.1) THEN
+      DO iq=1,nqtot
         ierr =  NF_INQ_VARID (nid, tname(iq), nvarid)
         IF (ierr .NE. NF_NOERR) THEN
Index: LMDZ4/branches/LMDZ4-dev/libf/dyn3d/dynredem.F
===================================================================
--- LMDZ4/branches/LMDZ4-dev/libf/dyn3d/dynredem.F	(revision 1113)
+++ LMDZ4/branches/LMDZ4-dev/libf/dyn3d/dynredem.F	(revision 1114)
@@ -3,6 +3,7 @@
 !
 c
-      SUBROUTINE dynredem0(fichnom,iday_end,phis,nq)
+      SUBROUTINE dynredem0(fichnom,iday_end,phis)
       USE IOIPSL
+      USE infotrac
       IMPLICIT NONE
 c=======================================================================
@@ -22,5 +23,4 @@
 #include "description.h"
 #include "serre.h"
-#include "advtrac.h"
 
 c   Arguments:
@@ -29,5 +29,4 @@
       REAL phis(ip1jmp1)
       CHARACTER*(*) fichnom
-      INTEGER nq
 
 c   Local:
@@ -458,6 +457,6 @@
       dims4(3) = idim_s
       dims4(4) = idim_tim
-      IF(nq.GE.1) THEN
-      DO iq=1,nq
+      IF(nqtot.GE.1) THEN
+      DO iq=1,nqtot
 cIM 220306 BEG
 #ifdef NC_DOUBLE
@@ -508,5 +507,6 @@
       END
       SUBROUTINE dynredem1(fichnom,time,
-     .                     vcov,ucov,teta,q,nq,masse,ps)
+     .                     vcov,ucov,teta,q,masse,ps)
+      USE infotrac
       IMPLICIT NONE
 c=================================================================
@@ -519,13 +519,12 @@
 #include "comvert.h"
 #include "comgeom.h"
-#include "advtrac.h"
 #include "temps.h"
 #include "control.h"
 
-      INTEGER nq, l
+      INTEGER l
       REAL vcov(ip1jm,llm),ucov(ip1jmp1,llm) 
       REAL teta(ip1jmp1,llm)                   
       REAL ps(ip1jmp1),masse(ip1jmp1,llm)                   
-      REAL q(ip1jmp1,llm,nq)
+      REAL q(ip1jmp1,llm,nqtot)
       CHARACTER*(*) fichnom
      
@@ -633,6 +632,6 @@
       END IF
 
-      IF(nq.GE.1) THEN
-      do iq=1,nq 
+      IF(nqtot.GE.1) THEN
+      do iq=1,nqtot 
 
          IF (config_inca == 'none') THEN
Index: LMDZ4/branches/LMDZ4-dev/libf/dyn3d/etat0_netcdf.F
===================================================================
--- LMDZ4/branches/LMDZ4-dev/libf/dyn3d/etat0_netcdf.F	(revision 1113)
+++ LMDZ4/branches/LMDZ4-dev/libf/dyn3d/etat0_netcdf.F	(revision 1114)
@@ -9,4 +9,5 @@
       USE ioipsl
       USE dimphy
+      USE infotrac
       USE fonte_neige_mod
       USE pbl_surface_mod
@@ -33,11 +34,12 @@
       LOGICAL interbar
       REAL :: latfi(klon), lonfi(klon)
-      REAL :: orog(iip1,jjp1), rugo(iip1,jjp1), masque(iip1,jjp1),
-     . psol(iip1, jjp1), phis(iip1, jjp1)
+      REAL :: orog(iip1,jjp1), rugo(iip1,jjp1), masque(iip1,jjp1)
+      REAL :: psol(iip1, jjp1), phis(iip1, jjp1)
       REAL :: p3d(iip1, jjp1, llm+1)
       REAL :: uvent(iip1, jjp1, llm)
       REAL :: vvent(iip1, jjm, llm)
       REAL :: t3d(iip1, jjp1, llm), tpot(iip1, jjp1, llm)
-      REAL :: q3d(iip1, jjp1, llm,nqmx), qsat(iip1, jjp1, llm)
+      REAL, ALLOCATABLE, DIMENSION(:,:,:,:) :: q3d
+      REAL :: qsat(iip1, jjp1, llm)
       REAL :: tsol(klon), qsol(klon), sn(klon)
       REAL :: tsolsrf(klon,nbsrf), qsolsrf(klon,nbsrf),snsrf(klon,nbsrf) 
@@ -64,5 +66,4 @@
       !
       INTEGER :: i,j, ig, l, ji,ii1,ii2
-      INTEGER :: nq
       REAL :: xpi
       !
@@ -165,7 +166,14 @@
       print*,'dtvr',dtvr
 
+
+
       CALL inicons0()
       CALL inigeom()
-      !
+
+! Initialisation pour traceurs
+      CALL infotrac_init
+      ALLOCATE(q3d(iip1,jjp1,llm,nqtot))
+
+
       CALL inifilr()
       CALL phys_state_var_init()
@@ -624,6 +632,4 @@
       phis(iip1,:) = phis(1,:)
 
-C init pour traceurs
-      call iniadvtrac(nq)
 C Ecriture
       CALL inidissip( lstardis, nitergdiv, nitergrot, niterh   ,
@@ -649,7 +655,7 @@
      *                phi,w, pbaru,pbarv,time+iday-dayref   )
        print*,'sortie caldyn0'     
-      CALL dynredem0("start.nc",dayref,phis,nqmx)
+      CALL dynredem0("start.nc",dayref,phis)
       print*,'sortie dynredem0'
-      CALL dynredem1("start.nc",0.0,vvent,uvent,tpot,q3d,nqmx,masse ,
+      CALL dynredem1("start.nc",0.0,vvent,uvent,tpot,q3d,masse ,
      .                            psol)
       print*,'sortie dynredem1' 
@@ -742,6 +748,6 @@
       visu_file='Etat0_visu.nc'
       CALL initdynav(visu_file,dayref,anneeref,time_step,
-     .              t_ops, t_wrt, nqmx, visuid)
-      CALL writedynav(visuid, nqmx, itau,vvent ,
+     .              t_ops, t_wrt, visuid)
+      CALL writedynav(visuid, itau,vvent ,
      .                uvent,tpot,pk,phi,q3d,masse,psol,phis)
       else
@@ -750,4 +756,7 @@
       print*,'entree histclo'
       CALL histclo
+
+      DEALLOCATE(q3d)
+
       RETURN
       !
Index: LMDZ4/branches/LMDZ4-dev/libf/dyn3d/fluxstokenc.F
===================================================================
--- LMDZ4/branches/LMDZ4-dev/libf/dyn3d/fluxstokenc.F	(revision 1113)
+++ LMDZ4/branches/LMDZ4-dev/libf/dyn3d/fluxstokenc.F	(revision 1114)
@@ -56,5 +56,5 @@
 	CALL initfluxsto( 'fluxstoke',
      .  time_step,istdyn* time_step,istdyn* time_step,
-     . nqmx, fluxid,fluxvid,fluxdid) 
+     .  fluxid,fluxvid,fluxdid) 
 	
 	ndex(1) = 0
Index: LMDZ4/branches/LMDZ4-dev/libf/dyn3d/gcm.F
===================================================================
--- LMDZ4/branches/LMDZ4-dev/libf/dyn3d/gcm.F	(revision 1113)
+++ LMDZ4/branches/LMDZ4-dev/libf/dyn3d/gcm.F	(revision 1114)
@@ -11,4 +11,5 @@
 
       USE filtreg_mod
+      USE infotrac
 
 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -70,5 +71,4 @@
 #include "iniprint.h"
 #include "tracstoke.h"
-#include "advtrac.h"
 
       INTEGER         longcles
@@ -85,5 +85,5 @@
       REAL vcov(ip1jm,llm),ucov(ip1jmp1,llm) ! vents covariants
       REAL teta(ip1jmp1,llm)                 ! temperature potentielle 
-      REAL q(ip1jmp1,llm,nqmx)               ! champs advectes
+      REAL, ALLOCATABLE, DIMENSION(:,:,:):: q! champs advectes
       REAL ps(ip1jmp1)                       ! pression  au sol
       REAL p (ip1jmp1,llmp1  )               ! pression aux interfac.des couches
@@ -139,5 +139,5 @@
 c    variables pour l'initialisation de la physique :
 c    ------------------------------------------------
-      INTEGER ngridmx,nq
+      INTEGER ngridmx
       PARAMETER( ngridmx = 2+(jjm-1)*iim - 1/jjm   )
       REAL zcufi(ngridmx),zcvfi(ngridmx)
@@ -156,14 +156,4 @@
       dynhist_file = 'dyn_hist.nc'
       dynhistave_file = 'dyn_hist_ave.nc'
-
-c initialisation Anne
-      hadv_flg(:) = 0.
-      vadv_flg(:) = 0.
-      conv_flg(:) = 0.
-      pbl_flg(:)  = 0. 
-      tracnam(:)  = '        ' 
-      nprath = 1
-      nbtrac = 0
-      mmt_adj(:,:,:,:) = 1
 
 
@@ -217,5 +207,5 @@
 ! dynamique -> physique pour l'initialisation
 #ifdef CPP_PHYS
-      CALL Init_Phys_lmdz(iim,jjp1,llm,nqmx-2,1,(jjm-1)*iim+2)
+      CALL Init_Phys_lmdz(iim,jjp1,llm,1,(jjm-1)*iim+2)
       call InitComgeomphy
 #endif
@@ -224,5 +214,5 @@
       IF (config_inca /= 'none') THEN
 #ifdef INCA
-      call init_const_lmdz(nbtrac,anneeref,dayref,iphysiq,day_step,nday)
+      call init_const_lmdz(nbtr,anneeref,dayref,iphysiq,day_step,nday)
       call init_inca_para(iim,jjm+1,klon,1,klon_mpi_para_nb,0)
 #endif
@@ -239,9 +229,11 @@
 c   Initialisation des traceurs
 c   ---------------------------
-c  Choix du schema pour l'advection
-c  dans fichier trac.def ou via INCA
-
-       call iniadvtrac(nq)
-c
+c  Choix du nombre de traceurs et du schema pour l'advection
+c  dans fichier traceur.def, par default ou via INCA
+      call infotrac_init
+
+c Allocation de la tableau q : champs advectes   
+      allocate(q(ip1jmp1,llm,nqtot))
+
 c-----------------------------------------------------------------------
 c   Lecture de l'etat initial :
@@ -251,5 +243,5 @@
       if (read_start) then
 #ifdef CPP_IOIPSL
-         CALL dynetat0("start.nc",nqmx,vcov,ucov,
+         CALL dynetat0("start.nc",vcov,ucov,
      .              teta,q,masse,ps,phis, time_0)
 c       write(73,*) 'ucov',ucov
@@ -274,5 +266,5 @@
      .                 'AVANT iniacademic AVANT AVANT AVANT AVANT'
       if (.not.read_start) then
-         CALL iniacademic(nqmx,vcov,ucov,teta,q,masse,ps,phis,time_0)
+         CALL iniacademic(vcov,ucov,teta,q,masse,ps,phis,time_0)
       endif
 
@@ -396,5 +388,5 @@
 
 #ifdef CPP_IOIPSL
-      CALL dynredem0("restart.nc", day_end, phis, nqmx)
+      CALL dynredem0("restart.nc", day_end, phis)
 
       ecripar = .TRUE.
@@ -405,10 +397,10 @@
       t_wrt = iecri * daysec
       CALL inithist(dynhist_file,day_ref,annee_ref,time_step,
-     .              t_ops, t_wrt, nqmx, histid, histvid)
+     .              t_ops, t_wrt, histid, histvid)
 
       t_ops = iperiod * time_step
       t_wrt = periodav * daysec
       CALL initdynav(dynhistave_file,day_ref,annee_ref,time_step,
-     .              t_ops, t_wrt, nqmx, histaveid)
+     .              t_ops, t_wrt, histaveid)
 
       dtav = iperiod*dtvr/daysec
@@ -437,5 +429,5 @@
 
 
-      CALL leapfrog(ucov,vcov,teta,ps,masse,phis,nq,q,clesphy0,
+      CALL leapfrog(ucov,vcov,teta,ps,masse,phis,q,clesphy0,
      .              time_0)
 
Index: LMDZ4/branches/LMDZ4-dev/libf/dyn3d/infotrac.F90
===================================================================
--- LMDZ4/branches/LMDZ4-dev/libf/dyn3d/infotrac.F90	(revision 1114)
+++ LMDZ4/branches/LMDZ4-dev/libf/dyn3d/infotrac.F90	(revision 1114)
@@ -0,0 +1,311 @@
+MODULE infotrac
+
+! nqtot : total number of tracers and higher order of moment, water vapor and liquid included
+  INTEGER, SAVE :: nqtot
+
+! nbtr : number of tracers not including higher order of moment or water vapor or liquid
+!        number of tracers used in the physics
+  INTEGER, SAVE :: nbtr
+
+! 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
+
+! iadv  : index of trasport schema for each tracer
+  INTEGER, ALLOCATABLE, DIMENSION(:), SAVE    :: iadv
+
+! niadv : vector keeping the coorspondance between all tracers(nqtot) treated in the 
+!         dynamic part of the code and the tracers (nbtr+2) used in the physics part of the code. 
+  INTEGER, ALLOCATABLE, DIMENSION(:), SAVE    :: niadv ! equivalent dyn / physique
+
+! Variables for INCA
+  INTEGER, ALLOCATABLE, DIMENSION(:), SAVE  :: conv_flg
+  INTEGER, ALLOCATABLE, DIMENSION(:), SAVE  :: pbl_flg
+
+CONTAINS
+
+  SUBROUTINE infotrac_init
+    IMPLICIT NONE
+!=======================================================================
+!
+!   Auteur:  P. Le Van /L. Fairhead/F.Hourdin
+!   -------
+!   Modif special traceur F.Forget 05/94
+!   Modif M-A Filiberti 02/02 lecture de traceur.def
+!
+!   Objet:
+!   ------
+!   GCM LMD nouvelle grille
+!
+!=======================================================================
+!   ... modification de l'integration de q ( 26/04/94 ) ....
+!-----------------------------------------------------------------------
+! Declarations
+
+    INCLUDE "dimensions.h"
+    INCLUDE "control.h"
+    INCLUDE "iniprint.h"
+
+! Local variables
+    INTEGER, ALLOCATABLE, DIMENSION(:) :: hadv  ! index of horizontal trasport schema
+    INTEGER, ALLOCATABLE, DIMENSION(:) :: vadv  ! index of vertical trasport schema
+
+    CHARACTER(len=8), ALLOCATABLE, DIMENSION(:) :: tnom_0  ! tracer short name
+    CHARACTER(len=8), ALLOCATABLE, DIMENSION(:) :: tracnam ! name from INCA
+    CHARACTER(len=3), DIMENSION(30) :: descrq
+    CHARACTER(len=1), DIMENSION(3)  :: txts
+    CHARACTER(len=2), DIMENSION(9)  :: txtp
+    CHARACTER(len=13)               :: str1,str2
+  
+    INTEGER :: nqtrue  ! number of tracers read from tracer.def, without higer order of moment
+    INTEGER :: iq, new_iq, iiq, jq, ierr
+    INTEGER, EXTERNAL :: lnblnk
+ 
+!-----------------------------------------------------------------------
+! Initialization :
+!
+    txts=(/'x','y','z'/)
+    txtp=(/'x ','y ','z ','xx','xy','xz','yy','yz','zz'/)
+
+    descrq(14)='VLH'
+    descrq(10)='VL1'
+    descrq(11)='VLP'
+    descrq(12)='FH1'
+    descrq(13)='FH2'
+    descrq(16)='PPM'
+    descrq(17)='PPS'
+    descrq(18)='PPP'
+    descrq(20)='SLP'
+    descrq(30)='PRA'
+
+!-----------------------------------------------------------------------
+!
+! 1) Get the true number of tracers + water vapor/liquid
+!    Here true tracers (nqtrue) means declared tracers (only first order)
+!
+!-----------------------------------------------------------------------
+    IF (config_inca == 'none') THEN
+       OPEN(90,file='traceur.def',form='formatted',status='old', iostat=ierr)
+       IF(ierr.EQ.0) THEN
+          WRITE(lunout,*) 'Open traceur.def : ok'
+          READ(90,*) nqtrue
+       ELSE 
+          WRITE(lunout,*) 'Problem in opening traceur.def'
+          WRITE(lunout,*) 'ATTENTION using defaut values'
+          nqtrue=4 ! Defaut value
+       END IF
+       ! Attention! Only for planet_type=='earth'
+       nbtr=nqtrue-2
+    ELSE
+       ! nbtr has been read from INCA by init_cont_lmdz() in gcm.F 
+       nqtrue=nbtr+2
+    END IF
+
+    IF (nqtrue < 2) THEN
+       WRITE(lunout,*) 'nqtrue=',nqtrue, ' is not allowded. 2 tracers is the minimum'
+       CALL abort_gcm('infotrac_init','Not enough tracers',1)
+    END IF
+!
+! Allocate variables depending on nqtrue
+!
+    ALLOCATE(tnom_0(nqtrue), hadv(nqtrue), vadv(nqtrue))
+
+    IF (config_inca /= 'none') THEN
+       ! Varaibles only needed in case of INCA
+       ALLOCATE(conv_flg(nbtr), pbl_flg(nbtr), tracnam(nbtr))
+    END IF
+       
+!-----------------------------------------------------------------------
+! 2)     Choix  des schemas d'advection pour l'eau et les traceurs
+!
+!     iadv = 1    schema  transport type "humidite specifique LMD"
+!     iadv = 2    schema   amont
+!     iadv = 14   schema  Van-leer + humidite specifique 
+!                            Modif F.Codron
+!     iadv = 10   schema  Van-leer (retenu pour l'eau vapeur et liquide)
+!     iadv = 11   schema  Van-Leer pour hadv et version PPM (Monotone) pour vadv
+!     iadv = 12   schema  Frederic Hourdin I
+!     iadv = 13   schema  Frederic Hourdin II
+!     iadv = 16   schema  PPM Monotone(Collela & Woodward 1984)
+!     iadv = 17   schema  PPM Semi Monotone (overshoots autorisés)
+!     iadv = 18   schema  PPM Positif Defini (overshoots undershoots autorisés)
+!     iadv = 20   schema  Slopes
+!     iadv = 30   schema  Prather
+!
+!        Dans le tableau q(ij,l,iq) : iq = 1  pour l'eau vapeur
+!                                     iq = 2  pour l'eau liquide
+!       Et eventuellement             iq = 3,nqtot pour les autres traceurs
+!
+!        iadv(1): choix pour l'eau vap. et  iadv(2) : choix pour l'eau liq.
+!------------------------------------------------------------------------
+!
+!    Get choice of advection schema from file tracer.def or from INCA
+!---------------------------------------------------------------------
+    IF (config_inca == 'none') THEN
+       IF(ierr.EQ.0) THEN
+          ! Continue to read tracer.def
+          DO iq=1,nqtrue
+             READ(90,999) hadv(iq),vadv(iq),tnom_0(iq)
+          END DO
+          CLOSE(90)  
+       ELSE ! Without tracer.def
+          hadv(1) = 14
+          vadv(1) = 14
+          tnom_0(1) = 'H2Ov'
+          hadv(2) = 10
+          vadv(2) = 10
+          tnom_0(2) = 'H2Ol'
+          hadv(3) = 10
+          vadv(3) = 10
+          tnom_0(3) = 'RN'
+          hadv(4) = 10
+          vadv(4) = 10
+          tnom_0(4) = 'PB'
+       END IF
+       
+       WRITE(lunout,*) 'Valeur de traceur.def :'
+       WRITE(lunout,*) 'nombre de traceurs ',nqtrue
+       DO iq=1,nqtrue
+          WRITE(lunout,*) hadv(iq),vadv(iq),tnom_0(iq)
+       END DO
+
+    ELSE  ! config_inca='aero' ou 'chem'
+! le module de chimie fournit les noms des traceurs
+! et les schemas d'advection associes.
+     
+#ifdef INCA
+       CALL init_transport( &
+            hadv, &
+            vadv, &
+            conv_flg, &
+            pbl_flg,  &
+            tracnam)
+#endif
+       tnom_0(1)='H2Ov'
+       tnom_0(2)='H2Ol'
+
+       DO iq =3,nqtrue
+          tnom_0(iq)=tracnam(iq-2)
+       END DO
+
+    END IF ! config_inca
+
+!-----------------------------------------------------------------------
+!
+! 3) Verify if advection schema 20 or 30 choosen
+!    Calculate total number of tracers needed: nqtot
+!    Allocate variables depending on total number of tracers
+!-----------------------------------------------------------------------
+    new_iq=0
+    DO iq=1,nqtrue
+       ! Add tracers for certain advection schema
+       IF (hadv(iq)<20 .AND. vadv(iq)<20 ) THEN
+          new_iq=new_iq+1  ! no tracers added
+       ELSE IF (hadv(iq)==20 .AND. vadv(iq)==20 ) THEN
+          new_iq=new_iq+4  ! 3 tracers added
+       ELSE IF (hadv(iq)==30 .AND. vadv(iq)==30 ) THEN
+          new_iq=new_iq+10 ! 9 tracers added
+       ELSE
+          WRITE(lunout,*) 'This choice of advection schema is not available'
+          CALL abort_gcm('infotrac_init','Bad choice of advection schema - 1',1)
+       END IF
+    END DO
+    
+    IF (new_iq /= nqtrue) THEN
+       ! The choice of advection schema imposes more tracers
+       ! Assigne total number of tracers
+       nqtot = new_iq
+
+       WRITE(lunout,*) 'The choice of advection schema for one or more tracers'
+       WRITE(lunout,*) 'makes it necessary to add tracers'
+       WRITE(lunout,*) nqtrue,' is the number of true tracers'
+       WRITE(lunout,*) nqtot, ' is the total number of tracers needed'
+
+    ELSE
+       ! The true number of tracers is also the total number
+       nqtot = nqtrue
+    END IF
+
+!
+! Allocate variables with total number of tracers, nqtot
+!
+    ALLOCATE(tname(nqtot), ttext(nqtot))
+    ALLOCATE(iadv(nqtot), niadv(nqtot))
+
+!-----------------------------------------------------------------------
+!
+! 4) Determine iadv, long and short name
+!
+!-----------------------------------------------------------------------
+    new_iq=0
+    DO iq=1,nqtrue
+       new_iq=new_iq+1
+
+       ! Verify choice of advection schema
+       IF (hadv(iq)==vadv(iq)) THEN
+          iadv(new_iq)=hadv(iq)
+       ELSE IF (hadv(iq)==10 .AND. vadv(iq)==16) THEN
+          iadv(new_iq)=11
+       ELSE
+          WRITE(lunout,*)'This choice of advection schema is not available'
+          CALL abort_gcm('infotrac_init','Bad choice of advection schema - 2',1)
+       END IF
+      
+       str1=tnom_0(iq)
+       tname(new_iq)= tnom_0(iq)
+       IF (iadv(new_iq)==0) THEN
+          ttext(new_iq)=str1(1:lnblnk(str1))
+       ELSE
+          ttext(new_iq)=str1(1:lnblnk(str1))//descrq(iadv(new_iq))
+       END IF
+
+       ! schemas tenant compte des moments d'ordre superieur
+       str2=ttext(new_iq)
+       IF (iadv(new_iq)==20) THEN
+          DO jq=1,3
+             new_iq=new_iq+1
+             iadv(new_iq)=-20
+             ttext(new_iq)=str2(1:lnblnk(str2))//txts(jq)
+             tname(new_iq)=str1(1:lnblnk(str1))//txts(jq)
+          END DO
+       ELSE IF (iadv(new_iq)==30) THEN
+          DO jq=1,9
+             new_iq=new_iq+1
+             iadv(new_iq)=-30
+             ttext(new_iq)=str2(1:lnblnk(str2))//txtp(jq)
+             tname(new_iq)=str1(1:lnblnk(str1))//txtp(jq)
+          END DO
+       END IF
+    END DO
+
+!
+! Find vector keeping the correspodence between true and total tracers
+!
+    niadv(:)=0
+    iiq=0
+    DO iq=1,nqtot
+       IF(iadv(iq).GE.0) THEN
+          ! True tracer
+          iiq=iiq+1
+          niadv(iiq)=iq
+       ENDIF
+    END DO
+
+
+    WRITE(lunout,*) 'Information stored in dimtrac :'
+    WRITE(lunout,*) 'iadv  niadv tname  ttext :'
+    DO iq=1,nqtot
+       WRITE(lunout,*) iadv(iq),niadv(iq), tname(iq), ttext(iq)
+    END DO
+
+!-----------------------------------------------------------------------
+! Finalize :
+!
+    DEALLOCATE(tnom_0, hadv, vadv)
+    IF (config_inca /= 'none') DEALLOCATE(tracnam)
+
+999 FORMAT (i2,1x,i2,1x,a8)
+
+  END SUBROUTINE infotrac_init
+
+END MODULE infotrac
Index: LMDZ4/branches/LMDZ4-dev/libf/dyn3d/iniacademic.F
===================================================================
--- LMDZ4/branches/LMDZ4-dev/libf/dyn3d/iniacademic.F	(revision 1113)
+++ LMDZ4/branches/LMDZ4-dev/libf/dyn3d/iniacademic.F	(revision 1114)
@@ -4,7 +4,8 @@
 c
 c
-      SUBROUTINE iniacademic(nq,vcov,ucov,teta,q,masse,ps,phis,time_0)
+      SUBROUTINE iniacademic(vcov,ucov,teta,q,masse,ps,phis,time_0)
 
       USE filtreg_mod
+      USE infotrac, ONLY : nqtot
 
 c%W%    %G%
@@ -48,5 +49,4 @@
 c   ----------
 
-      integer nq
       real time_0
 
@@ -54,5 +54,5 @@
       REAL vcov(ip1jm,llm),ucov(ip1jmp1,llm) ! vents covariants
       REAL teta(ip1jmp1,llm)                 ! temperature potentielle
-      REAL q(ip1jmp1,llm,nq)               ! champs advectes
+      REAL q(ip1jmp1,llm,nqtot)               ! champs advectes
       REAL ps(ip1jmp1)                       ! pression  au sol
       REAL masse(ip1jmp1,llm)                ! masse d'air
@@ -160,5 +160,5 @@
       q(:,:,1   )=1.e-10
       q(:,:,2   )=1.e-15
-      q(:,:,3:nq)=0.
+      q(:,:,3:nqtot)=0.
 
 
Index: LMDZ4/branches/LMDZ4-dev/libf/dyn3d/iniadvtrac.F
===================================================================
--- LMDZ4/branches/LMDZ4-dev/libf/dyn3d/iniadvtrac.F	(revision 1113)
+++ 	(revision )
@@ -1,245 +1,0 @@
-!
-! $Header$
-!
-c
-c
-      subroutine iniadvtrac(nq)
-      USE ioipsl
-      IMPLICIT NONE
-c=======================================================================
-c
-c   Auteur:  P. Le Van /L. Fairhead/F.Hourdin
-c   -------
-c   Modif special traceur F.Forget 05/94
-c   Modif M-A Filiberti 02/02 lecture de traceur.def
-c
-c   Objet:
-c   ------
-c
-c   GCM LMD nouvelle grille
-c
-c=======================================================================
-c   ... modification de l'integration de q ( 26/04/94 ) ....
-c-----------------------------------------------------------------------
-c   Declarations:
-c   -------------
-C
-#include "dimensions.h"
-#include "advtrac.h"
-#include "control.h"
-c   local
-      character*3 descrq(30)
-      character*1 txts(3)
-      character*2 txtp(9)
-      character*13 str1,str2,str3
-
-      integer nq,iq,iiq,iiiq,ierr,ii
-      integer lnblnk
-      external lnblnk
-
-      data txts/'x','y','z'/
-      data txtp/'x','y','z','xx','xy','xz','yy','yz','zz'/
-
-c-----------------------------------------------------------------------
-c   Initialisations:
-c   ----------------
-      descrq(14)='VLH'
-      descrq(10)='VL1'
-      descrq(11)='VLP'
-      descrq(12)='FH1'
-      descrq(13)='FH2'
-      descrq(16)='PPM'
-      descrq(17)='PPS'
-      descrq(18)='PPP'
-      descrq(20)='SLP'
-      descrq(30)='PRA'
-
-      IF (config_inca /= 'none') THEN
-#ifdef INCA
-         CALL init_transport( 
-     $        hadv_flg,
-     $        vadv_flg,
-     $        conv_flg,
-     $        pbl_flg,
-     $        tracnam)
-#endif
-      END IF
-
-c-----------------------------------------------------------------------
-c        Choix  des schemas d'advection pour l'eau et les traceurs
-c
-c     iadv = 1    schema  transport type "humidite specifique LMD"
-c     iadv = 2    schema   amont
-c     iadv = 14    schema  Van-leer + humidite specifique 
-c                            Modif F.Codron
-c     iadv = 10   schema  Van-leer (retenu pour l'eau vapeur et liquide)
-c     iadv = 11   schema  Van-Leer pour hadv et version PPM (Monotone) pour vadv
-c     iadv = 12   schema  Frederic Hourdin I
-c     iadv = 13   schema  Frederic Hourdin II
-c     iadv = 16   schema  PPM Monotone(Collela & Woodward 1984)
-c     iadv = 17   schema  PPM Semi Monotone (overshoots autorisés)
-c     iadv = 18   schema  PPM Positif Defini (overshoots undershoots autorisés)
-c     iadv = 20   schema  Slopes
-c     iadv = 30   schema  Prather
-c
-c        Dans le tableau q(ij,l,iq) : iq = 1  pour l'eau vapeur
-c                                     iq = 2  pour l'eau liquide
-c        Et eventuellement            iq = 3,nqmx pour les autres traceurs
-c
-c        iadv(1): choix pour l'eau vap. et  iadv(2) : choix pour l'eau liq.
-C------------------------------------------------------------------------
-c     Choix du schema d'advection
-c------------------------------------------------------------------
-c choix par defaut = van leer pour tous les traceurs
-      do iq=1,nqmx
-       iadv(iq)=10
-       str1(1:1)='q'
-       if (nqmx.le.99) then
-       WRITE(str1(2:3),'(i2.2)') iq
-       else
-       WRITE(str1(2:4),'(i3.3)') iq
-       endif
-       tnom(iq)=str1
-       tname(iq)=tnom(iq) 
-       str2=tnom(iq) 
-       ttext(iq)=str2(1:lnblnk(str2))//descrq(iadv(iq))
-      end do
-      nq=nqmx
-c------------------------------------------------------------------
-c     Choix du schema pour l'advection
-c    dans fichier traceur.def
-c------------------------------------------------------------------
-      IF (config_inca == 'none') THEN
-         print*,'ouverture de traceur.def'
-         open(90,file='traceur.def',form='formatted',status='old',
-     s        iostat=ierr)
-         if(ierr.eq.0) then
-            print*,'ouverture de traceur.def ok'
-            read(90,*) nq
-            print*,'nombre de traceurs ',nq
-            if (nq.gt.nqmx) then
-               print*,'nombre de traceurs trop important'
-               print*,'verifier traceur.def'
-               stop
-            endif
-C     
-            do iq=1,nq
-               read(90,999) hadv(iq),vadv(iq),tnom(iq)
-            end do
-            close(90)  
-            PRINT*,'lecture de traceur.def :'   
-            do iq=1,nq
-               write(*,*) hadv(iq),vadv(iq),tnom(iq)
-            end do       
-         else
-            print*,'pb ouverture traceur.def'
-            print*,'ATTENTION on prend des valeurs par defaut'
-            nq = 4
-            hadv(1) = 14
-            vadv(1) = 14
-            tnom(1) = 'H2Ov'
-            hadv(2) = 10
-            vadv(2) = 10
-            tnom(2) = 'H2Ol'
-            hadv(3) = 10
-            vadv(3) = 10
-            tnom(3) = 'RN'
-            hadv(4) = 10
-            vadv(4) = 10
-            tnom(4) = 'PB'
-         ENDIF
-         PRINT*,'Valeur de traceur.def :'
-         do iq=1,nq
-            write(*,*) hadv(iq),vadv(iq),tnom(iq)
-         end do       
-      ELSE  ! config_inca='aero' ou 'chem'
-C le module de chimie fournit les noms des traceurs
-C et les schemas d'advection associes.
-         tnom(1)='H2Ov'
-         tnom(2)='H2Ol'
-         nq=nbtrac+2
-         if (nq.gt.nqmx) then
-            print*,'nombre de traceurs incompatible INCA/LMDZT'
-            stop
-         endif
-         do iq =3,nq
-            tnom(iq)=tracnam(iq-2)
-         end do
-         do iq =1,nq
-            hadv(iq)= hadv_flg(iq) 
-            vadv(iq)= vadv_flg(iq) 
-         end do
-      END IF ! config_inca
-
-c a partir du nom court du traceur et du schema d'advection au detemine le nom long.
-        iiq=0
-        ii=0
-        do iq=1,nq 
-         iiq=iiq+1
-         if (hadv(iq).ne.vadv(iq)) then
-           if (hadv(iq).eq.10.and.vadv(iq).eq.16) then
-             iadv(iiq)=11
-           else
-             print*,'le choix des schemas d''advection H et V'
-             print*, 'est non disponible actuellement'
-             stop 
-           endif
-         else
-          iadv(iiq)=hadv(iq)
-         endif
-c verification nombre de traceurs
-          if (iadv(iiq).lt.20) then
-             ii=ii+1
-          elseif (iadv(iiq).eq.20) then
-             ii=ii+4
-          elseif (iadv(iiq).eq.30) then
-             ii=ii+10
-          endif
- 
-         str1=tnom(iq)
-         tname(iiq)=tnom(iq)
-         IF (iadv(iiq).eq.0) THEN
-           ttext(iiq)=str1(1:lnblnk(str1))
-         ELSE
-           ttext(iiq)=str1(1:lnblnk(str1))//descrq(iadv(iiq))
-         endif
-         str2=ttext(iiq)
-c   schemas tenant compte des moments d'ordre superieur.
-          if (iadv(iiq).eq.20) then
-             do iiiq=1,3
-               iiq=iiq+1
-               iadv(iiq)=-20
-               ttext(iiq)=str2(1:lnblnk(str2))//txts(iiiq)
-               tname(iiq)=str1(1:lnblnk(str1))//txts(iiiq)
-              enddo
-            elseif (iadv(iiq).eq.30) then
-              do iiiq=1,9
-               iiq=iiq+1
-               iadv(iiq)=-30
-               ttext(iiq)=str2(1:lnblnk(str2))//txtp(iiiq)
-               tname(iiq)=str1(1:lnblnk(str1))//txtp(iiiq)
-              enddo
-           endif
-        end do
-       if(ii.ne.nqmx) then
-       print*,'WARNING'
-       print*,'le nombre de traceurs et de moments eventuels'
-       print*,'est inferieur a nqmx '
-       endif
-       if (iiq.gt.nqmx) then
-       print*,'le choix des schemas est incompatible avec '
-       print*,'la dimension nqmx (nombre de traceurs)'
-       print*,'verifier traceur.def ou la namelist INCA'
-       print*,'ou recompiler avec plus de traceurs'
-       stop
-       endif
-      iiq=0
-      do iq=1,nqmx
-         if(iadv(iq).ge.0) then
-             iiq=iiq+1
-             niadv(iiq)=iq
-         endif
-      end do
-      return
-999   format (i2,1x,i2,1x,a8)
-      END
Index: LMDZ4/branches/LMDZ4-dev/libf/dyn3d/integrd.F
===================================================================
--- LMDZ4/branches/LMDZ4-dev/libf/dyn3d/integrd.F	(revision 1113)
+++ LMDZ4/branches/LMDZ4-dev/libf/dyn3d/integrd.F	(revision 1114)
@@ -32,5 +32,4 @@
 #include "temps.h"
 #include "serre.h"
-#include "advtrac.h"
 
 c   Arguments:
Index: LMDZ4/branches/LMDZ4-dev/libf/dyn3d/leapfrog.F
===================================================================
--- LMDZ4/branches/LMDZ4-dev/libf/dyn3d/leapfrog.F	(revision 1113)
+++ LMDZ4/branches/LMDZ4-dev/libf/dyn3d/leapfrog.F	(revision 1114)
@@ -2,5 +2,5 @@
 c
 c
-      SUBROUTINE leapfrog(ucov,vcov,teta,ps,masse,phis,nq,q,clesphy0,
+      SUBROUTINE leapfrog(ucov,vcov,teta,ps,masse,phis,q,clesphy0,
      &                    time_0)
 
@@ -8,4 +8,5 @@
 cIM : pour sortir les param. du modele dans un fis. netcdf 110106
       USE IOIPSL 
+      USE infotrac
 
       IMPLICIT NONE
@@ -56,13 +57,8 @@
 #include "com_io_dyn.h"
 #include "iniprint.h"
-#include "advtrac.h"
-c#include "tracstoke.h"
-
 #include "academic.h"
 
 ! FH 2008/05/09 On elimine toutes les clefs physiques dans la dynamique
 ! #include "clesphys.h"
-
-      integer nq
 
       INTEGER         longcles
@@ -76,5 +72,5 @@
       REAL vcov(ip1jm,llm),ucov(ip1jmp1,llm) ! vents covariants
       REAL teta(ip1jmp1,llm)                 ! temperature potentielle 
-      REAL q(ip1jmp1,llm,nqmx)               ! champs advectes
+      REAL q(ip1jmp1,llm,nqtot)               ! champs advectes
       REAL ps(ip1jmp1)                       ! pression  au sol
       REAL p (ip1jmp1,llmp1  )               ! pression aux interfac.des couches
@@ -97,5 +93,5 @@
 c   tendances dynamiques
       REAL dv(ip1jm,llm),du(ip1jmp1,llm)
-      REAL dteta(ip1jmp1,llm),dq(ip1jmp1,llm,nqmx),dp(ip1jmp1)
+      REAL dteta(ip1jmp1,llm),dq(ip1jmp1,llm,nqtot),dp(ip1jmp1)
 
 c   tendances de la dissipation
@@ -105,5 +101,5 @@
 c   tendances physiques
       REAL dvfi(ip1jm,llm),dufi(ip1jmp1,llm)
-      REAL dtetafi(ip1jmp1,llm),dqfi(ip1jmp1,llm,nqmx),dpfi(ip1jmp1)
+      REAL dtetafi(ip1jmp1,llm),dqfi(ip1jmp1,llm,nqtot),dpfi(ip1jmp1)
 
 c   variables pour le fichier histoire
@@ -190,5 +186,6 @@
       itaufin   = nday*day_step
       itaufinp1 = itaufin +1
-
+      modname="leapfrog"
+      
 
       itau = 0
@@ -372,5 +369,5 @@
 c
 
-        CALL calfis( nq, lafin ,rdayvrai,time  ,
+        CALL calfis( lafin ,rdayvrai,time  ,
      $               ucov,vcov,teta,q,masse,ps,p,pk,phis,phi ,
      $               du,dv,dteta,dq,
@@ -384,5 +381,5 @@
 c      ajout des tendances physiques:
 c      ------------------------------
-          CALL addfi( nqmx, dtphys, leapf, forward   ,
+          CALL addfi( dtphys, leapf, forward   ,
      $                  ucov, vcov, teta , q   ,ps ,
      $                 dufi, dvfi, dtetafi , dqfi ,dpfi  )
@@ -533,5 +530,5 @@
                ENDIF
 #ifdef CPP_IOIPSL
-              CALL writedynav(histaveid, nqmx, itau,vcov ,
+              CALL writedynav(histaveid, itau,vcov ,
      ,                          ucov,teta,pk,phi,q,masse,ps,phis)
                call bilan_dyn (2,dtvr*iperiod,dtvr*day_step*periodav,
@@ -556,5 +553,5 @@
         enddo
 #ifdef CPP_IOIPSL
-c        CALL writehist(histid,histvid, nqmx,itau,vcov, 
+c        CALL writehist(histid,histvid,itau,vcov, 
 c     s                       ucov,teta,phi,q,masse,ps,phis)
 #else
@@ -570,5 +567,5 @@
 #ifdef CPP_IOIPSL
        CALL dynredem1("restart.nc",0.0,
-     ,                     vcov,ucov,teta,q,nqmx,masse,ps)
+     ,                     vcov,ucov,teta,q,masse,ps)
 #endif
 
@@ -639,5 +636,5 @@
                ENDIF
 #ifdef CPP_IOIPSL
-              CALL writedynav(histaveid, nqmx, itau,vcov ,
+              CALL writedynav(histaveid, itau,vcov ,
      ,                          ucov,teta,pk,phi,q,masse,ps,phis)
                call bilan_dyn (2,dtvr*iperiod,dtvr*day_step*periodav,
@@ -657,5 +654,5 @@
         enddo
 #ifdef CPP_IOIPSL
-c       CALL writehist( histid, histvid, nqmx, itau,vcov , 
+c       CALL writehist( histid, histvid, itau,vcov , 
 c    ,                           ucov,teta,phi,q,masse,ps,phis)
 #else
@@ -669,5 +666,5 @@
                  IF(itau.EQ.itaufin)
      . CALL dynredem1("restart.nc",0.0,
-     .                     vcov,ucov,teta,q,nqmx,masse,ps)
+     .                     vcov,ucov,teta,q,masse,ps)
 #endif
 
Index: LMDZ4/branches/LMDZ4-dev/libf/dyn3d/test_period.F
===================================================================
--- LMDZ4/branches/LMDZ4-dev/libf/dyn3d/test_period.F	(revision 1113)
+++ LMDZ4/branches/LMDZ4-dev/libf/dyn3d/test_period.F	(revision 1114)
@@ -9,4 +9,5 @@
 c                           teta, q , p et phis                 .......... 
 c
+      USE infotrac
 c     IMPLICIT NONE
 c
@@ -17,5 +18,5 @@
 c
       REAL ucov(ip1jmp1,llm), vcov(ip1jm,llm), teta(ip1jmp1,llm) ,
-     ,      q(ip1jmp1,llm,nqmx), p(ip1jmp1,llmp1), phis(ip1jmp1)
+     ,      q(ip1jmp1,llm,nqtot), p(ip1jmp1,llmp1), phis(ip1jmp1)
 c
 c   .....  Variables  locales  .....
@@ -68,5 +69,5 @@
       
 c
-      DO nq =1, nqmx
+      DO nq =1, nqtot
         DO l =1, llm
           DO ij = 1, ip1jmp1, iip1
Index: LMDZ4/branches/LMDZ4-dev/libf/dyn3d/write_grads_dyn.h
===================================================================
--- LMDZ4/branches/LMDZ4-dev/libf/dyn3d/write_grads_dyn.h	(revision 1113)
+++ LMDZ4/branches/LMDZ4-dev/libf/dyn3d/write_grads_dyn.h	(revision 1114)
@@ -24,5 +24,5 @@
       string10='teta'
       CALL wrgrads(1,llm,teta,string10,string10)
-      do iq=1,nqmx
+      do iq=1,nqtot
          string10='q'
          write(string10(2:2),'(i1)') iq
Index: LMDZ4/branches/LMDZ4-dev/libf/dyn3dpar/addfi_p.F
===================================================================
--- LMDZ4/branches/LMDZ4-dev/libf/dyn3dpar/addfi_p.F	(revision 1113)
+++ LMDZ4/branches/LMDZ4-dev/libf/dyn3dpar/addfi_p.F	(revision 1114)
@@ -2,8 +2,9 @@
 ! $Header$
 !
-      SUBROUTINE addfi_p(nq, pdt, leapf, forward,
+      SUBROUTINE addfi_p(pdt, leapf, forward,
      S          pucov, pvcov, pteta, pq   , pps ,
      S          pdufi, pdvfi, pdhfi,pdqfi, pdpfi  )
       USE parallel
+      USE infotrac, ONLY : nqtot
       IMPLICIT NONE
 c
@@ -53,13 +54,11 @@
 c    -----------
 c
-      INTEGER nq
-
       REAL pdt
 c
       REAL pvcov(ip1jm,llm),pucov(ip1jmp1,llm)
-      REAL pteta(ip1jmp1,llm),pq(ip1jmp1,llm,nq),pps(ip1jmp1)
+      REAL pteta(ip1jmp1,llm),pq(ip1jmp1,llm,nqtot),pps(ip1jmp1)
 c
       REAL pdvfi(ip1jm,llm),pdufi(ip1jmp1,llm)
-      REAL pdqfi(ip1jmp1,llm,nq),pdhfi(ip1jmp1,llm),pdpfi(ip1jmp1)
+      REAL pdqfi(ip1jmp1,llm,nqtot),pdhfi(ip1jmp1,llm),pdpfi(ip1jmp1)
 c
       LOGICAL leapf,forward
@@ -166,5 +165,5 @@
       ENDDO
 
-      DO iq = 3, nq
+      DO iq = 3, nqtot
 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
          DO k = 1,llm
@@ -208,5 +207,5 @@
 
       if (pole_nord) then
-        DO iq = 1, nq
+        DO iq = 1, nqtot
 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
           DO  k    = 1, llm
@@ -225,5 +224,5 @@
       
       if (pole_sud) then
-        DO iq = 1, nq
+        DO iq = 1, nqtot
 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
           DO  k    = 1, llm
Index: LMDZ4/branches/LMDZ4-dev/libf/dyn3dpar/advtrac.h
===================================================================
--- LMDZ4/branches/LMDZ4-dev/libf/dyn3dpar/advtrac.h	(revision 1113)
+++ 	(revision )
@@ -1,34 +1,0 @@
-!
-! $Header$
-!
-!-----------------------------------------------------------------------
-! INCLUDE 'advtrac.h'
-!
-!
-!  ATTENTION!!!!: ce fichier include est compatible format fixe/format libre
-!                 veillez à n'utiliser que des ! pour les commentaires
-!                 et à bien positionner les & des lignes de continuation 
-!                 (les placer en colonne 6 et en colonne 73)
-!
-
-      COMMON/advtr/iadv, hadv, vadv, tnom, tname, ttext, niadv,         &
-     &   nbtrac, nprath, mmt_adj, hadv_flg, vadv_flg, conv_flg,         &
-     &   pbl_flg, tracnam
-      INTEGER iadv(nqmx) ! indice schema de transport 
-      INTEGER hadv(nqmx) ! indice schema transport horizontal 
-      INTEGER vadv(nqmx) ! indice schema transport vertical 
-      INTEGER niadv(nqmx) ! equivalent dyn / physique
-      character (len=8) :: tnom(nqmx) ! nom court du traceur
-      character (len=10) :: tname(nqmx) ! nom du traceur pour restart
-      character (len=13) :: ttext(nqmx) ! nom long du traceur pour sorties
-
-
-      integer nbtrac
-      integer nprath
-      real    mmt_adj(iim+1,jjm+1,llm, 1) 
-      integer hadv_flg(nqmx)
-      integer vadv_flg(nqmx)
-      integer conv_flg(nqmx-2) 
-      integer pbl_flg(nqmx-2)
-      character (len=8) :: tracnam(nqmx-2) 
-!-----------------------------------------------------------------------
Index: LMDZ4/branches/LMDZ4-dev/libf/dyn3dpar/advtrac_p.F
===================================================================
--- LMDZ4/branches/LMDZ4-dev/libf/dyn3dpar/advtrac_p.F	(revision 1113)
+++ LMDZ4/branches/LMDZ4-dev/libf/dyn3dpar/advtrac_p.F	(revision 1114)
@@ -22,4 +22,5 @@
       USE Vampir
       USE times
+      USE infotrac
       IMPLICIT NONE
 c
@@ -35,5 +36,4 @@
 #include "ener.h"
 #include "description.h"
-#include "advtrac.h"
 
 c-------------------------------------------------------------------
@@ -46,5 +46,5 @@
       INTEGER iapptrac
       REAL pbaru(ip1jmp1,llm),pbarv(ip1jm,llm)
-      REAL q(ip1jmp1,llm,nqmx),masse(ip1jmp1,llm)
+      REAL q(ip1jmp1,llm,nqtot),masse(ip1jmp1,llm)
       REAL p( ip1jmp1,llmp1 ),teta(ip1jmp1,llm)
       REAL pk(ip1jmp1,llm)
@@ -59,7 +59,4 @@
       REAL,SAVE::pbarug(ip1jmp1,llm),pbarvg(ip1jm,llm),wg(ip1jmp1,llm) 
       REAL (kind=kind(1.d0)) :: t_initial, t_final, tps_cpu
-      real cpuadv(nqmx)
-      common/cpuadv/cpuadv
-
       INTEGER iadvtr
       INTEGER ij,l,iq,iiq
@@ -76,5 +73,5 @@
       REAL psppm(iim,jjp1) ! pression  au sol
       REAL unatppm(iim,jjp1,llm),vnatppm(iim,jjp1,llm)
-      REAL qppm(iim*jjp1,llm,nqmx)
+      REAL qppm(iim*jjp1,llm,nqtot)
       REAL fluxwppm(iim,jjp1,llm)
       REAL apppm(llmp1), bpppm(llmp1)
@@ -88,5 +85,5 @@
       REAL,SAVE :: teta_tmp(ip1jmp1,llm)
       REAL,SAVE :: pk_tmp(ip1jmp1,llm)
-      
+
       ijb_u=ij_begin
       ije_u=ij_end
@@ -196,5 +193,5 @@
       call Register_SwapFieldHallo(pk_tmp,pk_tmp,ip1jmp1,llm,
      *                             jj_Nb_vanleer,1,1,Request_vanleer)
-      do j=1,nqmx
+      do j=1,nqtot
         call Register_SwapFieldHallo(q(1,1,j),q(1,1,j),ip1jmp1,llm,
      *                             jj_nb_vanleer,0,0,Request_vanleer)
@@ -279,5 +276,5 @@
 c     Appel des sous programmes d'advection
 c-----------------------------------------------------------
-      do iq=1,nqmx
+      do iq=1,nqtot
 c        call clock(t_initial)
         if(iadv(iq) == 0) cycle 
@@ -479,5 +476,5 @@
 c$OMP END MASTER
 
-	do j=1,nqmx
+	do j=1,nqtot
           call Register_SwapFieldHallo(q(1,1,j),q(1,1,j),ip1jmp1,llm,
      *                             jj_nb_caldyn,0,0,Request_vanleer)
Index: LMDZ4/branches/LMDZ4-dev/libf/dyn3dpar/caladvtrac_p.F
===================================================================
--- LMDZ4/branches/LMDZ4-dev/libf/dyn3dpar/caladvtrac_p.F	(revision 1113)
+++ LMDZ4/branches/LMDZ4-dev/libf/dyn3dpar/caladvtrac_p.F	(revision 1114)
@@ -8,4 +8,5 @@
      *                   flxw, pk, iapptrac)
       USE parallel
+      USE infotrac
 c
       IMPLICIT NONE
@@ -25,10 +26,9 @@
 #include "comconst.h"
 #include "control.h"
-#include "advtrac.h"
 
 c   Arguments:
 c   ----------
       REAL pbaru( ip1jmp1,llm ),pbarv( ip1jm,llm),masse(ip1jmp1,llm)
-      REAL p( ip1jmp1,llmp1),q( ip1jmp1,llm,nqmx),dq( ip1jmp1,llm,2 )
+      REAL p( ip1jmp1,llmp1),q( ip1jmp1,llm,nqtot),dq( ip1jmp1,llm,2 )
       REAL teta( ip1jmp1,llm),pk( ip1jmp1,llm)
       REAL               :: flxw(ip1jmp1,llm)
@@ -48,5 +48,4 @@
       REAL finmasse(ip1jmp1,llm), dtvrtrac
       
-
 cc
 c
Index: LMDZ4/branches/LMDZ4-dev/libf/dyn3dpar/calfis_p.F
===================================================================
--- LMDZ4/branches/LMDZ4-dev/libf/dyn3dpar/calfis_p.F	(revision 1113)
+++ LMDZ4/branches/LMDZ4-dev/libf/dyn3dpar/calfis_p.F	(revision 1114)
@@ -4,6 +4,5 @@
 C
 C
-      SUBROUTINE calfis_p(nq,
-     $                  lafin,
+      SUBROUTINE calfis_p(lafin,
      $                  rdayvrai,
      $                  heure,
@@ -40,4 +39,6 @@
       USE Times
       USE IOPHY
+      USE infotrac
+
       IMPLICIT NONE
 c=======================================================================
@@ -98,7 +99,6 @@
 #include "paramet.h"
 #include "temps.h"
-#include "advtrac.h"
-
-      INTEGER ngridmx,nq
+
+      INTEGER ngridmx
       PARAMETER( ngridmx = 2+(jjm-1)*iim - 1/jjm   )
 
@@ -119,5 +119,5 @@
       REAL pteta(iip1,jjp1,llm)
       REAL pmasse(iip1,jjp1,llm)
-      REAL pq(iip1,jjp1,llm,nqmx)
+      REAL pq(iip1,jjp1,llm,nqtot)
       REAL pphis(iip1,jjp1)
       REAL pphi(iip1,jjp1,llm)
@@ -126,5 +126,5 @@
       REAL pducov(iip1,jjp1,llm)
       REAL pdteta(iip1,jjp1,llm)
-      REAL pdq(iip1,jjp1,llm,nqmx)
+      REAL pdq(iip1,jjp1,llm,nqtot)
 c
       REAL pps(iip1,jjp1)
@@ -135,5 +135,5 @@
       REAL pdufi(iip1,jjp1,llm)
       REAL pdhfi(iip1,jjp1,llm)
-      REAL pdqfi(iip1,jjp1,llm,nqmx)
+      REAL pdqfi(iip1,jjp1,llm,nqtot)
       REAL pdpsfi(iip1,jjp1)
 
@@ -253,10 +253,10 @@
       ALLOCATE(zphi(klon,llm),zphis(klon))
       ALLOCATE(zufi(klon,llm), zvfi(klon,llm))
-      ALLOCATE(ztfi(klon,llm),zqfi(klon,llm,nqmx))
+      ALLOCATE(ztfi(klon,llm),zqfi(klon,llm,nqtot))
       ALLOCATE(pcvgu(klon,llm), pcvgv(klon,llm))
       ALLOCATE(pcvgt(klon,llm), pcvgq(klon,llm,2))
 c      ALLOCATE(pvervel(klon,llm))
       ALLOCATE(zdufi(klon,llm),zdvfi(klon,llm))
-      ALLOCATE(zdtfi(klon,llm),zdqfi(klon,llm,nqmx))
+      ALLOCATE(zdtfi(klon,llm),zdqfi(klon,llm,nqtot))
       ALLOCATE(zdpsrf(klon))
       ALLOCATE(zdufi2(klon+iim,llm),zdvfi2(klon+iim,llm))
@@ -335,5 +335,5 @@
 c
 
-      DO iq=1,nq
+      DO iq=1,nqtot
          iiq=niadv(iq)
 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
@@ -527,5 +527,5 @@
 cc$OMP  PARALLEL DEFAULT(NONE) 
 cc$OMP+ PRIVATE(i,l,offset,iq)
-cc$OMP+ SHARED(klon_omp_nb,nq,klon_omp_begin,
+cc$OMP+ SHARED(klon_omp_nb,nqtot,klon_omp_begin,
 cc$OMP+        debut,lafin,rdayvrai,heure,dtphys,zplev,zplay,
 cc$OMP+        zphi,zphis,presnivs,clesphy0,zufi,zvfi,ztfi,
@@ -549,10 +549,10 @@
         allocate(zvfi_omp(klon,llm))
         allocate(ztfi_omp(klon,llm))
-        allocate(zqfi_omp(klon,llm,nq))
+        allocate(zqfi_omp(klon,llm,nqtot))
 c        allocate(pvervel_omp(klon,llm))
         allocate(zdufi_omp(klon,llm))
         allocate(zdvfi_omp(klon,llm))
         allocate(zdtfi_omp(klon,llm))
-        allocate(zdqfi_omp(klon,llm,nq))
+        allocate(zdqfi_omp(klon,llm,nqtot))
         allocate(zdpsrf_omp(klon))
         allocate(flxwfi_omp(klon,llm))
@@ -609,5 +609,5 @@
       enddo
 	
-      do iq=1,nq
+      do iq=1,nqtot
         do l=1,llm
           do i=1,klon
@@ -641,5 +641,5 @@
       enddo
 	
-      do iq=1,nq
+      do iq=1,nqtot
         do l=1,llm
           do i=1,klon
@@ -664,5 +664,4 @@
       CALL physiq (klon,
      .             llm,
-     .             nq,
      .             debut,
      .             lafin,
@@ -743,5 +742,5 @@
       enddo
 	
-      do iq=1,nq
+      do iq=1,nqtot
         do l=1,llm
           do i=1,klon
@@ -775,5 +774,5 @@
       enddo
 	
-      do iq=1,nq
+      do iq=1,nqtot
         do l=1,llm
           do i=1,klon
@@ -937,5 +936,5 @@
 c   ---------------------
 
-      DO iq=1,nqmx
+      DO iq=1,nqtot
 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
          DO l=1,llm
@@ -976,5 +975,5 @@
 C
 
-      DO iq=1,nq
+      DO iq=1,nqtot
          iiq=niadv(iq)
 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
Index: LMDZ4/branches/LMDZ4-dev/libf/dyn3dpar/create_etat0_limit.F
===================================================================
--- LMDZ4/branches/LMDZ4-dev/libf/dyn3dpar/create_etat0_limit.F	(revision 1113)
+++ LMDZ4/branches/LMDZ4-dev/libf/dyn3dpar/create_etat0_limit.F	(revision 1114)
@@ -8,4 +8,5 @@
        USE mod_const_mpi
        USE phys_state_var_mod      
+       USE infotrac
        IMPLICIT NONE
 c
@@ -31,5 +32,4 @@
 #include "paramet.h"
 #include "indicesol.h"
-#include "advtrac.h"
 #include  "control.h"
 #include "clesphys.h"
@@ -37,21 +37,11 @@
 !      REAL :: pctsrf(iim*(jjm-1)+2, nbsrf)
 
-c initialisation traceurs
-      hadv_flg(:) = 0.
-      vadv_flg(:) = 0.
-      conv_flg(:) = 0.
-      pbl_flg(:)  = 0. 
-      tracnam(:)  = '        ' 
-      nprath = 1
-      nbtrac = 0
-      mmt_adj(:,:,:,:) = 1
-
       IF (config_inca /= 'none') THEN
 #ifdef INCA
          call init_const_lmdz(
-     $        nbtrac,anneeref,dayref,
+     $        nbtr,anneeref,dayref,
      $        iphysiq,day_step,nday)
 #endif
-         print *, 'nbtrac =' , nbtrac 
+         print *, 'nbtr =' , nbtr 
       END IF
 
@@ -59,5 +49,5 @@
 
 
-      CALL Init_Phys_lmdz(iim,jjp1,llm,nqmx-2,1,(/(jjm-1)*iim+2/))
+      CALL Init_Phys_lmdz(iim,jjp1,llm,1,(/(jjm-1)*iim+2/))
       PRINT *,'---> klon=',klon
 
Index: LMDZ4/branches/LMDZ4-dev/libf/dyn3dpar/dynetat0.F
===================================================================
--- LMDZ4/branches/LMDZ4-dev/libf/dyn3dpar/dynetat0.F	(revision 1113)
+++ LMDZ4/branches/LMDZ4-dev/libf/dyn3dpar/dynetat0.F	(revision 1114)
@@ -2,6 +2,7 @@
 ! $Header$
 !
-      SUBROUTINE dynetat0(fichnom,nq,vcov,ucov,
+      SUBROUTINE dynetat0(fichnom,vcov,ucov,
      .                    teta,q,masse,ps,phis,time)
+      USE infotrac
       IMPLICIT NONE
 
@@ -32,5 +33,4 @@
 #include "serre.h"
 #include "logic.h"
-#include "advtrac.h"
 
 c   Arguments:
@@ -38,7 +38,6 @@
 
       CHARACTER*(*) fichnom
-      INTEGER nq
       REAL vcov(ip1jm,llm),ucov(ip1jmp1,llm),teta(ip1jmp1,llm)
-      REAL q(ip1jmp1,llm,nq),masse(ip1jmp1,llm)
+      REAL q(ip1jmp1,llm,nqtot),masse(ip1jmp1,llm)
       REAL ps(ip1jmp1),phis(ip1jmp1)
 
@@ -53,5 +52,4 @@
 
 c-----------------------------------------------------------------------
-
 c  Ouverture NetCDF du fichier etat initial
 
@@ -315,6 +313,5 @@
 
 
-      IF(nq.GE.1) THEN
-      DO iq=1,nq
+      DO iq=1,nqtot
         ierr =  NF_INQ_VARID (nid, tname(iq), nvarid)
         IF (ierr .NE. NF_NOERR) THEN
@@ -334,5 +331,4 @@
         ENDIF
       ENDDO
-      ENDIF
 
       ierr = NF_INQ_VARID (nid, "masse", nvarid)
Index: LMDZ4/branches/LMDZ4-dev/libf/dyn3dpar/dynredem.F
===================================================================
--- LMDZ4/branches/LMDZ4-dev/libf/dyn3dpar/dynredem.F	(revision 1113)
+++ LMDZ4/branches/LMDZ4-dev/libf/dyn3dpar/dynredem.F	(revision 1114)
@@ -3,6 +3,7 @@
 !
 c
-      SUBROUTINE dynredem0(fichnom,iday_end,phis,nq)
+      SUBROUTINE dynredem0(fichnom,iday_end,phis)
       USE IOIPSL
+      USE infotrac
       IMPLICIT NONE
 c=======================================================================
@@ -22,5 +23,4 @@
 #include "description.h"
 #include "serre.h"
-#include "advtrac.h"
 
 c   Arguments:
@@ -29,5 +29,4 @@
       REAL phis(ip1jmp1)
       CHARACTER*(*) fichnom
-      INTEGER nq
 
 c   Local:
@@ -458,6 +457,6 @@
       dims4(3) = idim_s
       dims4(4) = idim_tim
-      IF(nq.GE.1) THEN
-      DO iq=1,nq
+
+      DO iq=1,nqtot
 cIM 220306 BEG
 #ifdef NC_DOUBLE
@@ -469,5 +468,4 @@
       ierr = NF_PUT_ATT_TEXT (nid, nvarid, "title", 12,ttext(iq))
       ENDDO
-      ENDIF
 c
       dims4(1) = idim_rlonv
@@ -508,5 +506,6 @@
       END
       SUBROUTINE dynredem1(fichnom,time,
-     .                     vcov,ucov,teta,q,nq,masse,ps)
+     .                     vcov,ucov,teta,q,masse,ps)
+      USE infotrac
       IMPLICIT NONE
 c=================================================================
@@ -519,13 +518,12 @@
 #include "comvert.h"
 #include "comgeom.h"
-#include "advtrac.h"
 #include "temps.h"
 #include "control.h"
 
-      INTEGER nq, l
+      INTEGER l
       REAL vcov(ip1jm,llm),ucov(ip1jmp1,llm) 
       REAL teta(ip1jmp1,llm)                   
       REAL ps(ip1jmp1),masse(ip1jmp1,llm)                   
-      REAL q(ip1jmp1,llm,nq)
+      REAL q(ip1jmp1,llm,nqtot)
       CHARACTER*(*) fichnom
      
@@ -633,6 +631,5 @@
       END IF
 
-      IF(nq.GE.1) THEN
-      do iq=1,nq 
+      do iq=1,nqtot 
 
          IF (config_inca == 'none') THEN
@@ -704,5 +701,4 @@
       
       ENDDO
-      ENDIF
 c
       ierr = NF_INQ_VARID(nid, "masse", nvarid)
Index: LMDZ4/branches/LMDZ4-dev/libf/dyn3dpar/dynredem_p.F
===================================================================
--- LMDZ4/branches/LMDZ4-dev/libf/dyn3dpar/dynredem_p.F	(revision 1113)
+++ LMDZ4/branches/LMDZ4-dev/libf/dyn3dpar/dynredem_p.F	(revision 1114)
@@ -3,7 +3,8 @@
 !
 c
-      SUBROUTINE dynredem0_p(fichnom,iday_end,phis,nq)
+      SUBROUTINE dynredem0_p(fichnom,iday_end,phis)
       USE IOIPSL
       USE parallel
+      USE infotrac
       IMPLICIT NONE
 c=======================================================================
@@ -23,5 +24,4 @@
 #include "description.h"
 #include "serre.h"
-#include "advtrac.h"
 
 c   Arguments:
@@ -30,5 +30,4 @@
       REAL phis(ip1jmp1)
       CHARACTER*(*) fichnom
-      INTEGER nq
 
 c   Local:
@@ -54,5 +53,4 @@
       INTEGER yyears0,jjour0, mmois0
       character*30 unites
-
 
 c-----------------------------------------------------------------------
@@ -461,6 +459,6 @@
       dims4(3) = idim_s
       dims4(4) = idim_tim
-      IF(nq.GE.1) THEN
-      DO iq=1,nq
+
+      DO iq=1,nqtot
 cIM 220306 BEG
 #ifdef NC_DOUBLE
@@ -472,5 +470,4 @@
       ierr = NF_PUT_ATT_TEXT (nid, nvarid, "title", 12,ttext(iq))
       ENDDO
-      ENDIF
 c
       dims4(1) = idim_rlonv
@@ -513,6 +510,7 @@
       END
       SUBROUTINE dynredem1_p(fichnom,time,
-     .                     vcov,ucov,teta,q,nq,masse,ps)
+     .                     vcov,ucov,teta,q,masse,ps)
       USE parallel
+      USE infotrac
       IMPLICIT NONE
 c=================================================================
@@ -525,13 +523,12 @@
 #include "comvert.h"
 #include "comgeom.h"
-#include "advtrac.h"
 #include "temps.h"
 #include "control.h"
 
-      INTEGER nq, l
+      INTEGER l
       REAL vcov(ip1jm,llm),ucov(ip1jmp1,llm) 
       REAL teta(ip1jmp1,llm)                   
       REAL ps(ip1jmp1),masse(ip1jmp1,llm)                   
-      REAL q(ip1jmp1,llm,nq)
+      REAL q(ip1jmp1,llm,nqtot)
       CHARACTER*(*) fichnom
      
@@ -559,5 +556,5 @@
       call Gather_Field(ps,ip1jmp1,1,0)
       
-      do iq=1,nq
+      do iq=1,nqtot
         call Gather_Field(q(1,1,iq),ip1jmp1,llm,0)
       enddo
@@ -660,6 +657,5 @@
       END IF
 
-      IF(nq.GE.1) THEN
-      do iq=1,nq 
+      do iq=1,nqtot 
 
          IF (config_inca == 'none') THEN
@@ -731,6 +727,4 @@
       
       ENDDO
-      ENDIF
-
 
 
Index: LMDZ4/branches/LMDZ4-dev/libf/dyn3dpar/etat0_netcdf.F
===================================================================
--- LMDZ4/branches/LMDZ4-dev/libf/dyn3dpar/etat0_netcdf.F	(revision 1113)
+++ LMDZ4/branches/LMDZ4-dev/libf/dyn3dpar/etat0_netcdf.F	(revision 1114)
@@ -13,4 +13,5 @@
       USE phys_state_var_mod
       USE filtreg_mod
+      USE infotrac
       !
       IMPLICIT NONE
@@ -39,5 +40,5 @@
       REAL :: vvent(iip1, jjm, llm)
       REAL :: t3d(iip1, jjp1, llm), tpot(iip1, jjp1, llm)
-      REAL :: q3d(iip1, jjp1, llm,nqmx), qsat(iip1, jjp1, llm)
+      REAL :: q3d(iip1, jjp1, llm,nqtot), qsat(iip1, jjp1, llm)
       REAL :: tsol(klon), qsol(klon), sn(klon)
       REAL :: tsolsrf(klon,nbsrf), qsolsrf(klon,nbsrf),snsrf(klon,nbsrf) 
@@ -625,5 +626,5 @@
 
 C init pour traceurs
-      call iniadvtrac(nq)
+      call infotrac_init
 C Ecriture
       CALL inidissip( lstardis, nitergdiv, nitergrot, niterh   ,
@@ -649,7 +650,7 @@
      *                phi,w, pbaru,pbarv,time+iday-dayref   )
        print*,'sortie caldyn0'     
-      CALL dynredem0("start.nc",dayref,phis,nqmx)
+      CALL dynredem0("start.nc",dayref,phis)
       print*,'sortie dynredem0'
-      CALL dynredem1("start.nc",0.0,vvent,uvent,tpot,q3d,nqmx,masse ,
+      CALL dynredem1("start.nc",0.0,vvent,uvent,tpot,q3d,masse ,
      .                            psol)
       print*,'sortie dynredem1' 
@@ -743,6 +744,6 @@
       visu_file='Etat0_visu.nc'
       CALL initdynav(visu_file,dayref,anneeref,time_step,
-     .              t_ops, t_wrt, nqmx, visuid)
-      CALL writedynav(visuid, nqmx, itau,vvent ,
+     .              t_ops, t_wrt, visuid)
+      CALL writedynav(visuid, itau,vvent ,
      .                uvent,tpot,pk,phi,q3d,masse,psol,phis)
       else
Index: LMDZ4/branches/LMDZ4-dev/libf/dyn3dpar/fluxstokenc_p.F
===================================================================
--- LMDZ4/branches/LMDZ4-dev/libf/dyn3dpar/fluxstokenc_p.F	(revision 1113)
+++ LMDZ4/branches/LMDZ4-dev/libf/dyn3dpar/fluxstokenc_p.F	(revision 1114)
@@ -61,5 +61,5 @@
 	CALL initfluxsto_p( 'fluxstoke',
      .  time_step,istdyn* time_step,istdyn* time_step,
-     . nqmx, fluxid,fluxvid,fluxdid) 
+     .  fluxid,fluxvid,fluxdid) 
 	
         ijb=ij_begin
Index: LMDZ4/branches/LMDZ4-dev/libf/dyn3dpar/gcm.F
===================================================================
--- LMDZ4/branches/LMDZ4-dev/libf/dyn3dpar/gcm.F	(revision 1113)
+++ LMDZ4/branches/LMDZ4-dev/libf/dyn3dpar/gcm.F	(revision 1114)
@@ -14,4 +14,5 @@
       USE mod_grid_phy_lmdz
       USE dimphy
+      USE infotrac
       USE mod_interface_dyn_phys
       USE comgeomphy
@@ -67,5 +68,4 @@
 #include "iniprint.h"
 #include "tracstoke.h"
-#include "advtrac.h"
 
       INTEGER         longcles
@@ -83,5 +83,5 @@
       REAL vcov(ip1jm,llm),ucov(ip1jmp1,llm) ! vents covariants
       REAL teta(ip1jmp1,llm)                 ! temperature potentielle 
-      REAL q(ip1jmp1,llm,nqmx)               ! champs advectes
+      REAL, ALLOCATABLE, DIMENSION(:,:,:) :: q ! champs advectes
       REAL ps(ip1jmp1)                       ! pression  au sol
 c      REAL p (ip1jmp1,llmp1  )               ! pression aux interfac.des couches
@@ -138,5 +138,5 @@
 c    variables pour l'initialisation de la physique :
 c    ------------------------------------------------
-      INTEGER ngridmx,nq
+      INTEGER ngridmx
       PARAMETER( ngridmx = 2+(jjm-1)*iim - 1/jjm   )
       REAL zcufi(ngridmx),zcvfi(ngridmx)
@@ -159,16 +159,4 @@
       dynhistave_file = 'dyn_hist_ave'
 
-
-c initialisation Anne
-      hadv_flg(:) = 0.
-      vadv_flg(:) = 0.
-      conv_flg(:) = 0.
-      pbl_flg(:)  = 0. 
-      tracnam(:)  = '        ' 
-      nprath = 1
-      nbtrac = 0
-      mmt_adj(:,:,:,:) = 1
-
-
 c--------------------------------------------------------------------------
 c   Iflag_phys controle l'appel a la physique :
@@ -219,5 +207,5 @@
       call init_parallel
       call Read_Distrib
-      CALL Init_Phys_lmdz(iim,jjp1,llm,nqmx-2,mpi_size,distrib_phys)
+      CALL Init_Phys_lmdz(iim,jjp1,llm,mpi_size,distrib_phys)
       CALL set_bands
       CALL Init_interface_dyn_phys
@@ -238,5 +226,5 @@
 #ifdef INCA
          call init_const_lmdz(
-     $        nbtrac,anneeref,dayref,
+     $        nbtr,anneeref,dayref,
      $        iphysiq,day_step,nday)
 
@@ -250,9 +238,11 @@
 c   Initialisation des traceurs
 c   ---------------------------
-c  Choix du schema pour l'advection
-c  dans fichier trac.def ou via INCA
-
-       call iniadvtrac(nq)
-c
+c  Choix du nombre de traceurs et du schema pour l'advection
+c  dans fichier traceur.def, par default ou via INCA
+      call infotrac_init
+
+c Allocation de la tableau q : champs advectes   
+      ALLOCATE(q(ip1jmp1,llm,nqtot))
+
 c-----------------------------------------------------------------------
 c   Lecture de l'etat initial :
@@ -262,5 +252,5 @@
       if (read_start) then
 #ifdef CPP_IOIPSL
-         CALL dynetat0("start.nc",nqmx,vcov,ucov,
+         CALL dynetat0("start.nc",vcov,ucov,
      .              teta,q,masse,ps,phis, time_0)
 c       write(73,*) 'ucov',ucov
@@ -277,7 +267,6 @@
      .                 'AVANT iniacademic AVANT AVANT AVANT AVANT'
       if (.not.read_start) then
-         CALL iniacademic(nqmx,vcov,ucov,teta,q,masse,ps,phis,time_0)
+         CALL iniacademic(vcov,ucov,teta,q,masse,ps,phis,time_0)
       endif
-
 
 c-----------------------------------------------------------------------
@@ -414,5 +403,5 @@
 
 #ifdef CPP_IOIPSL
-      CALL dynredem0_p("restart.nc", day_end, phis, nqmx)
+      CALL dynredem0_p("restart.nc", day_end, phis)
 
       ecripar = .TRUE.
@@ -423,10 +412,10 @@
       t_wrt = iecri * daysec
       CALL inithist_p(dynhist_file,day_ref,annee_ref,time_step,
-     .              t_ops, t_wrt, nqmx, histid, histvid)
+     .              t_ops, t_wrt, histid, histvid)
 
       t_ops = iperiod * time_step
       t_wrt = periodav * daysec
       CALL initdynav_p(dynhistave_file,day_ref,annee_ref,time_step,
-     .              t_ops, t_wrt, nqmx, histaveid)
+     .              t_ops, t_wrt, histaveid)
 
       dtav = iperiod*dtvr/daysec
@@ -455,5 +444,5 @@
 
 c$OMP PARALLEL DEFAULT(SHARED) COPYIN(/temps/,/logic/)
-      CALL leapfrog_p(ucov,vcov,teta,ps,masse,phis,nq,q,clesphy0,
+      CALL leapfrog_p(ucov,vcov,teta,ps,masse,phis,q,clesphy0,
      .              time_0)
 c$OMP END PARALLEL
Index: LMDZ4/branches/LMDZ4-dev/libf/dyn3dpar/infotrac.F90
===================================================================
--- LMDZ4/branches/LMDZ4-dev/libf/dyn3dpar/infotrac.F90	(revision 1114)
+++ LMDZ4/branches/LMDZ4-dev/libf/dyn3dpar/infotrac.F90	(revision 1114)
@@ -0,0 +1,317 @@
+MODULE infotrac
+
+! nqtot : total number of tracers and higher order of moment, water vapor and liquid included
+  INTEGER, SAVE :: nqtot
+!$OMP THREADPRIVATE(nqtot)   
+
+! nbtr : number of tracers not including higher order of moment or water vapor or liquid
+!        number of tracers used in the physics
+  INTEGER, SAVE :: nbtr
+!$OMP THREADPRIVATE(nbtr)   
+
+! 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
+!$OMP THREADPRIVATE(tname,ttext)   
+
+! iadv  : index of trasport schema for each tracer
+  INTEGER, ALLOCATABLE, DIMENSION(:), SAVE    :: iadv
+!$OMP THREADPRIVATE(iadv)   
+
+! niadv : vector keeping the coorspondance between all tracers(nqtot) treated in the 
+!         dynamic part of the code and the tracers (nbtr+2) used in the physics part of the code. 
+  INTEGER, ALLOCATABLE, DIMENSION(:), SAVE    :: niadv ! equivalent dyn / physique
+!$OMP THREADPRIVATE(niadv)   
+
+! Variables for INCA
+  INTEGER, ALLOCATABLE, DIMENSION(:), SAVE  :: conv_flg
+  INTEGER, ALLOCATABLE, DIMENSION(:), SAVE  :: pbl_flg
+!$OMP THREADPRIVATE(conv_flg, pbl_flg)   
+
+CONTAINS
+
+  SUBROUTINE infotrac_init
+    IMPLICIT NONE
+!=======================================================================
+!
+!   Auteur:  P. Le Van /L. Fairhead/F.Hourdin
+!   -------
+!   Modif special traceur F.Forget 05/94
+!   Modif M-A Filiberti 02/02 lecture de traceur.def
+!
+!   Objet:
+!   ------
+!   GCM LMD nouvelle grille
+!
+!=======================================================================
+!   ... modification de l'integration de q ( 26/04/94 ) ....
+!-----------------------------------------------------------------------
+! Declarations
+
+    INCLUDE "dimensions.h"
+    INCLUDE "control.h"
+    INCLUDE "iniprint.h"
+
+! Local variables
+    INTEGER, ALLOCATABLE, DIMENSION(:) :: hadv  ! index of horizontal trasport schema
+    INTEGER, ALLOCATABLE, DIMENSION(:) :: vadv  ! index of vertical trasport schema
+
+    CHARACTER(len=8), ALLOCATABLE, DIMENSION(:) :: tnom_0  ! tracer short name
+    CHARACTER(len=8), ALLOCATABLE, DIMENSION(:) :: tracnam ! name from INCA
+    CHARACTER(len=3), DIMENSION(30) :: descrq
+    CHARACTER(len=1), DIMENSION(3)  :: txts
+    CHARACTER(len=2), DIMENSION(9)  :: txtp
+    CHARACTER(len=13)               :: str1,str2
+  
+    INTEGER :: nqtrue  ! number of tracers read from tracer.def, without higer order of moment
+    INTEGER :: iq, new_iq, iiq, jq, ierr
+    INTEGER, EXTERNAL :: lnblnk
+ 
+!-----------------------------------------------------------------------
+! Initialization :
+!
+    txts=(/'x','y','z'/)
+    txtp=(/'x ','y ','z ','xx','xy','xz','yy','yz','zz'/)
+
+    descrq(14)='VLH'
+    descrq(10)='VL1'
+    descrq(11)='VLP'
+    descrq(12)='FH1'
+    descrq(13)='FH2'
+    descrq(16)='PPM'
+    descrq(17)='PPS'
+    descrq(18)='PPP'
+    descrq(20)='SLP'
+    descrq(30)='PRA'
+
+!-----------------------------------------------------------------------
+!
+! 1) Get the true number of tracers + water vapor/liquid
+!    Here true tracers (nqtrue) means declared tracers (only first order)
+!
+!-----------------------------------------------------------------------
+    IF (config_inca == 'none') THEN
+       OPEN(90,file='traceur.def',form='formatted',status='old', iostat=ierr)
+       IF(ierr.EQ.0) THEN
+          WRITE(lunout,*) 'Open traceur.def : ok'
+          READ(90,*) nqtrue
+       ELSE 
+          WRITE(lunout,*) 'Problem in opening traceur.def'
+          WRITE(lunout,*) 'ATTENTION using defaut values'
+          nqtrue=4 ! Defaut value
+       END IF
+       ! Attention! Only for planet_type=='earth'
+       nbtr=nqtrue-2
+    ELSE
+       ! nbtr has been read from INCA by init_cont_lmdz() in gcm.F 
+       nqtrue=nbtr+2
+    END IF
+
+    IF (nqtrue < 2) THEN
+       WRITE(lunout,*) 'nqtrue=',nqtrue, ' is not allowded. 2 tracers is the minimum'
+       CALL abort_gcm('infotrac_init','Not enough tracers',1)
+    END IF
+!
+! Allocate variables depending on nqtrue
+!
+    ALLOCATE(tnom_0(nqtrue), hadv(nqtrue), vadv(nqtrue))
+
+    IF (config_inca /= 'none') THEN
+       ! Varaibles only needed in case of INCA
+       ALLOCATE(conv_flg(nbtr), pbl_flg(nbtr), tracnam(nbtr))
+    END IF
+       
+!-----------------------------------------------------------------------
+! 2)     Choix  des schemas d'advection pour l'eau et les traceurs
+!
+!     iadv = 1    schema  transport type "humidite specifique LMD"
+!     iadv = 2    schema   amont
+!     iadv = 14   schema  Van-leer + humidite specifique 
+!                            Modif F.Codron
+!     iadv = 10   schema  Van-leer (retenu pour l'eau vapeur et liquide)
+!     iadv = 11   schema  Van-Leer pour hadv et version PPM (Monotone) pour vadv
+!     iadv = 12   schema  Frederic Hourdin I
+!     iadv = 13   schema  Frederic Hourdin II
+!     iadv = 16   schema  PPM Monotone(Collela & Woodward 1984)
+!     iadv = 17   schema  PPM Semi Monotone (overshoots autorisés)
+!     iadv = 18   schema  PPM Positif Defini (overshoots undershoots autorisés)
+!     iadv = 20   schema  Slopes
+!     iadv = 30   schema  Prather
+!
+!        Dans le tableau q(ij,l,iq) : iq = 1  pour l'eau vapeur
+!                                     iq = 2  pour l'eau liquide
+!       Et eventuellement             iq = 3,nqtot pour les autres traceurs
+!
+!        iadv(1): choix pour l'eau vap. et  iadv(2) : choix pour l'eau liq.
+!------------------------------------------------------------------------
+!
+!    Get choice of advection schema from file tracer.def or from INCA
+!---------------------------------------------------------------------
+    IF (config_inca == 'none') THEN
+       IF(ierr.EQ.0) THEN
+          ! Continue to read tracer.def
+          DO iq=1,nqtrue
+             READ(90,999) hadv(iq),vadv(iq),tnom_0(iq)
+          END DO
+          CLOSE(90)  
+       ELSE ! Without tracer.def
+          hadv(1) = 14
+          vadv(1) = 14
+          tnom_0(1) = 'H2Ov'
+          hadv(2) = 10
+          vadv(2) = 10
+          tnom_0(2) = 'H2Ol'
+          hadv(3) = 10
+          vadv(3) = 10
+          tnom_0(3) = 'RN'
+          hadv(4) = 10
+          vadv(4) = 10
+          tnom_0(4) = 'PB'
+       END IF
+       
+       WRITE(lunout,*) 'Valeur de traceur.def :'
+       WRITE(lunout,*) 'nombre de traceurs ',nqtrue
+       DO iq=1,nqtrue
+          WRITE(lunout,*) hadv(iq),vadv(iq),tnom_0(iq)
+       END DO
+
+    ELSE  ! config_inca='aero' ou 'chem'
+! le module de chimie fournit les noms des traceurs
+! et les schemas d'advection associes.
+     
+#ifdef INCA
+       CALL init_transport( &
+            hadv, &
+            vadv, &
+            conv_flg, &
+            pbl_flg,  &
+            tracnam)
+#endif
+       tnom_0(1)='H2Ov'
+       tnom_0(2)='H2Ol'
+
+       DO iq =3,nqtrue
+          tnom_0(iq)=tracnam(iq-2)
+       END DO
+
+    END IF ! config_inca
+
+!-----------------------------------------------------------------------
+!
+! 3) Verify if advection schema 20 or 30 choosen
+!    Calculate total number of tracers needed: nqtot
+!    Allocate variables depending on total number of tracers
+!-----------------------------------------------------------------------
+    new_iq=0
+    DO iq=1,nqtrue
+       ! Add tracers for certain advection schema
+       IF (hadv(iq)<20 .AND. vadv(iq)<20 ) THEN
+          new_iq=new_iq+1  ! no tracers added
+       ELSE IF (hadv(iq)==20 .AND. vadv(iq)==20 ) THEN
+          new_iq=new_iq+4  ! 3 tracers added
+       ELSE IF (hadv(iq)==30 .AND. vadv(iq)==30 ) THEN
+          new_iq=new_iq+10 ! 9 tracers added
+       ELSE
+          WRITE(lunout,*) 'This choice of advection schema is not available'
+          CALL abort_gcm('infotrac_init','Bad choice of advection schema - 1',1)
+       END IF
+    END DO
+    
+    IF (new_iq /= nqtrue) THEN
+       ! The choice of advection schema imposes more tracers
+       ! Assigne total number of tracers
+       nqtot = new_iq
+
+       WRITE(lunout,*) 'The choice of advection schema for one or more tracers'
+       WRITE(lunout,*) 'makes it necessary to add tracers'
+       WRITE(lunout,*) nqtrue,' is the number of true tracers'
+       WRITE(lunout,*) nqtot, ' is the total number of tracers needed'
+
+    ELSE
+       ! The true number of tracers is also the total number
+       nqtot = nqtrue
+    END IF
+
+!
+! Allocate variables with total number of tracers, nqtot
+!
+    ALLOCATE(tname(nqtot), ttext(nqtot))
+    ALLOCATE(iadv(nqtot), niadv(nqtot))
+
+!-----------------------------------------------------------------------
+!
+! 4) Determine iadv, long and short name
+!
+!-----------------------------------------------------------------------
+    new_iq=0
+    DO iq=1,nqtrue
+       new_iq=new_iq+1
+
+       ! Verify choice of advection schema
+       IF (hadv(iq)==vadv(iq)) THEN
+          iadv(new_iq)=hadv(iq)
+       ELSE IF (hadv(iq)==10 .AND. vadv(iq)==16) THEN
+          iadv(new_iq)=11
+       ELSE
+          WRITE(lunout,*)'This choice of advection schema is not available'
+          CALL abort_gcm('infotrac_init','Bad choice of advection schema - 2',1)
+       END IF
+      
+       str1=tnom_0(iq)
+       tname(new_iq)= tnom_0(iq)
+       IF (iadv(new_iq)==0) THEN
+          ttext(new_iq)=str1(1:lnblnk(str1))
+       ELSE
+          ttext(new_iq)=str1(1:lnblnk(str1))//descrq(iadv(new_iq))
+       END IF
+
+       ! schemas tenant compte des moments d'ordre superieur
+       str2=ttext(new_iq)
+       IF (iadv(new_iq)==20) THEN
+          DO jq=1,3
+             new_iq=new_iq+1
+             iadv(new_iq)=-20
+             ttext(new_iq)=str2(1:lnblnk(str2))//txts(jq)
+             tname(new_iq)=str1(1:lnblnk(str1))//txts(jq)
+          END DO
+       ELSE IF (iadv(new_iq)==30) THEN
+          DO jq=1,9
+             new_iq=new_iq+1
+             iadv(new_iq)=-30
+             ttext(new_iq)=str2(1:lnblnk(str2))//txtp(jq)
+             tname(new_iq)=str1(1:lnblnk(str1))//txtp(jq)
+          END DO
+       END IF
+    END DO
+
+!
+! Find vector keeping the correspodence between true and total tracers
+!
+    niadv(:)=0
+    iiq=0
+    DO iq=1,nqtot
+       IF(iadv(iq).GE.0) THEN
+          ! True tracer
+          iiq=iiq+1
+          niadv(iiq)=iq
+       ENDIF
+    END DO
+
+
+    WRITE(lunout,*) 'Information stored in dimtrac :'
+    WRITE(lunout,*) 'iadv  niadv tname  ttext :'
+    DO iq=1,nqtot
+       WRITE(lunout,*) iadv(iq),niadv(iq), tname(iq), ttext(iq)
+    END DO
+
+!-----------------------------------------------------------------------
+! Finalize :
+!
+    DEALLOCATE(tnom_0, hadv, vadv)
+    IF (config_inca /= 'none') DEALLOCATE(tracnam)
+
+999 FORMAT (i2,1x,i2,1x,a8)
+
+  END SUBROUTINE infotrac_init
+
+END MODULE infotrac
Index: LMDZ4/branches/LMDZ4-dev/libf/dyn3dpar/iniacademic.F
===================================================================
--- LMDZ4/branches/LMDZ4-dev/libf/dyn3dpar/iniacademic.F	(revision 1113)
+++ LMDZ4/branches/LMDZ4-dev/libf/dyn3dpar/iniacademic.F	(revision 1114)
@@ -4,7 +4,8 @@
 c
 c
-      SUBROUTINE iniacademic(nq,vcov,ucov,teta,q,masse,ps,phis,time_0)
+      SUBROUTINE iniacademic(vcov,ucov,teta,q,masse,ps,phis,time_0)
 
       USE filtreg_mod
+      USE infotrac, ONLY : nqtot
 
 c%W%    %G%
@@ -48,5 +49,4 @@
 c   ----------
 
-      integer nq
       real time_0
 
@@ -54,5 +54,5 @@
       REAL vcov(ip1jm,llm),ucov(ip1jmp1,llm) ! vents covariants
       REAL teta(ip1jmp1,llm)                 ! temperature potentielle
-      REAL q(ip1jmp1,llm,nq)               ! champs advectes
+      REAL q(ip1jmp1,llm,nqtot)              ! champs advectes
       REAL ps(ip1jmp1)                       ! pression  au sol
       REAL masse(ip1jmp1,llm)                ! masse d'air
@@ -160,5 +160,5 @@
       q(:,:,1   )=1.e-10
       q(:,:,2   )=1.e-15
-      q(:,:,3:nq)=0.
+      q(:,:,3:nqtot)=0.
 
 
Index: LMDZ4/branches/LMDZ4-dev/libf/dyn3dpar/iniadvtrac.F
===================================================================
--- LMDZ4/branches/LMDZ4-dev/libf/dyn3dpar/iniadvtrac.F	(revision 1113)
+++ 	(revision )
@@ -1,248 +1,0 @@
-!
-! $Header$
-!
-c
-c
-      subroutine iniadvtrac(nq)
-      USE ioipsl
-      IMPLICIT NONE
-c=======================================================================
-c
-c   Auteur:  P. Le Van /L. Fairhead/F.Hourdin
-c   -------
-c   Modif special traceur F.Forget 05/94
-c   Modif M-A Filiberti 02/02 lecture de traceur.def
-c
-c   Objet:
-c   ------
-c
-c   GCM LMD nouvelle grille
-c
-c=======================================================================
-c   ... modification de l'integration de q ( 26/04/94 ) ....
-c-----------------------------------------------------------------------
-c   Declarations:
-c   -------------
-C
-#include "dimensions.h"
-#include "advtrac.h"
-#include "control.h"
-
-c   local
-      character*3 descrq(30)
-      character*1 txts(3)
-      character*2 txtp(9)
-      character*13 str1,str2,str3
-
-      integer nq,iq,iiq,iiiq,ierr,ii
-      integer lnblnk
-      external lnblnk
-
-      data txts/'x','y','z'/
-      data txtp/'x','y','z','xx','xy','xz','yy','yz','zz'/
-
-c-----------------------------------------------------------------------
-c   Initialisations:
-c   ----------------
-      descrq(14)='VLH'
-      descrq(10)='VL1'
-      descrq(11)='VLP'
-      descrq(12)='FH1'
-      descrq(13)='FH2'
-      descrq(16)='PPM'
-      descrq(17)='PPS'
-      descrq(18)='PPP'
-      descrq(20)='SLP'
-      descrq(30)='PRA'
-
-      IF (config_inca /= 'none') THEN
-#ifdef INCA
-         CALL init_transport( 
-     $        hadv_flg,
-     $        vadv_flg,
-     $        conv_flg,
-     $        pbl_flg,
-     $        tracnam)
-#endif
-      END IF
-c-----------------------------------------------------------------------
-c        Choix  des schemas d'advection pour l'eau et les traceurs
-c
-c     iadv = 1    schema  transport type "humidite specifique LMD"
-c     iadv = 2    schema   amont
-c     iadv = 14    schema  Van-leer + humidite specifique 
-c                            Modif F.Codron
-c     iadv = 10   schema  Van-leer (retenu pour l'eau vapeur et liquide)
-c     iadv = 11   schema  Van-Leer pour hadv et version PPM (Monotone) pour vadv
-c     iadv = 12   schema  Frederic Hourdin I
-c     iadv = 13   schema  Frederic Hourdin II
-c     iadv = 16   schema  PPM Monotone(Collela & Woodward 1984)
-c     iadv = 17   schema  PPM Semi Monotone (overshoots autorisés)
-c     iadv = 18   schema  PPM Positif Defini (overshoots undershoots autorisés)
-c     iadv = 20   schema  Slopes
-c     iadv = 30   schema  Prather
-c
-c        Dans le tableau q(ij,l,iq) : iq = 1  pour l'eau vapeur
-c                                     iq = 2  pour l'eau liquide
-c        Et eventuellement            iq = 3,nqmx pour les autres traceurs
-c
-c        iadv(1): choix pour l'eau vap. et  iadv(2) : choix pour l'eau liq.
-C------------------------------------------------------------------------
-c     Choix du schema d'advection
-c------------------------------------------------------------------
-c choix par defaut = van leer pour tous les traceurs
-      do iq=1,nqmx
-       iadv(iq)=10
-       str1(1:1)='q'
-       if (nqmx.le.99) then
-       WRITE(str1(2:3),'(i2.2)') iq
-       else
-       WRITE(str1(2:4),'(i3.3)') iq
-       endif
-       tnom(iq)=str1
-       tname(iq)=tnom(iq) 
-       str2=tnom(iq) 
-       ttext(iq)=str2(1:lnblnk(str2))//descrq(iadv(iq))
-      end do
-      nq=nqmx
-c------------------------------------------------------------------
-c     Choix du schema pour l'advection
-c    dans fichier traceur.def
-c------------------------------------------------------------------
-
-      IF (config_inca /= 'none') THEN
-C le module de chimie fournit les noms des traceurs
-C et les schemas d'advection associes.
-         tnom(1)='H2Ov'
-         tnom(2)='H2Ol'
-         nq=nbtrac+2
-      
-       if (nq.gt.nqmx) then
-       print*,'nombre de traceurs incompatible INCA/LMDZT', nq, nbtrac
-       stop
-       endif
-      do iq =3,nq
-      tnom(iq)=tracnam(iq-2)
-      end do
-      do iq =1,nq
-      hadv(iq)= hadv_flg(iq) 
-      vadv(iq)= vadv_flg(iq) 
-      end do
-      ELSE  ! config_inca=none
-         print*,'ouverture de traceur.def'
-         open(90,file='traceur.def',form='formatted',status='old',
-     s        iostat=ierr)
-      if(ierr.eq.0) then
-        print*,'ouverture de traceur.def ok'
-        read(90,*) nq
-        print*,'nombre de traceurs ',nq
-        if (nq.gt.nqmx) then
-          print*,'nombre de traceurs trop important'
-          print*,'verifier traceur.def'
-          stop
-        endif
-C
-        do iq=1,nq
-          read(90,999) hadv(iq),vadv(iq),tnom(iq)
-        end do
-        close(90)  
-        PRINT*,'lecture de traceur.def :'   
-        do iq=1,nq
-          write(*,*) hadv(iq),vadv(iq),tnom(iq)
-        end do       
-      else
-        print*,'pb ouverture traceur.def'
-        print*,'ATTENTION on prend des valeurs par defaut'
-        nq = 4
-        hadv(1) = 14
-        vadv(1) = 14
-        tnom(1) = 'H2Ov'
-        hadv(2) = 10
-        vadv(2) = 10
-        tnom(2) = 'H2Ol'
-        hadv(3) = 10
-        vadv(3) = 10
-        tnom(3) = 'RN'
-        hadv(4) = 10
-        vadv(4) = 10
-        tnom(4) = 'PB'
-      ENDIF
-      PRINT*,'Valeur de traceur.def :'
-      do iq=1,nq
-        write(*,*) hadv(iq),vadv(iq),tnom(iq)
-      end do       
-
-      END IF ! config_inca
-
-c a partir du nom court du traceur et du schema d'advection au detemine le nom long.
-        iiq=0
-        ii=0
-        do iq=1,nq 
-         iiq=iiq+1
-         if (hadv(iq).ne.vadv(iq)) then
-           if (hadv(iq).eq.10.and.vadv(iq).eq.16) then
-             iadv(iiq)=11
-           else
-             print*,'le choix des schemas d''advection H et V'
-             print*, 'est non disponible actuellement'
-             stop 
-           endif
-         else
-          iadv(iiq)=hadv(iq)
-         endif
-c verification nombre de traceurs
-          if (iadv(iiq).lt.20) then
-             ii=ii+1
-          elseif (iadv(iiq).eq.20) then
-             ii=ii+4
-          elseif (iadv(iiq).eq.30) then
-             ii=ii+10
-          endif
- 
-         str1=tnom(iq)
-         tname(iiq)=tnom(iq)
-         IF (iadv(iiq).eq.0) THEN
-           ttext(iiq)=str1(1:lnblnk(str1))
-         ELSE
-           ttext(iiq)=str1(1:lnblnk(str1))//descrq(iadv(iiq))
-         ENDIF
-         str2=ttext(iiq)
-c   schemas tenant compte des moments d'ordre superieur.
-          if (iadv(iiq).eq.20) then
-             do iiiq=1,3
-               iiq=iiq+1
-               iadv(iiq)=-20
-               ttext(iiq)=str2(1:lnblnk(str2))//txts(iiiq)
-               tname(iiq)=str1(1:lnblnk(str1))//txts(iiiq)
-              enddo
-            elseif (iadv(iiq).eq.30) then
-              do iiiq=1,9
-               iiq=iiq+1
-               iadv(iiq)=-30
-               ttext(iiq)=str2(1:lnblnk(str2))//txtp(iiiq)
-               tname(iiq)=str1(1:lnblnk(str1))//txtp(iiiq)
-              enddo
-           endif
-        end do
-       if(ii.ne.nqmx) then
-       print*,'WARNING'
-       print*,'le nombre de traceurs et de moments eventuels'
-       print*,'est inferieur a nqmx '
-       endif
-       if (iiq.gt.nqmx) then
-       print*,'le choix des schemas est incompatible avec '
-       print*,'la dimension nqmx (nombre de traceurs)'
-       print*,'verifier traceur.def ou la namelist INCA'
-       print*,'ou recompiler avec plus de traceurs'
-       stop
-       endif
-      iiq=0
-      do iq=1,nqmx
-         if(iadv(iq).ge.0) then
-             iiq=iiq+1
-             niadv(iiq)=iq
-         endif
-      end do
-      return
-999   format (i2,1x,i2,1x,a8)
-      END
Index: LMDZ4/branches/LMDZ4-dev/libf/dyn3dpar/initdynav_p.F
===================================================================
--- LMDZ4/branches/LMDZ4-dev/libf/dyn3dpar/initdynav_p.F	(revision 1113)
+++ LMDZ4/branches/LMDZ4-dev/libf/dyn3dpar/initdynav_p.F	(revision 1114)
@@ -4,6 +4,5 @@
 c
 c
-      subroutine initdynav_p(infile,day0,anne0,tstep,t_ops,t_wrt
-     .                     ,nq,fileid)
+      subroutine initdynav_p(infile,day0,anne0,tstep,t_ops,t_wrt,fileid)
 
        USE IOIPSL
@@ -11,4 +10,6 @@
        use Write_field
        use misc_mod
+       USE infotrac
+
       implicit none
 
@@ -30,5 +31,4 @@
 C      t_ops: frequence de l'operation pour IOIPSL
 C      t_wrt: frequence d'ecriture sur le fichier
-C      nq: nombre de traceurs
 C
 C   Sortie:
@@ -50,5 +50,4 @@
 #include "description.h"
 #include "serre.h"
-#include "advtrac.h"
 
 C   Arguments
@@ -58,5 +57,4 @@
       real tstep, t_ops, t_wrt
       integer fileid
-      integer nq
       integer thoriid, zvertiid
 
@@ -82,5 +80,4 @@
       
       INTEGER :: dynave_domain_id
-      
       
       if (adjust) return
@@ -169,5 +166,5 @@
 C  Traceurs
 C
-        DO iq=1,nq
+        DO iq=1,nqtot
           call histdef(fileid, ttext(iq), ttext(iq), '-',
      .             iip1, jjn, thoriid, llm, 1, llm, zvertiid,
Index: LMDZ4/branches/LMDZ4-dev/libf/dyn3dpar/initfluxsto_p.F
===================================================================
--- LMDZ4/branches/LMDZ4-dev/libf/dyn3dpar/initfluxsto_p.F	(revision 1113)
+++ LMDZ4/branches/LMDZ4-dev/libf/dyn3dpar/initfluxsto_p.F	(revision 1114)
@@ -3,5 +3,5 @@
 !
       subroutine initfluxsto_p
-     .  (infile,tstep,t_ops,t_wrt,nq,
+     .  (infile,tstep,t_ops,t_wrt,
      .                    fileid,filevid,filedid)
 
@@ -30,5 +30,4 @@
 C      t_ops: frequence de l'operation pour IOIPSL
 C      t_wrt: frequence d'ecriture sur le fichier
-C      nq: nombre de traceurs
 C
 C   Sortie:
@@ -58,5 +57,5 @@
       real tstep, t_ops, t_wrt
       integer fileid, filevid,filedid
-      integer nq,ndex(1)
+      integer ndex(1)
       real nivd(1)
 
@@ -87,5 +86,4 @@
       INTEGER :: dynu_domain_id
       INTEGER :: dynv_domain_id
-
 
 C
Index: LMDZ4/branches/LMDZ4-dev/libf/dyn3dpar/inithist_p.F
===================================================================
--- LMDZ4/branches/LMDZ4-dev/libf/dyn3dpar/inithist_p.F	(revision 1113)
+++ LMDZ4/branches/LMDZ4-dev/libf/dyn3dpar/inithist_p.F	(revision 1114)
@@ -2,5 +2,5 @@
 ! $Header$
 !
-      subroutine inithist_p(infile,day0,anne0,tstep,t_ops,t_wrt,nq,
+      subroutine inithist_p(infile,day0,anne0,tstep,t_ops,t_wrt,
      .                      fileid,filevid)
 
@@ -9,4 +9,5 @@
        use Write_field
        use misc_mod
+       USE infotrac
 
       implicit none
@@ -29,5 +30,4 @@
 C      t_ops: frequence de l'operation pour IOIPSL
 C      t_wrt: frequence d'ecriture sur le fichier
-C      nq: nombre de traceurs
 C
 C   Sortie:
@@ -50,5 +50,4 @@
 #include "description.h"
 #include "serre.h"
-#include "advtrac.h"
 
 C   Arguments
@@ -58,5 +57,4 @@
       real tstep, t_ops, t_wrt
       integer fileid, filevid
-      integer nq
 
 C   Variables locales
@@ -83,4 +81,5 @@
       INTEGER :: dynu_domain_id
       INTEGER :: dynv_domain_id
+
 C
 C  Initialisations
@@ -217,5 +216,5 @@
 C  Traceurs
 C
-        DO iq=1,nq
+        DO iq=1,nqtot
           call histdef(fileid, ttext(iq),  ttext(iq), '-',
      .             iip1, jjn, thoriid, llm, 1, llm, zvertiid,
Index: LMDZ4/branches/LMDZ4-dev/libf/dyn3dpar/integrd_p.F
===================================================================
--- LMDZ4/branches/LMDZ4-dev/libf/dyn3dpar/integrd_p.F	(revision 1113)
+++ LMDZ4/branches/LMDZ4-dev/libf/dyn3dpar/integrd_p.F	(revision 1114)
@@ -32,5 +32,4 @@
 #include "temps.h"
 #include "serre.h"
-#include "advtrac.h"
 
 c   Arguments:
Index: LMDZ4/branches/LMDZ4-dev/libf/dyn3dpar/leapfrog_p.F
===================================================================
--- LMDZ4/branches/LMDZ4-dev/libf/dyn3dpar/leapfrog_p.F	(revision 1113)
+++ LMDZ4/branches/LMDZ4-dev/libf/dyn3dpar/leapfrog_p.F	(revision 1114)
@@ -9,5 +9,5 @@
 #define CPP_IOIPSL
 
-      SUBROUTINE leapfrog_p(ucov,vcov,teta,ps,masse,phis,nq,q,clesphy0,
+      SUBROUTINE leapfrog_p(ucov,vcov,teta,ps,masse,phis,q,clesphy0,
      &                    time_0)
 
@@ -21,4 +21,5 @@
        USE vampir
        USE timer_filtre, ONLY : print_filtre_timer
+       USE infotrac
 
       IMPLICIT NONE
@@ -69,13 +70,6 @@
 #include "com_io_dyn.h"
 #include "iniprint.h"
-
-c#include "tracstoke.h"
-
 #include "academic.h"
-!#include "clesphys.h"
-#include "advtrac.h"
       
-      integer nq
-
       INTEGER         longcles
       PARAMETER     ( longcles = 20 )
@@ -88,5 +82,5 @@
       REAL :: vcov(ip1jm,llm),ucov(ip1jmp1,llm) ! vents covariants
       REAL :: teta(ip1jmp1,llm)                 ! temperature potentielle 
-      REAL :: q(ip1jmp1,llm,nqmx)               ! champs advectes
+      REAL :: q(ip1jmp1,llm,nqtot)              ! champs advectes
       REAL :: ps(ip1jmp1)                       ! pression  au sol
       REAL,SAVE :: p (ip1jmp1,llmp1  )               ! pression aux interfac.des couches
@@ -109,5 +103,6 @@
 c   tendances dynamiques
       REAL,SAVE :: dv(ip1jm,llm),du(ip1jmp1,llm)
-      REAL,SAVE :: dteta(ip1jmp1,llm),dq(ip1jmp1,llm,nqmx),dp(ip1jmp1)
+      REAL,SAVE :: dteta(ip1jmp1,llm),dp(ip1jmp1)
+      REAL,DIMENSION(:,:,:), ALLOCATABLE, SAVE :: dq
 
 c   tendances de la dissipation
@@ -118,5 +113,6 @@
       REAL,SAVE :: dvfi(ip1jm,llm),dufi(ip1jmp1,llm)
       REAL,SAVE :: dtetafi(ip1jmp1,llm)
-      REAL,SAVE :: dqfi(ip1jmp1,llm,nqmx),dpfi(ip1jmp1)
+      REAL,SAVE :: dpfi(ip1jmp1)
+      REAL,DIMENSION(:,:,:),ALLOCATABLE,SAVE :: dqfi
 
 c   variables pour le fichier histoire
@@ -186,5 +182,6 @@
       type(Request) :: Request_physic
       REAL,SAVE :: dvfi_tmp(iip1,llm),dufi_tmp(iip1,llm)
-      REAL,SAVE :: dtetafi_tmp(iip1,llm),dqfi_tmp(iip1,llm,nqmx)
+      REAL,SAVE :: dtetafi_tmp(iip1,llm)
+      REAL,DIMENSION(:,:,:),ALLOCATABLE,SAVE :: dqfi_tmp
       REAL,SAVE :: dpfi_tmp(iip1)
 
@@ -195,4 +192,5 @@
       INTEGER :: var_time
       LOGICAL :: ok_start_timer=.FALSE.
+      LOGICAL, SAVE :: firstcall=.TRUE.
 
 c$OMP MASTER
@@ -208,5 +206,5 @@
       itaufin   = nday*day_step
       itaufinp1 = itaufin +1
-
+      modname="leapfrog_p"
 
       itau = 0
@@ -217,4 +215,15 @@
           iday = iday+1
          ENDIF
+
+c Allocate variables depending on dynamic variable nqtot
+c$OMP MASTER
+         IF (firstcall) THEN
+            firstcall=.FALSE.
+            ALLOCATE(dq(ip1jmp1,llm,nqtot))
+            ALLOCATE(dqfi(ip1jmp1,llm,nqtot))
+            ALLOCATE(dqfi_tmp(iip1,llm,nqtot))
+         END IF
+c$OMP END MASTER      
+c$OMP BARRIER
 
 c-----------------------------------------------------------------------
@@ -455,5 +464,5 @@
      &                                jj_Nb_caldyn,0,0,TestRequest)
  
-        do j=1,nqmx
+        do j=1,nqtot
          call Register_SwapFieldHallo(q(1,1,j),q(1,1,j),ip1jmp1,llm,
      &                                jj_nb_caldyn,0,0,TestRequest)
@@ -490,5 +499,5 @@
        call Register_Hallo(p,ip1jmp1,llmp1,1,1,1,1,TestRequest)
        
-c       do j=1,nqmx
+c       do j=1,nqtot
 c         call Register_Hallo(q(1,1,j),ip1jmp1,llm,1,1,1,1,
 c     *                       TestRequest)
@@ -516,5 +525,5 @@
         call WriteField_p('pkf',reshape(pkf,(/iip1,jmp1,llm/)))
         call WriteField_p('phis',reshape(phis,(/iip1,jmp1/)))
-        do j=1,nqmx
+        do j=1,nqtot
           call WriteField_p('q'//trim(int2str(j)),
      .                reshape(q(:,:,j),(/iip1,jmp1,llm/)))
@@ -608,4 +617,5 @@
 c$OMP BARRIER
 !       CALL FTRACE_REGION_BEGIN("integrd")
+
        CALL integrd_p ( 2,vcovm1,ucovm1,tetam1,psm1,massem1 ,
      $         dv,du,dteta,dq,dp,vcov,ucov,teta,q,ps,masse,phis ,
@@ -625,5 +635,5 @@
 c
 c      call WriteField_p('ps',reshape(ps,(/iip1,jmp1/)))
-c      do j=1,nqmx
+c      do j=1,nqtot
 c        call WriteField_p('q'//trim(int2str(j)),
 c     .                reshape(q(:,:,j),(/iip1,jmp1,llm/)))
@@ -669,5 +679,4 @@
 
 c$OMP BARRIER
-
          CALL exner_hyb_p(  ip1jmp1, ps, p,alpha,beta,pks, pk, pkf )
 c$OMP BARRIER
@@ -725,5 +734,5 @@
         
 c        call SetDistrib(jj_nb_vanleer)
-        do j=1,nqmx
+        do j=1,nqtot
  
           call Register_SwapFieldHallo(q(1,1,j),q(1,1,j),ip1jmp1,llm,
@@ -756,5 +765,5 @@
 cc$OMP BARRIER
 !        CALL FTRACE_REGION_BEGIN("calfis")
-        CALL calfis_p( nq, lafin ,rdayvrai,time  ,
+        CALL calfis_p(lafin ,rdayvrai,time  ,
      $               ucov,vcov,teta,q,masse,ps,p,pk,phis,phi ,
      $               du,dv,dteta,dq,
@@ -799,5 +808,5 @@
      *                      1,0,0,1,Request_physic)
 
-        do j=1,nqmx
+        do j=1,nqtot
           call Register_Hallo(dqfi(1,1,j),ip1jmp1,llm,
      *                        1,0,0,1,Request_physic)
@@ -842,5 +851,5 @@
 cc$OMP END MASTER
 c      
-c      do j=1,nqmx
+c      do j=1,nqtot
 c        call WriteField_p('dqfi'//trim(int2str(j)),
 c     .                reshape(dqfi(:,:,j),(/iip1,jmp1,llm/)))
@@ -853,5 +862,5 @@
          ENDIF
        
-          CALL addfi_p( nqmx, dtphys, leapf, forward   ,
+          CALL addfi_p( dtphys, leapf, forward   ,
      $                  ucov, vcov, teta , q   ,ps ,
      $                 dufi, dvfi, dtetafi , dqfi ,dpfi  )
@@ -889,5 +898,5 @@
      *                               jj_Nb_caldyn,Request_physic)
 
-        do j=1,nqmx
+        do j=1,nqtot
         
           call Register_SwapField(q(1,1,j),q(1,1,j),ip1jmp1,llm,
@@ -954,6 +963,4 @@
         CALL pression_p ( ip1jmp1, ap, bp, ps, p                  )
 c$OMP BARRIER
-
-
         CALL exner_hyb_p( ip1jmp1, ps, p,alpha,beta, pks, pk, pkf )
 c$OMP BARRIER
@@ -1291,5 +1298,5 @@
 c$OMP BARRIER
 c$OMP MASTER
-              CALL writedynav_p(histaveid, nqmx, itau,vcov ,
+              CALL writedynav_p(histaveid, itau,vcov ,
      ,                          ucov,teta,pk,phi,q,masse,ps,phis)
 c$OMP END MASTER
@@ -1339,5 +1346,5 @@
 #ifdef CPP_IOIPSL
  
-        CALL writehist_p(histid,histvid, nqmx,itau,vcov, 
+        CALL writehist_p(histid,histvid, itau,vcov, 
      s                       ucov,teta,phi,q,masse,ps,phis)
 
@@ -1354,5 +1361,5 @@
 
        CALL dynredem1_p("restart.nc",0.0,
-     ,                     vcov,ucov,teta,q,nqmx,masse,ps)
+     ,                     vcov,ucov,teta,q,masse,ps)
 c#endif
 
@@ -1437,5 +1444,5 @@
 c$OMP BARRIER
 c$OMP MASTER
-              CALL writedynav_p(histaveid, nqmx, itau,vcov ,
+              CALL writedynav_p(histaveid, itau,vcov ,
      ,                          ucov,teta,pk,phi,q,masse,ps,phis)
                call bilan_dyn_p (2,dtvr*iperiod,dtvr*day_step*periodav,
@@ -1480,5 +1487,5 @@
 #ifdef CPP_IOIPSL
 
-       CALL writehist_p( histid, histvid, nqmx, itau,vcov , 
+       CALL writehist_p( histid, histvid, itau,vcov , 
      ,                           ucov,teta,phi,q,masse,ps,phis)
 c#else
@@ -1487,5 +1494,5 @@
 c      call Gather_Field(teta,ip1jmp1,llm,0)
 c      call Gather_Field(ps,ip1jmp1,1,0)
-c      do iq=1,nqmx
+c      do iq=1,nqtot
 c        call Gather_Field(q(1,1,iq),ip1jmp1,llm,0)
 c      enddo
@@ -1502,5 +1509,5 @@
 c$OMP MASTER
                    CALL dynredem1_p("restart.nc",0.0,
-     .                               vcov,ucov,teta,q,nqmx,masse,ps)
+     .                               vcov,ucov,teta,q,masse,ps)
 c$OMP END MASTER
                  ENDIF
Index: LMDZ4/branches/LMDZ4-dev/libf/dyn3dpar/test_period.F
===================================================================
--- LMDZ4/branches/LMDZ4-dev/libf/dyn3dpar/test_period.F	(revision 1113)
+++ LMDZ4/branches/LMDZ4-dev/libf/dyn3dpar/test_period.F	(revision 1114)
@@ -3,4 +3,5 @@
 !
       SUBROUTINE test_period ( ucov, vcov, teta, q, p, phis )
+      USE infotrac, ONLY : nqtot
 c
 c     Auteur : P. Le Van  
@@ -17,5 +18,5 @@
 c
       REAL ucov(ip1jmp1,llm), vcov(ip1jm,llm), teta(ip1jmp1,llm) ,
-     ,      q(ip1jmp1,llm,nqmx), p(ip1jmp1,llmp1), phis(ip1jmp1)
+     ,      q(ip1jmp1,llm,nqtot), p(ip1jmp1,llmp1), phis(ip1jmp1)
 c
 c   .....  Variables  locales  .....
@@ -68,5 +69,5 @@
       
 c
-      DO nq =1, nqmx
+      DO nq =1, nqtot
         DO l =1, llm
           DO ij = 1, ip1jmp1, iip1
Index: LMDZ4/branches/LMDZ4-dev/libf/dyn3dpar/vlspltgen_p.F
===================================================================
--- LMDZ4/branches/LMDZ4-dev/libf/dyn3dpar/vlspltgen_p.F	(revision 1113)
+++ LMDZ4/branches/LMDZ4-dev/libf/dyn3dpar/vlspltgen_p.F	(revision 1114)
@@ -26,4 +26,5 @@
       USE Write_Field_p
       USE VAMPIR
+      USE infotrac, ONLY : nqtot
       IMPLICIT NONE
 
@@ -38,8 +39,8 @@
 c   Arguments:
 c   ----------
-      INTEGER iadv(nqmx)
+      INTEGER iadv(nqtot)
       REAL masse(ip1jmp1,llm),pente_max
       REAL pbaru( ip1jmp1,llm ),pbarv( ip1jm,llm)
-      REAL q(ip1jmp1,llm,nqmx)
+      REAL q(ip1jmp1,llm,nqtot)
       REAL w(ip1jmp1,llm),pdt
       REAL p(ip1jmp1,llmp1),teta(ip1jmp1,llm),pk(ip1jmp1,llm)
@@ -51,9 +52,9 @@
 c
       REAL,SAVE :: qsat(ip1jmp1,llm)
-      REAL,SAVE :: zm(ip1jmp1,llm,nqmx)
+      REAL,DIMENSION(:,:,:),ALLOCATABLE,SAVE :: zm
       REAL,SAVE :: mu(ip1jmp1,llm)
       REAL,SAVE :: mv(ip1jm,llm)
       REAL,SAVE :: mw(ip1jmp1,llm+1)
-      REAL,SAVE :: zq(ip1jmp1,llm,nqmx)
+      REAL,DIMENSION(:,:,:),ALLOCATABLE,SAVE :: zq
       REAL zzpbar, zzw
 
@@ -67,4 +68,6 @@
       REAL tempe(ip1jmp1)
       INTEGER ijb,ije,iq
+      LOGICAL, SAVE :: firstcall=.TRUE.
+
       type(request) :: MyRequest1
       type(request) :: MyRequest2
@@ -83,4 +86,11 @@
         retv = 0.6077667
         rtt  = 273.16
+
+c Allocate variables depending on dynamic variable nqtot
+         IF (firstcall) THEN
+            firstcall=.FALSE.
+            ALLOCATE(zm(ip1jmp1,llm,nqtot))
+            ALLOCATE(zq(ip1jmp1,llm,nqtot))
+         END IF
 
 c-- Calcul de Qsat en chaque point
@@ -164,5 +174,5 @@
        ije=ij_end
 
-      DO iq=1,nqmx
+      DO iq=1,nqtot
 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 
         DO l=1,llm
@@ -175,5 +185,5 @@
 
 c$OMP BARRIER           
-      DO iq=1,nqmx
+      DO iq=1,nqtot
 
         if(iadv(iq) == 0) then
@@ -245,5 +255,5 @@
 c$OMP END MASTER       
 c$OMP BARRIER
-      do iq=1,nqmx
+      do iq=1,nqtot
 
         if(iadv(iq) == 0) then
@@ -285,5 +295,5 @@
 c$OMP BARRIER
  
-      do iq=1,nqmx
+      do iq=1,nqtot
 
         if(iadv(iq) == 0) then
@@ -308,5 +318,5 @@
 
 
-      do iq=1,nqmx
+      do iq=1,nqtot
 
         if(iadv(iq) == 0) then 
@@ -359,5 +369,5 @@
 
 c$OMP BARRIER
-      do iq=1,nqmx
+      do iq=1,nqtot
 
         if(iadv(iq) == 0) then
@@ -398,5 +408,5 @@
 
 
-      do iq=1,nqmx
+      do iq=1,nqtot
 
         if(iadv(iq) == 0) then
@@ -420,5 +430,5 @@
        enddo
 
-      do iq=1,nqmx
+      do iq=1,nqtot
 
         if(iadv(iq) == 0) then 
@@ -450,5 +460,5 @@
 
 
-      DO iq=1,nqmx
+      DO iq=1,nqtot
 
 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)          
Index: LMDZ4/branches/LMDZ4-dev/libf/dyn3dpar/write_grads_dyn.h
===================================================================
--- LMDZ4/branches/LMDZ4-dev/libf/dyn3dpar/write_grads_dyn.h	(revision 1113)
+++ LMDZ4/branches/LMDZ4-dev/libf/dyn3dpar/write_grads_dyn.h	(revision 1114)
@@ -24,5 +24,5 @@
       string10='teta'
       CALL wrgrads(1,llm,teta,string10,string10)
-      do iq=1,nqmx
+      do iq=1,nqtot
          string10='q'
          write(string10(2:2),'(i1)') iq
Index: LMDZ4/branches/LMDZ4-dev/libf/dyn3dpar/writedynav_p.F
===================================================================
--- LMDZ4/branches/LMDZ4-dev/libf/dyn3dpar/writedynav_p.F	(revision 1113)
+++ LMDZ4/branches/LMDZ4-dev/libf/dyn3dpar/writedynav_p.F	(revision 1114)
@@ -2,5 +2,5 @@
 ! $Header$
 !
-      subroutine writedynav_p( histid, nq, time, vcov, 
+      subroutine writedynav_p( histid, time, vcov, 
      ,                          ucov,teta,ppk,phi,q,masse,ps,phis)
 
@@ -8,4 +8,5 @@
       USE parallel
       USE misc_mod
+      USE infotrac
       implicit none
 
@@ -17,5 +18,4 @@
 C   Entree:
 C      histid: ID du fichier histoire
-C      nqmx: nombre maxi de traceurs
 C      time: temps de l'ecriture
 C      vcov: vents v covariants
@@ -47,5 +47,4 @@
 #include "description.h"
 #include "serre.h"
-#include "advtrac.h"
 
 C
@@ -53,10 +52,10 @@
 C
 
-      INTEGER histid, nq
+      INTEGER histid
       REAL vcov(ip1jm,llm),ucov(ip1jmp1,llm) 
       REAL teta(ip1jmp1,llm),phi(ip1jmp1,llm),ppk(ip1jmp1,llm)                  
       REAL ps(ip1jmp1),masse(ip1jmp1,llm)                   
       REAL phis(ip1jmp1)                  
-      REAL q(ip1jmp1,llm,nq)
+      REAL q(ip1jmp1,llm,nqtot)
       integer time
 
@@ -139,5 +138,5 @@
 C  Traceurs
 C
-        DO iq=1,nq
+        DO iq=1,nqtot
           call histwrite(histid, ttext(iq), itau_w, q(ijb:ije,:,iq), 
      .                   iip1*jjn*llm, ndex3d)
Index: LMDZ4/branches/LMDZ4-dev/libf/dyn3dpar/writehist_p.F
===================================================================
--- LMDZ4/branches/LMDZ4-dev/libf/dyn3dpar/writehist_p.F	(revision 1113)
+++ LMDZ4/branches/LMDZ4-dev/libf/dyn3dpar/writehist_p.F	(revision 1114)
@@ -2,5 +2,5 @@
 ! $Header$
 !
-      subroutine writehist_p( histid, histvid, nq, time, vcov, 
+      subroutine writehist_p( histid, histvid, time, vcov, 
      ,                          ucov,teta,phi,q,masse,ps,phis)
 
@@ -8,4 +8,5 @@
       USE parallel
       USE misc_mod
+      USE infotrac
       implicit none
 
@@ -18,5 +19,4 @@
 C      histid: ID du fichier histoire
 C      histvid:ID du fichier histoire pour les vents V (appele a disparaitre)
-C      nqmx: nombre maxi de traceurs
 C      time: temps de l'ecriture
 C      vcov: vents v covariants
@@ -48,5 +48,4 @@
 #include "description.h"
 #include "serre.h"
-#include "advtrac.h"
 
 C
@@ -54,10 +53,10 @@
 C
 
-      INTEGER histid, nq, histvid
+      INTEGER histid, histvid
       REAL vcov(ip1jm,llm),ucov(ip1jmp1,llm) 
       REAL teta(ip1jmp1,llm),phi(ip1jmp1,llm)                   
       REAL ps(ip1jmp1),masse(ip1jmp1,llm)                   
       REAL phis(ip1jmp1)                  
-      REAL q(ip1jmp1,llm,nq)
+      REAL q(ip1jmp1,llm,nqtot)
       integer time
 
@@ -119,5 +118,5 @@
 C  Traceurs
 C
-        DO iq=1,nq
+        DO iq=1,nqtot
           call histwrite(histid, ttext(iq), itau_w, q(ijb:ije,:,iq), 
      .                   iip1*jjn*llm, ndexu)
Index: LMDZ4/branches/LMDZ4-dev/libf/grid/dimension/makdim
===================================================================
--- LMDZ4/branches/LMDZ4-dev/libf/grid/dimension/makdim	(revision 1113)
+++ LMDZ4/branches/LMDZ4-dev/libf/grid/dimension/makdim	(revision 1114)
@@ -1,8 +1,6 @@
-nqmx=$1
-shift
 for i in $* ; do
    list=$list.$i
 done
-fichdim=dimensions${list}.t${nqmx}
+fichdim=dimensions${list}
 
 if [ ! -f $fichdim ] ; then
@@ -53,5 +51,4 @@
 !   dimensions.h contient les dimensions du modele
 !   ndm est tel que iim=2**ndm
-!   nqmx est la dimension de la variable traceur q
 !-----------------------------------------------------------------------
 
@@ -59,7 +56,4 @@
 
       PARAMETER (iim= $im,jjm=$jm,llm=$lm,ndm=$ndm)
-
-      integer nqmx
-      parameter (nqmx=$nqmx)
 
 !-----------------------------------------------------------------------
Index: LMDZ4/branches/LMDZ4-dev/libf/phylmd/concvl.F
===================================================================
--- LMDZ4/branches/LMDZ4-dev/libf/phylmd/concvl.F	(revision 1113)
+++ LMDZ4/branches/LMDZ4-dev/libf/phylmd/concvl.F	(revision 1114)
@@ -25,4 +25,5 @@
 c
       USE dimphy
+      USE infotrac, ONLY : nbtr
       IMPLICIT none
 c======================================================================
@@ -67,8 +68,4 @@
 c
 #include "dimensions.h"
-cccccc#include "dimphy.h"
-c
-      integer NTRAC
-      PARAMETER (NTRAC=nqmx-2)
 c
        INTEGER iflag_con,iflag_clos
@@ -77,5 +74,5 @@
        REAL t(klon,klev),q(klon,klev),u(klon,klev),v(klon,klev)
        REAL t_wake(klon,klev),q_wake(klon,klev)
-       REAL tra(klon,klev,ntrac)
+       REAL tra(klon,klev,nbtr)
        INTEGER ntra
        REAL work1(klon,klev),work2(klon,klev),ptop2(klon)
@@ -85,5 +82,5 @@
        REAL d_t(klon,klev),d_q(klon,klev),d_u(klon,klev),d_v(klon,klev)
        REAL dd_t(klon,klev),dd_q(klon,klev)
-       REAL d_tra(klon,klev,ntrac)
+       REAL d_tra(klon,klev,nbtr)
        REAL rain(klon),snow(klon)
 c
Index: LMDZ4/branches/LMDZ4-dev/libf/phylmd/conema3.F
===================================================================
--- LMDZ4/branches/LMDZ4-dev/libf/phylmd/conema3.F	(revision 1113)
+++ LMDZ4/branches/LMDZ4-dev/libf/phylmd/conema3.F	(revision 1114)
@@ -10,4 +10,5 @@
 
       USE dimphy
+      USE infotrac, ONLY : nbtr
       IMPLICIT none
 c======================================================================
@@ -55,10 +56,8 @@
 c
 #include "dimensions.h"
-cym#include "dimphy.h"
 #include "conema3.h"
       INTEGER i, l,m,itra
-      INTEGER ntra,ntrac !number of tracers; if no tracer transport
+      INTEGER ntra       ! if no tracer transport
                          ! is needed, set ntra = 1 (or 0)
-      PARAMETER (ntrac=nqmx-2)
       REAL dtime
 c
@@ -97,5 +96,5 @@
       REAL,ALLOCATABLE,SAVE :: em_qs(:) 
 c$OMP THREADPRIVATE(em_qs)  
-cym      REAL em_u(klev), em_v(klev), em_tra(klev,ntrac)
+cym      REAL em_u(klev), em_v(klev), em_tra(klev,nbtr)
       REAL,ALLOCATABLE,SAVE :: em_u(:),em_v(:),em_tra(:,:)
 c$OMP THREADPRIVATE(em_u,em_v,em_tra)      
@@ -111,5 +110,5 @@
       REAL,ALLOCATABLE,SAVE :: em_d_t(:),em_d_q(:)
 c$OMP THREADPRIVATE(em_d_t,em_d_q)
-cym      REAL em_d_u(klev), em_d_v(klev), em_d_tra(klev,ntrac)
+cym      REAL em_d_u(klev), em_d_v(klev), em_d_tra(klev,nbtr)
       REAL,ALLOCATABLE,SAVE ::em_d_u(:),em_d_v(:),em_d_tra(:,:)
 c$OMP THREADPRIVATE(em_d_u,em_d_v,em_d_tra)      
@@ -188,9 +187,9 @@
         allocate(em_q(klev))
         allocate(em_qs(klev))
-        allocate(em_u(klev), em_v(klev), em_tra(klev,ntrac))
+        allocate(em_u(klev), em_v(klev), em_tra(klev,nbtr))
         allocate(em_ph(klev+1), em_p(klev))
         allocate(em_work1(klev), em_work2(klev))
         allocate(em_d_t(klev), em_d_q(klev))
-        allocate(em_d_u(klev), em_d_v(klev), em_d_tra(klev,ntrac))
+        allocate(em_d_u(klev), em_d_v(klev), em_d_tra(klev,nbtr))
         allocate(em_upwd(klev), em_dnwd(klev), em_dnwdbis(klev))
         allocate(emmip(klev)) 
Index: LMDZ4/branches/LMDZ4-dev/libf/phylmd/conemav.F
===================================================================
--- LMDZ4/branches/LMDZ4-dev/libf/phylmd/conemav.F	(revision 1113)
+++ LMDZ4/branches/LMDZ4-dev/libf/phylmd/conemav.F	(revision 1114)
@@ -10,4 +10,5 @@
 c
       USE dimphy
+      USE infotrac, ONLY : nbtr
       IMPLICIT none
 c======================================================================
@@ -44,17 +45,14 @@
 c
 #include "dimensions.h"
-cym#include "dimphy.h"
 c
-      integer NTRAC
-      PARAMETER (NTRAC=nqmx-2)
 c
        REAL dtime, paprs(klon,klev+1),pplay(klon,klev)
        REAL t(klon,klev),q(klon,klev),u(klon,klev),v(klon,klev)
-       REAL tra(klon,klev,ntrac)
+       REAL tra(klon,klev,nbtr)
        INTEGER ntra
        REAL work1(klon,klev),work2(klon,klev)
 c
        REAL d_t(klon,klev),d_q(klon,klev),d_u(klon,klev),d_v(klon,klev)
-       REAL d_tra(klon,klev,ntrac)
+       REAL d_tra(klon,klev,nbtr)
        REAL rain(klon),snow(klon)
 c
@@ -74,6 +72,4 @@
        INTEGER i,k,itra
        REAL qs(klon,klev)
-cym       REAL cbmf(klon)
-cym       SAVE cbmf
        REAL,ALLOCATABLE,SAVE :: cbmf(:)
 c$OMP THREADPRIVATE(cbmf)
Index: LMDZ4/branches/LMDZ4-dev/libf/phylmd/convect3.F
===================================================================
--- LMDZ4/branches/LMDZ4-dev/libf/phylmd/convect3.F	(revision 1113)
+++ LMDZ4/branches/LMDZ4-dev/libf/phylmd/convect3.F	(revision 1114)
@@ -19,21 +19,23 @@
 c#################################################################
       USE dimphy
+      USE infotrac, ONLY : NBTR
 
 #include "dimensions.h"
-cym#include "dimphy.h"
+      INTEGER NA
       PARAMETER (NA=60)
 
-      integer NTRAC
-      PARAMETER (NTRAC=nqmx-2)
       REAL DELTAC              ! cld
       PARAMETER (DELTAC=0.01)  ! cld
 
       INTEGER NENT(NA)
+      INTEGER ND, NDP1, NL, NTRA, IFLAG, icb, inb
+      REAL DTIME, EPMAX, DELT, PRECIP, CAPE
+      REAL DPLCLDT, DPLCLDR
       REAL T1(ND),R1(ND),RS(ND),U(ND),V(ND),TRA(ND,NTRA)
       REAL P(ND),PH(NDP1)
       REAL FT(ND),FR(ND),FU(ND),FV(ND),FTRA(ND,NTRA)
       REAL SIG(ND),W0(ND)
-      REAL UENT(NA,NA),VENT(NA,NA),TRAENT(NA,NA,NTRAC),TRATM(NA)
-      REAL UP(NA),VP(NA),TRAP(NA,NTRAC)
+      REAL UENT(NA,NA),VENT(NA,NA),TRAENT(NA,NA,NBTR),TRATM(NA)
+      REAL UP(NA),VP(NA),TRAP(NA,NBTR)
       REAL M(NA),MP(NA),MENT(NA,NA),QENT(NA,NA),ELIJ(NA,NA)
       REAL SIJ(NA,NA),TVP(NA),TV(NA),WATER(NA)
Index: LMDZ4/branches/LMDZ4-dev/libf/phylmd/dimphy.F90
===================================================================
--- LMDZ4/branches/LMDZ4-dev/libf/phylmd/dimphy.F90	(revision 1113)
+++ LMDZ4/branches/LMDZ4-dev/libf/phylmd/dimphy.F90	(revision 1114)
@@ -5,5 +5,4 @@
   INTEGER,SAVE :: kfdia
   INTEGER,SAVE :: kidia
-  INTEGER,SAVE :: nbtr 
   INTEGER,SAVE :: klev
   INTEGER,SAVE :: klevp1
@@ -17,10 +16,9 @@
 CONTAINS
   
-  SUBROUTINE Init_dimphy(klon0,klev0,nbtr0)
+  SUBROUTINE Init_dimphy(klon0,klev0)
   IMPLICIT NONE
   
     INTEGER, INTENT(in) :: klon0
     INTEGER, INTENT(in) :: klev0
-    INTEGER, INTENT(in) :: nbtr0
     
     klon=klon0
@@ -31,5 +29,4 @@
 !$OMP MASTER 
     klev=klev0
-    nbtr=nbtr0
     klevp1=klev+1
     klevm1=klev-1
Index: LMDZ4/branches/LMDZ4-dev/libf/phylmd/ini_histrac.h
===================================================================
--- LMDZ4/branches/LMDZ4-dev/libf/phylmd/ini_histrac.h	(revision 1113)
+++ LMDZ4/branches/LMDZ4-dev/libf/phylmd/ini_histrac.h	(revision 1114)
@@ -23,13 +23,13 @@
      .                iim,jj_nb,nhori, 1,1,1, -99, 32,
      .                "once",  zsto,zout)
-         DO it=1,nqmax
+         DO it=1,nbtr
 C champ 2D
          iq=it+2
          iiq=niadv(iq)
-         CALL histdef(nid_tra, tnom(iq), ttext(iiq), "U/kga",
+         CALL histdef(nid_tra, tname(iiq), ttext(iiq), "U/kga",
      .                iim,jj_nb,nhori, klev,1,klev,nvert, 32,
      .                "ave(X)", zsto,zout)
          if (lessivage) THEN
-         CALL histdef(nid_tra, "fl"//tnom(iq),"Flux "//ttext(iiq),
+         CALL histdef(nid_tra, "fl"//tname(iiq),"Flux "//ttext(iiq),
      .              "U/m2/s",iim,jj_nb,nhori, klev,1,klev,nvert, 32,
      .              "ave(X)", zsto,zout)
@@ -37,5 +37,5 @@
 
 c---Ajout Olivia
-         CALL histdef(nid_tra, "d_tr_th_"//tnom(iq),
+         CALL histdef(nid_tra, "d_tr_th_"//tname(iiq),
      .	              "tendance thermique"// ttext(iiq), "?",
      .                iim,jj_nb,nhori, klev,1,klev,nvert, 32,
@@ -43,10 +43,10 @@
 c
          if(iflag_con.GE.2) then
-         CALL histdef(nid_tra, "d_tr_cv_"//tnom(iq),
+         CALL histdef(nid_tra, "d_tr_cv_"//tname(iiq),
      .	              "tendance convection"// ttext(iiq), "?",
      .                iim,jj_nb,nhori, klev,1,klev,nvert, 32,
      .                "ave(X)", zsto,zout)
 	     endif !(iflag_con.GE.2) then
-         CALL histdef(nid_tra, "d_tr_cl_"//tnom(iq),
+         CALL histdef(nid_tra, "d_tr_cl_"//tname(iiq),
      .	              "tendance couche limite"// ttext(iiq), "?",
      .                iim,jj_nb,nhori, klev,1,klev,nvert, 32,
Index: LMDZ4/branches/LMDZ4-dev/libf/phylmd/init_phys_lmdz.F90
===================================================================
--- LMDZ4/branches/LMDZ4-dev/libf/phylmd/init_phys_lmdz.F90	(revision 1113)
+++ LMDZ4/branches/LMDZ4-dev/libf/phylmd/init_phys_lmdz.F90	(revision 1114)
@@ -2,5 +2,5 @@
 !$Header$
 !
-SUBROUTINE Init_Phys_lmdz(iim,jjp1,llm,nbtr,nb_proc,distrib)
+SUBROUTINE Init_Phys_lmdz(iim,jjp1,llm,nb_proc,distrib)
   USE mod_phys_lmdz_para
   USE mod_grid_phy_lmdz
@@ -11,5 +11,4 @@
     INTEGER,INTENT(in) :: jjp1
     INTEGER,INTENT(in) :: llm
-    INTEGER,INTENT(in) :: nbtr
     INTEGER,INTENT(in) :: nb_proc
     INTEGER,INTENT(in) :: distrib(0:nb_proc-1)
@@ -19,5 +18,5 @@
     CALL Init_phys_lmdz_para(iim,jjp1,nb_proc,distrib)
 !$OMP PARALLEL
-    CALL Init_dimphy(klon_omp,nbp_lev,nbtr)
+    CALL Init_dimphy(klon_omp,nbp_lev)
 !$OMP END PARALLEL
  
Index: LMDZ4/branches/LMDZ4-dev/libf/phylmd/initrrnpb.F
===================================================================
--- LMDZ4/branches/LMDZ4-dev/libf/phylmd/initrrnpb.F	(revision 1113)
+++ LMDZ4/branches/LMDZ4-dev/libf/phylmd/initrrnpb.F	(revision 1114)
@@ -5,4 +5,5 @@
      .                   ,vdeptr,scavtr)
       USE dimphy
+      USE infotrac, ONLY : nbtr
       IMPLICIT none
 c======================================================================
Index: LMDZ4/branches/LMDZ4-dev/libf/phylmd/phys_local_var_mod.F90
===================================================================
--- LMDZ4/branches/LMDZ4-dev/libf/phylmd/phys_local_var_mod.F90	(revision 1113)
+++ LMDZ4/branches/LMDZ4-dev/libf/phylmd/phys_local_var_mod.F90	(revision 1114)
@@ -71,4 +71,5 @@
 SUBROUTINE phys_local_var_init
 use dimphy
+use infotrac, ONLY : nbtr
 IMPLICIT NONE
 #include "indicesol.h"
Index: LMDZ4/branches/LMDZ4-dev/libf/phylmd/phys_output_mod.F90
===================================================================
--- LMDZ4/branches/LMDZ4-dev/libf/phylmd/phys_output_mod.F90	(revision 1113)
+++ LMDZ4/branches/LMDZ4-dev/libf/phylmd/phys_output_mod.F90	(revision 1114)
@@ -430,5 +430,5 @@
 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 
   
-  SUBROUTINE phys_output_open(jjmp1,nqmax,nlevSTD,clevSTD,nbteta, &
+  SUBROUTINE phys_output_open(jjmp1,nlevSTD,clevSTD,nbteta, &
                               ctetaSTD,dtime, presnivs, ok_veget, &
                               ocean, iflag_pbl,ok_mensuel,ok_journe, &
@@ -437,4 +437,5 @@
   USE iophy 
   USE dimphy
+  USE infotrac
   USE ioipsl
   USE mod_phys_lmdz_para
@@ -444,9 +445,8 @@
   include "temps.h"
   include "indicesol.h"
-  include "advtrac.h"
   include "clesphys.h"
   include "thermcell.h"
 
-  integer                               :: jjmp1, nqmax
+  integer                               :: jjmp1
   integer                               :: nbteta, nlevSTD, radpas
   logical                               :: ok_mensuel, ok_journe, ok_hf, ok_instan
@@ -907,6 +907,6 @@
      ENDIF
 
-      if (nqmax>=3) THEN
-!Attention    DO iq=3,nqmax
+      if (nqtot>=3) THEN
+!Attention    DO iq=3,nqtot
     DO iq=3,4  
        iiq=niadv(iq)
@@ -937,5 +937,4 @@
        include "temps.h"
        include "indicesol.h"
-       include "advtrac.h"
        include "clesphys.h"
 
@@ -968,5 +967,4 @@
        include "temps.h"
        include "indicesol.h"
-       include "advtrac.h"
        include "clesphys.h"
 
Index: LMDZ4/branches/LMDZ4-dev/libf/phylmd/phys_output_write.h
===================================================================
--- LMDZ4/branches/LMDZ4-dev/libf/phylmd/phys_output_write.h	(revision 1113)
+++ LMDZ4/branches/LMDZ4-dev/libf/phylmd/phys_output_write.h	(revision 1114)
@@ -1192,6 +1192,6 @@
 
 !       IF (o_trac%flag(iff)<=lev_files(iff)) THEN
-         if (nqmax.GE.3) THEN
-!           DO iq=3,nqmax
+         if (nqtot.GE.3) THEN
+!           DO iq=3,nqtot
            DO iq=3,4
        IF (o_trac(iq-2)%flag(iff)<=lev_files(iff)) THEN
Index: LMDZ4/branches/LMDZ4-dev/libf/phylmd/physiq.F
===================================================================
--- LMDZ4/branches/LMDZ4-dev/libf/phylmd/physiq.F	(revision 1113)
+++ LMDZ4/branches/LMDZ4-dev/libf/phylmd/physiq.F	(revision 1114)
@@ -2,5 +2,5 @@
 c#define IO_DEBUG
 
-      SUBROUTINE physiq (nlon,nlev,nqmax,
+      SUBROUTINE physiq (nlon,nlev,
      .            debut,lafin,rjourvrai,gmtime,pdtphys,
      .            paprs,pplay,pphi,pphis,presnivs,clesphy0,
@@ -15,4 +15,5 @@
       USE write_field_phy
       USE dimphy
+      USE infotrac
       USE mod_grid_phy_lmdz
       USE mod_phys_lmdz_para
@@ -50,5 +51,4 @@
 c nlon----input-I-nombre de points horizontaux
 c nlev----input-I-nombre de couches verticales
-c nqmax---input-I-nombre de traceurs (y compris vapeur d'eau) = 1
 c debut---input-L-variable logique indiquant le premier passage
 c lafin---input-L-variable logique indiquant le dernier passage
@@ -87,8 +87,5 @@
 #include "clesphys.h"
 #include "control.h"
-!#include "logic.h"
 #include "temps.h"
-cym#include "comgeomphy.h"
-#include "advtrac.h"
 #include "iniprint.h"
 #include "thermcell.h"
@@ -184,5 +181,4 @@
       INTEGER nlon
       INTEGER nlev
-      INTEGER nqmax
       REAL rjourvrai
       REAL gmtime
@@ -200,5 +196,5 @@
       REAL v(klon,klev)
       REAL t(klon,klev),theta(klon,klev)
-      REAL qx(klon,klev,nqmax)
+      REAL qx(klon,klev,nqtot)
       REAL flxmass_w(klon,klev)
       REAL omega(klon,klev) ! vitesse verticale en Pa/s
@@ -206,5 +202,5 @@
       REAL d_v(klon,klev)
       REAL d_t(klon,klev)
-      REAL d_qx(klon,klev,nqmax)
+      REAL d_qx(klon,klev,nqtot)
       REAL d_ps(klon)
       real da(klon,klev),phi(klon,klev,klev),mp(klon,klev)
@@ -1110,7 +1106,7 @@
          write(lunout,*) 'DEBUT DE PHYSIQ !!!!!!!!!!!!!!!!!!!!'
          write(lunout,*)
-     s 'nlon,nlev,nqmax,debut,lafin,rjourvrai,gmtime,pdtphys'
+     s 'nlon,nlev,nqtot,debut,lafin,rjourvrai,gmtime,pdtphys'
          write(lunout,*)
-     s  nlon,nlev,nqmax,debut,lafin,rjourvrai,gmtime,pdtphys 
+     s  nlon,nlev,nqtot,debut,lafin,rjourvrai,gmtime,pdtphys 
 
          write(lunout,*) 'papers, play, phi, u, v, t, omega'
@@ -1170,8 +1166,5 @@
       END IF 
       ok_sync=.TRUE.
-      IF (nqmax .LT. 2) THEN
-         abort_message = 'eaux vapeur et liquide sont indispensables'
-         CALL abort_gcm (modname,abort_message,1)
-      ENDIF
+
       IF (debut) THEN
          CALL suphel ! initialiser constantes et parametres phys.
@@ -1500,5 +1493,5 @@
 
 c$OMP MASTER
-       call phys_output_open(jjmp1,nqmax,nlevSTD,clevSTD,nbteta, 
+       call phys_output_open(jjmp1,nlevSTD,clevSTD,nbteta, 
      &                        ctetaSTD,dtime,presnivs,ok_veget,
      &                        type_ocean,iflag_pbl,ok_mensuel,ok_journe,
@@ -1554,5 +1547,5 @@
      $                   calday,
      $                   klon,
-     $                   nqmax,
+     $                   nqtot,
      $                   pdtphys,
      $                   annee_ref,
@@ -1610,5 +1603,5 @@
       ENDDO
       ENDDO
-      DO iq = 1, nqmax
+      DO iq = 1, nqtot
       DO k = 1, klev
       DO i = 1, klon
@@ -1633,6 +1626,6 @@
       ENDDO
       ENDDO
-      IF (nqmax.GE.3) THEN
-      DO iq = 3, nqmax
+      IF (nqtot.GE.3) THEN
+      DO iq = 3, nqtot
       DO  k = 1, klev
       DO  i = 1, klon
@@ -3163,5 +3156,4 @@
      I                   debut,
      I                   lafin,
-     I                   nqmax-2,
      I                   nlon,
      I                   nlev,
@@ -3386,6 +3378,6 @@
       ENDDO
 c
-      IF (nqmax.GE.3) THEN
-      DO iq = 3, nqmax
+      IF (nqtot.GE.3) THEN
+      DO iq = 3, nqtot
       DO  k = 1, klev
       DO  i = 1, klon
@@ -3421,7 +3413,7 @@
       write(lunout,*) 'FIN DE PHYSIQ !!!!!!!!!!!!!!!!!!!!'
       write(lunout,*)
-     s 'nlon,nlev,nqmax,debut,lafin,rjourvrai,gmtime,pdtphys pct tlos'
+     s 'nlon,nlev,nqtot,debut,lafin,rjourvrai,gmtime,pdtphys pct tlos'
       write(lunout,*)
-     s  nlon,nlev,nqmax,debut,lafin,rjourvrai,gmtime,pdtphys,
+     s  nlon,nlev,nqtot,debut,lafin,rjourvrai,gmtime,pdtphys,
      s  pctsrf(igout,is_ter), pctsrf(igout,is_lic),pctsrf(igout,is_oce),
      s  pctsrf(igout,is_sic)
Index: LMDZ4/branches/LMDZ4-dev/libf/phylmd/phystokenc.F
===================================================================
--- LMDZ4/branches/LMDZ4-dev/libf/phylmd/phystokenc.F	(revision 1113)
+++ LMDZ4/branches/LMDZ4-dev/libf/phylmd/phystokenc.F	(revision 1114)
@@ -11,4 +11,5 @@
       USE ioipsl
       USE dimphy
+      USE infotrac, ONLY : nqtot
       USE iophy
       IMPLICIT none
@@ -21,5 +22,4 @@
 c======================================================================
 #include "dimensions.h"
-cym#include "dimphy.h"
 #include "tracstoke.h"
 #include "indicesol.h"
@@ -160,5 +160,5 @@
 	
 	CALL initphysto('phystoke',
-     . rlon,rlat,dtime, dtime*istphy,dtime*istphy,nqmx,physid)
+     . rlon,rlat,dtime, dtime*istphy,dtime*istphy,nqtot,physid)
   	
 	write(*,*) 'apres initphysto ds phystokenc' 
Index: LMDZ4/branches/LMDZ4-dev/libf/phylmd/phytrac.F
===================================================================
--- LMDZ4/branches/LMDZ4-dev/libf/phylmd/phytrac.F	(revision 1113)
+++ LMDZ4/branches/LMDZ4-dev/libf/phylmd/phytrac.F	(revision 1114)
@@ -8,5 +8,4 @@
      I                    debutphy,
      I                    lafin,
-     I                    nqmax,
      I                    nlon,
      I                    nlev,
@@ -67,4 +66,5 @@
       USE ioipsl
       USE dimphy
+      USE infotrac
       USE mod_grid_phy_lmdz
       USE mod_phys_lmdz_para
@@ -80,6 +80,4 @@
 cAA Remarques en vrac:
 cAA--------------------
-cAA 1/ le call phytrac se fait avec nqmax-2 donc nous avons bien 
-cAA les vrais traceurs (nbtr) dans phytrac (pas la vapeur ni eau liquide)
 cAA 2/ Le choix du radon et du pb se fait juste avec un data 
 cAA    (peu propre). Peut-etre pourrait-on prevoir dans l'avenir 
@@ -93,5 +91,4 @@
 #include "paramet.h"
 #include "control.h"
-#include "advtrac.h"
 #include "thermcell.h"
 c======================================================================
@@ -107,5 +104,4 @@
       integer nlon  ! nombre de points horizontaux
       integer nlev  ! nombre de couches verticales
-      integer nqmax ! nombre de traceurs auxquels on applique la physique
       integer nstep  ! appel physique
       integer julien !jour julien
@@ -140,5 +136,5 @@
 
       REAL flxmass_w(klon,klev)
-      CHARACTER(len=8) :: solsym(nqmax)
+      CHARACTER(len=8) :: solsym(nbtr)
       integer la
       REAL              ::    tau_inca(klon,klev,9,2)
@@ -209,5 +205,5 @@
 cAA Pour l'instant seuls les cas du rn et du pb ont ete envisages.
 
-      REAL source(klon,nqmax)       ! a voir lorsque le flux est prescrit 
+      REAL source(klon,nbtr)       ! a voir lorsque le flux est prescrit 
 cAA 
 cAA Pour la source de radon et son reservoir de sol
@@ -216,5 +212,4 @@
       REAL,save,allocatable :: trs(:,:)    ! Conc. radon ds le sol
 c$OMP THREADPRIVATE(trs)
-cym      SAVE trs
       REAL :: trs_tmp(klon_glo)
       
@@ -223,20 +218,14 @@
 c                           (1 = reservoir) ou (possible => 1 )
 c$OMP THREADPRIVATE(masktr)
-cym      SAVE masktr
       REAL,save,allocatable :: fshtr(:,:)  ! Flux surfacique dans le reservoir de sol
 c$OMP THREADPRIVATE(fshtr)
-cym      SAVE fshtr
       REAL,save,allocatable :: hsoltr(:)      ! Epaisseur equivalente du reservoir de sol
 c$OMP THREADPRIVATE(hsoltr)
-cym      SAVE hsoltr
       REAL,save,allocatable :: tautr(:)       ! Constante de decroissance radioactive
 c$OMP THREADPRIVATE(tautr)
-cym      SAVE tautr
       REAL,save,allocatable :: vdeptr(:)      ! Vitesse de depot sec dans la couche Brownienne
 c$OMP THREADPRIVATE(vdeptr)
-cym      SAVE vdeptr
       REAL,save,allocatable :: scavtr(:)      ! Coefficient de lessivage
 c$OMP THREADPRIVATE(scavtr)
-cym      SAVE scavtr
 cAA
       CHARACTER*2 itn
@@ -270,5 +259,4 @@
       logical,save,allocatable :: radio(:)    ! radio(it)=true => decroisssance radioactive
 c$OMP THREADPRIVATE(aerosol,clsol,radio)  
-cym      save aerosol,clsol,radio
 C
 c======================================================================
@@ -360,11 +348,4 @@
           print*,'dans phytrac ',pdtphys,ecrit_tra
 
-         if(nbtr.lt.nqmax) then
-c           print*,'NQMAX=',nqmax
-c           print*,'NBTR=',nbtr
-           abort_message='See above'
-           call abort_gcm(modname,abort_message,1)
-         endif
-
          inirnpb=rnpb
          PRINT*, 'La frequence de sortie traceurs est  ', ecrit_tra
@@ -406,5 +387,5 @@
 c Initialisation de la nature des traceurs
 c
-         DO it = 1, nqmax
+         DO it = 1, nbtr
             aerosol(it) = .FALSE.  ! Tous les traceurs sont des gaz par defaut
             radio(it) = .FALSE.    ! Par defaut pas de passage par radiornpb
@@ -533,5 +514,5 @@
 c======================================================================
 c     print*,'Avant convection'
-       do it=1,nqmax
+       do it=1,nbtr
           WRITE(itn,'(i2)') it
 c        call diagtracphy(tr_seri(:,:,it),paprs,'Avant conv'//itn)
@@ -541,7 +522,9 @@
 
 c      print*,'Pas de temps dans phytrac : ',pdtphys
-      DO it=1, nqmax
-
-      IF ( config_inca/='none' .AND. conv_flg(it) == 0 ) CYCLE
+      DO it=1, nbtr
+
+      IF ( config_inca/='none') THEN 
+         IF ( conv_flg(it) == 0 ) CYCLE
+      END IF
 
       if (iflag_con.lt.2) then
@@ -574,5 +557,5 @@
       endif ! convection
 c        print*,'Apres convection'
-c      do it=1,nqmax
+c      do it=1,nbtr
 c         WRITE(itn,'(i1)') it
 c        call diagtracphy(tr_seri(:,:,it),paprs,'Avant conv'//itn)
@@ -591,5 +574,5 @@
 
 c      print*,'masse dans ph ',zmasse
-      do it=1,nqmax
+      do it=1,nbtr
          do k=1,klev
             do i=1,klon
@@ -604,5 +587,5 @@
 c        print*,'calcul de leffet des thermiques'
         nsplit=10
-        DO it=1, nqmax
+        DO it=1, nbtr
 c        WRITE(itn,'(i1)') it
 c        CALL minmaxqfi(tr_seri(1,1,it),1.e10,-1.e33,'conv it='//itn)
@@ -642,5 +625,5 @@
 c======================================================================
 c	print *,'Avant couchelimite'
-c      do it=1,nqmax
+c      do it=1,nbtr
 c         WRITE(itn,'(i1)') it
 c        call diagtracphy(tr_seri(:,:,it),paprs,'Avant CL  '//itn)
@@ -656,7 +639,9 @@
 
 C maf modif pour tenir compte du cas rnpb + traceur
-      DO it=1, nqmax
-
-      IF ( config_inca/='none' .AND. pbl_flg(it) == 0 ) CYCLE
+      DO it=1, nbtr
+
+         IF ( config_inca/='none' ) THEN
+            IF( pbl_flg(it) == 0 ) CYCLE
+         END IF
 
 c     print *,'it',it,clsol(it)
@@ -711,5 +696,5 @@
 
 c      print*,'Apres couchelimite'
-c      do it=1,nqmax
+c      do it=1,nbtr
 c         WRITE(itn,'(i1)') it
 c        call diagtracphy(tr_seri(:,:,it),paprs,'Avant CL  '//itn)
@@ -726,5 +711,5 @@
         call radiornpb (tr_seri,pdtphys,tautr,d_tr_dec)
 C
-        DO it=1,nqmax
+        DO it=1,nbtr
             if(radio(it)) then
             DO k = 1, nlev
@@ -755,5 +740,5 @@
 c tendance des aerosols nuclees et impactes 
 c
-       DO it = 1, nqmax
+       DO it = 1, nbtr
          IF (aerosol(it)) THEN
            DO k = 1, nlev
@@ -774,5 +759,5 @@
 c      call dump2d(iim,jjm-1,frac_nucl(2:klon-1,10),'FRACNUCL')
 c      call dump2d(iim,jjm-1,tr_seri(2:klon-1,10,3),'TRACEUR3')
-       DO it = 1, nqmax
+       DO it = 1, nbtr
 c         print*,'IT=',it,aerosol(it)
          IF (aerosol(it)) THEN
@@ -790,5 +775,5 @@
 c Flux lessivage total 
 c
-      DO it = 1, nqmax
+      DO it = 1, nbtr
            DO k = 1, nlev
             DO i = 1, klon
Index: LMDZ4/branches/LMDZ4-dev/libf/phylmd/radiornpb.F
===================================================================
--- LMDZ4/branches/LMDZ4-dev/libf/phylmd/radiornpb.F	(revision 1113)
+++ LMDZ4/branches/LMDZ4-dev/libf/phylmd/radiornpb.F	(revision 1114)
@@ -4,4 +4,5 @@
       SUBROUTINE radiornpb(tr,dtime,tautr,d_tr) 
       USE dimphy
+      USE infotrac, ONLY : nbtr
       IMPLICIT none
 c======================================================================
Index: LMDZ4/branches/LMDZ4-dev/libf/phylmd/write_histrac.h
===================================================================
--- LMDZ4/branches/LMDZ4-dev/libf/phylmd/write_histrac.h	(revision 1113)
+++ LMDZ4/branches/LMDZ4-dev/libf/phylmd/write_histrac.h	(revision 1114)
@@ -14,23 +14,22 @@
       CALL histwrite_phy(nid_tra,"aire",itau_w,airephy)
 
-      DO it=1,nqmax
-C champs 2D
+      DO it=1,nbtr
+       iiq=niadv(it+2)
 
-
-       CALL histwrite_phy(nid_tra,tnom(it+2),itau_w,tr_seri(:,:,it))
+       CALL histwrite_phy(nid_tra,tname(iiq),itau_w,tr_seri(:,:,it))
        if (lessivage) THEN
-       CALL histwrite_phy(nid_tra,"fl"//tnom(it+2),itau_w,
+       CALL histwrite_phy(nid_tra,"fl"//tname(iiq),itau_w,
      .                                   flestottr(:,:,it))
       endif
       
 c----Olivia
-       CALL histwrite_phy(nid_tra,"d_tr_th_"//tnom(it+2),itau_w,
+       CALL histwrite_phy(nid_tra,"d_tr_th_"//tname(iiq),itau_w,
      .                                           d_tr_th(:,:,it))
 
          if(iflag_con.GE.2) then
-       CALL histwrite_phy(nid_tra,"d_tr_cv_"//tnom(it+2),itau_w,
+       CALL histwrite_phy(nid_tra,"d_tr_cv_"//tname(iiq),itau_w,
      .                                           d_tr_cv(:,:,it))
          endif !(iflag_con.GE.2) then
-       CALL histwrite_phy(nid_tra,"d_tr_cl_"//tnom(it+2),itau_w,
+       CALL histwrite_phy(nid_tra,"d_tr_cl_"//tname(iiq),itau_w,
      .                                           d_tr_cl(:,:,it))
 c---fin Olivia      
Index: LMDZ4/branches/LMDZ4-dev/makegcm
===================================================================
--- LMDZ4/branches/LMDZ4-dev/makegcm	(revision 1113)
+++ LMDZ4/branches/LMDZ4-dev/makegcm	(revision 1114)
@@ -11,5 +11,4 @@
 set phys="PHYS=$physique"
 set include='-I$(LIBF)/grid -I$(LIBF)/bibio -I$(LIBF)/filtrez -I. '
-set ntrac = 4
 set filtre=filtrez
 set grille=reg
@@ -365,15 +364,9 @@
 -d imxjmxlm  ou im, jm, et lm sont resp. le nombre de longitudes, latitudes
              et couches verticales. 
-
--t ntrac   selectionne le nombre de traceur advectes par la dynamique.
-           Dans les versions courantes du modele terrestre on a par exemple
-           ntrac=2 pour l'eau vapeur et liquide
-
-             L'effet des options -d et -t est d'ecraser le fichier 
+             L'effet des options -d est d'ecraser le fichier 
              $LMDGCM/libf/grid/dimensions.h
-             qui contient sous forme de 4 PARAMETER FORTRAN les 3 dimensions
-             de la grille horizontale im, jm, lm plus le nombre de traceurs
-             advectes passivement par la dynamique ntrac, par un nouveu fichier
-             $LMDGCM/libf/grid/dimension/dimensions.im.jm.lm.tntrac
+             qui contient sous forme de 3 PARAMETER FORTRAN les 3 dimensions
+             de la grille horizontale im, jm et verticale lm, par un nouveu fichier
+             $LMDGCM/libf/grid/dimension/dimensions.im.jm.lm
              Si ce fichier n'existe pas encore, il est cree par le script
              $LMDGCM/libf/grid/dimension/makdim
@@ -472,7 +465,4 @@
         set parallel="$2" ; shift ; shift ; goto top
   
-     case -t
-        set ntrac=$2 ; shift ; shift ; goto top
-
      case -include
         set include="$include -I$2" ; shift ; shift ; goto top
@@ -584,23 +574,4 @@
 
 ########################################################################
-# choix du nombre de traceur par defaut si il n'a pas ete choisi,
-# suivant la physique
-########################################################################
-
-if ( $ntrac == 0  ) then
-    if ( "$physique" == 'nophys' ) then
-        set ntrac=1
-    else if ( "$physique" == 'lmd' ) then
-        set ntrac=2
-    else if ( "$physique" == 'lmd_test_li' ) then
-        set ntrac=2
-    else if ( "$physique" == 'ec' ) then
-        set ntrac=1
-    else
-        set ntrac = 1
-    endif
-endif
-
-########################################################################
 #subtilites sur le nom de la librairie
 ########################################################################
@@ -631,11 +602,11 @@
    set dim=`echo $dim | sed -e 's/[^0-9]/ /g'`
 endif
-set nomlib=${nomlib}${physique}_${dim_}_t${ntrac}_$grille
+set nomlib=${nomlib}${physique}_${dim_}_$grille
 ## M-A-F nomlib trop long sur CRAY pour ar
 if ( $CRAY ) then
-    set nomlib=F90_${dim_}_t${ntrac}
+    set nomlib=F90_${dim_}
 endif
 if ( $NEC || $XNEC || $X6NEC || $X8BRODIE ) then
-    set nomlib=F90_${dim_}_t${ntrac}_'phy'${physique}${FLAG_PARA}
+    set nomlib=F90_${dim_}_'phy'${physique}${FLAG_PARA}
 endif
 echo calcul de la dimension
@@ -664,5 +635,5 @@
 ########################################################################
 # Gestion des dimensions du modele.
-# on cree ou remplace le fichier des dimensions/nombre de traceur
+# on cree ou remplace le fichier des dimensions
 ########################################################################
 
@@ -682,5 +653,5 @@
 
 cd dimension
-./makdim $ntrac $dim
+./makdim $dim
 cat $libf/grid/dimensions.h
 
Index: LMDZ4/branches/LMDZ4-dev/makegcm_fcm
===================================================================
--- LMDZ4/branches/LMDZ4-dev/makegcm_fcm	(revision 1113)
+++ LMDZ4/branches/LMDZ4-dev/makegcm_fcm	(revision 1114)
@@ -18,5 +18,4 @@
 set dim="96x72x19"
 set physique=lmd
-set ntrac = 4
 set filtre=filtrez
 set grille=reg
@@ -60,5 +59,4 @@
 [-h]                       : manuel abrégé
 [-d [[IMx]JMx]LM]          : IM, JM, LM sont les dims en x, y, z (def: $dim)
-[-t NTRAC]                 : nombre de traceurs (def: 4)
 [-p PHYS]                  : compilation avec la physique libf/phyPHYS, (def: lmd)
 [-prod / -dev / -debug]    : compilation en mode production (default) / developpement / debug .
@@ -115,7 +113,4 @@
         set parallel="$2" ; shift ; shift ; goto top
   
-     case -t
-        set ntrac=$2 ; shift ; shift ; goto top
-
      case -include
         set INCLUDE="$INCLUDE -I$2" ; shift ; shift ; goto top
@@ -211,25 +206,4 @@
 set LIB="$LIB -L${NETCDF_LIBDIR} -lnetcdf"
 
-
-########################################################################
-# choix du nombre de traceur par defaut si il n'a pas ete choisi,
-# suivant la physique
-########################################################################
-
-if ( $ntrac == 0  ) then
-    if ( "$physique" == 'nophys' ) then
-        set ntrac=1
-    else if ( "$physique" == 'lmd' ) then
-        set ntrac=2
-    else if ( "$physique" == 'lmd_test_li' ) then
-        set ntrac=2
-    else if ( "$physique" == 'ec' ) then
-        set ntrac=1
-    else
-        set ntrac = 1
-    endif
-endif
-
-
 ########################################################################
 # calcul du nombre de dimensions
@@ -248,9 +222,9 @@
 ########################################################################
 # Gestion des dimensions du modele.
-# on cree ou remplace le fichier des dimensions/nombre de traceur
+# on cree ou remplace le fichier des dimensions
 ########################################################################
 
 cd $LIBFGCM/grid/dimension
-./makdim $ntrac $dim
+./makdim $dim
 cat $LIBFGCM/grid/dimensions.h
 cd $LMDGCM
@@ -314,5 +288,5 @@
 
 set SUFF_NAME=_${dim_full}
-set SUFF_NAME=${SUFF_NAME}_t${ntrac}_phy${physique}
+set SUFF_NAME=${SUFF_NAME}_phy${physique}
 
 if ( "$parallel" != 'none' ) then
