Index: /LMDZ4/trunk/libf/dyn3d/advtrac.F
===================================================================
--- /LMDZ4/trunk/libf/dyn3d/advtrac.F	(revision 959)
+++ /LMDZ4/trunk/libf/dyn3d/advtrac.F	(revision 960)
@@ -4,14 +4,8 @@
 c
 c
-#ifdef INCA
       SUBROUTINE advtrac(pbaru,pbarv ,
      *                   p,  masse,q,iapptrac,teta,
      *                  flxw,
      *                  pk)
-#else
-      SUBROUTINE advtrac(pbaru,pbarv ,
-     *                   p,  masse,q,iapptrac,teta,
-     *                  pk)
-#endif
 c     Auteur :  F. Hourdin
 c
@@ -48,7 +42,5 @@
       REAL p( ip1jmp1,llmp1 ),teta(ip1jmp1,llm)
       REAL pk(ip1jmp1,llm)
-#ifdef INCA
-      REAL               :: flxw(ip1jmp1,llm)
-#endif
+      REAL flxw(ip1jmp1,llm)
 
 c-------------------------------------------------------------
@@ -124,8 +116,6 @@
         CALL groupe( massem, pbaruc,pbarvc, pbarug,pbarvg,wg )
 
-#ifdef INCA
       ! ... Flux de masse diaganostiques traceurs
       flxw = wg / FLOAT(iapp_tracvl)
-#endif
 
 c  test sur l'eventuelle creation de valeurs negatives de la masse
@@ -209,10 +199,4 @@
         else if (iadv(iq).eq.20) then
             call pentes_ini (q(1,1,iq),wg,massem,pbarug,pbarvg,0)
-#ifdef INCA
-       do iiq = iq+1, iq+3
-c         q(:,:,iiq)=q(:,:,iiq)*mmt_adj(:,:,1)
-          q(:,:,iiq)=q(:,:,iiq)*1
-       enddo
-#endif
 
 c   ----------------------------------------------------------------
@@ -228,10 +212,5 @@
            call  prather(q(1,1,iq),wg,massem,pbarug,pbarvg,
      s                     n,dtbon)
-#ifdef INCA
-       do iiq = iq+1, iq+9
-c         q(:,:,iiq)=q(:,:,iiq)*mmt_adj(:,:,1)
-         q(:,:,iiq)=q(:,:,iiq)*1
-       enddo
-#endif
+
 c   ----------------------------------------------------------------
 c   Schemas PPM Lin et Rood
Index: /LMDZ4/trunk/libf/dyn3d/caladvtrac.F
===================================================================
--- /LMDZ4/trunk/libf/dyn3d/caladvtrac.F	(revision 959)
+++ /LMDZ4/trunk/libf/dyn3d/caladvtrac.F	(revision 960)
@@ -4,15 +4,7 @@
 c
 c
-#ifdef INCA
             SUBROUTINE caladvtrac(q,pbaru,pbarv ,
      *                   p ,masse, dq ,  teta,
-     *                   flxw,
-     *                   pk)
-#else
-            SUBROUTINE caladvtrac(q,pbaru,pbarv ,
-     *                   p ,masse, dq ,  teta,
-     *                   pk)
-#endif
-
+     *                   flxw, pk)
 c
       IMPLICIT NONE
@@ -39,7 +31,5 @@
       REAL p( ip1jmp1,llmp1),q( ip1jmp1,llm,nqmx),dq( ip1jmp1,llm,2 )
       REAL teta( ip1jmp1,llm),pk( ip1jmp1,llm)
-#ifdef INCA
       REAL               :: flxw(ip1jmp1,llm)
-#endif
 
 c  ..................................................................
@@ -69,14 +59,7 @@
 c   advection
 
-#ifdef INCA
-      CALL advtrac( pbaru,pbarv, 
-     *             p,  masse,q,iapptrac, teta,
-     .             flxw,
-     .             pk)
-#else
-      CALL advtrac( pbaru,pbarv, 
-     *             p,  masse,q,iapptrac, teta,
-     .             pk)
-#endif
+        CALL advtrac( pbaru,pbarv, 
+     *       p,  masse,q,iapptrac, teta,
+     .       flxw, pk)
 c
 
Index: /LMDZ4/trunk/libf/dyn3d/calfis.F
===================================================================
--- /LMDZ4/trunk/libf/dyn3d/calfis.F	(revision 959)
+++ /LMDZ4/trunk/libf/dyn3d/calfis.F	(revision 960)
@@ -22,8 +22,5 @@
      $                  pdteta,
      $                  pdq,
-     $                  pw,
-#ifdef INCA
      $                  flxw,
-#endif
      $                  clesphy0,
      $                  pdufi,
@@ -121,6 +118,4 @@
       REAL pdq(iip1,jjp1,llm,nqmx)
 c
-      REAL pw(iip1,jjp1,llm)
-
       REAL pps(iip1,jjp1)
       REAL pp(iip1,jjp1,llmp1)
@@ -151,6 +146,4 @@
       REAL pcvgu(ngridmx,llm), pcvgv(ngridmx,llm)
       REAL pcvgt(ngridmx,llm), pcvgq(ngridmx,llm,2)
-c
-      REAL pvervel(ngridmx,llm)
 c
       REAL zdufi(ngridmx,llm),zdvfi(ngridmx,llm)
@@ -169,8 +162,6 @@
       REAL PVteta(ngridmx,ntetaSTD)
 c
-#ifdef INCA
-      REAL flxw(iip1,jjp1,llm)
-      REAL flxwfi(ngridmx,llm)
-#endif
+      REAL flxw(iip1,jjp1,llm)  ! Flux de masse verticale sur la grille dynamique
+      REAL flxwfi(ngridmx,llm)  ! Flux de masse verticale sur la grille physiq
 c
       
@@ -328,16 +319,17 @@
 
 c   ....  Calcul de la vitesse  verticale  ( en Pa*m*s  ou Kg/s )  ....
-c
-      DO l=1,llm
-        pvervel(1,l)=pw(1,1,l) * g /apoln
-        ig0=2
-       DO j=2,jjm
-           DO i = 1, iim
-              pvervel(ig0,l) = pw(i,j,l) * g * unsaire(i,j)
-              ig0 = ig0 + 1
-           ENDDO
-       ENDDO
-        pvervel(ig0,l)=pw(1,jjp1,l) * g /apols
-      ENDDO
+c JG : ancien calcule de omega utilise dans physiq.F. Maintenant le flux 
+c    de masse est calclue dans advtrac.F  
+c      DO l=1,llm
+c        pvervel(1,l)=pw(1,1,l) * g /apoln
+c        ig0=2
+c       DO j=2,jjm
+c           DO i = 1, iim
+c              pvervel(ig0,l) = pw(i,j,l) * g * unsaire(i,j)
+c              ig0 = ig0 + 1
+c           ENDDO
+c       ENDDO
+c        pvervel(ig0,l)=pw(1,jjp1,l) * g /apols
+c      ENDDO
 
 c
@@ -442,8 +434,6 @@
      $           ntetaSTD,rtetaSTD,PVteta)
 c
-#ifdef INCA
+c On change de grille, dynamique vers physiq, pour le flux de masse verticale
       CALL gr_dyn_fi(llm,iip1,jjp1,ngridmx,flxw,flxwfi)
-#endif
-
 
 c-----------------------------------------------------------------------
@@ -470,8 +460,5 @@
      .             ztfi,
      .             zqfi,
-     .             pvervel,
-#ifdef INCA
      .             flxwfi,
-#endif
      .             zdufi,
      .             zdvfi,
Index: /LMDZ4/trunk/libf/dyn3d/conf_gcm.F
===================================================================
--- /LMDZ4/trunk/libf/dyn3d/conf_gcm.F	(revision 959)
+++ /LMDZ4/trunk/libf/dyn3d/conf_gcm.F	(revision 960)
@@ -507,4 +507,14 @@
        offline = .FALSE.
        CALL getin('offline',offline)
+
+!Config  Key  = config_inca
+!Config  Desc = Choix de configuration de INCA
+!Config  Def  = none
+!Config  Help = Choix de configuration de INCA :
+!Config         'none' = sans INCA
+!Config         'chem' = INCA avec calcul de chemie
+!Config         'aero' = INCA avec calcul des aerosols 
+      config_inca = 'none'
+      CALL getin('config_inca',config_inca)
 
 
@@ -541,4 +551,5 @@
       write(lunout,*)' tauyy = ', tauyy
       write(lunout,*)' offline = ', offline
+      write(lunout,*)' config_inca = ', config_inca
 
       RETURN
@@ -653,6 +664,14 @@
        offline = .FALSE.
        CALL getin('offline',offline)
-      write(lunout,*)' offline = ', offline
-
+
+!Config  Key  = config_inca
+!Config  Desc = Choix de configuration de INCA
+!Config  Def  = none
+!Config  Help = Choix de configuration de INCA :
+!Config         'none' = sans INCA
+!Config         'chem' = INCA avec calcul de chemie
+!Config         'aero' = INCA avec calcul des aerosols 
+      config_inca = 'none'
+      CALL getin('config_inca',config_inca)
 
       write(lunout,*)' #########################################'
@@ -688,4 +707,5 @@
       write(lunout,*)' tauy = ', tauy
       write(lunout,*)' offline = ', offline
+      write(lunout,*)' config_inca = ', config_inca
 c
       RETURN
Index: /LMDZ4/trunk/libf/dyn3d/control.h
===================================================================
--- /LMDZ4/trunk/libf/dyn3d/control.h	(revision 959)
+++ /LMDZ4/trunk/libf/dyn3d/control.h	(revision 960)
@@ -14,5 +14,5 @@
      &              iperiod,iapp_tracvl,iconser,iecri,idissip,iphysiq , &
      &              periodav,iecrimoy,dayref,anneeref,                  &
-     &              raz_date,offline,ip_ebil_dyn
+     &              raz_date,offline,ip_ebil_dyn,config_inca
 
       INTEGER   nday,day_step,iperiod,iapp_tracvl,iconser,iecri,        &
@@ -21,4 +21,4 @@
       REAL periodav
       logical offline
-
+      CHARACTER*4 config_inca
 !-----------------------------------------------------------------------
Index: /LMDZ4/trunk/libf/dyn3d/create_etat0_limit.F
===================================================================
--- /LMDZ4/trunk/libf/dyn3d/create_etat0_limit.F	(revision 959)
+++ /LMDZ4/trunk/libf/dyn3d/create_etat0_limit.F	(revision 960)
@@ -29,5 +29,5 @@
 #include "indicesol.h"
 #include "advtrac.h"
-cym#include "dimphy.h" 
+#include  "control.h"
       REAL :: masque(iip1,jjp1)
       REAL :: pctsrf(iim*(jjm-1)+2, nbsrf)
@@ -43,8 +43,10 @@
       mmt_adj(:,:,:,:) = 1
 
+      IF (config_inca /= 'none') THEN
 #ifdef INCA
-      call init_const_lmdz(nbtrac,anneeref,dayref,iphysiq,day_step,nday)
-      print *, 'nbtrac =' , nbtrac 
+         call init_const_lmdz(nbtrac,anneeref,dayref,iphysiq,day_step,nday)
 #endif
+         print *, 'nbtrac =' , nbtrac 
+      END IF
 
       CALL Init_Phys_lmdz(iim,jjp1,llm,nqmx-2,1,(jjm-1)*iim+2)
Index: /LMDZ4/trunk/libf/dyn3d/dynredem.F
===================================================================
--- /LMDZ4/trunk/libf/dyn3d/dynredem.F	(revision 959)
+++ /LMDZ4/trunk/libf/dyn3d/dynredem.F	(revision 960)
@@ -521,4 +521,5 @@
 #include "advtrac.h"
 #include "temps.h"
+#include "control.h"
 
       INTEGER nq, l
@@ -623,34 +624,46 @@
 #endif
 
-#ifdef INCA
+      IF (config_inca /= 'none') THEN
 ! Ajout Anne pour lecture valeurs traceurs dans un fichier start_trac.nc
-      ierr_file = NF_OPEN ("start_trac.nc", NF_NOWRITE,nid_trac)
-      IF (ierr_file .NE.NF_NOERR) THEN
-        write(6,*)' Pb d''ouverture du fichier start_trac.nc'
-        write(6,*)' ierr = ', ierr_file 
-      ENDIF
-#endif
+         ierr_file = NF_OPEN ("start_trac.nc", NF_NOWRITE,nid_trac)
+         IF (ierr_file .NE.NF_NOERR) THEN
+            write(6,*)' Pb d''ouverture du fichier start_trac.nc'
+            write(6,*)' ierr = ', ierr_file 
+         ENDIF
+      END IF
 
       IF(nq.GE.1) THEN
-       do iq=1,nq 
-#ifdef INCA
+      do iq=1,nq 
+
+         IF (config_inca == 'none') THEN
+            ierr = NF_INQ_VARID(nid, tname(iq), nvarid)
+            IF (ierr .NE. NF_NOERR) THEN
+               PRINT*, "Variable  tname(iq) n est pas definie"
+               CALL abort
+            ENDIF
+#ifdef NC_DOUBLE
+            ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,q(1,1,iq))
+#else
+            ierr = NF_PUT_VAR_REAL (nid,nvarid,q(1,1,iq))
+#endif
+        ELSE ! config_inca = 'chem' ou 'aero'
 ! lecture de la valeur du traceur dans start_trac.nc
-         if (ierr_file .ne. 2) then 
-            ierr = NF_INQ_VARID (nid_trac, tname(iq), nvarid_trac)
-            IF (ierr .NE. NF_NOERR) THEN
-               PRINT*, tname(iq),"est absent de start_trac.nc"
-               ierr = NF_INQ_VARID(nid, tname(iq), nvarid)
-               IF (ierr .NE. NF_NOERR) THEN
-                  PRINT*, "Variable ", tname(iq)," n est pas definie"
-                  CALL abort
-               ENDIF
-#ifdef NC_DOUBLE
-               ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,q(1,1,iq))
-#else
-               ierr = NF_PUT_VAR_REAL (nid,nvarid,q(1,1,iq))
-#endif
-
-            ELSE
-               PRINT*, tname(iq), "est present dans start_trac.nc"
+           IF (ierr_file .ne. 2) THEN
+             ierr = NF_INQ_VARID (nid_trac, tname(iq), nvarid_trac)
+             IF (ierr .NE. NF_NOERR) THEN
+                PRINT*, tname(iq),"est absent de start_trac.nc"
+                ierr = NF_INQ_VARID(nid, tname(iq), nvarid)
+                IF (ierr .NE. NF_NOERR) THEN
+                   PRINT*, "Variable ", tname(iq)," n est pas definie"
+                   CALL abort
+                ENDIF
+#ifdef NC_DOUBLE
+                ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,q(1,1,iq))
+#else
+                ierr = NF_PUT_VAR_REAL (nid,nvarid,q(1,1,iq))
+#endif
+                
+             ELSE
+                PRINT*, tname(iq), "est present dans start_trac.nc"
 #ifdef NC_DOUBLE
                ierr = NF_GET_VAR_DOUBLE(nid_trac, nvarid_trac, trac_tmp)
@@ -658,22 +671,22 @@
                ierr = NF_GET_VAR_REAL(nid_trac, nvarid_trac, trac_tmp)
 #endif
-               IF (ierr .NE. NF_NOERR) THEN
-                  PRINT*, "Lecture echouee pour", tname(iq)
-                  CALL abort
-               ENDIF
-               ierr = NF_INQ_VARID(nid, tname(iq), nvarid)
-               IF (ierr .NE. NF_NOERR) THEN
-                  PRINT*, "Variable ", tname(iq)," n est pas definie"
-                  CALL abort
-               ENDIF
-#ifdef NC_DOUBLE
-               ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,trac_tmp)
-#else
-               ierr = NF_PUT_VAR_REAL (nid,nvarid,trac_tmp)
-#endif
-
-          ENDIF
+                IF (ierr .NE. NF_NOERR) THEN
+                   PRINT*, "Lecture echouee pour", tname(iq)
+                   CALL abort
+                ENDIF
+                ierr = NF_INQ_VARID(nid, tname(iq), nvarid)
+                IF (ierr .NE. NF_NOERR) THEN
+                   PRINT*, "Variable ", tname(iq)," n est pas definie"
+                   CALL abort
+                ENDIF
+#ifdef NC_DOUBLE
+                ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,trac_tmp)
+#else
+                ierr = NF_PUT_VAR_REAL (nid,nvarid,trac_tmp)
+#endif
+               
+             ENDIF ! IF (ierr .NE. NF_NOERR)
 ! fin lecture du traceur
-          ELSE  ! si il n'y a pas de fichier start_trac.nc
+          ELSE                  ! si il n'y a pas de fichier start_trac.nc
 !             print *, 'il n y a pas de fichier start_trac'
              ierr = NF_INQ_VARID(nid, tname(iq), nvarid)
@@ -687,21 +700,7 @@
              ierr = NF_PUT_VAR_REAL (nid,nvarid,q(1,1,iq))
 #endif
-          ENDIF
-! endif ifdef INCA
-#endif
-          
-#ifndef INCA
-        ierr = NF_INQ_VARID(nid, tname(iq), nvarid)
-        IF (ierr .NE. NF_NOERR) THEN
-           PRINT*, "Variable  tname(iq) n est pas definie"
-           CALL abort
-        ENDIF
-#ifdef NC_DOUBLE
-          ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,q(1,1,iq))
-#else
-          ierr = NF_PUT_VAR_REAL (nid,nvarid,q(1,1,iq))
-#endif
-! endif ifndef INCA
-#endif
+          ENDIF ! (ierr_file .ne. 2)
+       END IF   ! config_inca
+      
       ENDDO
       ENDIF
Index: /LMDZ4/trunk/libf/dyn3d/gcm.F
===================================================================
--- /LMDZ4/trunk/libf/dyn3d/gcm.F	(revision 959)
+++ /LMDZ4/trunk/libf/dyn3d/gcm.F	(revision 960)
@@ -220,9 +220,10 @@
 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 
+      IF (config_inca /= 'none') THEN
 #ifdef INCA
       call init_const_lmdz(nbtrac,anneeref,dayref,iphysiq,day_step,nday)
       call init_inca_para(iim,jjm+1,klon,1,klon_mpi_para_nb,0)
 #endif
-
+      END IF
 c
 c
@@ -259,8 +260,10 @@
       endif
 
+      IF (config_inca /= 'none') THEN
 #ifdef INCA
-      call init_inca_dim(klon,llm,iim,jjm,
-     $     rlonu,rlatu,rlonv,rlatv)
-#endif
+         call init_inca_dim(klon,llm,iim,jjm,
+     $        rlonu,rlatu,rlonv,rlatv)
+#endif
+      END IF
 
 
Index: /LMDZ4/trunk/libf/dyn3d/iniadvtrac.F
===================================================================
--- /LMDZ4/trunk/libf/dyn3d/iniadvtrac.F	(revision 959)
+++ /LMDZ4/trunk/libf/dyn3d/iniadvtrac.F	(revision 960)
@@ -27,5 +27,5 @@
 #include "dimensions.h"
 #include "advtrac.h"
-
+#include "control.h"
 c   local
       character*3 descrq(30)
@@ -55,13 +55,14 @@
       descrq(30)='PRA'
 
+      IF (config_inca /= 'none') THEN
 #ifdef INCA
-
-      CALL init_transport( 
-     $     hadv_flg,
-     $     vadv_flg,
-     $     conv_flg,
-     $     pbl_flg,
-     $     tracnam)
+         CALL init_transport( 
+     $        hadv_flg,
+     $        vadv_flg,
+     $        conv_flg,
+     $        pbl_flg,
+     $        tracnam)
 #endif
+      END IF
 
 c-----------------------------------------------------------------------
@@ -109,66 +110,66 @@
 c    dans fichier traceur.def
 c------------------------------------------------------------------
-#ifdef INCA
+      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
-#else
-      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       
-
-#endif
+         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
Index: /LMDZ4/trunk/libf/dyn3d/leapfrog.F
===================================================================
--- /LMDZ4/trunk/libf/dyn3d/leapfrog.F	(revision 959)
+++ /LMDZ4/trunk/libf/dyn3d/leapfrog.F	(revision 960)
@@ -149,7 +149,5 @@
 
       REAL alpha(ip1jmp1,llm),beta(ip1jmp1,llm)
-#ifdef INCA
-      REAL :: flxw(ip1jmp1,llm)
-#endif
+      REAL :: flxw(ip1jmp1,llm)  ! flux de masse verticale
 
 c+jld variables test conservation energie
@@ -293,16 +291,8 @@
       IF( forward. OR . leapf )  THEN
 
-c
-#ifdef INCA
-             CALL caladvtrac(q,pbaru,pbarv,
-     *                      p, masse, dq,  teta,
-     .             flxw,
-     .             pk)
-#else
-             CALL caladvtrac(q,pbaru,pbarv,
-     *                      p, masse, dq,  teta,
-     .             pk)
-#endif
-
+         CALL caladvtrac(q,pbaru,pbarv,
+     *        p, masse, dq,  teta,
+     .        flxw, pk)
+         
          IF (offline) THEN
 Cmaf stokage du flux de masse pour traceurs OFF-LINE
@@ -383,8 +373,6 @@
         CALL calfis( nq, lafin ,rdayvrai,time  ,
      $               ucov,vcov,teta,q,masse,ps,p,pk,phis,phi ,
-     $               du,dv,dteta,dq,w,
-#ifdef INCA
+     $               du,dv,dteta,dq,
      $               flxw,
-#endif
      $               clesphy0, dufi,dvfi,dtetafi,dqfi,dpfi  )
 
Index: /LMDZ4/trunk/libf/dyn3dpar/advtrac_p.F
===================================================================
--- /LMDZ4/trunk/libf/dyn3dpar/advtrac_p.F	(revision 959)
+++ /LMDZ4/trunk/libf/dyn3dpar/advtrac_p.F	(revision 960)
@@ -4,14 +4,8 @@
 c
 c
-#ifdef INCA
       SUBROUTINE advtrac_p(pbaru,pbarv ,
      *                   p,  masse,q,iapptrac,teta,
      *                  flxw,
      *                  pk   )
-#else
-      SUBROUTINE advtrac_p(pbaru,pbarv ,
-     *                   p,  masse,q,iapptrac,teta,
-     *                  pk)
-#endif
 
 c     Auteur :  F. Hourdin
@@ -55,7 +49,5 @@
       REAL p( ip1jmp1,llmp1 ),teta(ip1jmp1,llm)
       REAL pk(ip1jmp1,llm)
-#ifdef INCA
-       REAL               :: flxw(ip1jmp1,llm)
-#endif
+      REAL               :: flxw(ip1jmp1,llm)
 
 c-------------------------------------------------------------
@@ -209,11 +201,8 @@
 c$OMP BARRIER
       
-#ifdef INCA
       ! ... Flux de masse diaganostiques traceurs
-c      flxw = wg / FLOAT(iapp_tracvl)
          ijb=ij_begin
          ije=ij_end
          flxw(ijb:ije,1:llm)=wg(ijb:ije,1:llm)/FLOAT(iapp_tracvl)
-#endif
 
 c  test sur l'eventuelle creation de valeurs negatives de la masse
@@ -327,9 +316,4 @@
 
             call pentes_ini (q(1,1,iq),wg,massem,pbarug,pbarvg,0)
-#ifdef INCA
-       do iiq = iq+1, iq+3
-         q(:,:,iiq)=q(:,:,iiq)*1
-       enddo
-#endif
 
 c   ----------------------------------------------------------------
@@ -346,9 +330,4 @@
            call  prather(q(1,1,iq),wg,massem,pbarug,pbarvg,
      s                     n,dtbon)
-#ifdef INCA
-       do iiq = iq+1, iq+9
-         q(:,:,iiq)=q(:,:,iiq)*1
-       enddo
-#endif
 c   ----------------------------------------------------------------
 c   Schemas PPM Lin et Rood
@@ -487,8 +466,7 @@
         enddo
 
-#ifdef INCA
-       call Register_SwapFieldHallo(flxw,flxw,ip1jmp1,llm,
-     *                             jj_nb_caldyn,0,0,Request_vanleer)
-#endif      
+        call Register_SwapFieldHallo(flxw,flxw,ip1jmp1,llm,
+     *       jj_nb_caldyn,0,0,Request_vanleer)
+
         call SetDistrib(jj_nb_caldyn)
         call SendRequest(Request_vanleer)
Index: /LMDZ4/trunk/libf/dyn3dpar/caladvtrac_p.F
===================================================================
--- /LMDZ4/trunk/libf/dyn3dpar/caladvtrac_p.F	(revision 959)
+++ /LMDZ4/trunk/libf/dyn3dpar/caladvtrac_p.F	(revision 960)
@@ -4,15 +4,7 @@
 c
 c
-#ifdef INCA
             SUBROUTINE caladvtrac_p(q,pbaru,pbarv ,
      *                   p ,masse, dq ,  teta,
-     *                   flxw,
-     *                   pk,
-     *                   iapptrac)
-#else
-            SUBROUTINE caladvtrac_p(q,pbaru,pbarv ,
-     *                   p ,masse, dq ,  teta,
-     *                   pk,iapptrac)
-#endif
+     *                   flxw, pk, iapptrac)
       USE parallel
 c
@@ -40,7 +32,6 @@
       REAL p( ip1jmp1,llmp1),q( ip1jmp1,llm,nqmx),dq( ip1jmp1,llm,2 )
       REAL teta( ip1jmp1,llm),pk( ip1jmp1,llm)
-#ifdef INCA
       REAL               :: flxw(ip1jmp1,llm)
-#endif
+
       integer ijb,ije,jjb,jje
 
@@ -74,15 +65,7 @@
 c      print *,'appel a advtrac'
 
-#ifdef INCA
       CALL advtrac_p( pbaru,pbarv, 
      *             p,  masse,q,iapptrac, teta,
-     .             flxw,
-     .             pk)
-#else
-      CALL advtrac_p( pbaru,pbarv, 
-     *             p,  masse,q,iapptrac, teta,
-     .             pk)
-#endif
-c
+     .             flxw, pk)
 
          goto 9999
Index: /LMDZ4/trunk/libf/dyn3dpar/calfis_p.F
===================================================================
--- /LMDZ4/trunk/libf/dyn3dpar/calfis_p.F	(revision 959)
+++ /LMDZ4/trunk/libf/dyn3dpar/calfis_p.F	(revision 960)
@@ -22,8 +22,5 @@
      $                  pdteta,
      $                  pdq,
-     $                  pw,
-#ifdef INCA
      $                  flxw,
-#endif
      $                  clesphy0,
      $                  pdufi,
@@ -130,6 +127,4 @@
       REAL pdq(iip1,jjp1,llm,nqmx)
 c
-      REAL pw(iip1,jjp1,llm)
-
       REAL pps(iip1,jjp1)
       REAL pp(iip1,jjp1,llmp1)
@@ -161,5 +156,5 @@
       REAL,ALLOCATABLE,SAVE :: pcvgt(:,:), pcvgq(:,:,:)
 c
-      REAL,ALLOCATABLE,SAVE :: pvervel(:,:)
+c      REAL,ALLOCATABLE,SAVE :: pvervel(:,:)
 c
       REAL,ALLOCATABLE,SAVE :: zdufi(:,:),zdvfi(:,:)
@@ -176,5 +171,5 @@
       REAL,ALLOCATABLE,SAVE :: ztfi_omp(:,:)
       REAL,ALLOCATABLE,SAVE :: zqfi_omp(:,:,:)
-      REAL,ALLOCATABLE,SAVE :: pvervel_omp(:,:) 
+c      REAL,ALLOCATABLE,SAVE :: pvervel_omp(:,:) 
       REAL,ALLOCATABLE,SAVE :: zdufi_omp(:,:)
       REAL,ALLOCATABLE,SAVE :: zdvfi_omp(:,:)
@@ -202,9 +197,6 @@
       REAL PVteta(klon,ntetaSTD)
       
-#ifdef INCA
-      REAL flxw(iip1,jjp1,llm)
-      REAL flxwfi(klon,llm)
-#endif
-c
+      REAL flxw(iip1,jjp1,llm)  ! Flux de masse verticale sur la grille dynamique
+      REAL flxwfi(klon,llm)     ! Flux de masse verticale sur la grille physiq
       
       REAL SSUM
@@ -257,5 +249,5 @@
       ALLOCATE(pcvgu(klon,llm), pcvgv(klon,llm))
       ALLOCATE(pcvgt(klon,llm), pcvgq(klon,llm,2))
-      ALLOCATE(pvervel(klon,llm))
+c      ALLOCATE(pvervel(klon,llm))
       ALLOCATE(zdufi(klon,llm),zdvfi(klon,llm))
       ALLOCATE(zdtfi(klon,llm),zdqfi(klon,llm,nqmx))
@@ -380,18 +372,21 @@
 	 ENDDO
       ENDDO
-c$OMP END DO NOWAIT      
+c$OMP END DO NOWAIT
+      
 c   ....  Calcul de la vitesse  verticale  ( en Pa*m*s  ou Kg/s )  ....
-c
-c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)       
-      DO l=1,llm
-        do ig0=1,klon
-           i=index_i(ig0)
-           j=index_j(ig0)
-           pvervel(ig0,l) = pw(i,j,l)*g* unsaire(i,j)
-        enddo
-	if (is_north_pole) pvervel(1,l)=pw(1,1,l)*g /apoln
-	if (is_south_pole) pvervel(klon,l)=pw(1,jjp1,l)*g/apols
-      ENDDO
-c$OMP END DO NOWAIT
+c JG : ancien calcule de omega utilise dans physiq.F. Maintenant le flux 
+c      de masse est calclue dans advtrac_p.F  
+c
+cc$OMP DO SCHEDULE(STATIC,OMP_CHUNK)       
+c      DO l=1,llm
+c        do ig0=1,klon
+c           i=index_i(ig0)
+c           j=index_j(ig0)
+c           pvervel(ig0,l) = pw(i,j,l)*g* unsaire(i,j)
+c        enddo
+c	if (is_north_pole) pvervel(1,l)=pw(1,1,l)*g /apoln
+c	if (is_south_pole) pvervel(klon,l)=pw(1,jjp1,l)*g/apols
+c      ENDDO
+cc$OMP END DO NOWAIT
 
 c
@@ -514,8 +509,7 @@
 c
       ENDIF
-#ifdef INCA
+
+c On change de grille, dynamique vers physiq, pour le flux de masse verticale
       CALL gr_dyn_fi_p(llm,iip1,jjp1,klon,flxw,flxwfi)
-#endif
-
 
 c-----------------------------------------------------------------------
@@ -548,5 +542,5 @@
         allocate(ztfi_omp(klon,llm))
         allocate(zqfi_omp(klon,llm,nq))
-        allocate(pvervel_omp(klon,llm))
+c        allocate(pvervel_omp(klon,llm))
         allocate(zdufi_omp(klon,llm))
         allocate(zdvfi_omp(klon,llm))
@@ -614,9 +608,9 @@
       enddo
 	
-      do l=1,llm
-        do i=1,klon
-	  pvervel_omp(i,l)=pvervel(offset+i,l)
-	enddo 
-      enddo
+c      do l=1,llm
+c        do i=1,klon
+c	  pvervel_omp(i,l)=pvervel(offset+i,l)
+c	enddo 
+c      enddo
 	
       do l=1,llm
@@ -671,8 +665,8 @@
      .             ztfi_omp,
      .             zqfi_omp,
-     .             pvervel_omp,
-#ifdef INCA
+c     .             pvervel_omp,
+c#ifdef INCA
      .             flxwfi,
-#endif
+c#endif
      .             zdufi_omp,
      .             zdvfi_omp,
@@ -742,9 +736,9 @@
       enddo
 	
-      do l=1,llm
-        do i=1,klon
-	  pvervel(offset+i,l)=pvervel_omp(i,l)
-	enddo 
-      enddo
+c      do l=1,llm
+c        do i=1,klon
+c	  pvervel(offset+i,l)=pvervel_omp(i,l)
+c	enddo 
+c      enddo
 	
       do l=1,llm
Index: /LMDZ4/trunk/libf/dyn3dpar/conf_gcm.F
===================================================================
--- /LMDZ4/trunk/libf/dyn3dpar/conf_gcm.F	(revision 959)
+++ /LMDZ4/trunk/libf/dyn3dpar/conf_gcm.F	(revision 960)
@@ -600,4 +600,14 @@
        offline = .FALSE.
        CALL getin('offline',offline)
+
+!Config  Key  = config_inca
+!Config  Desc = Choix de configuration de INCA
+!Config  Def  = none
+!Config  Help = Choix de configuration de INCA :
+!Config         'none' = sans INCA
+!Config         'chem' = INCA avec calcul de chemie
+!Config         'aero' = INCA avec calcul des aerosols 
+      config_inca = 'none'
+      CALL getin('config_inca',config_inca)
 
 
@@ -643,4 +653,5 @@
       write(lunout,*)' tauyy = ', tauyy
       write(lunout,*)' offline = ', offline
+      write(lunout,*)' config_inca = ', config_inca
 
       RETURN
@@ -755,5 +766,14 @@
        offline = .FALSE.
        CALL getin('offline',offline)
-      write(lunout,*)' offline = ', offline
+
+!Config  Key  = config_inca
+!Config  Desc = Choix de configuration de INCA
+!Config  Def  = none
+!Config  Help = Choix de configuration de INCA :
+!Config         'none' = sans INCA
+!Config         'chem' = INCA avec calcul de chemie
+!Config         'aero' = INCA avec calcul des aerosols 
+      config_inca = 'none'
+      CALL getin('config_inca',config_inca)
 
 
@@ -799,4 +819,5 @@
       write(lunout,*)' tauy = ', tauy
       write(lunout,*)' offline = ', offline
+      write(lunout,*)' config_inca = ', config_inca
 c
       RETURN
Index: /LMDZ4/trunk/libf/dyn3dpar/control.h
===================================================================
--- /LMDZ4/trunk/libf/dyn3dpar/control.h	(revision 959)
+++ /LMDZ4/trunk/libf/dyn3dpar/control.h	(revision 960)
@@ -14,5 +14,5 @@
      &              iperiod,iapp_tracvl,iconser,iecri,idissip,iphysiq , &
      &              periodav,ecritphy,iecrimoy,dayref,anneeref,         &
-     &              raz_date,offline,ip_ebil_dyn
+     &              raz_date,offline,ip_ebil_dyn,config_inca
 
       INTEGER   nday,day_step,iperiod,iapp_tracvl,iconser,iecri,        &
@@ -21,4 +21,4 @@
       REAL periodav, ecritphy
       logical offline
-
+      CHARACTER*4 config_inca
 !-----------------------------------------------------------------------
Index: /LMDZ4/trunk/libf/dyn3dpar/gcm.F
===================================================================
--- /LMDZ4/trunk/libf/dyn3dpar/gcm.F	(revision 959)
+++ /LMDZ4/trunk/libf/dyn3dpar/gcm.F	(revision 960)
@@ -230,9 +230,12 @@
       call InitComgeomphy
 c$OMP END PARALLEL 
+
+      IF (config_inca /= 'none') THEN
 #ifdef INCA
-      call init_const_lmdz(nbtrac,anneeref,dayref,iphysiq,day_step,nday)
-      call init_inca_para(iim,jjm+1,klon_glo,mpi_size,klon_mpi_para_nb,
-     $ COMM_LMDZ)
-#endif
+         call init_const_lmdz(nbtrac,anneeref,dayref,iphysiq,day_step,nday)
+         call init_inca_para(iim,jjm+1,klon_glo,mpi_size,klon_mpi_para_nb,
+     $        COMM_LMDZ)
+#endif
+      END IF
 
 c-----------------------------------------------------------------------
@@ -262,9 +265,10 @@
       endif
 
+      IF (config_inca /= 'none') THEN
 #ifdef INCA
-      call init_inca_dim(klon,llm,iim,jjm,
-     $     rlonu,rlatu,rlonv,rlatv)
-#endif
-
+         call init_inca_dim(klon,llm,iim,jjm,
+     $        rlonu,rlatu,rlonv,rlatv)
+#endif
+      END IF
 
 c le cas echeant, creation d un etat initial
Index: /LMDZ4/trunk/libf/dyn3dpar/iniadvtrac.F
===================================================================
--- /LMDZ4/trunk/libf/dyn3dpar/iniadvtrac.F	(revision 959)
+++ /LMDZ4/trunk/libf/dyn3dpar/iniadvtrac.F	(revision 960)
@@ -27,4 +27,5 @@
 #include "dimensions.h"
 #include "advtrac.h"
+#include "control.h"
 
 c   local
@@ -55,14 +56,14 @@
       descrq(30)='PRA'
 
+      IF (config_inca /= 'none') THEN
 #ifdef INCA
-
-      CALL init_transport( 
-     $     hadv_flg,
-     $     vadv_flg,
-     $     conv_flg,
-     $     pbl_flg,
-     $     tracnam)
+         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
@@ -109,10 +110,11 @@
 c    dans fichier traceur.def
 c------------------------------------------------------------------
-#ifdef INCA
+
+      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
+         tnom(1)='H2Ov'
+         tnom(2)='H2Ol'
+         nq=nbtrac+2
       
        if (nq.gt.nqmx) then
@@ -127,8 +129,8 @@
       vadv(iq)= vadv_flg(iq) 
       end do
-#else
-      print*,'ouverture de traceur.def'
-      open(90,file='traceur.def',form='formatted',status='old',
-     s     iostat=ierr)
+      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'
@@ -171,5 +173,6 @@
       end do       
 
-#endif
+      END IF ! config_inca
+
 c a partir du nom court du traceur et du schema d'advection au detemine le nom long.
         iiq=0
Index: /LMDZ4/trunk/libf/dyn3dpar/leapfrog_p.F
===================================================================
--- /LMDZ4/trunk/libf/dyn3dpar/leapfrog_p.F	(revision 959)
+++ /LMDZ4/trunk/libf/dyn3dpar/leapfrog_p.F	(revision 960)
@@ -146,7 +146,5 @@
 
       REAL,SAVE :: alpha(ip1jmp1,llm),beta(ip1jmp1,llm)
-#ifdef INCA
-      REAL,SAVE :: flxw(ip1jmp1,llm)
-#endif
+      REAL,SAVE :: flxw(ip1jmp1,llm) ! flux de masse verticale
 
 c+jld variables test conservation energie
@@ -565,18 +563,8 @@
 cc$OMP PARALLEL DEFAULT(SHARED) 
 c
-#ifdef INCA
-             CALL caladvtrac_p(q,pbaru,pbarv,
-     *                      p, masse, dq,  teta,
-     .             flxw,
-     .             pk, 
-     .             iapptrac)
-#else
-             CALL caladvtrac_p(q,pbaru,pbarv,
-     *                      p, masse, dq,  teta,
-     .             pk,iapptrac)
-#endif
-
-
-
+         CALL caladvtrac_p(q,pbaru,pbarv,
+     *        p, masse, dq,  teta,
+     .        flxw,pk, iapptrac)
+         
 c      do j=1,nqmx
 c        call WriteField_p('q'//trim(int2str(j)),
@@ -722,8 +710,7 @@
      *                               jj_Nb_physic,2,2,Request_physic)
         enddo
-#ifdef INCA
+
         call Register_SwapFieldHallo(flxw,flxw,ip1jmp1,llm,
      *                               jj_Nb_physic,2,2,Request_physic)
-#endif
         call SetDistrib(jj_nb_Physic)
         
@@ -748,8 +735,6 @@
         CALL calfis_p( nq, lafin ,rdayvrai,time  ,
      $               ucov,vcov,teta,q,masse,ps,p,pk,phis,phi ,
-     $               du,dv,dteta,dq,w,
-#ifdef INCA
+     $               du,dv,dteta,dq,
      $               flxw,
-#endif
      $               clesphy0, dufi,dvfi,dtetafi,dqfi,dpfi  )
         ijb=ij_begin
