Index: LMDZ6/trunk/libf/misc/readTracFiles_mod.f90
===================================================================
--- LMDZ6/trunk/libf/misc/readTracFiles_mod.f90	(revision 5753)
+++ LMDZ6/trunk/libf/misc/readTracFiles_mod.f90	(revision 5754)
@@ -1,5 +1,6 @@
 MODULE readTracFiles_mod
 
-  USE strings_mod,    ONLY: msg, find, get_in, dispTable, strHead,  strReduce,  strFind, strStack, strIdx, &
+  USE ioipsl_getin_p_mod, ONLY : getin_p
+  USE strings_mod,    ONLY: msg, find, dispTable, strHead,  strReduce,  strFind, strStack, strIdx, &
              removeComment, cat,       maxlen, checkList, strParse, strReplace, strTail, strCount, reduceExpr, &
              num2str, str2int, str2real, str2bool
@@ -1163,5 +1164,5 @@
 
   !--- GET THE isoCheck ENTRY FROM THE *.DEF FILES (MIGHT BE CHANGED TO A CLASS-DEPENDANT KEYWORD)
-  CALL get_in('ok_iso_verif', isot(strIdx(isot%parent, 'H2O'))%check, .FALSE.)
+  CALL getin_p('ok_iso_verif', isot(strIdx(isot%parent, 'H2O'))%check, .FALSE.)
 
   lerr = dispIsotopes()
@@ -1307,5 +1308,5 @@
 
   !--- GET THE isoCheck ENTRY FROM THE *.DEF FILES (MIGHT BE CHANGED TO A CLASS-DEPENDANT KEYWORD)
-  CALL get_in('ok_iso_verif', isoCheck, .TRUE.)
+  CALL getin_p('ok_iso_verif', isoCheck, .TRUE.)
 
   !=== CHECK CONSISTENCY
Index: LMDZ6/trunk/libf/misc/strings_mod.f90
===================================================================
--- LMDZ6/trunk/libf/misc/strings_mod.f90	(revision 5753)
+++ LMDZ6/trunk/libf/misc/strings_mod.f90	(revision 5754)
@@ -6,5 +6,5 @@
 
   PRIVATE
-  PUBLIC :: maxlen, init_printout, msg, get_in, lunout, prt_level, maxTableWidth
+  PUBLIC :: maxlen, init_printout, msg, lunout, prt_level, maxTableWidth
   PUBLIC :: strLower, strHead, strStack,  strCount, strReduce,  strClean, strIdx
   PUBLIC :: strUpper, strTail, strStackm, strParse, strReplace, strFind, find, duplicate, cat
@@ -13,5 +13,4 @@
   PUBLIC :: reduceExpr, addQuotes, checkList, removeComment
 
-  INTERFACE get_in;     MODULE PROCEDURE getin_s,  getin_i,  getin_r,  getin_l;  END INTERFACE get_in
   INTERFACE num2str;    MODULE PROCEDURE bool2str, int2str, real2str, dble2str;  END INTERFACE num2str
   INTERFACE  msg;       MODULE PROCEDURE        msg_1,                    msg_m; END INTERFACE  msg
@@ -50,49 +49,4 @@
   prt_level = prt_level_
 END SUBROUTINE init_printout
-!==============================================================================================================================
-
-
-!==============================================================================================================================
-!=== Same as getin ; additional last argument: the default value.
-!==============================================================================================================================
-SUBROUTINE getin_s(nam, val, def)
-  USE ioipsl, ONLY: getin
-  IMPLICIT NONE
-  CHARACTER(LEN=*), INTENT(IN)    :: nam
-  CHARACTER(LEN=*), INTENT(INOUT) :: val
-  CHARACTER(LEN=*), INTENT(IN)    :: def
-  val = def; CALL getin(nam, val)
-  IF(val/=def) WRITE(lunout,*)TRIM(nam)//' = '//TRIM(val)
-END SUBROUTINE getin_s
-!==============================================================================================================================
-SUBROUTINE getin_i(nam, val, def)
-  USE ioipsl, ONLY: getin
-  IMPLICIT NONE
-  CHARACTER(LEN=*), INTENT(IN)    :: nam
-  INTEGER,          INTENT(INOUT) :: val
-  INTEGER,          INTENT(IN)    :: def
-  val = def; CALL getin(nam, val)
-  IF(val/=def) WRITE(lunout,*)TRIM(nam)//' = '//TRIM(num2str(val))
-END SUBROUTINE getin_i
-!==============================================================================================================================
-SUBROUTINE getin_r(nam, val, def)
-  USE ioipsl, ONLY: getin
-  IMPLICIT NONE
-  CHARACTER(LEN=*), INTENT(IN)    :: nam
-  REAL,             INTENT(INOUT) :: val
-  REAL,             INTENT(IN)    :: def
-  val = def; CALL getin(nam, val)
-  IF(val/=def) WRITE(lunout,*)TRIM(nam)//' = '//TRIM(num2str(val))
-END SUBROUTINE getin_r
-!==============================================================================================================================
-SUBROUTINE getin_l(nam, val, def)
-  USE ioipsl, ONLY: getin
-  IMPLICIT NONE
-  CHARACTER(LEN=*), INTENT(IN)    :: nam
-  LOGICAL,          INTENT(INOUT) :: val
-  LOGICAL,          INTENT(IN)    :: def
-  val = def; CALL getin(nam, val)
-  IF(val.NEQV.def) WRITE(lunout,*)TRIM(nam)//' = '//TRIM(num2str(val))
-END SUBROUTINE getin_l
 !==============================================================================================================================
 
Index: LMDZ6/trunk/libf/phy_common/ioipsl_getin_p_mod.f90
===================================================================
--- LMDZ6/trunk/libf/phy_common/ioipsl_getin_p_mod.f90	(revision 5753)
+++ LMDZ6/trunk/libf/phy_common/ioipsl_getin_p_mod.f90	(revision 5754)
@@ -6,6 +6,6 @@
 !---------------------------------------------------------------------
 USE ioipsl, ONLY: getin
-USE mod_phys_lmdz_mpi_data, ONLY :  is_mpi_root
-USE mod_phys_lmdz_omp_data, ONLY :  is_omp_root
+USE strings_mod, ONLY: num2str, strStack, msg
+USE mod_phys_lmdz_para, ONLY: is_master
 USE mod_phys_lmdz_transfert_para, ONLY : bcast
 !-
@@ -32,128 +32,166 @@
 !! -- Les chaines de caracteres -- !!
   
-  SUBROUTINE getincs_p(VarIn,VarOut)
-    IMPLICIT NONE    
-    CHARACTER(LEN=*),INTENT(IN) :: VarIn
-    CHARACTER(LEN=*),INTENT(INOUT) :: VarOut    
-
-!$OMP BARRIER
-    IF (is_mpi_root .AND. is_omp_root) THEN
-    	CALL getin(VarIn,VarOut)
-    ENDIF
-    CALL bcast(VarOut)
-  END SUBROUTINE getincs_p
+SUBROUTINE getincs_p(VarIn, VarOut, VarDef, lDisp)
+  IMPLICIT NONE
+  CHARACTER(LEN=*),           INTENT(IN)    :: VarIn
+  CHARACTER(LEN=*),           INTENT(INOUT) :: VarOut
+  CHARACTER(LEN=*), OPTIONAL, INTENT(IN)    :: VarDef
+  LOGICAL,          OPTIONAL, INTENT(IN)    :: lDisp
+  LOGICAL :: lD
+!$OMP BARRIER
+  IF(is_master) THEN
+     lD = .TRUE.; IF(PRESENT(lDisp)) lD = lDisp
+     IF(PRESENT(VarDef)) VarOut = VarDef
+     CALL getin(VarIn,VarOut)
+     IF(lD) CALL msg(TRIM(VarIn)//' = '//TRIM(VarOut))
+  END IF
+  CALL bcast(VarOut)
+END SUBROUTINE getincs_p
 
 !! -- Les entiers -- !!
   
-  SUBROUTINE getinis_p(VarIn,VarOut)
-    IMPLICIT NONE    
-    CHARACTER(LEN=*),INTENT(IN) :: VarIn
-    INTEGER,INTENT(INOUT) :: VarOut    
-
-!$OMP BARRIER
-    IF (is_mpi_root .AND. is_omp_root) THEN
-    	CALL getin(VarIn,VarOut)
-    ENDIF
-    CALL bcast(VarOut)
+SUBROUTINE getinis_p(VarIn, VarOut, VarDef, lDisp)
+  IMPLICIT NONE
+  CHARACTER(LEN=*),  INTENT(IN)    :: VarIn
+  INTEGER,           INTENT(INOUT) :: VarOut
+  INTEGER, OPTIONAL, INTENT(IN)    :: VarDef
+  LOGICAL, OPTIONAL, INTENT(IN)    :: lDisp
+  LOGICAL :: lD
+!$OMP BARRIER
+  IF(is_master) THEN
+     lD = .TRUE.; IF(PRESENT(lDisp)) lD = lDisp
+     IF(PRESENT(VarDef)) VarOut = VarDef
+     CALL getin(VarIn,VarOut)
+     IF(lD) CALL msg(TRIM(VarIn)//' = '//TRIM(num2str(VarOut)))
+  END IF
+  CALL bcast(VarOut)
   END SUBROUTINE getinis_p
 
-  SUBROUTINE getini1d_p(VarIn,VarOut)
-    IMPLICIT NONE    
-    CHARACTER(LEN=*),INTENT(IN) :: VarIn
-    INTEGER,INTENT(INOUT) :: VarOut(:)
-
-!$OMP BARRIER
-    IF (is_mpi_root .AND. is_omp_root) THEN
-    	CALL getin(VarIn,VarOut)
-    ENDIF
-    CALL bcast(VarOut)
+  SUBROUTINE getini1d_p(VarIn, VarOut, VarDef, lDisp)
+  IMPLICIT NONE
+  CHARACTER(LEN=*),  INTENT(IN)    :: VarIn
+  INTEGER,           INTENT(INOUT) :: VarOut(:)
+  INTEGER, OPTIONAL, INTENT(IN)    :: VarDef
+  LOGICAL, OPTIONAL, INTENT(IN)    :: lDisp
+  LOGICAL :: lD
+!$OMP BARRIER
+  IF(is_master) THEN
+     lD = .TRUE.; IF(PRESENT(lDisp)) lD = lDisp
+     IF(PRESENT(VarDef)) VarOut = VarDef
+     CALL getin(VarIn,VarOut)
+     IF(lD) CALL msg(TRIM(VarIn)//' = '//TRIM(strStack(num2str(VarOut))))
+  END IF
+  CALL bcast(VarOut)
   END SUBROUTINE getini1d_p
 
-  SUBROUTINE getini2d_p(VarIn,VarOut)
-    IMPLICIT NONE    
-    CHARACTER(LEN=*),INTENT(IN) :: VarIn
-    INTEGER,INTENT(INOUT) :: VarOut(:,:)
-
-!$OMP BARRIER
-    IF (is_mpi_root .AND. is_omp_root) THEN
-    	CALL getin(VarIn,VarOut)
-    ENDIF
-    CALL bcast(VarOut)
+  SUBROUTINE getini2d_p(VarIn, VarOut, VarDef)
+  IMPLICIT NONE
+  CHARACTER(LEN=*),  INTENT(IN)    :: VarIn
+  INTEGER,           INTENT(INOUT) :: VarOut(:,:)
+  INTEGER, OPTIONAL, INTENT(IN)    :: VarDef
+!$OMP BARRIER
+  IF(is_master) THEN
+     IF(PRESENT(VarDef)) VarOut = VarDef
+     CALL getin(VarIn,VarOut)
+  END IF
+  CALL bcast(VarOut)
   END SUBROUTINE getini2d_p
 
 !! -- Les flottants -- !!
   
-  SUBROUTINE getinrs_p(VarIn,VarOut)
-    IMPLICIT NONE    
-    CHARACTER(LEN=*),INTENT(IN) :: VarIn
-    REAL,INTENT(INOUT) :: VarOut
-
-!$OMP BARRIER
-    IF (is_mpi_root .AND. is_omp_root) THEN
-    	CALL getin(VarIn,VarOut)
-    ENDIF
-    CALL bcast(VarOut)
+  SUBROUTINE getinrs_p(VarIn, VarOut, VarDef, lDisp)
+  IMPLICIT NONE
+  CHARACTER(LEN=*),  INTENT(IN)    :: VarIn
+  REAL,              INTENT(INOUT) :: VarOut
+  REAL,    OPTIONAL, INTENT(IN)    :: VarDef
+  LOGICAL, OPTIONAL, INTENT(IN)    :: lDisp
+  LOGICAL :: lD
+!$OMP BARRIER
+  IF(is_master) THEN
+     lD = .TRUE.; IF(PRESENT(lDisp)) lD = lDisp
+     IF(PRESENT(VarDef)) VarOut = VarDef
+     CALL getin(VarIn,VarOut)
+     IF(lD) CALL msg(TRIM(VarIn)//' = '//TRIM(num2str(VarOut)))
+  END IF
+  CALL bcast(VarOut)
   END SUBROUTINE getinrs_p
 
-  SUBROUTINE getinr1d_p(VarIn,VarOut)
-    IMPLICIT NONE    
-    CHARACTER(LEN=*),INTENT(IN) :: VarIn
-    REAL,INTENT(INOUT) :: VarOut(:)
-
-!$OMP BARRIER
-    IF (is_mpi_root .AND. is_omp_root) THEN
-    	CALL getin(VarIn,VarOut)
-    ENDIF
-    CALL bcast(VarOut)
+  SUBROUTINE getinr1d_p(VarIn, VarOut, VarDef, lDisp)
+  IMPLICIT NONE
+  CHARACTER(LEN=*),  INTENT(IN)    :: VarIn
+  REAL,              INTENT(INOUT) :: VarOut(:)
+  REAL,    OPTIONAL, INTENT(IN)    :: VarDef
+  LOGICAL, OPTIONAL, INTENT(IN)    :: lDisp
+  LOGICAL :: lD
+!$OMP BARRIER
+  IF(is_master) THEN
+     lD = .TRUE.; IF(PRESENT(lDisp)) lD = lDisp
+     IF(PRESENT(VarDef)) VarOut = VarDef
+     CALL getin(VarIn,VarOut)
+     IF(lD) CALL msg(TRIM(VarIn)//' = '//TRIM(strStack(num2str(VarOut))))
+  END IF
+  CALL bcast(VarOut)
   END SUBROUTINE getinr1d_p
 
-  SUBROUTINE getinr2d_p(VarIn,VarOut)
-    IMPLICIT NONE    
-    CHARACTER(LEN=*),INTENT(IN) :: VarIn
-    REAL,INTENT(INOUT) :: VarOut(:,:)
-
-!$OMP BARRIER
-    IF (is_mpi_root .AND. is_omp_root) THEN
-    	CALL getin(VarIn,VarOut)
-    ENDIF
-    CALL bcast(VarOut)
+  SUBROUTINE getinr2d_p(VarIn, VarOut, VarDef)
+  IMPLICIT NONE
+  CHARACTER(LEN=*),  INTENT(IN)    :: VarIn
+  REAL,              INTENT(INOUT) :: VarOut(:,:)
+  REAL,    OPTIONAL, INTENT(IN)    :: VarDef
+!$OMP BARRIER
+  IF(is_master) THEN
+     IF(PRESENT(VarDef)) VarOut = VarDef
+     CALL getin(VarIn,VarOut)
+  END IF
+  CALL bcast(VarOut)
   END SUBROUTINE getinr2d_p
 
 !! -- Les Booleens -- !!
   
-  SUBROUTINE getinls_p(VarIn,VarOut)
-    IMPLICIT NONE    
-    CHARACTER(LEN=*),INTENT(IN) :: VarIn
-    LOGICAL,INTENT(INOUT) :: VarOut
-
-!$OMP BARRIER
-    IF (is_mpi_root .AND. is_omp_root) THEN
-    	CALL getin(VarIn,VarOut)
-    ENDIF
-    CALL bcast(VarOut)
+  SUBROUTINE getinls_p(VarIn, VarOut, VarDef, lDisp)
+  IMPLICIT NONE
+  CHARACTER(LEN=*),  INTENT(IN)    :: VarIn
+  LOGICAL,           INTENT(INOUT) :: VarOut
+  LOGICAL, OPTIONAL, INTENT(IN)    :: VarDef
+  LOGICAL, OPTIONAL, INTENT(IN)    :: lDisp
+  LOGICAL :: lD
+!$OMP BARRIER
+  IF(is_master) THEN
+     lD = .TRUE.; IF(PRESENT(lDisp)) lD = lDisp
+     IF(PRESENT(VarDef)) VarOut = VarDef
+     CALL getin(VarIn,VarOut)
+     IF(lD) CALL msg(TRIM(VarIn)//' = '//TRIM(num2str(VarOut)))
+  END IF
+  CALL bcast(VarOut)
   END SUBROUTINE getinls_p
 
-  SUBROUTINE getinl1d_p(VarIn,VarOut)
-    IMPLICIT NONE    
-    CHARACTER(LEN=*),INTENT(IN) :: VarIn
-    LOGICAL,INTENT(INOUT) :: VarOut(:)
-
-!$OMP BARRIER
-    IF (is_mpi_root .AND. is_omp_root) THEN
-    	CALL getin(VarIn,VarOut)
-    ENDIF
-    CALL bcast(VarOut)
+  SUBROUTINE getinl1d_p(VarIn, VarOut, VarDef, lDisp)
+  IMPLICIT NONE
+  CHARACTER(LEN=*),  INTENT(IN)    :: VarIn
+  LOGICAL,           INTENT(INOUT) :: VarOut(:)
+  LOGICAL, OPTIONAL, INTENT(IN)    :: VarDef
+  LOGICAL, OPTIONAL, INTENT(IN)    :: lDisp
+  LOGICAL :: lD
+!$OMP BARRIER
+  IF(is_master) THEN
+     lD = .TRUE.; IF(PRESENT(lDisp)) lD = lDisp
+     IF(PRESENT(VarDef)) VarOut = VarDef
+     CALL getin(VarIn,VarOut)
+     IF(lD) CALL msg(TRIM(VarIn)//' = '//TRIM(strStack(num2str(VarOut))))
+  END IF
+  CALL bcast(VarOut)
   END SUBROUTINE getinl1d_p
 
-  SUBROUTINE getinl2d_p(VarIn,VarOut)
-    IMPLICIT NONE    
-    CHARACTER(LEN=*),INTENT(IN) :: VarIn
-    LOGICAL,INTENT(INOUT) :: VarOut(:,:)
-
-!$OMP BARRIER
-    IF (is_mpi_root .AND. is_omp_root) THEN
-    	CALL getin(VarIn,VarOut)
-    ENDIF
-    CALL bcast(VarOut)
+  SUBROUTINE getinl2d_p(VarIn, VarOut, VarDef)
+  IMPLICIT NONE
+  CHARACTER(LEN=*),  INTENT(IN)    :: VarIn
+  LOGICAL,           INTENT(INOUT) :: VarOut(:,:)
+  LOGICAL, OPTIONAL, INTENT(IN)    :: VarDef
+!$OMP BARRIER
+  IF(is_master) THEN
+     IF(PRESENT(VarDef)) VarOut = VarDef
+     CALL getin(VarIn,VarOut)
+  END IF
+  CALL bcast(VarOut)
   END SUBROUTINE getinl2d_p
 !-
Index: LMDZ6/trunk/libf/phylmdiso/isotopes_mod.F90
===================================================================
--- LMDZ6/trunk/libf/phylmdiso/isotopes_mod.F90	(revision 5753)
+++ LMDZ6/trunk/libf/phylmdiso/isotopes_mod.F90	(revision 5754)
@@ -6,6 +6,6 @@
    USE infotrac_phy, ONLY: isoName, niso, ntiso
    USE iso_params_mod
+   USE ioipsl_getin_p_mod, ONLY : getin_p
    IMPLICIT NONE
-   INTERFACE get_in; MODULE PROCEDURE getinp_s, getinp_i, getinp_r, getinp_l;  END INTERFACE get_in
 
   !--- Contains all isotopic variables + their initialization
@@ -187,20 +187,20 @@
 
          !--- Initialisation: reading the isotopic parameters.
-         CALL get_in('lambda',     lambda_sursat, 0.004); IF(ok_nocinsat) lambda_sursat = 0.
-         CALL get_in('thumxt1',    thumxt1,       0.75*1.2)
-         CALL get_in('ntot',       ntot,          20,  .FALSE.)
-         CALL get_in('h_land_ice', h_land_ice,    20., .FALSE.)
-         CALL get_in('P_veg',      P_veg,         1.0, .FALSE.)
-         CALL get_in('bidouille_anti_divergence', bidouille_anti_divergence, .FALSE.)
-         CALL get_in('essai_convergence',         essai_convergence,         .FALSE.)
-         CALL get_in('initialisation_iso',        initialisation_iso,        0)
+         CALL getin_p('lambda',     lambda_sursat, 0.004); IF(ok_nocinsat) lambda_sursat = 0.
+         CALL getin_p('thumxt1',    thumxt1,       0.75*1.2)
+         CALL getin_p('ntot',       ntot,          20,  lDisp=.FALSE.)
+         CALL getin_p('h_land_ice', h_land_ice,    20., lDisp=.FALSE.)
+         CALL getin_p('P_veg',      P_veg,         1.0, lDisp=.FALSE.)
+         CALL getin_p('bidouille_anti_divergence', bidouille_anti_divergence, .FALSE.)
+         CALL getin_p('essai_convergence',         essai_convergence,         .FALSE.)
+         CALL getin_p('initialisation_iso',        initialisation_iso,        0)
 
 !        IF(nzone>0 .AND. initialisation_iso==0) &
-!           CALL get_in('initialisation_isotrac',initialisation_isotrac)
-         CALL get_in('modif_sst',      modif_sst,         0)
-         CALL get_in('deltaTtest',     deltaTtest,      0.0)     !--- For modif_sst>=1
-         CALL get_in('deltaTtestpoles',deltaTtestpoles, 0.0)     !--- For modif_sst>=2
-         CALL get_in( 'sstlatcrit',    sstlatcrit,     30.0)     !--- For modif_sst>=3
-         CALL get_in('dsstlatcrit',   dsstlatcrit,      0.0)     !--- For modif_sst>=3
+!           CALL getin_p('initialisation_isotrac',initialisation_isotrac)
+         CALL getin_p('modif_sst',      modif_sst,         0)
+         CALL getin_p('deltaTtest',     deltaTtest,      0.0)     !--- For modif_sst>=1
+         CALL getin_p('deltaTtestpoles',deltaTtestpoles, 0.0)     !--- For modif_sst>=2
+         CALL getin_p( 'sstlatcrit',    sstlatcrit,     30.0)     !--- For modif_sst>=3
+         CALL getin_p('dsstlatcrit',   dsstlatcrit,      0.0)     !--- For modif_sst>=3
 #ifdef ISOVERIF
          CALL msg('iso_init 270:  sstlatcrit='//num2str( sstlatcrit), modname, sstlatcrit < 0.0) !--- For modif_sst>=2
@@ -209,50 +209,50 @@
 #endif              
 
-         CALL get_in('modif_sic', modif_sic,  0)
+         CALL getin_p('modif_sic', modif_sic,  0)
          IF(modif_sic >= 1) &
-         CALL get_in('deltasic',  deltasic, 0.1)
-
-         CALL get_in('albedo_prescrit', albedo_prescrit, 0)
+         CALL getin_p('deltasic',  deltasic, 0.1)
+
+         CALL getin_p('albedo_prescrit', albedo_prescrit, 0)
          IF(albedo_prescrit == 1) THEN
-            CALL get_in('lon_min_albedo', lon_min_albedo, -200.)
-            CALL get_in('lon_max_albedo', lon_max_albedo,  200.)
-            CALL get_in('lat_min_albedo', lat_min_albedo, -100.)
-            CALL get_in('lat_max_albedo', lat_max_albedo,  100.)
-         END IF
-         CALL get_in('deltaO18_oce',        deltaO18_oce,   0.0)
-         CALL get_in('deltaP_BL',           deltaP_BL,     10.0)
-         CALL get_in('ruissellement_pluie', ruissellement_pluie, 0)
-         CALL get_in('alphak_stewart',      alphak_stewart,      1)
-         CALL get_in('tdifexp_sol',         tdifexp_sol,      0.67)
-         CALL get_in('calendrier_guide',    calendrier_guide,    0)
-         CALL get_in('cste_surf_cond',      cste_surf_cond,      0)
-         CALL get_in('mixlen',              mixlen,           35.0)
-         CALL get_in('evap_cont_cste',      evap_cont_cste,      0)
-         CALL get_in('deltaO18_evap_cont',  deltaO18_evap_cont,0.0)
-         CALL get_in('d_evap_cont',         d_evap_cont,       0.0)
-         CALL get_in('nudge_qsol',          nudge_qsol,          0)
-         CALL get_in('region_nudge_qsol',   region_nudge_qsol,   1)
+            CALL getin_p('lon_min_albedo', lon_min_albedo, -200.)
+            CALL getin_p('lon_max_albedo', lon_max_albedo,  200.)
+            CALL getin_p('lat_min_albedo', lat_min_albedo, -100.)
+            CALL getin_p('lat_max_albedo', lat_max_albedo,  100.)
+         END IF
+         CALL getin_p('deltaO18_oce',        deltaO18_oce,   0.0)
+         CALL getin_p('deltaP_BL',           deltaP_BL,     10.0)
+         CALL getin_p('ruissellement_pluie', ruissellement_pluie, 0)
+         CALL getin_p('alphak_stewart',      alphak_stewart,      1)
+         CALL getin_p('tdifexp_sol',         tdifexp_sol,      0.67)
+         CALL getin_p('calendrier_guide',    calendrier_guide,    0)
+         CALL getin_p('cste_surf_cond',      cste_surf_cond,      0)
+         CALL getin_p('mixlen',              mixlen,           35.0)
+         CALL getin_p('evap_cont_cste',      evap_cont_cste,      0)
+         CALL getin_p('deltaO18_evap_cont',  deltaO18_evap_cont,0.0)
+         CALL getin_p('d_evap_cont',         d_evap_cont,       0.0)
+         CALL getin_p('nudge_qsol',          nudge_qsol,          0)
+         CALL getin_p('region_nudge_qsol',   region_nudge_qsol,   1)
          nlevmaxO17 = 50
          CALL msg('nlevmaxO17='//TRIM(num2str(nlevmaxO17)))
-         CALL get_in('no_pce',   no_pce,     0)
-         CALL get_in('A_satlim', A_satlim, 1.0)
-         CALL get_in('ok_restrict_A_satlim', ok_restrict_A_satlim, 0)
+         CALL getin_p('no_pce',   no_pce,     0)
+         CALL getin_p('A_satlim', A_satlim, 1.0)
+         CALL getin_p('ok_restrict_A_satlim', ok_restrict_A_satlim, 0)
 #ifdef ISOVERIF
-         CALL msg(' 315: A_satlim='//num2str(A_satlim), modname, A_satlim > 1.0)
+         CALL msg(' 315: A_satlim='//TRIM(num2str(A_satlim)), modname, A_satlim > 1.0)
          IF(A_satlim > 1.0) STOP
 #endif
-!        CALL get_in('slope_limiterxy',   slope_limiterxy,  2.0) 
-!        CALL get_in('slope_limiterz',    slope_limiterz,   2.0) 
-         CALL get_in('modif_ratqs',       modif_ratqs,        0)
-         CALL get_in('Pcrit_ratqs',       Pcrit_ratqs,    500.0)
-         CALL get_in('ratqsbasnew',       ratqsbasnew,     0.05)
-         CALL get_in('fac_modif_evaoce',  fac_modif_evaoce, 1.0)
-         CALL get_in('ok_bidouille_wake', ok_bidouille_wake,  0)
+!        CALL getin_p('slope_limiterxy',   slope_limiterxy,  2.0) 
+!        CALL getin_p('slope_limiterz',    slope_limiterz,   2.0) 
+         CALL getin_p('modif_ratqs',       modif_ratqs,        0)
+         CALL getin_p('Pcrit_ratqs',       Pcrit_ratqs,    500.0)
+         CALL getin_p('ratqsbasnew',       ratqsbasnew,     0.05)
+         CALL getin_p('fac_modif_evaoce',  fac_modif_evaoce, 1.0)
+         CALL getin_p('ok_bidouille_wake', ok_bidouille_wake,  0)
          ! si oui, la temperature de cond est celle de l'environnement, pour eviter
          ! bugs quand temperature dans ascendances convs est mal calculee
-         CALL get_in('cond_temp_env',        cond_temp_env,        .FALSE.)
+         CALL getin_p('cond_temp_env',        cond_temp_env,        .FALSE.)
          IF(ANY(isoName == 'HTO')) &
-         CALL get_in('ok_prod_nucl_tritium', ok_prod_nucl_tritium, .FALSE., .FALSE.)
-         CALL get_in('tnateq1', ltnat1, .TRUE.)
+         CALL getin_p('ok_prod_nucl_tritium', ok_prod_nucl_tritium, .FALSE., lDisp=.FALSE.)
+         CALL getin_p('tnateq1', ltnat1, .TRUE.)
 
          CALL msg('iso_O18, iso_HDO, iso_eau = '//TRIM(strStack(num2str([iso_O18, iso_HDO, iso_eau]))), modname)
Index: LMDZ6/trunk/libf/phylmdiso/isotrac_mod.F90
===================================================================
--- LMDZ6/trunk/libf/phylmdiso/isotrac_mod.F90	(revision 5753)
+++ LMDZ6/trunk/libf/phylmdiso/isotrac_mod.F90	(revision 5754)
@@ -4,6 +4,6 @@
 MODULE isotrac_mod
   USE infotrac_phy, ONLY: niso, ntiso, nzone, delPhase
-  USE isotopes_mod, ONLY: ridicule, get_in
-
+  USE isotopes_mod, ONLY: ridicule
+  USE ioipsl_getin_p_mod, ONLY : getin_p
   IMPLICIT NONE
   SAVE
@@ -148,5 +148,5 @@
    USE isotopes_mod, ONLY: iso_eau, ntracisoOR, initialisation_iso
    USE dimphy,       ONLY: klon, klev
-   USE  strings_mod, ONLY: num2str, strStack, strTail, strHead, strIdx
+   USE  strings_mod, ONLY: num2str, strStack, strTail, strHead, strIdx, maxlen
 
    IMPLICIT NONE
@@ -156,7 +156,10 @@
    INTEGER :: izone_pres, izone_lat
    INTEGER :: nzone_opt
-
-   CALL msg("traceurs_init 18: isotrac ne marche que si on met l'eau comme isotope", 'iso_traceurs_init', iso_eau==0)
-   IF(lerr) STOP
+   LOGICAL :: lerr
+   CHARACTER(LEN=maxlen) :: modname
+
+   modname = 'iso_traceurs_init'
+   lerr = iso_eau == 0
+   IF(lerr) CALL abort_physics(TRIM(modname)//' 18', 'isotrac does not work without H216O isotope', 1)
 
    !--- Initialize
@@ -172,8 +175,8 @@
    ALLOCATE( boite_map(klon,klev))
 
-   IF(initialisation_iso == 0) CALL get_in('initialisation_isotrac', initialisation_isotrac)
+   IF(initialisation_iso == 0) CALL getin_p('initialisation_isotrac', initialisation_isotrac)
 
    !--- Read tracing option
-   CALL get_in('option_traceurs', option_traceurs)
+   CALL getin_p('option_traceurs', option_traceurs)
 
    !--- Genral case: no traceurs in ORCHIDEE
@@ -215,15 +218,15 @@
       !========================================================================================================================
          ! lire les use_bassin
-         CALL get_in('use_bassin_Atlantic',   use_bassin_Atlantic)
-         CALL get_in('use_bassin_Medit',      use_bassin_Medit)
-         CALL get_in('use_bassin_Indian',     use_bassin_Indian)
-         CALL get_in('use_bassin_Austral',    use_bassin_Austral)
-         CALL get_in('use_bassin_Pacific',    use_bassin_Pacific)
-         CALL get_in('use_bassin_MerArabie',  use_bassin_MerArabie)
-         CALL get_in('use_bassin_BengalGolf', use_bassin_BengalGolf)
-         CALL get_in('use_bassin_SouthIndian',use_bassin_SouthIndian)
-         CALL get_in('use_bassin_Tropics',    use_bassin_Tropics)
-         CALL get_in('use_bassin_Midlats',    use_bassin_Midlats)
-         CALL get_in('use_bassin_HighLats',   use_bassin_HighLats)
+         CALL getin_p('use_bassin_Atlantic',   use_bassin_Atlantic)
+         CALL getin_p('use_bassin_Medit',      use_bassin_Medit)
+         CALL getin_p('use_bassin_Indian',     use_bassin_Indian)
+         CALL getin_p('use_bassin_Austral',    use_bassin_Austral)
+         CALL getin_p('use_bassin_Pacific',    use_bassin_Pacific)
+         CALL getin_p('use_bassin_MerArabie',  use_bassin_MerArabie)
+         CALL getin_p('use_bassin_BengalGolf', use_bassin_BengalGolf)
+         CALL getin_p('use_bassin_SouthIndian',use_bassin_SouthIndian)
+         CALL getin_p('use_bassin_Tropics',    use_bassin_Tropics)
+         CALL getin_p('use_bassin_Midlats',    use_bassin_Midlats)
+         CALL getin_p('use_bassin_HighLats',   use_bassin_HighLats)
          nzone_opt  =  2  +  COUNT([use_bassin_Atlantic, use_bassin_Medit,     use_bassin_Indian,     &
             use_bassin_Austral,     use_bassin_Pacific,  use_bassin_MerArabie, use_bassin_BengalGolf, &
@@ -353,5 +356,5 @@
          ! 1 par defaut pour colorier a la fois condensat LS et condensat convectif.
          ! Mais on peut mettre 2 si on ne veut que colorier que le condensat convectif.
-         CALL get_in('option_cond',option_cond)
+         CALL getin_p('option_cond',option_cond)
          strtrac(izone_poubelle)='res'
          strtrac(izone_cond)='con'
@@ -587,5 +590,5 @@
       CASE(20)     !=== TRACING TROPICAL/EXTRATROPICAL/EXTRATROPICAL RECYCLING TO STUDY HUMIDITY AND SUBTROPICAL ISOTOPES CONTROL
       !========================================================================================================================
-         CALL get_in('lim_tag20', lim_tag20, 35.0)
+         CALL getin_p('lim_tag20', lim_tag20, 35.0)
          nzone_opt=3
          izone_cont=1
@@ -622,5 +625,5 @@
       CASE(22)     !=== TRACING WATER VAPOUR PROCESSED IN THE 3-LEVELS SCONVECTION ZONES BT, MT AND UT
       !========================================================================================================================
-         CALL get_in('lim_precip_tag22', lim_precip_tag22, 20.0)
+         CALL getin_p('lim_precip_tag22', lim_precip_tag22, 20.0)
          nzone_opt=3
          izone_cont=1
@@ -650,7 +653,7 @@
    IF(option_tmin == 1) THEN
       seuil_tag_tmin = 0.01
-      CALL get_in('seuil_tag_tmin',        seuil_tag_tmin,        0.01)
-      CALL get_in('seuil_tag_tmin_ls',     seuil_tag_tmin_ls,     seuil_tag_tmin)
-      CALL get_in('option_seuil_tag_tmin', option_seuil_tag_tmin, 1)
+      CALL getin_p('seuil_tag_tmin',        seuil_tag_tmin,        0.01)
+      CALL getin_p('seuil_tag_tmin_ls',     seuil_tag_tmin_ls,     seuil_tag_tmin)
+      CALL getin_p('option_seuil_tag_tmin', option_seuil_tag_tmin, 1)
    END IF
 
