Index: LMDZ6/trunk/libf/phylmd/infotrac_phy.F90
===================================================================
--- LMDZ6/trunk/libf/phylmd/infotrac_phy.F90	(revision 4165)
+++ LMDZ6/trunk/libf/phylmd/infotrac_phy.F90	(revision 4170)
@@ -4,5 +4,5 @@
 MODULE infotrac_phy
 
-   USE       strings_mod, ONLY: msg, maxlen, strStack, strHead, strIdx, int2str
+   USE       strings_mod, ONLY: msg, maxlen, strStack, strHead, strParse, strIdx, int2str
    USE readTracFiles_mod, ONLY: trac_type, isot_type, keys_type, delPhase, getKey, tnom_iso => newH2OIso
 
@@ -13,5 +13,5 @@
    !=== FOR TRACERS:
    PUBLIC :: init_infotrac_phy                             !--- Initialization of the tracers
-   PUBLIC :: tracers, type_trac                            !--- Full tracers database, tracers type keyword
+   PUBLIC :: tracers, type_trac, types_trac                !--- Full tracers database, tracers type keyword
    PUBLIC :: nqtot,   nbtr,   nqo,   nqCO2,   nqtottr      !--- Main dimensions
    PUBLIC :: conv_flg, pbl_flg                             !--- Convection & boundary layer activation keys
@@ -105,5 +105,7 @@
                                     nqCO2                       !--- Number of tracers of CO2  (ThL)
    CHARACTER(LEN=maxlen),   SAVE :: type_trac                   !--- Keyword for tracers type
-!$OMP THREADPRIVATE(nqtot, nbtr, nqo, nbIso, nqtottr, nqCO2, type_trac)
+   CHARACTER(LEN=maxlen),   SAVE, ALLOCATABLE :: types_trac(:)  !--- Keyword for tracers type
+
+!$OMP THREADPRIVATE(nqtot, nbtr, nqo, nbIso, nqtottr, nqCO2, type_trac, types_trac)
 
    !=== DERIVED TYPES EMBEDDING MOST INFORMATIONS ABOUT TRACERS AND ISOTOPES FAMILIES
@@ -161,4 +163,5 @@
 
    type_trac = type_trac_
+   IF(strParse(type_trac, '|', types_trac)) CALL abort_gcm(modname,'can''t parse "type_trac = '//TRIM(type_trac)//'"',1)
    tracers   = tracers_
    isotopes  = isotopes_
@@ -186,5 +189,5 @@
 
 #ifdef CPP_StratAer
-   IF (type_trac == 'coag') THEN
+   IF (ANY(types_trac == 'coag')) THEN
       nbtr_bin    = COUNT([(tracers(iq)%name(1:3)=='BIN', iq=1, nqtot)])
       nbtr_sulgas = COUNT([(tracers(iq)%name(1:3)=='GAS', iq=1, nqtot)])
Index: LMDZ6/trunk/libf/phylmd/phyetat0.F90
===================================================================
--- LMDZ6/trunk/libf/phylmd/phyetat0.F90	(revision 4165)
+++ LMDZ6/trunk/libf/phylmd/phyetat0.F90	(revision 4170)
@@ -23,5 +23,5 @@
   USE geometry_mod,     ONLY: longitude_deg, latitude_deg
   USE iostart,          ONLY: close_startphy, get_field, get_var, open_startphy
-  USE infotrac_phy,     ONLY: nqtot, nbtr, type_trac, tracers
+  USE infotrac_phy,     ONLY: nqtot, nbtr, types_trac, tracers
   USE traclmdz_mod,     ONLY: traclmdz_from_restart
   USE carbon_cycle_mod, ONLY: carbon_cycle_tr, carbon_cycle_cpl, co2_send
@@ -449,5 +449,12 @@
 !===========================================
 
-  IF (type_trac == 'lmdz') THEN
+!--OB now this is for co2i - ThL: and therefore also for inco
+  IF (ANY(types_trac == 'co2i') .OR. ANY(types_trac == 'inco')) THEN
+     IF (carbon_cycle_cpl) THEN
+        ALLOCATE(co2_send(klon), stat=ierr)
+        IF (ierr /= 0) CALL abort_physic('phyetat0', 'pb allocation co2_send', 1)
+        found=phyetat0_get(1,co2_send,"co2_send","co2 send",co2_ppm)
+     ENDIF
+  ELSE IF (ANY(types_trac == 'lmdz')) THEN
      it = 0
      DO iq = 1, nqtot
@@ -460,12 +467,4 @@
   ENDIF
 
-!--OB now this is for co2i - ThL: and therefore also for inco
-  IF (type_trac == 'co2i' .OR. type_trac == 'inco') THEN
-     IF (carbon_cycle_cpl) THEN
-        ALLOCATE(co2_send(klon), stat=ierr)
-        IF (ierr /= 0) CALL abort_physic('phyetat0', 'pb allocation co2_send', 1)
-        found=phyetat0_get(1,co2_send,"co2_send","co2 send",co2_ppm)
-     ENDIF
-  ENDIF
 
 !===========================================
Index: LMDZ6/trunk/libf/phylmd/phyredem.F90
===================================================================
--- LMDZ6/trunk/libf/phylmd/phyredem.F90	(revision 4165)
+++ LMDZ6/trunk/libf/phylmd/phyredem.F90	(revision 4170)
@@ -35,5 +35,5 @@
   USE iostart, ONLY: open_restartphy, close_restartphy, enddef_restartphy, put_field, put_var
   USE traclmdz_mod, ONLY : traclmdz_to_restart
-  USE infotrac_phy, ONLY: type_trac, nqtot, tracers, nbtr
+  USE infotrac_phy, ONLY: types_trac, nqtot, tracers, nbtr
   USE carbon_cycle_mod, ONLY : carbon_cycle_cpl, co2_send
   USE indice_sol_mod, ONLY: nbsrf, is_oce, is_sic, is_ter, is_lic, epsfra
@@ -325,16 +325,5 @@
 
 
-    ! trs from traclmdz_mod
-    IF (type_trac == 'lmdz') THEN
-       CALL traclmdz_to_restart(trs)
-       it = 0
-       DO iq = 1, nqtot
-          IF(.NOT.(tracers(iq)%isAdvected .AND. tracers(iq)%isInPhysics)) CYCLE
-          it = it+1
-          CALL put_field(pass,"trs_"//tracers(iq)%name, "", trs(:, it))
-       END DO
-    END IF
-
-    IF (type_trac == 'co2i' .OR. type_trac == 'inco') THEN
+    IF (ANY(types_trac == 'co2i') .OR. ANY(types_trac == 'inco')) THEN
        IF (carbon_cycle_cpl) THEN
           IF (.NOT. ALLOCATED(co2_send)) THEN
@@ -345,4 +334,14 @@
           CALL put_field(pass,"co2_send", "co2_ppm for coupling", co2_send)
        END IF
+
+    ! trs from traclmdz_mod
+    ELSE IF (ANY(types_trac == 'lmdz')) THEN
+       CALL traclmdz_to_restart(trs)
+       it = 0
+       DO iq = 1, nqtot
+          IF(.NOT.(tracers(iq)%isAdvected .AND. tracers(iq)%isInPhysics)) CYCLE
+          it = it+1
+          CALL put_field(pass,"trs_"//tracers(iq)%name, "", trs(:, it))
+       END DO
     END IF
 
Index: LMDZ6/trunk/libf/phylmd/phys_output_mod.F90
===================================================================
--- LMDZ6/trunk/libf/phylmd/phys_output_mod.F90	(revision 4165)
+++ LMDZ6/trunk/libf/phylmd/phys_output_mod.F90	(revision 4170)
@@ -35,5 +35,5 @@
     USE iophy 
     USE dimphy
-    USE infotrac_phy, ONLY: nqtot, tracers, type_trac, niso
+    USE infotrac_phy, ONLY: nqtot, tracers, niso
     USE strings_mod,  ONLY: maxlen
     USE ioipsl
Index: LMDZ6/trunk/libf/phylmd/phys_output_write_mod.F90
===================================================================
--- LMDZ6/trunk/libf/phylmd/phys_output_write_mod.F90	(revision 4165)
+++ LMDZ6/trunk/libf/phylmd/phys_output_write_mod.F90	(revision 4170)
@@ -25,5 +25,5 @@
 
     USE dimphy, ONLY: klon, klev, klevp1
-    USE infotrac_phy, ONLY: nbtr, nqtot, nqo, type_trac, tracers, niso, ntiso
+    USE infotrac_phy, ONLY: nbtr, nqtot, nqo, types_trac, tracers, niso, ntiso
     USE strings_mod,  ONLY: maxlen
     USE mod_phys_lmdz_para, ONLY: is_north_pole_phy,is_south_pole_phy
@@ -942,5 +942,5 @@
        CALL histwrite_phy(o_SWupTOAclr, zx_tmp_fi2d)
 
-       IF ((type_trac/='inca') .OR. (config_inca=='aeNP')) THEN 
+       IF (ALL(types_trac/='inca') .OR. config_inca=='aeNP') THEN 
           IF (vars_defined) THEN
              zx_tmp_fi2d(:) = swupc0(:,klevp1)*swradcorr(:)
@@ -1014,5 +1014,5 @@
        CALL histwrite_phy(o_SWupSFCclr, zx_tmp_fi2d)
 
-       IF ((type_trac/='inca') .OR. (config_inca=='aeNP')) THEN 
+       IF (ALL(types_trac/='inca') .OR. config_inca=='aeNP') THEN 
           IF (vars_defined) THEN
              zx_tmp_fi2d(:) = swupc0(:,1)*swradcorr(:)
@@ -1031,5 +1031,5 @@
        CALL histwrite_phy(o_SWdnSFCclr, zx_tmp_fi2d)
 
-       IF ((type_trac/='inca') .OR. (config_inca=='aeNP')) THEN 
+       IF (ALL(types_trac/='inca') .OR. config_inca=='aeNP') THEN 
           IF (vars_defined) THEN
              zx_tmp_fi2d(:) = swdnc0(:,1)*swradcorr(:)
@@ -1053,5 +1053,5 @@
        CALL histwrite_phy(o_LWdnSFCclr, sollwdownclr)
 
-       IF ((type_trac/='inca') .OR. (config_inca=='aeNP')) THEN 
+       IF (ALL(types_trac/='inca') .OR. config_inca=='aeNP') THEN 
           IF (vars_defined) THEN
              zx_tmp_fi2d(:) = lwupc0(:,klevp1)
@@ -1060,5 +1060,5 @@
        ENDIF
 
-       IF ((type_trac/='inca') .OR. (config_inca=='aeNP')) THEN 
+       IF (ALL(types_trac/='inca') .OR. config_inca=='aeNP') THEN 
           IF (vars_defined) THEN
              zx_tmp_fi2d(:) = -1.*lwdnc0(:,1)
@@ -1569,5 +1569,5 @@
 !This is warranted by treating INCA aerosols as offline aerosols
        IF (flag_aerosol.GT.0) THEN
-          IF ((type_trac/='inca') .OR. (config_inca=='aeNP')) THEN 
+          IF (ALL(types_trac/='inca') .OR. config_inca=='aeNP') THEN 
 
              CALL histwrite_phy(o_od443aer, od443aer)
@@ -1633,5 +1633,5 @@
 
 #ifdef CPP_StratAer
-       IF (type_trac=='coag') THEN
+       IF (ANY(types_trac=='coag')) THEN
           CALL histwrite_phy(o_R2SO4, R2SO4)
           CALL histwrite_phy(o_OCS_lifetime, OCS_lifetime)
@@ -1692,5 +1692,5 @@
           CALL histwrite_phy(o_solswad0, zx_tmp_fi2d)
           
-          IF ((type_trac/='inca') .OR. (config_inca=='aeNP')) THEN 
+          IF (ALL(types_trac/='inca') .OR. config_inca=='aeNP') THEN 
 
              CALL histwrite_phy(o_toplwad, toplwad_aero)
@@ -1769,5 +1769,5 @@
        ! Champs 3D:
        IF (ok_ade .OR. ok_aie) then
-          IF ((type_trac/='inca') .OR. (config_inca=='aeNP')) THEN 
+          IF (ALL(types_trac/='inca') .OR. config_inca=='aeNP') THEN 
              CALL histwrite_phy(o_ec550aer, ec550aer)
           ENDIF
@@ -2228,5 +2228,5 @@
        CALL histwrite_phy(o_rsucs, zx_tmp_fi3d1)
 
-       IF ((type_trac/='inca') .OR. (config_inca=='aeNP')) THEN 
+       IF (ALL(types_trac/='inca') .OR. config_inca=='aeNP') THEN 
           IF (vars_defined) THEN
              DO k=1, klevp1
@@ -2244,5 +2244,5 @@
        CALL histwrite_phy(o_rsdcs, zx_tmp_fi3d1)
 
-       IF ((type_trac/='inca') .OR. (config_inca=='aeNP')) THEN 
+       IF (ALL(types_trac/='inca') .OR. config_inca=='aeNP') THEN 
           IF (vars_defined) THEN
              DO k=1, klevp1
@@ -2489,5 +2489,64 @@
 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
        IF (iflag_phytrac == 1 ) then
-         IF (type_trac == 'lmdz' .OR. type_trac == 'coag') THEN
+!
+         IF (ANY(types_trac == 'co2i')) THEN
+           itr = 0
+           DO iq = 1, nqtot
+             IF(.NOT.tracers(iq)%isInPhysics) CYCLE
+             itr = itr + 1
+!            write(*,*) 'phys_output_write_mod 2370: itr=',itr
+             !--3D fields
+             CALL histwrite_phy(o_trac(itr), tr_seri(:,:,itr))
+             CALL histwrite_phy(o_dtr_vdf(itr),d_tr_cl(:,:,itr))
+             CALL histwrite_phy(o_dtr_the(itr),d_tr_th(:,:,itr))
+             CALL histwrite_phy(o_dtr_con(itr),d_tr_cv(:,:,itr))
+             !--2D fields
+             !--CO2 burden
+             zx_tmp_fi2d=0.
+             IF (vars_defined) THEN
+                DO k=1,klev
+                   zx_tmp_fi2d(:)=zx_tmp_fi2d(:)+zmasse(:,k)*tr_seri(:,k,itr)
+                ENDDO
+             ENDIF
+             CALL histwrite_phy(o_trac_cum(itr), zx_tmp_fi2d)
+           ENDDO !--iq
+           !--CO2 net fluxes
+           CALL histwrite_phy(o_flx_co2_land,  fco2_land)
+           CALL histwrite_phy(o_flx_co2_ocean, fco2_ocean)
+           CALL histwrite_phy(o_flx_co2_ocean_cor, fco2_ocean_cor)
+           CALL histwrite_phy(o_flx_co2_land_cor, fco2_land_cor)
+           CALL histwrite_phy(o_flx_co2_ff,    fco2_ff)
+           CALL histwrite_phy(o_flx_co2_bb,    fco2_bb)
+
+         ELSE IF (ANY(types_trac == 'inco')) THEN
+           itr = 0
+           DO iq = 1, nqtot
+             IF(.NOT.tracers(iq)%isInPhysics) CYCLE
+             itr = itr+1
+             IF(tracers(iq)%component /= 'co2i') CYCLE
+             !--3D fields
+             CALL histwrite_phy(o_trac   (itr),tr_seri(:,:,itr))
+             CALL histwrite_phy(o_dtr_vdf(itr),d_tr_cl(:,:,itr))
+             CALL histwrite_phy(o_dtr_the(itr),d_tr_th(:,:,itr))
+             CALL histwrite_phy(o_dtr_con(itr),d_tr_cv(:,:,itr))
+             !--2D fields
+             !--CO2 burden
+             zx_tmp_fi2d=0.
+             IF (vars_defined) THEN
+                DO k=1,klev
+                   zx_tmp_fi2d(:)=zx_tmp_fi2d(:)+zmasse(:,k)*tr_seri(:,k,itr)
+                ENDDO
+             ENDIF
+             CALL histwrite_phy(o_trac_cum(itr), zx_tmp_fi2d)
+           ENDDO !--iq
+           !--CO2 net fluxes
+           CALL histwrite_phy(o_flx_co2_land,  fco2_land)
+           CALL histwrite_phy(o_flx_co2_ocean, fco2_ocean)
+           CALL histwrite_phy(o_flx_co2_ocean_cor, fco2_ocean_cor)
+           CALL histwrite_phy(o_flx_co2_land_cor, fco2_land_cor)
+           CALL histwrite_phy(o_flx_co2_ff,    fco2_ff)
+           CALL histwrite_phy(o_flx_co2_bb,    fco2_bb)
+
+         ELSE IF (ANY(types_trac=='lmdz') .OR. ANY(types_trac=='coag')) THEN
            itr = 0
            DO iq = 1, nqtot
@@ -2521,65 +2580,4 @@
            ENDDO !--iq
          ENDIF   !--type_trac
-!
-         IF (type_trac == 'co2i') THEN
-           itr = 0
-           DO iq = 1, nqtot
-             IF(.NOT.tracers(iq)%isInPhysics) CYCLE
-             itr = itr + 1
-!            write(*,*) 'phys_output_write_mod 2370: itr=',itr
-             !--3D fields
-             CALL histwrite_phy(o_trac(itr), tr_seri(:,:,itr))
-             CALL histwrite_phy(o_dtr_vdf(itr),d_tr_cl(:,:,itr))
-             CALL histwrite_phy(o_dtr_the(itr),d_tr_th(:,:,itr))
-             CALL histwrite_phy(o_dtr_con(itr),d_tr_cv(:,:,itr))
-             !--2D fields
-             !--CO2 burden
-             zx_tmp_fi2d=0.
-             IF (vars_defined) THEN
-                DO k=1,klev
-                   zx_tmp_fi2d(:)=zx_tmp_fi2d(:)+zmasse(:,k)*tr_seri(:,k,itr)
-                ENDDO
-             ENDIF
-             CALL histwrite_phy(o_trac_cum(itr), zx_tmp_fi2d)
-           ENDDO !--iq
-           !--CO2 net fluxes
-           CALL histwrite_phy(o_flx_co2_land,  fco2_land)
-           CALL histwrite_phy(o_flx_co2_ocean, fco2_ocean)
-           CALL histwrite_phy(o_flx_co2_ocean_cor, fco2_ocean_cor)
-           CALL histwrite_phy(o_flx_co2_land_cor, fco2_land_cor)
-           CALL histwrite_phy(o_flx_co2_ff,    fco2_ff)
-           CALL histwrite_phy(o_flx_co2_bb,    fco2_bb)
-         ENDIF !--type_trac co2i
-
-         IF (type_trac == 'inco') THEN
-           itr = 0
-           DO iq = 1, nqtot
-             IF(.NOT.tracers(iq)%isInPhysics) CYCLE
-             itr = itr+1
-             IF(tracers(iq)%component /= 'co2i') CYCLE
-             !--3D fields
-             CALL histwrite_phy(o_trac   (itr),tr_seri(:,:,itr))
-             CALL histwrite_phy(o_dtr_vdf(itr),d_tr_cl(:,:,itr))
-             CALL histwrite_phy(o_dtr_the(itr),d_tr_th(:,:,itr))
-             CALL histwrite_phy(o_dtr_con(itr),d_tr_cv(:,:,itr))
-             !--2D fields
-             !--CO2 burden
-             zx_tmp_fi2d=0.
-             IF (vars_defined) THEN
-                DO k=1,klev
-                   zx_tmp_fi2d(:)=zx_tmp_fi2d(:)+zmasse(:,k)*tr_seri(:,k,itr)
-                ENDDO
-             ENDIF
-             CALL histwrite_phy(o_trac_cum(itr), zx_tmp_fi2d)
-           ENDDO !--iq
-           !--CO2 net fluxes
-           CALL histwrite_phy(o_flx_co2_land,  fco2_land)
-           CALL histwrite_phy(o_flx_co2_ocean, fco2_ocean)
-           CALL histwrite_phy(o_flx_co2_ocean_cor, fco2_ocean_cor)
-           CALL histwrite_phy(o_flx_co2_land_cor, fco2_land_cor)
-           CALL histwrite_phy(o_flx_co2_ff,    fco2_ff)
-           CALL histwrite_phy(o_flx_co2_bb,    fco2_bb)
-         ENDIF !--type_trac inco
-
        ENDIF   !(iflag_phytrac==1)
 
Index: LMDZ6/trunk/libf/phylmd/physiq_mod.F90
===================================================================
--- LMDZ6/trunk/libf/phylmd/physiq_mod.F90	(revision 4165)
+++ LMDZ6/trunk/libf/phylmd/physiq_mod.F90	(revision 4170)
@@ -40,5 +40,5 @@
     USE ioipsl_getin_p_mod, ONLY : getin_p
     USE indice_sol_mod
-    USE infotrac_phy, ONLY: nqtot, nbtr, nqo, tracers, type_trac, nqCO2
+    USE infotrac_phy, ONLY: nqtot, nbtr, nqo, tracers, types_trac, nqCO2
     USE readTracFiles_mod, ONLY: addPhase
     USE strings_mod,  ONLY: strIdx
@@ -1454,5 +1454,5 @@
        tau_overturning_th(:)=0.
 
-       IF (type_trac == 'inca' .OR. type_trac == 'inco') THEN
+       IF (ANY(types_trac == 'inca') .OR. ANY(types_trac == 'inco')) THEN
           ! jg : initialisation jusqu'au ces variables sont dans restart
           ccm(:,:,:) = 0.
@@ -2021,5 +2021,5 @@
        !c         ENDDO
        !
-       IF (type_trac == 'inca' .OR. type_trac == 'inco') THEN			! ModThL
+       IF (ANY(types_trac == 'inca') .OR. ANY(types_trac == 'inco')) THEN ! ModThL
 #ifdef INCA
           CALL VTe(VTphysiq)
@@ -2078,5 +2078,5 @@
        ENDIF
        !
-       IF (type_trac == 'repr') THEN
+       IF (ANY(types_trac == 'repr')) THEN
 #ifdef REPROBUS
           CALL chemini_rep(  &
@@ -2191,5 +2191,5 @@
 
     ! Update time and other variables in Reprobus
-    IF (type_trac == 'repr') THEN
+    IF (ANY(types_trac == 'repr')) THEN
 #ifdef REPROBUS
        CALL Init_chem_rep_xjour(jD_cur-jD_ref+day_ref)
@@ -2982,5 +2982,5 @@
           !
           !>jyg
-          IF (type_trac == 'repr') THEN
+          IF (ANY(types_trac == 'repr')) THEN
              nbtr_tmp=ntra
           ELSE
@@ -3887,5 +3887,5 @@
     ENDDO
 
-    IF (type_trac == 'inca' .OR. type_trac == 'inco') THEN	! ModThL
+    IF (ANY(types_trac == 'inca') .OR. ANY(types_trac == 'inco')) THEN ! ModThL
 #ifdef INCA
        CALL VTe(VTphysiq)
@@ -3943,5 +3943,5 @@
 #endif
     ENDIF !type_trac = inca or inco
-    IF (type_trac == 'repr') THEN
+    IF (ANY(types_trac == 'repr')) THEN
 #ifdef REPROBUS
     !CALL chemtime_rep(itap+itau_phy-1, date0, dtime, itap)
@@ -4920,5 +4920,5 @@
     !
 
-    IF (type_trac=='repr') THEN
+    IF (ANY(types_trac=='repr')) THEN
 !MM pas d'impact, car on recupere q_seri,tr_seri,t_seri via phys_local_var_mod
 !MM                               dans Reprobus
@@ -5074,5 +5074,5 @@
     ENDDO
     !
-    IF (type_trac == 'inca' .OR. type_trac == 'inco') THEN
+    IF (ANY(types_trac == 'inca') .OR. ANY(types_trac == 'inco')) THEN
 #ifdef INCA
        CALL VTe(VTphysiq)
@@ -5098,5 +5098,5 @@
     ENDIF
 
-    IF (type_trac == 'repr') THEN
+    IF (ANY(types_trac == 'repr')) THEN
 #ifdef REPROBUS
         CALL coord_hyb_rep(paprs, pplay, aps, bps, ap, bp, cell_area)
@@ -5360,5 +5360,5 @@
 
 #ifdef INCA
-       if (type_trac == 'inca' ) then 
+       if (ANY(types_trac == 'inca' )) then 
           IF (is_omp_master .and. grid_type==unstructured) THEN 
              CALL finalize_inca
Index: LMDZ6/trunk/libf/phylmd/phytrac_mod.F90
===================================================================
--- LMDZ6/trunk/libf/phylmd/phytrac_mod.F90	(revision 4165)
+++ LMDZ6/trunk/libf/phylmd/phytrac_mod.F90	(revision 4170)
@@ -56,5 +56,5 @@
   SUBROUTINE phytrac_init()
     USE dimphy
-    USE infotrac_phy, ONLY: nbtr, type_trac
+    USE infotrac_phy, ONLY: nbtr, types_trac
     USE tracco2i_mod, ONLY: tracco2i_init
     IMPLICIT NONE
@@ -78,11 +78,6 @@
     !      
     !===============================================================================
-    SELECT CASE(type_trac)
-    CASE('co2i')
-       !   -- CO2 interactif --
-       CALL tracco2i_init()
-    CASE('inco')
-       CALL tracco2i_init()
-    END SELECT
+    !   -- CO2 interactif --
+    IF(ANY(types_trac == 'co2i') .OR. ANY(types_trac == 'inco')) CALL tracco2i_init()
 
 
@@ -124,5 +119,5 @@
     USE phys_cal_mod, only : hour
     USE dimphy
-    USE infotrac_phy, ONLY: nbtr, nqCO2, type_trac, conv_flg, pbl_flg
+    USE infotrac_phy, ONLY: nbtr, nqCO2, types_trac, type_trac, conv_flg, pbl_flg
     USE strings_mod,  ONLY: int2str
     USE mod_grid_phy_lmdz
@@ -491,13 +486,10 @@
 
        ! Initialize module for specific tracers
-       SELECT CASE(type_trac)
-       CASE('lmdz')
-          CALL traclmdz_init(pctsrf,xlat,xlon,ftsol,tr_seri,t_seri,pplay,sh,pdtphys,aerosol,lessivage)
-       CASE('inca')
+       IF(ANY(types_trac == 'inca')) THEN
           source(:,:)=init_source(:,:)
           CALL tracinca_init(aerosol,lessivage)
-       CASE('repr')
+       ELSE IF(ANY(types_trac == 'repr')) THEN
           source(:,:)=0.
-       CASE('co2i')
+       ELSE IF(ANY(types_trac == 'co2i')) THEN
           source(:,:)=0.
           lessivage  = .FALSE.
@@ -507,5 +499,5 @@
           iflag_vdf_trac= 1
           iflag_con_trac= 1
-       CASE('inco')
+       ELSE IF(ANY(types_trac == 'inco')) THEN
           source(:,1:nqCO2) = 0.                          ! from CO2i ModThL
           source(:,nqCO2+1:nbtr)=init_source(:,:)         ! from INCA ModThL
@@ -517,5 +509,5 @@
           iflag_con_trac = 1                              ! From CO2i
 #ifdef CPP_StratAer
-       CASE('coag')
+       ELSE IF(ANY(types_trac == 'coag')) THEN
           source(:,:)=0.
           DO it= 1, nbtr_sulgas
@@ -527,5 +519,7 @@
           ENDDO
 #endif
-       END SELECT
+       ELSE IF(ANY(types_trac == 'lmdz')) THEN
+          CALL traclmdz_init(pctsrf,xlat,xlon,ftsol,tr_seri,t_seri,pplay,sh,pdtphys,aerosol,lessivage)
+       END IF
 
        !
@@ -540,19 +534,7 @@
           !
           DO it=1, nbtr
-             SELECT CASE(type_trac)
-             CASE('lmdz')
-                IF (convscav.and.aerosol(it)) THEN
-                   flag_cvltr(it)=.TRUE.
-                   ccntrAA(it) =ccntrAA_in    !--a modifier par JYG a lire depuis fichier 
-                   ccntrENV(it)=ccntrENV_in
-                   coefcoli(it)=coefcoli_in
-                ELSE 
-                   flag_cvltr(it)=.FALSE.
-                ENDIF
-
-             CASE('repr')
+             IF(ANY(types_trac == 'repr')) THEN
                  flag_cvltr(it)=.FALSE.
-
-             CASE('inca')
+             ELSE IF(ANY(types_trac == 'inca')) THEN
 !                IF ((it.EQ.id_Rn222) .OR. ((it.GE.id_SO2) .AND. (it.LE.id_NH3)) ) THEN 
 !                   !--gas-phase species
@@ -578,12 +560,11 @@
                 !--for now we do not scavenge in cvltr
                 flag_cvltr(it)=.FALSE.
-
-             CASE('co2i')
+             ELSE IF(ANY(types_trac == 'co2i')) THEN
                 !--co2 tracers are not scavenged
                 flag_cvltr(it)=.FALSE.
-             CASE('inco')     ! Add ThL
+             ELSE IF(ANY(types_trac == 'inco')) THEN     ! Add ThL
                 flag_cvltr(it)=.FALSE.
 #ifdef CPP_StratAer
-             CASE('coag')
+             ELSE IF(ANY(types_trac == 'coag')) THEN
                 IF (convscav.and.aerosol(it)) THEN
                    flag_cvltr(it)=.TRUE.
@@ -595,6 +576,14 @@
                 ENDIF
 #endif
-
-             END SELECT
+             ELSE IF(ANY(types_trac == 'lmdz')) THEN
+                IF (convscav.and.aerosol(it)) THEN
+                   flag_cvltr(it)=.TRUE.
+                   ccntrAA(it) =ccntrAA_in    !--a modifier par JYG a lire depuis fichier 
+                   ccntrENV(it)=ccntrENV_in
+                   coefcoli(it)=coefcoli_in
+                ELSE 
+                   flag_cvltr(it)=.FALSE.
+                ENDIF
+             END IF
           ENDDO
           !
@@ -620,5 +609,5 @@
        write(lunout,*)  'flag_cvltr    = ', flag_cvltr
 
-       IF (lessivage .AND. (type_trac .EQ. 'inca' .OR. type_trac .EQ. 'inco')) THEN     ! Mod ThL
+       IF (lessivage .AND. (ANY(types_trac == 'inca') .OR. ANY(types_trac=='inco'))) THEN     ! Mod ThL
           CALL abort_physic('phytrac', 'lessivage=T config_inca=inca impossible',1)
 !          STOP
@@ -646,18 +635,10 @@
     !      
     !===============================================================================
-    SELECT CASE(type_trac)
-    CASE('lmdz')
-       !    -- Traitement des traceurs avec traclmdz
-       CALL traclmdz(nstep, julien, gmtime, pdtphys, t_seri, paprs, pplay, &
-            cdragh,  coefh, yu1, yv1, ftsol, pctsrf, xlat, xlon,iflag_vdf_trac>=0,sh, &
-            rh, pphi, ustar, wstar, ale_bl, ale_wake,  u10m, v10m, &
-            tr_seri, source, d_tr_cl,d_tr_dec, zmasse)               !RomP
-
-    CASE('inca')
+    IF(ANY(types_trac == 'inca')) THEN
        !    -- CHIMIE INCA  config_inca = aero or chem --
        ! Appel fait en fin de phytrac pour avoir les emissions modifiees par 
        ! la couche limite et la convection avant le calcul de la chimie 
 
-    CASE('repr')
+    ELSE IF(ANY(types_trac == 'repr')) THEN
        !   -- CHIMIE REPROBUS --
        CALL tracreprobus(pdtphys, gmtime, debutphy, julien, &
@@ -666,5 +647,5 @@
             tr_seri)
 
-    CASE('co2i')
+    ELSE IF(ANY(types_trac == 'co2i')) THEN
        !   -- CO2 interactif --
        !   -- source is updated with FF and BB emissions 
@@ -675,5 +656,5 @@
             xlat, xlon, pphis, pphi, &
             t_seri, pplay, paprs, tr_seri, source)
-    CASE('inco')      ! Add ThL
+    ELSE IF(ANY(types_trac == 'inco')) THEN      ! Add ThL
        CALL tracco2i(pdtphys, debutphy, &
             xlat, xlon, pphis, pphi, &
@@ -681,5 +662,5 @@
 
 #ifdef CPP_StratAer
-    CASE('coag')
+    ELSE IF(ANY(types_trac == 'coag')) THEN
        !   --STRATOSPHERIC AER IN THE STRAT --
        CALL traccoag(pdtphys, gmtime, debutphy, julien, &
@@ -688,6 +669,11 @@
             tr_seri)
 #endif
-
-    END SELECT
+    ELSE IF(ANY(types_trac == 'lmdz')) THEN
+       !    -- Traitement des traceurs avec traclmdz
+       CALL traclmdz(nstep, julien, gmtime, pdtphys, t_seri, paprs, pplay, &
+            cdragh,  coefh, yu1, yv1, ftsol, pctsrf, xlat, xlon,iflag_vdf_trac>=0,sh, &
+            rh, pphi, ustar, wstar, ale_bl, ale_wake,  u10m, v10m, &
+            tr_seri, source, d_tr_cl,d_tr_dec, zmasse)               !RomP
+    END IF
     !======================================================================
     !       -- Calcul de l'effet de la convection --
@@ -759,5 +745,5 @@
 
 #ifdef CPP_StratAer
-       IF (type_trac=='coag') THEN
+       IF (ANY(types_trac=='coag')) THEN
          ! initialize wet deposition flux of sulfur
          budg_dep_wet_ocs(:)=0.0
@@ -840,5 +826,5 @@
        !
 #ifdef CPP_StratAer
-       IF (type_trac=='coag') THEN
+       IF (ANY(types_trac=='coag')) THEN
 
          ! initialize dry deposition flux of sulfur
@@ -877,5 +863,5 @@
              !
 #ifdef CPP_StratAer
-             IF (type_trac=='coag') THEN
+             IF (ANY(types_trac=='coag')) THEN
                ! compute dry deposition flux of sulfur (sum over gases and particles)
                IF (it==id_OCS_strat) THEN
@@ -962,5 +948,5 @@
 
 #ifdef CPP_StratAer
-         IF (type_trac=='coag') THEN
+         IF (ANY(types_trac=='coag')) THEN
            ! compute wet deposition flux of sulfur (sum over gases and
            ! particles) and convert to kg(S)/m2/s
@@ -1102,5 +1088,5 @@
 
     !    -- CHIMIE INCA  config_inca = aero or chem --
-    IF (type_trac == 'inca' .OR. type_trac == 'inco') THEN  ! ModThL
+    IF (ANY(types_trac == 'inca') .OR. ANY(types_trac == 'inco')) THEN  ! ModThL
 
        CALL tracinca(&
Index: LMDZ6/trunk/libf/phylmd/radiation_AR4.F90
===================================================================
--- LMDZ6/trunk/libf/phylmd/radiation_AR4.F90	(revision 4165)
+++ LMDZ6/trunk/libf/phylmd/radiation_AR4.F90	(revision 4170)
@@ -479,5 +479,5 @@
   USE dimphy
   USE radiation_ar4_param, ONLY: rsun, rray
-  USE infotrac_phy, ONLY: type_trac
+  USE infotrac_phy, ONLY: types_trac
 #ifdef REPROBUS
   USE chem_rep, ONLY: rsuntime, ok_suntime
@@ -571,5 +571,5 @@
   ! If running with Reporbus, overwrite default values of RSUN.
   ! Otherwise keep default values from radiation_AR4_param module.
-  IF (type_trac=='repr') THEN
+  IF (ANY(types_trac=='repr')) THEN
 #ifdef REPROBUS
     IF (ok_suntime) THEN
@@ -701,5 +701,5 @@
   USE dimphy
   USE radiation_ar4_param, ONLY: rsun, rray
-  USE infotrac_phy, ONLY: type_trac
+  USE infotrac_phy, ONLY: types_trac
 #ifdef REPROBUS
   USE chem_rep, ONLY: rsuntime, ok_suntime
@@ -825,5 +825,5 @@
   ! If running with Reporbus, overwrite default values of RSUN.
   ! Otherwise keep default values from radiation_AR4_param module.
-  IF (type_trac=='repr') THEN
+  IF (ANY(types_trac=='repr')) THEN
 #ifdef REPROBUS
     IF (ok_suntime) THEN
@@ -2313,5 +2313,5 @@
   USE dimphy
   USE radiation_ar4_param, ONLY: tref, rt1, raer, at, bt, oct
-  USE infotrac_phy, ONLY: type_trac
+  USE infotrac_phy, ONLY: types_trac
 #ifdef REPROBUS
   USE chem_rep, ONLY: rch42d, rn2o2d, rcfc112d, rcfc122d, ok_rtime2d
@@ -2621,5 +2621,5 @@
 
 
-        IF (type_trac=='repr') THEN
+        IF (ANY(types_trac=='repr')) THEN
 #ifdef REPROBUS
           IF (ok_rtime2d) THEN
Index: LMDZ6/trunk/libf/phylmd/radlwsw_m.F90
===================================================================
--- LMDZ6/trunk/libf/phylmd/radlwsw_m.F90	(revision 4165)
+++ LMDZ6/trunk/libf/phylmd/radlwsw_m.F90	(revision 4170)
@@ -48,5 +48,5 @@
   USE DIMPHY
   USE assert_m, ONLY : assert
-  USE infotrac_phy, ONLY : type_trac
+  USE infotrac_phy, ONLY : types_trac
   USE write_field_phy
 
@@ -550,5 +550,5 @@
   PSCT = solaire/zdist/zdist
 
-  IF (type_trac == 'repr') THEN
+  IF (ANY(types_trac == 'repr')) THEN
 #ifdef REPROBUS
     IF (iflag_rrtm==0) THEN
@@ -634,5 +634,5 @@
     ENDDO
 
-    IF (type_trac == 'repr') THEN
+    IF (ANY(types_trac == 'repr')) THEN
 #ifdef REPROBUS
        ndimozon = size(wo, 3)
