Index: /LMDZ6/branches/LMDZ_ECRad/DefLists/isotopes_params.def
===================================================================
--- /LMDZ6/branches/LMDZ_ECRad/DefLists/isotopes_params.def	(revision 4202)
+++ /LMDZ6/branches/LMDZ_ECRad/DefLists/isotopes_params.def	(revision 4203)
@@ -1,8 +1,49 @@
 &H2O
-  params                                               deltaO18_oce=0.0                fac_enrichoce18=0.0005               talph1_O18=1137.   talph2_O18=-0.4156  talph3_O18=-2.0667E-3  talps1_O18=11.839  talps2_O18=-0.028244  tkcin0_O18=0.006            tkcin1_O18=0.000285         tkcin2_O18=0.00082          tdifrel_O18=1./0.9723  alpha_liq_sol_O18=1.00291  fac_coeff_eq17_liq=0.529  fac_coeff_eq17_ice=0.529
-  H2[16]O  alpha=1.000  tnat=1.0000     toce=tnat                                      tcorr=1.0                            talph1=0.0         talph2=0.0          talph3=0.0             talps1=0.0         talps2=0.0            tkcin0=0.0                  tkcin1=0.0                  tkcin2=0.0                  tdifrel=1.0            alpha_liq_sol=1.0                                    Rdefault=tnat*1.0                               Rmethox=1.0
-  H2[17]O  alpha=1.003  tnat=40.000e-6  toce=tnat*(1.0+deltaO18_oce/1000.0)^pente_MWL  tcorr=1.0+fac_enrichoce18*pente_MWL  talph1=talph1_O18  talph2=talph2_O18   talph3=talph3_O18      talps1=talps1_O18  talps2=talps2_O18     tkcin0=tkcin0_O18*fac_kcin  tkcin1=tkcin1_O18*fac_kcin  tkcin2=tkcin2_O18*fac_kcin  tdifrel=1./0.98555     alpha_liq_sol=alpha_liq_sol_O18^fac_coeff_eq17_liq   Rdefault=tnat*(1.0-3.15/1000.)                  Rmethox=tnat*(1.0+230./1000.)  pente_MWL=0.528  fac_kcin=(tdifrel-1.0)/(tdifrel_O18-1.0)
-  H2[18]O  alpha=1.006  tnat=2005.2e-6  toce=tnat*(1.0+deltaO18_oce/1000.0)            tcorr=1.0+fac_enrichoce18            talph1=talph1_O18  talph2=talph2_O18   talph3=talph3_O18      talps1=talps1_O18  talps2=talps2_O18     tkcin0=tkcin0_O18           tkcin1=tkcin1_O18           tkcin2=tkcin2_O18           tdifrel=tdifrel_O18    alpha_liq_sol=alpha_liq_sol_O18                      Rdefault=tnat*(1.0-6.00/1000.)                  Rmethox=tnat*(1.0+130./1000.)  
-  H[2]HO   alpha=1.010  tnat=155.76e-6  toce=tnat*(1.0+deltaO18_oce/1000.0*pente_MWL)  tcorr=1.0+fac_enrichoce18*pente_MWL  talph1=24844.      talph2=-76.248      talph3=52.612E-3       talps1=16288.      talps2=-0.0934        tkcin0=tkcin0_O18*fac_kcin  tkcin1=tkcin1_O18*fac_kcin  tkcin2=tkcin2_O18*fac_kcin  tdifrel=1./0.9755      alpha_liq_sol=1.0212                                 Rdefault=tnat*(1.0+(10.0-6.0*pente_MWL)/1000.)  Rmethox=tnat*(1.0-25.0/1000.)  pente_MWL=8.0    fac_kcin=(tdifrel-1.0)/(tdifrel_O18-1.0)
-  H[3]HO   alpha=1.000  tnat=0.0000     toce=4.0E-19                                   tcorr=1.0                            talph1=46480.      talph2=-103.87      talph3=0.0             talps1=46480.      talps2=-103.87        tkcin0=0.01056              tkcin1=0.0005016            tkcin2=0.0014432            tdifrel=1./0.968       alpha_liq_sol=1.0                                    Rdefault=0.0                                    Rmethox=0.0
 
+  params   deltaO18_oce=0.0        fac_coeff_eq17_liq=0.529                    \
+           fac_enrichoce18=0.0005  fac_coeff_eq17_ice=0.529                    \
+           talph1_O18=1137.        talps1_O18=11.839       tkcin0_O18=0.006    \
+           talph2_O18=-0.4156      talps2_O18=-0.028244    tkcin1_O18=0.000285 \
+           talph3_O18=-2.0667E-3   tdifrel_O18=1./0.9723   tkcin2_O18=0.00082  \
+           alpha_liq_sol_O18=1.00291
+
+  H2[16]O  alpha=1.000            toce=tnat                            \
+           tnat=1.0000            tcorr=1.0                            \
+           talph1=0.0             talps1=0.0               tkcin0=0.0  \
+           talph2=0.0             talps2=0.0               tkcin1=0.0  \
+           talph3=0.0             tdifrel=1.0              tkcin2=0.0  \
+           alpha_liq_sol=1.0      Rdefault=tnat*1.0        Rmethox=1.0
+
+  H2[17]O  alpha=1.003            toce=tnat*(1.0+deltaO18_oce/1000.0)^pente_MWL          \
+           tnat=40.000e-6         tcorr=1.0+fac_enrichoce18*pente_MWL                    \
+           talph1=talph1_O18      talps1=talps1_O18        tkcin0=tkcin0_O18*fac_kcin    \
+           talph2=talph2_O18      talps2=talps2_O18        tkcin1=tkcin1_O18*fac_kcin    \
+           talph3=talph3_O18      tdifrel=1./0.98555       tkcin2=tkcin2_O18*fac_kcin    \
+           alpha_liq_sol=alpha_liq_sol_O18^fac_coeff_eq17_liq                            \
+           Rdefault=tnat*(1.0-3.15/1000.)                  Rmethox=tnat*(1.0+230./1000.) \              
+           fac_kcin=(tdifrel-1.0)/(tdifrel_O18-1.0)        pente_MWL=0.528
+
+  H2[18]O  alpha=1.006            toce=tnat*(1.0+deltaO18_oce/1000.0)         \
+           tnat=2005.2e-6         tcorr=1.0+fac_enrichoce18                   \
+           talph1=talph1_O18      talps1=talps1_O18        tkcin0=tkcin0_O18  \
+           talph2=talph2_O18      talps2=talps2_O18        tkcin1=tkcin1_O18  \
+           talph3=talph3_O18      tdifrel=tdifrel_O18      tkcin2=tkcin2_O18  \
+           alpha_liq_sol=alpha_liq_sol_O18                                    \
+           Rdefault=tnat*(1.0-6.00/1000.)                  Rmethox=tnat*(1.0+130./1000.)  
+
+  H[2]HO   alpha=1.010            toce=tnat*(1.0+deltaO18_oce/1000.0*pente_MWL)          \
+           tnat=155.76e-6         tcorr=1.0+fac_enrichoce18*pente_MWL                    \
+           talph1=24844.          talps1=16288.            tkcin0=tkcin0_O18*fac_kcin    \
+           talph2=-76.248         talps2=-0.0934           tkcin1=tkcin1_O18*fac_kcin    \
+           talph3=52.612E-3       tdifrel=1./0.9755        tkcin2=tkcin2_O18*fac_kcin    \
+           alpha_liq_sol=1.0212                                                          \
+           Rdefault=tnat*(1.0+(10.0-6.0*pente_MWL)/1000.)  Rmethox=tnat*(1.0-25.0/1000.) \
+           fac_kcin=(tdifrel-1.0)/(tdifrel_O18-1.0)        pente_MWL=8.0
+
+  H[3]HO   alpha=1.000            toce=4.0E-19                               \
+           tnat=0.0000            tcorr=1.0                                  \
+           talph1=46480.          talps1=46480.            tkcin0=0.01056    \
+           talph2=-103.87         talps2=-103.87           tkcin1=0.0005016  \
+           talph3=0.0             tdifrel=1./0.968         tkcin2=0.0014432  \
+           alpha_liq_sol=1.0      Rdefault=0.0             Rmethox=0.0
+
Index: /LMDZ6/branches/LMDZ_ECRad/libf/dyn3d/dynetat0.F90
===================================================================
--- /LMDZ6/branches/LMDZ_ECRad/libf/dyn3d/dynetat0.F90	(revision 4202)
+++ /LMDZ6/branches/LMDZ_ECRad/libf/dyn3d/dynetat0.F90	(revision 4203)
@@ -7,5 +7,5 @@
 !-------------------------------------------------------------------------------
   USE infotrac,    ONLY: nqtot, tracers, niso, iqIsoPha, tnat, alpha_ideal, iH2O
-  USE strings_mod, ONLY: maxlen, msg, strStack, real2str
+  USE strings_mod, ONLY: maxlen, msg, strStack, real2str, int2str
   USE netcdf,      ONLY: NF90_OPEN,  NF90_NOWRITE, NF90_INQ_VARID, &
                          NF90_CLOSE, NF90_GET_VAR, NF90_NoErr
@@ -175,10 +175,6 @@
   CHARACTER(LEN=*), INTENT(IN) :: str1, str2
   CHARACTER(LEN=maxlen) :: s1, s2
-  IF(n1/=n2) THEN
-    s1='value of '//TRIM(str1)//' ='
-    s2=' read in starting file differs from parametrized '//TRIM(str2)//' ='
-    WRITE(mesg,'(10x,a,i4,2x,a,i4)')TRIM(ADJUSTL(s1)),n1,TRIM(ADJUSTL(s2)),n2
-    CALL ABORT_gcm(TRIM(modname),TRIM(mesg),1)
-  END IF
+  IF(n1/=n2) CALL abort_gcm(TRIM(modname), 'value of "'//TRIM(str1)//'" = '//TRIM(int2str(n1))// &
+   ' read in starting file differs from gcm value of "'//TRIM(str2)//'" = '//TRIM(int2str(n2)), 1)
 END SUBROUTINE check_dim
 
Index: /LMDZ6/branches/LMDZ_ECRad/libf/dyn3d_common/infotrac.F90
===================================================================
--- /LMDZ6/branches/LMDZ_ECRad/libf/dyn3d_common/infotrac.F90	(revision 4202)
+++ /LMDZ6/branches/LMDZ_ECRad/libf/dyn3d_common/infotrac.F90	(revision 4203)
@@ -7,5 +7,6 @@
    USE readTracFiles_mod, ONLY: trac_type, readTracersFiles, addPhase, indexUpdate,  nphases, ancestor,  &
                                 isot_type, old2newName,      delPhase,               getKey_init, tran0, &
-                                keys_type, initIsotopes,     getPhase, known_phases, getKey, setGeneration
+                                keys_type, initIsotopes,     getPhase, known_phases, getKey, setGeneration, &
+                                maxTableWidth
    IMPLICIT NONE
 
@@ -274,6 +275,8 @@
       ttr(1+nqo+nqCO2:nqtrue)%parent      = tran0
       ttr(1+nqo+nqCO2:nqtrue)%phase       = 'g'
-      lerr = getKey('hadv', had, ky=ttr(:)%keys); hadv(:) = [had, hadv_inca]
-      lerr = getKey('vadv', vad, ky=ttr(:)%keys); vadv(:) = [vad, vadv_inca]
+      lerr = getKey('hadv', had, ky=tracers(:)%keys)
+      lerr = getKey('vadv', vad, ky=tracers(:)%keys)
+      hadv(1:nqo) = had(:); hadv(nqo+1:nqtrue) = hadv_inca
+      vadv(1:nqo) = vad(:); vadv(nqo+1:nqtrue) = vadv_inca
       CALL MOVE_ALLOC(FROM=ttr, TO=tracers)
       CALL setGeneration(tracers)                                    !--- SET FIELDS %iGeneration, %gen0Name
@@ -402,5 +405,5 @@
 
    niso = 0; nzone=0; nphas=nqo; ntiso = 0; isoCheck=.FALSE.
-   CALL initIsotopes(tracers, isotopes)
+   IF(initIsotopes(tracers, isotopes)) CALL abort_gcm(modname, 'Problem when reading isotopes parameters', 1)
    nbIso = SIZE(isotopes)
    nqtottr = nqtot - COUNT(tracers%gen0Name == 'H2O' .AND. tracers%component == 'lmdz')
@@ -461,5 +464,5 @@
                                                                                   bool2str(t%isInPhysics)),&
       cat([(iq, iq=1, nqtot)], t%iadv, t%iGeneration, t%iqParent, t%nqDescen, t%nqChilds, t%iso_iGroup,    &
-                                                    t%iso_iName, t%iso_iZone, t%iso_iPhase), sub=modname)) &
+                  t%iso_iName, t%iso_iZone, t%iso_iPhase), nColMax=maxTableWidth, nHead=2, sub=modname))   &
       CALL abort_gcm(modname, "problem with the tracers table content", 1)
    IF(niso > 0) THEN
Index: /LMDZ6/branches/LMDZ_ECRad/libf/dyn3dmem/leapfrog_loc.F
===================================================================
--- /LMDZ6/branches/LMDZ_ECRad/libf/dyn3dmem/leapfrog_loc.F	(revision 4202)
+++ /LMDZ6/branches/LMDZ_ECRad/libf/dyn3dmem/leapfrog_loc.F	(revision 4203)
@@ -1519,5 +1519,5 @@
 
 #ifdef INCA
-         if (ANY(types_trac == 'inca') .OR. &
+         if (ANY(types_trac == 'inca') .OR. 
      &       ANY(types_trac == 'inco')) CALL finalize_inca
 #endif
@@ -1569,5 +1569,5 @@
 
 #ifdef INCA
-              if (ANY(types_trac == 'inca') .OR. &
+              if (ANY(types_trac == 'inca') .OR. 
      &            ANY(types_trac == 'inco')) CALL finalize_inca
 #endif
@@ -1737,5 +1737,5 @@
 
 #ifdef INCA
-                 if (ANY(types_trac == 'inca') .OR. &
+                 if (ANY(types_trac == 'inca') .OR. 
      &               ANY(types_trac == 'inco')) CALL finalize_inca
 #endif
@@ -1845,5 +1845,5 @@
 
 #ifdef INCA
-      if (ANY(types_trac == 'inca') .OR. &
+      if (ANY(types_trac == 'inca') .OR. 
      &    ANY(types_trac == 'inco')) CALL finalize_inca
 #endif
Index: /LMDZ6/branches/LMDZ_ECRad/libf/misc/readTracFiles_mod.f90
===================================================================
--- /LMDZ6/branches/LMDZ_ECRad/libf/misc/readTracFiles_mod.f90	(revision 4202)
+++ /LMDZ6/branches/LMDZ_ECRad/libf/misc/readTracFiles_mod.f90	(revision 4203)
@@ -21,4 +21,5 @@
 
   PUBLIC :: tran0, idxAncestor, ancestor                             !--- GENERATION 0 TRACER + TOOLS FOR GENERATIONS
+  PUBLIC :: maxTableWidth
 !------------------------------------------------------------------------------------------------------------------------------
   TYPE :: dataBase_type                                              !=== TYPE FOR TRACERS SECTION
@@ -59,9 +60,9 @@
   CHARACTER(LEN=maxlen), SAVE :: newH2OIso(5) = ['H2[16]O', 'H[2]HO ', 'H2[18]O', 'H2[17]O', 'H[3]HO ']
 
-
   !=== LOCAL COPIES OF THE TRACERS AND ISOTOPES DESCRIPTORS, USED BY getKey (INITIALIZED IN getKey_init)
   TYPE(trac_type), ALLOCATABLE, TARGET, SAVE ::  tracers(:)
   TYPE(isot_type), ALLOCATABLE, TARGET, SAVE :: isotopes(:)
 
+  INTEGER,    PARAMETER :: maxTableWidth = 192                       !--- Maximum width of a table displayed with "dispTable"
   CHARACTER(LEN=maxlen) :: modname
 
@@ -267,5 +268,5 @@
   TYPE(trac_type),       ALLOCATABLE :: tt(:)
   TYPE(trac_type)       :: tmp
-  CHARACTER(LEN=1024)   :: str
+  CHARACTER(LEN=1024)   :: str, str2
   CHARACTER(LEN=maxlen) :: secn
   INTEGER               :: ierr, n
@@ -273,5 +274,13 @@
   IF(.NOT.ALLOCATED(dBase)) ALLOCATE(dBase(0))
   OPEN(90, FILE=fnam, FORM='formatted', STATUS='old')
-  DO; READ(90,'(a)', IOSTAT=ierr)str
+  DO; str=''
+    DO
+      READ(90,'(a)', IOSTAT=ierr)str2                                !--- Read a full line
+      str=TRIM(str)//' '//TRIM(str2)                                 !--- Append "str" with the current line
+      n=LEN_TRIM(str); IF(n == 0) EXIT                               !--- Empty line (probably end of file)
+      IF(IACHAR(str(n:n))  /= 92) EXIT                               !--- No "\" continuing line symbol found => end of line
+      str = str(1:n-1)                                               !--- Remove the "\" continuing line symbol
+    END DO
+    str = ADJUSTL(str)                                               !--- Remove the front space
     IF(ierr    /= 0 ) EXIT                                           !--- Finished: error or end of file
     IF(str(1:1)=='#') CYCLE                                          !--- Skip comments lines
@@ -777,10 +786,10 @@
   phas =         [(fgetKey(iq, 'phases',tm(:)%keys, 'g' ), iq=1, nq)]
   CALL msg(TRIM(message)//':', modname)
-  IF(tm(1)%parent == '') THEN
-    IF(test(dispTable('iiiss',   ['iq    ','hadv  ','vadv  ','name  ','phase '], cat(tm%name, phas), cat([(iq, iq=1, nq)], &
-                                            hadv,    vadv),                 sub=modname), lerr)) RETURN
+  IF(ALL(tm(:)%parent == '')) THEN
+    IF(test(dispTable('iiiss',   ['iq    ','hadv  ','vadv  ','name  ','phase '], cat(tm%name, phas), &
+                 cat([(iq, iq=1, nq)], hadv, vadv),                 nColMax=maxTableWidth, nHead=2, sub=modname), lerr)) RETURN
   ELSE
     IF(test(dispTable('iiissis', ['iq    ','hadv  ','vadv  ','name  ','parent','igen  ','phase '], cat(tm%name, tm%parent, &
-           tm%phase), cat([(iq, iq=1, nq)], hadv,    vadv, tm%iGeneration), sub=modname), lerr)) RETURN
+      tm%phase), cat([(iq, iq=1, nq)], hadv, vadv, tm%iGeneration), nColMax=maxTableWidth, nHead=2, sub=modname), lerr)) RETURN
   END IF
 END FUNCTION dispTraSection
@@ -933,5 +942,5 @@
   CALL get_in('ok_iso_verif', isot(strIdx(isot%parent, 'H2O'))%check, .FALSE.)
 
-  lerr = dispIsotopes(isot, 'Isotopes parameters read from file', modname)
+  lerr = dispIsotopes(isot, 'Isotopes parameters read from file "'//TRIM(fnam)//'"', modname)
 
 END FUNCTION readIsotopesFile
@@ -945,5 +954,5 @@
 !===      NOTE: THIS IS DONE HERE (IN A ROUTINE CALLED BY THE DYNAMIC), BECAUSE THE DYNAMIC NEEDS FEW PHYSICAL PARAMETERS.  ===
 !==============================================================================================================================
-SUBROUTINE initIsotopes(trac, isot)
+LOGICAL FUNCTION initIsotopes(trac, isot) RESULT(lerr)
   TYPE(trac_type), ALLOCATABLE, TARGET, INTENT(INOUT) :: trac(:)
   TYPE(isot_type), ALLOCATABLE, TARGET, INTENT(INOUT) :: isot(:)
@@ -955,4 +964,5 @@
   TYPE(trac_type), POINTER   ::  t(:), t1
   TYPE(isot_type), POINTER   ::  i
+  lerr = .FALSE.
 
   t => trac
@@ -1019,7 +1029,7 @@
   !=== READ PHYSICAL PARAMETERS FROM "isotopes_params.def" FILE
   !    DONE HERE, AND NOT ONLY IN "infotrac_phy", BECAUSE SOME PHYSICAL PARAMS ARE NEEDED FOR RESTARTS (tnat AND alpha_ideal)
-  IF(readIsotopesFile('isotopes_params.def',isot)) CALL abort_gcm(modname,'Problem when reading isotopes parameters',1)
-
-END SUBROUTINE initIsotopes
+  lerr = readIsotopesFile('isotopes_params.def',isot)
+
+END FUNCTION initIsotopes
 !==============================================================================================================================
 
@@ -1046,6 +1056,6 @@
       END DO
     END DO
-    IF(test(fmsg('Problem with the table content', modname, dispTable(prf, ttl, val, cat([(it,it=1,nt)]), rFmt='(EN8.4)',     &
-       sub=modname)), lerr)) RETURN
+    IF(test(fmsg('Problem with the table content', modname, dispTable(prf, ttl, val, &
+            cat([(it,it=1,nt)]), rFmt='(EN8.4)', nColMax=maxTableWidth, nHead=2, sub=modname)), lerr)) RETURN
     DEALLOCATE(ttl, val)
   END DO        
@@ -1216,6 +1226,6 @@
   CHARACTER(LEN=*),                   INTENT(IN)  :: keyn
   CHARACTER(LEN=maxlen), ALLOCATABLE, INTENT(OUT) ::   val(:)
-  CHARACTER(LEN=*), TARGET, OPTIONAL, INTENT(IN)  :: tname(:)
-  TYPE(keys_type),  TARGET, OPTIONAL, INTENT(IN)  ::    ky(:)
+  CHARACTER(LEN=*),         OPTIONAL, INTENT(IN)  :: tname(:)
+  TYPE(keys_type),          OPTIONAL, INTENT(IN)  ::    ky(:)
   TYPE(keys_type),           POINTER :: k(:)
   CHARACTER(LEN=maxlen), ALLOCATABLE :: n(:)
@@ -1247,8 +1257,8 @@
 !==============================================================================================================================
 LOGICAL FUNCTION getKeyByName_im(keyn, val, tname, ky) RESULT(lerr)
-  CHARACTER(LEN=*),                   INTENT(IN)  :: keyn
-  INTEGER,               ALLOCATABLE, INTENT(OUT) ::   val(:)
-  CHARACTER(LEN=*), TARGET, OPTIONAL, INTENT(IN)  :: tname(:)
-  TYPE(keys_type),  TARGET, OPTIONAL, INTENT(IN)  ::    ky(:)
+  CHARACTER(LEN=*),           INTENT(IN)  :: keyn
+  INTEGER,       ALLOCATABLE, INTENT(OUT) ::   val(:)
+  CHARACTER(LEN=*), OPTIONAL, INTENT(IN)  :: tname(:)
+  TYPE(keys_type),  OPTIONAL, INTENT(IN)  ::    ky(:)
   TYPE(keys_type),           POINTER :: k(:)
   CHARACTER(LEN=maxlen), ALLOCATABLE :: n(:)
@@ -1280,8 +1290,8 @@
 !==============================================================================================================================
 LOGICAL FUNCTION getKeyByName_rm(keyn, val, tname, ky) RESULT(lerr)
-  CHARACTER(LEN=*),                   INTENT(IN)  :: keyn
-  REAL,                  ALLOCATABLE, INTENT(OUT) ::   val(:)
-  CHARACTER(LEN=*), TARGET, OPTIONAL, INTENT(IN)  :: tname(:)
-  TYPE(keys_type),  TARGET, OPTIONAL, INTENT(IN)  ::    ky(:)
+  CHARACTER(LEN=*),           INTENT(IN)  :: keyn
+  REAL,          ALLOCATABLE, INTENT(OUT) ::   val(:)
+  CHARACTER(LEN=*), OPTIONAL, INTENT(IN)  :: tname(:)
+  TYPE(keys_type),  OPTIONAL, INTENT(IN)  ::    ky(:)
   TYPE(keys_type),           POINTER :: k(:)
   CHARACTER(LEN=maxlen), ALLOCATABLE :: n(:)
Index: /LMDZ6/branches/LMDZ_ECRad/libf/misc/strings_mod.F90
===================================================================
--- /LMDZ6/branches/LMDZ_ECRad/libf/misc/strings_mod.F90	(revision 4202)
+++ /LMDZ6/branches/LMDZ_ECRad/libf/misc/strings_mod.F90	(revision 4203)
@@ -853,6 +853,9 @@
 !--- Display a clean table composed of successive vectors of same length.
 !=== The profile "p" describe in which order to pick up the columns from "s", "i" and "r" for display.
-!==============================================================================================================================
-LOGICAL FUNCTION dispTable(p, titles, s, i, r, rFmt, nmax, unit, sub) RESULT(lerr)
+!===  * nRowMax lines are displayed (default: all lines)
+!===  * nColMax characters (default: as long as needed) are displayed at most on a line. If the effective total length is
+!===    higher, several partial tables are displayed ; the nHead (default: 1) first columns are included in each sub-table.
+!==============================================================================================================================
+LOGICAL FUNCTION dispTable(p, titles, s, i, r, rFmt, nRowMax, nColMax, nHead, unit, sub) RESULT(lerr)
   CHARACTER(LEN=*),           INTENT(IN)  :: p             !--- DISPLAY MAP: s/i/r
   CHARACTER(LEN=*),           INTENT(IN)  :: titles(:)     !--- TITLES (ONE EACH COLUMN)
@@ -861,5 +864,7 @@
   REAL,             OPTIONAL, INTENT(IN)  :: r(:,:)        !--- REALS
   CHARACTER(LEN=*), OPTIONAL, INTENT(IN)  :: rFmt          !--- Format for reals
-  INTEGER,          OPTIONAL, INTENT(IN)  :: nmax          !--- Display less than "nrow" rows
+  INTEGER,          OPTIONAL, INTENT(IN)  :: nRowMax       !--- Display at most "nRowMax" rows
+  INTEGER,          OPTIONAL, INTENT(IN)  :: nColMax       !--- Display at most "nColMax" characters each line
+  INTEGER,          OPTIONAL, INTENT(IN)  :: nHead         !--- Head columns repeated for multiple tables display
   INTEGER,          OPTIONAL, INTENT(IN)  :: unit          !--- Output unit (default: screen)
   CHARACTER(LEN=*), OPTIONAL, INTENT(IN)  :: sub           !--- Subroutine name
@@ -869,8 +874,8 @@
   CHARACTER(LEN=maxlen), ALLOCATABLE :: d(:,:)
   CHARACTER(LEN=1) :: s1, sp
-  INTEGER :: is, ii, ir, np, nrow, unt, ic
-  INTEGER :: ns, ni, nr, ncol, nmx
-  INTEGER, ALLOCATABLE :: n(:)
-  INTEGER, PARAMETER   :: nm=2                             !--- Space between values & columns
+  INTEGER :: is, ii, ir, it, k, nmx,  unt, ic, np
+  INTEGER :: ns, ni, nr, nt, l, ncol, nHd, ib, l0
+  INTEGER, ALLOCATABLE :: n(:), ncmx(:)
+  INTEGER, PARAMETER   :: nm=1                             !--- Space between values & columns
   LOGICAL :: ls, li, lr
 
@@ -884,5 +889,5 @@
 
   !--- CHECK ARGUMENTS COHERENCE
-  lerr = np /= SIZE(titles); IF(fmsg('string "pattern" length and titles list mismatch', subn, lerr)) RETURN
+  lerr = np /= SIZE(titles); IF(fmsg('display map "p" length and titles list mismatch', subn, lerr)) RETURN
   IF(ls) THEN
     ns = SIZE(s, 1); ncol = ncol + SIZE(s, 2); lerr = COUNT([(p(ic:ic)=='s', ic=1, np)]) /= SIZE(s, 2)
@@ -894,14 +899,13 @@
     nr = SIZE(r, 1); ncol = ncol + SIZE(r, 2); lerr = COUNT([(p(ic:ic)=='r', ic=1, np)]) /= SIZE(r, 2)
   END IF
-  IF(fmsg('string "pattern" length and arguments number mismatch', subn, lerr)) RETURN
+  IF(fmsg('display map "p" length and arguments number mismatch', subn, lerr)) RETURN
   lerr = ncol /= SIZE(titles); IF(fmsg('"titles" length and arguments number mismatch', subn, lerr)) RETURN
   lerr = ls.AND.li.AND.ns/=ni; IF(fmsg('string and integer arguments lengths mismatch', subn, lerr)) RETURN
   lerr = ls.AND.lr.AND.ns/=nr; IF(fmsg(   'string and real arguments lengths mismatch', subn, lerr)) RETURN
   lerr = li.AND.lr.AND.ni/=nr; IF(fmsg(  'integer and real arguments lengths mismatch', subn, lerr)) RETURN
-  nrow = MAX(ns,ni,nr)+1
-  nmx = nrow; IF(PRESENT(nmax)) nmx = MIN(nmx,nmax+1)
+  nmx = MAX(ns,ni,nr)+1; IF(PRESENT(nRowMax)) nmx = MIN(nmx,nRowMax+1)
 
   !--- Allocate the assembled quantities array
-  ALLOCATE(d(nrow,ncol), n(ncol))
+  ALLOCATE(d(nmx,ncol), n(ncol))
 
   !--- Assemble the vectors into a strings array in the order indicated by "pattern"
@@ -914,19 +918,46 @@
       CASE('r'); d(2:nmx,ic) = real2str(r(:,ir),rFm); ir = ir + 1
     END SELECT
+  END DO
+  CALL cleanZeros(d)
+  DO ic = 1, ncol
     n(ic)=0; DO ir=1, nmx; n(ic)=MAX(n(ic), LEN_TRIM(d(ir,ic))); END DO
   END DO
   n(:) = n(:) + 2*nm
 
+  !--- Build the vector of max column index in case the rows are too long (table must be displayed in multiple parts)
+  nHd = 1; IF(PRESENT(nHead)) nHd = nHead
+  IF(.NOT.PRESENT(nColMax)) THEN
+    nt = 1; ncmx = [ncol]
+  ELSE
+    nt = 1; l0 = SUM(n(1:nHd)+1)+1
+    IF(PRESENT(sub)) l0=l0+LEN_TRIM(subn)+1
+    !--- Count the number of table parts
+    l = l0; DO ic = nHd+1, ncol; l = l+n(ic)+1; IF(l>=nColMax) THEN; nt = nt+1; l = l0+n(ic)+1; END IF; END DO
+    !--- Get the index of the last column for each table part
+    ALLOCATE(ncmx(nt)); k = 1
+    l = l0; DO ic = nHd+1, ncol; l = l+n(ic)+1; IF(l>=nColMax) THEN; ncmx(k) = ic-1; l = l0+n(ic)+1; k = k+1; END IF; END DO
+    ncmx(nt) = ncol
+  END IF
+      
   !--- Display the strings array as a table
-  DO ir = 1, nmx; row = ''
-    DO ic = 1, ncol; el = d(ir,ic)
-      s1 = sp
-      row = TRIM(row)//REPEAT(' ',nm)//TRIM(el)//REPEAT(' ',n(ic)-LEN_TRIM(el)-nm)//s1
+  DO it = 1, nt
+    DO ir = 1, nmx; row = ''
+      DO ic = 1, nHd; el = d(ir,ic)
+        s1 = sp
+        row = TRIM(row)//REPEAT(' ',nm)//TRIM(el)//REPEAT(' ',n(ic)-LEN_TRIM(el)-nm)//s1
+      END DO
+      ib = nHd+1; IF(it>1) ib = ncmx(it-1)+1
+      DO ic = ib, ncmx(it); el = d(ir,ic)
+        s1 = sp
+        row = TRIM(row)//REPEAT(' ',nm)//TRIM(el)//REPEAT(' ',n(ic)-LEN_TRIM(el)-nm)//s1
+      END DO
+      nr = LEN_TRIM(row)-1                                           !--- Final separator removed
+      CALL msg(row(1:nr), subn, unit=unt)
+      IF(ir /= 1) CYCLE                                              !--- Titles are underlined
+      row=''; DO ic=1,nHd; row=TRIM(row)//REPEAT('-',n(ic))//'+'; END DO
+      DO ic = ib,ncmx(it); row=TRIM(row)//REPEAT('-',n(ic))//'+'; END DO
+      CALL msg(row(1:LEN_TRIM(row)-1), subn, unit=unt)
     END DO
-    nr = LEN_TRIM(row)-1                                             !--- Final separator removed
-    CALL msg(row(1:nr), subn, unit=unt)
-    IF(ir /= 1) CYCLE                                                !--- Titles are underlined
-    row=''; DO ic=1,ncol; row=TRIM(row)//REPEAT('-',n(ic))//'+'; END DO
-    CALL msg(row(1:LEN_TRIM(row)-1), subn, unit=unt)
+    CALL msg('', subn, unit=unt)
   END DO
 
@@ -970,5 +1001,5 @@
     lerr = COUNT([(p(ic:ic)=='r', ic=1, np)]) /= SIZE(r, DIM=2)
   END IF
-  IF(fmsg('string "pattern" length and arguments number mismatch', ll=lerr)) RETURN
+  IF(fmsg('display map "p" length and arguments number mismatch', ll=lerr)) RETURN
   lerr = ncol /= SIZE(titles); IF(fmsg('"titles" length and arguments number mismatch', ll=lerr)) RETURN
   lerr = ls.AND.li.AND.ns/=ni; IF(fmsg('string and integer arguments lengths mismatch', ll=lerr)) RETURN
@@ -989,4 +1020,7 @@
       CASE('r'); d(2:nrow,ic) = real2str(r(:,ir),rFm); ir = ir + 1
     END SELECT
+  END DO
+  CALL cleanZeros(d)
+  DO ic = 1, ncol
     n(ic) = 0; DO ir=1, nrow; n(ic)=MAX(n(ic), LEN_TRIM(d(ir,ic))); END DO
     IF(needQuotes(d(2,ic)) .AND. ic/=1) n(ic) = n(ic) + 2 !--- For quotes, using second line only
@@ -1016,5 +1050,5 @@
 
 !==============================================================================================================================
-LOGICAL FUNCTION dispOutliers_1(ll, a, n, err_msg, nam, subn, nmax, unit) RESULT(lerr)
+LOGICAL FUNCTION dispOutliers_1(ll, a, n, err_msg, nam, subn, nRowmax, nColMax, nHead, unit) RESULT(lerr)
 ! Display outliers list in tables
 ! If "nam" is supplied, it means the last index is for tracers => one table each tracer for rank > 2.
@@ -1024,9 +1058,12 @@
 
   CHARACTER(LEN=*), OPTIONAL, INTENT(IN)  :: err_msg, nam(:), subn   !--- Error message, variables and calling subroutine names
-  INTEGER,          OPTIONAL, INTENT(IN)  :: nmax, unit              !--- Maximum number of lines to display (default: all)
+  INTEGER,          OPTIONAL, INTENT(IN)  :: nRowMax                 !--- Maximum number of lines to display    (default: all)
+  INTEGER,          OPTIONAL, INTENT(IN)  :: nColMax                 !--- Maximum number of characters per line (default: 2048)
+  INTEGER,          OPTIONAL, INTENT(IN)  :: nHead                   !--- Number of front columns to duplicate  (default: 1)
+  INTEGER,          OPTIONAL, INTENT(IN)  :: unit                    !--- Output unit                           (def: lunout)
   CHARACTER(LEN=maxlen),      ALLOCATABLE :: ttl(:)
   LOGICAL,                    ALLOCATABLE :: m(:)
   INTEGER,                    ALLOCATABLE :: ki(:), kj(:)
-  INTEGER                                 :: i, j, k, rk, rk1, ib, ie, itr, nm, unt, nmx, nv
+  INTEGER                                 :: i, j, k, rk, rk1, ib, ie, itr, nm, unt, nRmx, nCmx, nHd, nv
   CHARACTER(LEN=maxlen)                   :: mes, sub, fm='(f12.9)', v, s
   CHARACTER(LEN=maxlen),      ALLOCATABLE :: vnm(:)
@@ -1037,5 +1074,7 @@
   vnm = ['a'];            IF(PRESENT(nam ))    vnm = nam             !--- Variables names
   sub = 'dispOutliers';   IF(PRESENT(subn))    sub = subn            !--- Calling subroutine name
-  nmx = SIZE(a);          IF(PRESENT(nmax))    nmx = MIN(nmx,nmax)   !--- Maximum number of lines to print
+  nRmx= SIZE(a);          IF(PRESENT(nRowMax)) nRmx=MIN(nRmx,nRowMax)!-- Maximum number of lines to print
+  nCmx= 2048;             IF(PRESENT(nColMax)) nCmx=MIN(nCmx,nColMax)!-- Maximum number of characters each line
+  nHd = 1;                IF(PRESENT(nHead))   nHd = nHead           !--- Number of front columns to duplicate
   unt = lunout;           IF(PRESENT(unit))    unt = unit            !--- Unit to print messages
 
@@ -1061,6 +1100,8 @@
   IF(rk==1) THEN
     ALLOCATE(ttl(2)); ttl(2) = TRIM(vnm(1))//'(i)'; ttl(1) = 'i'
-    IF(nv == 1) lerr = dispTable('sr', ttl,               s=cat(PACK(nam,ll)), r=cat(PACK(a,ll)), rFmt=fm, nmax=nmax)
-    IF(nv /= 1) lerr = dispTable('ir', ['name ','value'], i=cat(PACK(ki,m)),   r=cat(PACK(a,ll)), rFmt=fm, nmax=nmax)
+    IF(nv == 1) lerr = dispTable('sr', ttl,               s=cat(PACK(nam,ll)), r=cat(PACK(a,ll)), &
+                                 rFmt=fm, nRowMax=nRmx, nColMax=nCmx, nHead=nHd, unit=unt, sub=sub)
+    IF(nv /= 1) lerr = dispTable('ir', ['name ','value'], i=cat(PACK(ki,m)),   r=cat(PACK(a,ll)), &
+                                 rFmt=fm, nRowMax=nRmx, nColMax=nCmx, nHead=nHd, unit=unt, sub=sub)
     CALL msg("can't display outliers table", sub, lerr, unt)
     RETURN
@@ -1078,6 +1119,8 @@
     IF(nv == 1) ttl(rk) = TRIM(v)//','//int2str(itr)//')'            !--- "<name>(i,j,itr)" (single name)
     IF(nv /= 1) ttl(rk) = TRIM(v)//')'                               !--- "<nam(itr)>(i,j)" (one name each table/itr index)
-    IF(rk==2) lerr = dispTable('ir',  ttl, i=cat(PACK(ki,m)),            r=cat(PACK(a(ib:ie),m)), rFmt=fm, nmax=nmax)
-    IF(rk==3) lerr = dispTable('iir', ttl, i=cat(PACK(ki,m),PACK(kj,m)), r=cat(PACK(a(ib:ie),m)), rFmt=fm, nmax=nmax)
+    IF(rk==2) lerr = dispTable('ir',  ttl, i=cat(PACK(ki,m)),            r=cat(PACK(a(ib:ie),m)), &
+                                 rFmt=fm, nRowMax=nRmx, nColMax=nCmx, nHead=nHd, unit=unt, sub=sub)
+    IF(rk==3) lerr = dispTable('iir', ttl, i=cat(PACK(ki,m),PACK(kj,m)), r=cat(PACK(a(ib:ie),m)), &
+                                 rFmt=fm, nRowMax=nRmx, nColMax=nCmx, nHead=nHd, unit=unt, sub=sub)
     CALL msg("can't display outliers table", sub, lerr, unt)
     IF(lerr) RETURN
@@ -1085,5 +1128,5 @@
 END FUNCTION dispOutliers_1
 !==============================================================================================================================
-LOGICAL FUNCTION dispOutliers_2(ll, a, n, err_msg, nam, subn, nmax, unit) RESULT(lerr)
+LOGICAL FUNCTION dispOutliers_2(ll, a, n, err_msg, nam, subn, nRowMax, nColMax, nHead, unit) RESULT(lerr)
 ! Display outliers list in tables
 ! If "nam" is supplied and, it means the last index is for tracers => one table each tracer for rank > 2.
@@ -1092,5 +1135,8 @@
   INTEGER,                    INTENT(IN)  ::  n(:)                   !--- Profile before linearization
   CHARACTER(LEN=*), OPTIONAL, INTENT(IN)  :: err_msg, nam(:), subn   !--- Error message, variables and calling subroutine names
-  INTEGER,          OPTIONAL, INTENT(IN)  :: nmax, unit              !--- Maximum number of lines to display (default: all)
+  INTEGER,          OPTIONAL, INTENT(IN)  :: nRowMax                 !--- Maximum number of lines to display    (default: all)
+  INTEGER,          OPTIONAL, INTENT(IN)  :: nColMax                 !--- Maximum number of characters per line (default: 2048)
+  INTEGER,          OPTIONAL, INTENT(IN)  :: nHead                   !--- Number of front columns to duplicate  (default: 1)
+  INTEGER,          OPTIONAL, INTENT(IN)  :: unit                    !--- Output unit                           (def: lunout)
 
   CHARACTER(LEN=maxlen)                   :: mes, sub, fm='(f12.9)', prf
@@ -1098,17 +1144,19 @@
   LOGICAL,                    ALLOCATABLE :: m(:)
   INTEGER,                    ALLOCATABLE :: ki(:), kj(:), kl(:)
-  INTEGER                                 :: i, j, k, rk, ib, ie, itr, nm, nv, unt, nmx, rk1
+  INTEGER                                 :: i, j, k, rk, ib, ie, itr, nm, nv, unt, nRmx, nCmx, nHd, rk1
   REAL,                       ALLOCATABLE :: val(:,:)
 
-  lerr = ANY(ll); IF(.NOT.lerr) RETURN                                    !--- No outliers -> finished
+  lerr = ANY(ll); IF(.NOT.lerr) RETURN                               !--- No outliers -> finished
   rk = SIZE(n); nv = SIZE(a,2)
-  mes = 'outliers found';         IF(PRESENT(err_msg)) mes = err_msg      !--- Error message
-  vnm = [(ACHAR(k+96),k=1,nv)];   IF(PRESENT(nam ))    vnm = nam          !--- Variables names
-  sub = 'dispOutliers';           IF(PRESENT(subn))    sub = subn         !--- Calling subroutine name
-  nmx = SIZE(a);                  IF(PRESENT(nmax))    nmx = MIN(nmx,nmax)!--- Maximum number of lines to print
-  unt = lunout;                   IF(PRESENT(unit))    unt = unit         !--- Unit to print messages
-  lerr = SIZE(vnm) /= nv;         IF(fmsg('SIZE(nam) /= SIZE(a,2)',                  sub, lerr, unt)) RETURN
-  lerr = SIZE(a,1) /= SIZE(ll);   IF(fmsg('"ll" and "a" sizes mismatch',             sub, lerr, unt)) RETURN
-  lerr = SIZE(a,1) /= PRODUCT(n); IF(fmsg('profile "n" does not match "a" and "ll"', sub, lerr, unt)) RETURN
+  mes = 'outliers found';        IF(PRESENT(err_msg)) mes = err_msg  !--- Error message
+  vnm = [(ACHAR(k+96),k=1,nv)];  IF(PRESENT(nam ))    vnm = nam      !--- Variables names
+  sub = 'dispOutliers';          IF(PRESENT(subn))    sub = subn     !--- Calling subroutine name
+  nRmx= SIZE(a);          IF(PRESENT(nRowMax)) nRmx=MIN(nRmx,nRowMax)!-- Maximum number of lines to print
+  nCmx= 2048;             IF(PRESENT(nColMax)) nCmx=MIN(nCmx,nColMax)!-- Maximum number of characters each line
+  nHd = 1;                IF(PRESENT(nHead))   nHd = nHead           !--- Number of front columns to duplicate
+  unt = lunout;                  IF(PRESENT(unit))    unt = unit     !--- Unit to print messages
+  lerr= SIZE(vnm) /= nv;         IF(fmsg('SIZE(nam) /= SIZE(a,2)',                  sub, lerr, unt)) RETURN
+  lerr= SIZE(a,1) /= SIZE(ll);   IF(fmsg('"ll" and "a" sizes mismatch',             sub, lerr, unt)) RETURN
+  lerr= SIZE(a,1) /= PRODUCT(n); IF(fmsg('profile "n" does not match "a" and "ll"', sub, lerr, unt)) RETURN
 
   SELECT CASE(rk1)                                                   !--- Indices list
@@ -1124,8 +1172,10 @@
   prf = REPEAT('i',rk)//REPEAT('r',nv)                               !--- Profile
   ALLOCATE(val(COUNT(ll),nv)); DO k=1, nv; val(:,k) = PACK(a(:,k),ll); END DO
-  IF(rk == 1) lerr = dispTable(prf, ttl, i = cat(PACK(ki,ll)),             r = val, rFmt=fm, nmax=nmax)
-  IF(rk == 2) lerr = dispTable(prf, ttl, i = cat(PACK(ki,ll),PACK(kj,ll)), r = val, rFmt=fm, nmax=nmax)
-  IF(rk == 3) lerr = dispTable(prf, ttl, i = cat(PACK(ki,ll),PACK(kj,ll),PACK(kl,ll)), &
-                     r = val, rFmt=fm, nmax=nmax)
+  IF(rk == 1) lerr = dispTable(prf, ttl, i = cat(PACK(ki,ll)),                         r = val, &
+                                 rFmt=fm, nRowMax=nRmx, nColMax=nCmx, nHead=nHd, unit=unt, sub=sub)
+  IF(rk == 2) lerr = dispTable(prf, ttl, i = cat(PACK(ki,ll),PACK(kj,ll)),             r = val, &
+                                 rFmt=fm, nRowMax=nRmx, nColMax=nCmx, nHead=nHd, unit=unt, sub=sub)
+  IF(rk == 3) lerr = dispTable(prf, ttl, i = cat(PACK(ki,ll),PACK(kj,ll),PACK(kl,ll)), r = val, &
+                                 rFmt=fm, nRowMax=nRmx, nColMax=nCmx, nHead=nHd, unit=unt, sub=sub)
   CALL msg("can't display outliers table", sub, lerr, unt)
 END FUNCTION dispOutliers_2
@@ -1320,5 +1370,18 @@
 END FUNCTION dble2str
 !==============================================================================================================================
-
+ELEMENTAL SUBROUTINE cleanZeros(s)
+  CHARACTER(LEN=*), INTENT(INOUT) :: s
+  INTEGER :: ls, ix, i
+  IF(is_numeric(s)) THEN
+    ls = LEN_TRIM(s)
+    ix = MAX(INDEX(s,'E'),INDEX(s,'e'),INDEX(s,'D'),INDEX(s,'d'))
+    IF(ix == 0) THEN
+      DO ix = ls,1,-1; IF(s(ix:ix) /= '0') EXIT; END DO; s=s(1:ix+1)
+    ELSE IF(INDEX(s,'.')/=0) THEN
+      i = ix-1; DO WHILE(s(i:i) == '0'); i = i-1; END DO; s=s(1:i)//s(ix:ls)
+    END IF
+  END IF
+END SUBROUTINE cleanZeros
+!==============================================================================================================================
 
 !==============================================================================================================================
Index: /LMDZ6/branches/LMDZ_ECRad/libf/phylmd/Ocean_skin/config_ocean_skin_m.F90
===================================================================
--- /LMDZ6/branches/LMDZ_ECRad/libf/phylmd/Ocean_skin/config_ocean_skin_m.F90	(revision 4202)
+++ /LMDZ6/branches/LMDZ_ECRad/libf/phylmd/Ocean_skin/config_ocean_skin_m.F90	(revision 4203)
@@ -11,6 +11,7 @@
   ! the depth of a sensor, or the depth at the middle of the first
   ! layer of an ocean model (half the depth of the first layer). In
-  ! m. Setting depth_1 to any value >= depth has the same effect as
-  ! setting depth_1 to depth.
+  ! m. Setting depth_1 to any value >= depth (named constant defined
+  ! in module `near_Surface_m`) has the same effect as setting depth_1
+  ! to depth.
 
   !$omp threadprivate(jcool, jwarm, rain_effect, depth_1)
Index: /LMDZ6/branches/LMDZ_ECRad/libf/phylmd/Ocean_skin/sens_heat_rain_m.F90
===================================================================
--- /LMDZ6/branches/LMDZ_ECRad/libf/phylmd/Ocean_skin/sens_heat_rain_m.F90	(revision 4202)
+++ /LMDZ6/branches/LMDZ_ECRad/libf/phylmd/Ocean_skin/sens_heat_rain_m.F90	(revision 4203)
@@ -5,12 +5,16 @@
 contains
 
+#ifdef IN_LMDZ
   real function sens_heat_rain(rain, t, q, rhoa, xlv, t_int, p)
+#else
+  elemental real function sens_heat_rain(rain, t, q, rhoa, xlv, t_int, p)
+#endif
 
     ! Computes heat flux due to rainfall, in W m-2, positive
     ! upward.
 
-    ! Do not declare this function as elemental because it may include
-    ! YOMCST.h, which contains an OpenMP directive, and that only
-    ! works in OpenMP 5.0.
+    ! If in LMDZ, do not declare this function as elemental because
+    ! YOMCST.h contains an OpenMP directive, and that only works in
+    ! OpenMP 5.0.
 
     use const, only: cpa, cpw, rgas
Index: /LMDZ6/branches/LMDZ_ECRad/libf/phylmd/aero_mod.F90
===================================================================
--- /LMDZ6/branches/LMDZ_ECRad/libf/phylmd/aero_mod.F90	(revision 4202)
+++ /LMDZ6/branches/LMDZ_ECRad/libf/phylmd/aero_mod.F90	(revision 4203)
@@ -55,5 +55,5 @@
        "ASBCM  ", & ! Accumulation-mode Soluble Black Carbon Mass 
        "ASPOMM ", & ! Accumulation-mode Soluble Particle Organic Matter Mass
-       "SO4    ", & ! Sulfate
+       "SO4    ", & ! Accumulation-mode Soluble Sulfate
        "CSSO4M ", & ! Coarse-mode Soluble Sulfate Mass
        "SSSSM  ", & ! Super-coarse mode Soluble Sea-Salt Mass
Index: /LMDZ6/branches/LMDZ_ECRad/libf/phylmd/infotrac_phy.F90
===================================================================
--- /LMDZ6/branches/LMDZ_ECRad/libf/phylmd/infotrac_phy.F90	(revision 4202)
+++ /LMDZ6/branches/LMDZ_ECRad/libf/phylmd/infotrac_phy.F90	(revision 4203)
@@ -162,5 +162,5 @@
 
    type_trac = type_trac_
-   IF(strParse(type_trac, '|', types_trac)) CALL abort_gcm(modname,'can''t parse "type_trac = '//TRIM(type_trac)//'"',1)
+   IF(strParse(type_trac, '|', types_trac)) CALL abort_physic(modname,'can''t parse "type_trac = '//TRIM(type_trac)//'"',1)
    tracers   = tracers_
    isotopes  = isotopes_
Index: /LMDZ6/branches/LMDZ_ECRad/libf/phylmd/phys_output_write_mod.F90
===================================================================
--- /LMDZ6/branches/LMDZ_ECRad/libf/phylmd/phys_output_write_mod.F90	(revision 4202)
+++ /LMDZ6/branches/LMDZ_ECRad/libf/phylmd/phys_output_write_mod.F90	(revision 4203)
@@ -2551,5 +2551,5 @@
            CALL histwrite_phy(o_flx_co2_bb,    fco2_bb)
 
-         ELSE IF (ANY(types_trac=='lmdz') .OR. ANY(types_trac=='coag')) THEN
+         ELSE IF ((ANY(types_trac=='lmdz') .OR. ANY(types_trac=='coag')) .AND. ALL(types_trac /= 'inca')) THEN
            itr = 0
            DO iq = 1, nqtot
Index: /LMDZ6/branches/LMDZ_ECRad/libf/phylmd/rrtm/rrtm_taumol2.F90
===================================================================
--- /LMDZ6/branches/LMDZ_ECRad/libf/phylmd/rrtm/rrtm_taumol2.F90	(revision 4202)
+++ /LMDZ6/branches/LMDZ_ECRad/libf/phylmd/rrtm/rrtm_taumol2.F90	(revision 4203)
@@ -22,4 +22,7 @@
  & FORREF   ,SELFREF , REFPARAM  
 USE YOERRTBG2, ONLY : CORR1  ,CORR2
+
+USE print_control_mod, ONLY: mydebug=>debug , lunout, prt_level, &
+ & alert_first_call, call_alert, prt_alerte
 
 !  Input
@@ -65,4 +68,7 @@
 !      EQUIVALENCE (TAUAERL(1,2),TAUAER)
 
+    CHARACTER (LEN=20) :: modname='rrtm_taumol2'
+    CHARACTER*80 message
+
 !     Compute the optical depth by interpolating in ln(pressure) and 
 !     temperature.  Below LAYTROP, the water vapor self-continuum is 
@@ -115,6 +121,10 @@
 ! C'est evidemment une correction suspecte
   IF (IFP>200) THEN
+   IF (call_alert) THEN
+      message='WARNING IFP='
+      CALL prt_alerte(message,modname,1)
       PRINT*,'WARNING IFP=',IFP,' 2.E2_JPRB*Z_FP+0.5_JPRB avec Z_FP=',Z_FP
       IFP=200
+   ENDIF
   ENDIF
 
@@ -156,6 +166,10 @@
   IF (IFP <= 0) IFP=0
   IF (IFP>200) THEN
+   IF (call_alert) THEN
+      message='WARNING IFP='
+      CALL prt_alerte(message,modname,1)
       PRINT*,'WARNING IFP=',IFP,' 2.E2_JPRB*Z_FP+0.5_JPRB avec Z_FP=',Z_FP
       IFP=200
+   ENDIF
   ENDIF
 
Index: /LMDZ6/branches/LMDZ_ECRad/makelmdz
===================================================================
--- /LMDZ6/branches/LMDZ_ECRad/makelmdz	(revision 4202)
+++ /LMDZ6/branches/LMDZ_ECRad/makelmdz	(revision 4203)
@@ -648,5 +648,5 @@
 ########################################################################
 
-nomlib=`echo ${arch}_${physique}_${dim_full}_${grille}_${compil_mod}_parall${parallel}_${CPP_KEY}_${FLAG_PARA} | sed -e 's/ //g' -e 's/-//g ' | sed -e 's/CPP_//g'`
+nomlib=`echo ${arch}_${physique}_${rad}_${dim_full}_${grille}_${compil_mod}_parall${parallel}_${CPP_KEY}_${FLAG_PARA} | sed -e 's/ //g' -e 's/-//g ' | sed -e 's/CPP_//g'`
 echo "Path to library: "$nomlib
 
Index: /LMDZ6/branches/LMDZ_ECRad/makelmdz_fcm
===================================================================
--- /LMDZ6/branches/LMDZ_ECRad/makelmdz_fcm	(revision 4202)
+++ /LMDZ6/branches/LMDZ_ECRad/makelmdz_fcm	(revision 4203)
@@ -25,5 +25,5 @@
 inlandsis=false
 rrtm=false
-rad="old"
+rad="oldrad"
 dust=false
 strataer=false
@@ -106,5 +106,5 @@
 [-inlandsis true/false]  : compile with/without inlandsis package (default: false)
 [-rrtm true/false]    : compile with/without rrtm package (default: false)
-[-rad old/rrtm/ecrad]    : compile with old/rrtm/ecrad radiatif code (default: old)
+[-rad oldrad/rrtm/ecrad]    : compile with oldrad/rrtm/ecrad radiatif code (default: oldrad)
 [-dust true/false]    : compile with/without the dust package by Boucher and co (default: false)
 [-strataer true/false]    : compile with/without the strat aer package by Boucher and co (default: false)
@@ -165,5 +165,5 @@
 
       "-rrtm")
-          rrtm="$2" ; if [ "$2" = "false" ] ; then rad="old" ; else rad="rrtm" ; fi ; shift ; shift ;;
+          rrtm="$2" ; if [ "$2" = "false" ] ; then rad="oldrad" ; else rad="rrtm" ; fi ; shift ; shift ;;
 
       "-rad")
@@ -652,5 +652,5 @@
 
 SUFF_NAME=_${dim_full}
-SUFF_NAME=${SUFF_NAME}_phy${physique}
+SUFF_NAME=${SUFF_NAME}_phy${physique}_${rad}
 
 if [[ "$parallel" != "none" ]]
