Index: LMDZ6/branches/Amaury_dev/libf/dyn3d/bilan_dyn.F90
===================================================================
--- LMDZ6/branches/Amaury_dev/libf/dyn3d/bilan_dyn.F90	(revision 5134)
+++ LMDZ6/branches/Amaury_dev/libf/dyn3d/bilan_dyn.F90	(revision 5135)
@@ -60,8 +60,8 @@
 
 
-  !ym      character*6 nom(nQ)
-  !ym      character*6 unites(nQ)
-  character*6, save :: nom(nQ)
-  character*6, save :: unites(nQ)
+  !ym      CHARACTER*6 nom(nQ)
+  !ym      CHARACTER*6 unites(nQ)
+  CHARACTER*6, save :: nom(nQ)
+  CHARACTER*6, save :: unites(nQ)
 
   CHARACTER(LEN = 10) :: file
@@ -116,10 +116,10 @@
   parameter (ntr = 5)
 
-  !ym      character*10 znom(ntr,nQ)
-  !ym      character*20 znoml(ntr,nQ)
-  !ym      character*10 zunites(ntr,nQ)
-  character*10, save :: znom(ntr, nQ)
-  character*20, save :: znoml(ntr, nQ)
-  character*10, save :: zunites(ntr, nQ)
+  !ym      CHARACTER*10 znom(ntr,nQ)
+  !ym      CHARACTER*20 znoml(ntr,nQ)
+  !ym      CHARACTER*10 zunites(ntr,nQ)
+  CHARACTER*10, save :: znom(ntr, nQ)
+  CHARACTER*20, save :: znoml(ntr, nQ)
+  CHARACTER*10, save :: zunites(ntr, nQ)
 
   INTEGER :: iave, itot, immc, itrs, istn
Index: LMDZ6/branches/Amaury_dev/libf/dyn3d_common/gradsdef.h
===================================================================
--- LMDZ6/branches/Amaury_dev/libf/dyn3d_common/gradsdef.h	(revision 5134)
+++ LMDZ6/branches/Amaury_dev/libf/dyn3d_common/gradsdef.h	(revision 5135)
@@ -15,6 +15,6 @@
 LOGICAL firsttime(nfmx)
 
-character*10 var(nvarmx,nfmx),fichier(nfmx)
-character*40 title(nfmx),tvar(nvarmx,nfmx)
+CHARACTER*10 var(nvarmx,nfmx),fichier(nfmx)
+CHARACTER*40 title(nfmx),tvar(nvarmx,nfmx)
 
 common/gradsdef/xd,yd,zd,dtime, &
Index: LMDZ6/branches/Amaury_dev/libf/dyn3dmem/bilan_dyn_loc.f90
===================================================================
--- LMDZ6/branches/Amaury_dev/libf/dyn3dmem/bilan_dyn_loc.f90	(revision 5134)
+++ LMDZ6/branches/Amaury_dev/libf/dyn3dmem/bilan_dyn_loc.f90	(revision 5135)
@@ -68,6 +68,6 @@
 
 
-  !ym      character*6 nom(nQ)
-  !ym      character*6 unites(nQ)
+  !ym      CHARACTER*6 nom(nQ)
+  !ym      CHARACTER*6 unites(nQ)
   CHARACTER(LEN=6),save :: nom(nQ)
   CHARACTER(LEN=6),save :: unites(nQ)
@@ -114,10 +114,10 @@
   parameter (ntr=5)
 
-  !ym      character*10 znom(ntr,nQ)
-  !ym      character*20 znoml(ntr,nQ)
-  !ym      character*10 zunites(ntr,nQ)
-  character*10,save :: znom(ntr,nQ)
-  character*20,save :: znoml(ntr,nQ)
-  character*10,save :: zunites(ntr,nQ)
+  !ym      CHARACTER*10 znom(ntr,nQ)
+  !ym      CHARACTER*20 znoml(ntr,nQ)
+  !ym      CHARACTER*10 zunites(ntr,nQ)
+  CHARACTER*10,save :: znom(ntr,nQ)
+  CHARACTER*20,save :: znoml(ntr,nQ)
+  CHARACTER*10,save :: zunites(ntr,nQ)
 
   INTEGER,PARAMETER :: iave=1,itot=2,immc=3,itrs=4,istn=5
Index: LMDZ6/branches/Amaury_dev/libf/phydev/iophy.F90
===================================================================
--- LMDZ6/branches/Amaury_dev/libf/phydev/iophy.F90	(revision 5134)
+++ LMDZ6/branches/Amaury_dev/libf/phydev/iophy.F90	(revision 5135)
@@ -145,5 +145,5 @@
     IMPLICIT NONE
 
-    character*(*), INTENT(IN) :: name
+    CHARACTER*(*), INTENT(IN) :: name
     INTEGER, INTENT(IN) :: itau0
     REAL, INTENT(IN) :: zjulian
@@ -173,5 +173,5 @@
     IMPLICIT NONE
 
-    character*(*), INTENT(IN) :: name
+    CHARACTER*(*), INTENT(IN) :: name
     !    INTEGER, INTENT(IN) :: itau0
     !    REAL,INTENT(IN) :: zjulian
@@ -209,5 +209,5 @@
     INTEGER, INTENT(IN) :: nid
     logical, INTENT(IN) :: lpoint
-    character*(*), INTENT(IN) :: name
+    CHARACTER*(*), INTENT(IN) :: name
     INTEGER, INTENT(IN) :: itau
     REAL, DIMENSION(:), INTENT(IN) :: field
@@ -269,5 +269,5 @@
     INTEGER, INTENT(IN) :: nid
     logical, INTENT(IN) :: lpoint
-    character*(*), INTENT(IN) :: name
+    CHARACTER*(*), INTENT(IN) :: name
     INTEGER, INTENT(IN) :: itau
     REAL, DIMENSION(:, :), INTENT(IN) :: field  ! --> field(klon,:)
Index: LMDZ6/branches/Amaury_dev/libf/phylmd/Dust/minmaxqfi2.f90
===================================================================
--- LMDZ6/branches/Amaury_dev/libf/phylmd/Dust/minmaxqfi2.f90	(revision 5134)
+++ LMDZ6/branches/Amaury_dev/libf/phylmd/Dust/minmaxqfi2.f90	(revision 5135)
@@ -6,5 +6,5 @@
   INCLUDE "dimensions.h"
 
-  ! character*20 comment
+  ! CHARACTER*20 comment
   CHARACTER(LEN = *) :: comment
   REAL :: qmin, qmax
Index: LMDZ6/branches/Amaury_dev/libf/phylmd/Dust/minmaxsource.f90
===================================================================
--- LMDZ6/branches/Amaury_dev/libf/phylmd/Dust/minmaxsource.f90	(revision 5134)
+++ LMDZ6/branches/Amaury_dev/libf/phylmd/Dust/minmaxsource.f90	(revision 5135)
@@ -7,5 +7,5 @@
   INCLUDE "dimensions.h"
 
-  ! character*20 comment
+  ! CHARACTER*20 comment
   CHARACTER(LEN = *) :: comment
   REAL :: qmin, qmax
Index: LMDZ6/branches/Amaury_dev/libf/phylmd/Dust/read_surface.F90
===================================================================
--- LMDZ6/branches/Amaury_dev/libf/phylmd/Dust/read_surface.F90	(revision 5134)
+++ LMDZ6/branches/Amaury_dev/libf/phylmd/Dust/read_surface.F90	(revision 5135)
@@ -15,6 +15,6 @@
        INCLUDE "paramet.h"
 
-       character*10 name
-       character*10 varname
+       CHARACTER*10 name
+       CHARACTER*10 varname
 
        REAL tmp_dyn(iip1,jjp1)
@@ -32,8 +32,8 @@
        INTEGER start(2),count(2),status
        INTEGER i,j,l,ig
-       character*1 str1
+       CHARACTER*1 str1
 
 !JE20140526<<
-      character*4 ::  latstr,aux4s
+      CHARACTER*4 ::  latstr,aux4s
       LOGICAL :: outcycle, isinversed
       REAL, DIMENSION(jjp1) :: lats
Index: LMDZ6/branches/Amaury_dev/libf/phylmd/dyn1d/1D_decl_cases.h
===================================================================
--- LMDZ6/branches/Amaury_dev/libf/phylmd/dyn1d/1D_decl_cases.h	(revision 5134)
+++ LMDZ6/branches/Amaury_dev/libf/phylmd/dyn1d/1D_decl_cases.h	(revision 5135)
@@ -1,5 +1,5 @@
 
 ! Declarations specifiques au cas Toga
-        character*80 :: fich_toga
+        CHARACTER*80 :: fich_toga
 !        integer nlev_prof
 !        parameter (nlev_prof = 41)
@@ -42,5 +42,5 @@
 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 ! Declarations specifiques au cas RICO
-        character*80 :: fich_rico
+        CHARACTER*80 :: fich_rico
         INTEGER nlev_rico
 
@@ -54,5 +54,5 @@
 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 ! Declarations specifiques au cas TWPice
-        character*80 :: fich_twpice
+        CHARACTER*80 :: fich_twpice
         INTEGER nlev_twpi, nt_twpi
         parameter (nlev_twpi=40, nt_twpi=215)
@@ -84,5 +84,5 @@
 
 !Declarations specifiques au cas FIRE
-        character*80 :: fich_fire
+        CHARACTER*80 :: fich_fire
         INTEGER nlev_fire, nt_fire
         parameter (nlev_fire=120, nt_fire=1)  
@@ -97,5 +97,5 @@
 !Declarations specifiques au cas GABLS4   (MPL 20141023)
 !FHADETRUIRE
-!       character*80 :: fich_gabls4
+!       CHARACTER*80 :: fich_gabls4
 !       integer nlev_gabls4, nt_gabls4, nsol_gabls4
 !       parameter (nlev_gabls4=90, nt_gabls4=37, nsol_gabls4=19)  
@@ -132,5 +132,5 @@
 
 !Declarations specifiques au cas DICE     (MPL 02072013)
-        character*80 :: fich_dice
+        CHARACTER*80 :: fich_dice
         INTEGER nlev_dice, nt_dice
         parameter (nlev_dice=70, nt_dice=145)  
@@ -178,6 +178,6 @@
 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 ! Declarations specifiques au cas GCSSold
-        character*80 :: fich_gcssold_ctl
-        character*80 :: fich_gcssold_dat
+        CHARACTER*80 :: fich_gcssold_ctl
+        CHARACTER*80 :: fich_gcssold_dat
         real  ht_gcssold(llm),hq_gcssold(llm),hw_gcssold(llm)
         real  hu_gcssold(llm)
@@ -193,5 +193,5 @@
 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 ! Declarations specifiques au cas Arm_cu
-        character*80 :: fich_armcu
+        CHARACTER*80 :: fich_armcu
 
 
@@ -218,5 +218,5 @@
 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 ! declarations specifiques au cas Sandu
-        character*80 :: fich_sandu
+        CHARACTER*80 :: fich_sandu
 !        integer nlev_prof
 !        parameter (nlev_prof = 41)
@@ -256,5 +256,5 @@
 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 ! Declarations specifiques au cas Astex
-        character*80 :: fich_astex
+        CHARACTER*80 :: fich_astex
         INTEGER nlev_astex, nt_astex
         parameter (nlev_astex=34, nt_astex=49)
Index: LMDZ6/branches/Amaury_dev/libf/phylmd/dyn1d/comdissnew.h
===================================================================
--- LMDZ6/branches/Amaury_dev/libf/phylmd/dyn1d/comdissnew.h	(revision 5134)
+++ 	(revision )
@@ -1,1 +1,0 @@
-link ../../dyn3d_common/comdissnew.h
Index: LMDZ6/branches/Amaury_dev/libf/phylmd/dyn1d/fcg_racmo.h
===================================================================
--- LMDZ6/branches/Amaury_dev/libf/phylmd/dyn1d/fcg_racmo.h	(revision 5134)
+++ LMDZ6/branches/Amaury_dev/libf/phylmd/dyn1d/fcg_racmo.h	(revision 5135)
@@ -5,5 +5,5 @@
       LOGICAL :: ok_invertp
       INTEGER :: forc_trb
-      character*31 :: fich_racmo
+      CHARACTER*31 :: fich_racmo
 
       common /fcg_racmo/forc_trb,ok_invertp,a_guide,fich_racmo
Index: LMDZ6/branches/Amaury_dev/libf/phylmd/dyn1d/lmdz_1dutils.f90
===================================================================
--- LMDZ6/branches/Amaury_dev/libf/phylmd/dyn1d/lmdz_1dutils.f90	(revision 5134)
+++ LMDZ6/branches/Amaury_dev/libf/phylmd/dyn1d/lmdz_1dutils.f90	(revision 5135)
@@ -742,7 +742,7 @@
     PARAMETER (length = 100)
     REAL tab_cntrl(length) ! tableau des parametres du run
-    character*4 nmq(nqtot)
-    character*12 modname
-    character*80 abort_message
+    CHARACTER*4 nmq(nqtot)
+    CHARACTER*12 modname
+    CHARACTER*80 abort_message
     LOGICAL found
 
@@ -878,7 +878,7 @@
     PARAMETER (length = 100)
     REAL tab_cntrl(length) ! tableau des parametres du run
-    character*4 nmq(nqtot)
-    character*20 modname
-    character*80 abort_message
+    CHARACTER*4 nmq(nqtot)
+    CHARACTER*20 modname
+    CHARACTER*80 abort_message
 
     INTEGER pass
Index: LMDZ6/branches/Amaury_dev/libf/phylmd/dyn1d/lmdz_comdissnew.f90
===================================================================
--- LMDZ6/branches/Amaury_dev/libf/phylmd/dyn1d/lmdz_comdissnew.f90	(revision 5135)
+++ LMDZ6/branches/Amaury_dev/libf/phylmd/dyn1d/lmdz_comdissnew.f90	(revision 5135)
@@ -0,0 +1,1 @@
+link ../../dyn3d_common/lmdz_comdissnew.f90
Index: LMDZ6/branches/Amaury_dev/libf/phylmd/dyn1d/lmdz_old_1dconv.f90
===================================================================
--- LMDZ6/branches/Amaury_dev/libf/phylmd/dyn1d/lmdz_old_1dconv.f90	(revision 5134)
+++ LMDZ6/branches/Amaury_dev/libf/phylmd/dyn1d/lmdz_old_1dconv.f90	(revision 5135)
@@ -115,5 +115,5 @@
     save timeaft, timebef
     INTEGER temps
-    character*4 string
+    CHARACTER*4 string
     !----------------------------------------------------------------------
     ! variables arguments de la subroutine rdgrads
@@ -142,5 +142,5 @@
     ! variables destinees a la lecture du pas de temps du fichier de donnees
     !---------------------------------------------------------------------
-    character*80 aaa, atemps, apasmax
+    CHARACTER*80 aaa, atemps, apasmax
     INTEGER nch, imn, ipa
     !---------------------------------------------------------------------
@@ -509,5 +509,5 @@
     REAL playgcm(klevgcm) ! pression en milieu de couche du gcm
     REAL psolgcm
-    character*80 file_forctl
+    CHARACTER*80 file_forctl
 
     klev = klevgcm
@@ -577,8 +577,8 @@
     INTEGER i, lu, mlz, mlzh
 
-    character*80 file_forctl
-
-    character*4 a
-    character*80 aaa, anblvl
+    CHARACTER*80 file_forctl
+
+    CHARACTER*4 a
+    CHARACTER*80 aaa, anblvl
     INTEGER nch
 
Index: LMDZ6/branches/Amaury_dev/libf/phylmd/dyn1d/mod_1D_amma_read.F90
===================================================================
--- LMDZ6/branches/Amaury_dev/libf/phylmd/dyn1d/mod_1D_amma_read.F90	(revision 5134)
+++ LMDZ6/branches/Amaury_dev/libf/phylmd/dyn1d/mod_1D_amma_read.F90	(revision 5135)
@@ -4,5 +4,5 @@
 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 !Declarations specifiques au cas AMMA
-        character*80 :: fich_amma
+        CHARACTER*80 :: fich_amma
 ! Option du cas AMMA ou on impose la discretisation verticale (Ap,Bp)
         INTEGER nlev_amma, nt_amma
Index: LMDZ6/branches/Amaury_dev/libf/phylmd/dyn1d/mod_1D_cases_read.F90
===================================================================
--- LMDZ6/branches/Amaury_dev/libf/phylmd/dyn1d/mod_1D_cases_read.F90	(revision 5134)
+++ LMDZ6/branches/Amaury_dev/libf/phylmd/dyn1d/mod_1D_cases_read.F90	(revision 5135)
@@ -5,5 +5,5 @@
 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 !Declarations specifiques au cas standard
-        character*80 :: fich_cas
+        CHARACTER*80 :: fich_cas
 ! Discr?tisation
         INTEGER nlev_cas, nt_cas
Index: LMDZ6/branches/Amaury_dev/libf/phylmd/dyn1d/mod_1D_cases_read2.F90
===================================================================
--- LMDZ6/branches/Amaury_dev/libf/phylmd/dyn1d/mod_1D_cases_read2.F90	(revision 5134)
+++ LMDZ6/branches/Amaury_dev/libf/phylmd/dyn1d/mod_1D_cases_read2.F90	(revision 5135)
@@ -7,5 +7,5 @@
 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
   !Declarations specifiques au cas standard
-  character*80 :: fich_cas
+  CHARACTER*80 :: fich_cas
   ! Discr?tisation 
   INTEGER nlev_cas, nt_cas
@@ -563,5 +563,5 @@
   parameter(nbvar3d=39)
   INTEGER var3didin(nbvar3d)
-  character*5 name_var(1:nbvar3d)
+  CHARACTER*5 name_var(1:nbvar3d)
   data name_var/'zz','pp','temp','qv','rh','theta','rv','u','v','ug','vg','w','advu','hu','vu',&
        'advv','hv','vv','advT','hT','vT','advq','hq','vq','advth','hth','vth','advr','hr','vr',&
@@ -680,5 +680,5 @@
   parameter(nbvar3d=62)
   INTEGER var3didin(nbvar3d),missing_var(nbvar3d)
-  character*12 name_var(1:nbvar3d)
+  CHARACTER*12 name_var(1:nbvar3d)
   data name_var/'coor_par_a','coor_par_b','height_h','pressure_h',&
        'w','omega','ug','vg','uadv','uadvh','uadvv','vadv','vadvh','vadvv','tadv','tadvh','tadvv',&
@@ -852,5 +852,5 @@
   parameter(nbvar3d=70)
   INTEGER var3didin(nbvar3d),missing_var(nbvar3d)
-  character*13 name_var(1:nbvar3d)
+  CHARACTER*13 name_var(1:nbvar3d)
   data name_var/'coor_par_a','coor_par_b','height_h','pressure_h',&
        'temp','qv','ql','qi','u','v','tke','pressure',&
Index: LMDZ6/branches/Amaury_dev/libf/phylmd/dyn1d/mod_1D_cases_read_std.F90
===================================================================
--- LMDZ6/branches/Amaury_dev/libf/phylmd/dyn1d/mod_1D_cases_read_std.F90	(revision 5134)
+++ LMDZ6/branches/Amaury_dev/libf/phylmd/dyn1d/mod_1D_cases_read_std.F90	(revision 5135)
@@ -8,5 +8,5 @@
 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
   !Declarations specifiques au cas standard
-  character*80 :: fich_cas
+  CHARACTER*80 :: fich_cas
   ! Discr?tisation 
   INTEGER nlev_cas, nt_cas
@@ -365,5 +365,5 @@
     parameter(nbvar3d=78)
     INTEGER var3didin(nbvar3d),missing_var(nbvar3d)
-    character*13 name_var(1:nbvar3d)
+    CHARACTER*13 name_var(1:nbvar3d)
 
 
Index: LMDZ6/branches/Amaury_dev/libf/phylmd/dyn1d/old_1DUTILS_read_interp.h
===================================================================
--- LMDZ6/branches/Amaury_dev/libf/phylmd/dyn1d/old_1DUTILS_read_interp.h	(revision 5134)
+++ LMDZ6/branches/Amaury_dev/libf/phylmd/dyn1d/old_1DUTILS_read_interp.h	(revision 5135)
@@ -16,5 +16,5 @@
       REAL ht_toga(nlev_toga,nt_toga),vt_toga(nlev_toga,nt_toga)
       REAL hq_toga(nlev_toga,nt_toga),vq_toga(nlev_toga,nt_toga)
-      character*80 fich_toga
+      CHARACTER*80 fich_toga
 
       INTEGER k,ip
@@ -73,5 +73,5 @@
       INTEGER nlev_sandu,nt_sandu
       REAL ts_sandu(nt_sandu)
-      character*80 fich_sandu
+      CHARACTER*80 fich_sandu
 
       INTEGER ip
@@ -111,5 +111,5 @@
       REAL div_astex(nt_astex),ts_astex(nt_astex),ug_astex(nt_astex)
       REAL vg_astex(nt_astex),ufa_astex(nt_astex),vfa_astex(nt_astex)
-      character*80 fich_astex
+      CHARACTER*80 fich_astex
 
       INTEGER ip
@@ -154,5 +154,5 @@
       INTEGER ntime,nlevel
       INTEGER l,k
-      character*80 :: fich_twpice
+      CHARACTER*80 :: fich_twpice
       real*8 time(ntime)
       real*8 lat, lon, alt, phis
@@ -794,5 +794,5 @@
       REAL prico(nlev_rico),zrico(nlev_rico)
 
-      character*80 fich_rico
+      CHARACTER*80 fich_rico
 
       INTEGER k,l
@@ -1019,5 +1019,5 @@
       REAL sens(nt_armcu),flat(nt_armcu)
       REAL adv_theta(nt_armcu),rad_theta(nt_armcu),adv_qt(nt_armcu)
-      character*80 fich_armcu
+      CHARACTER*80 fich_armcu
 
       INTEGER ip
@@ -2164,5 +2164,5 @@
 
       INTEGER ntime,nlevel
-      character*80 :: fich_fire
+      CHARACTER*80 :: fich_fire
       real*8 zz(nlevel)
 
@@ -2378,5 +2378,5 @@
       INTEGER ntime,nlevel
       INTEGER l,k
-      character*80 :: fich_dice
+      CHARACTER*80 :: fich_dice
       real*8 time(ntime)
       real*8 zz(nlevel)
@@ -2710,5 +2710,5 @@
       INTEGER ntime,nlevel,nsol
       INTEGER l,k
-      character*80 :: fich_gabls4
+      CHARACTER*80 :: fich_gabls4
       real*8 time(ntime)
 
Index: LMDZ6/branches/Amaury_dev/libf/phylmd/dyn1d/old_1D_decl_cases.h
===================================================================
--- LMDZ6/branches/Amaury_dev/libf/phylmd/dyn1d/old_1D_decl_cases.h	(revision 5134)
+++ LMDZ6/branches/Amaury_dev/libf/phylmd/dyn1d/old_1D_decl_cases.h	(revision 5135)
@@ -1,5 +1,5 @@
 
 ! Declarations specifiques au cas Toga
-        character*80 :: fich_toga
+        CHARACTER*80 :: fich_toga
 !        integer nlev_prof
 !        parameter (nlev_prof = 41)
@@ -40,5 +40,5 @@
 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 ! Declarations specifiques au cas RICO
-        character*80 :: fich_rico
+        CHARACTER*80 :: fich_rico
         INTEGER nlev_rico
 
@@ -52,5 +52,5 @@
 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 ! Declarations specifiques au cas TWPice
-        character*80 :: fich_twpice
+        CHARACTER*80 :: fich_twpice
         INTEGER nlev_twpi, nt_twpi
         parameter (nlev_twpi=40, nt_twpi=215)
@@ -82,5 +82,5 @@
 
 !Declarations specifiques au cas FIRE
-        character*80 :: fich_fire
+        CHARACTER*80 :: fich_fire
         INTEGER nlev_fire, nt_fire
         parameter (nlev_fire=120, nt_fire=1)  
@@ -94,5 +94,5 @@
 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 !Declarations specifiques au cas GABLS4   (MPL 20141023)
-        character*80 :: fich_gabls4
+        CHARACTER*80 :: fich_gabls4
         INTEGER nlev_gabls4, nt_gabls4, nsol_gabls4
         parameter (nlev_gabls4=90, nt_gabls4=37, nsol_gabls4=19)  
@@ -128,5 +128,5 @@
 
 !Declarations specifiques au cas DICE     (MPL 02072013)
-        character*80 :: fich_dice
+        CHARACTER*80 :: fich_dice
         INTEGER nlev_dice, nt_dice
         parameter (nlev_dice=70, nt_dice=145)  
@@ -174,6 +174,6 @@
 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 ! Declarations specifiques au cas GCSSold
-        character*80 :: fich_gcssold_ctl
-        character*80 :: fich_gcssold_dat
+        CHARACTER*80 :: fich_gcssold_ctl
+        CHARACTER*80 :: fich_gcssold_dat
         real  ht_gcssold(llm),hq_gcssold(llm),hw_gcssold(llm)
         real  hu_gcssold(llm)
@@ -189,5 +189,5 @@
 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 ! Declarations specifiques au cas Arm_cu
-        character*80 :: fich_armcu
+        CHARACTER*80 :: fich_armcu
 
 
@@ -214,5 +214,5 @@
 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 ! declarations specifiques au cas Sandu
-        character*80 :: fich_sandu
+        CHARACTER*80 :: fich_sandu
 !        integer nlev_prof
 !        parameter (nlev_prof = 41)
@@ -252,5 +252,5 @@
 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 ! Declarations specifiques au cas Astex
-        character*80 :: fich_astex
+        CHARACTER*80 :: fich_astex
         INTEGER nlev_astex, nt_astex
         parameter (nlev_astex=34, nt_astex=49)
Index: LMDZ6/branches/Amaury_dev/libf/phylmd/dyn1d/replay1d.F90
===================================================================
--- LMDZ6/branches/Amaury_dev/libf/phylmd/dyn1d/replay1d.F90	(revision 5134)
+++ LMDZ6/branches/Amaury_dev/libf/phylmd/dyn1d/replay1d.F90	(revision 5135)
@@ -6,4 +6,5 @@
   USE comvert_mod, ONLY: preff, pa
   USE ioipsl, ONLY: getin
+  USE lmdz_iotd, ONLY: iotd_ini
 
   IMPLICIT NONE
Index: LMDZ6/branches/Amaury_dev/libf/phylmd/ener_conserv.F90
===================================================================
--- LMDZ6/branches/Amaury_dev/libf/phylmd/ener_conserv.F90	(revision 5134)
+++ LMDZ6/branches/Amaury_dev/libf/phylmd/ener_conserv.F90	(revision 5135)
@@ -56,6 +56,6 @@
 REAL ZRCPD
 
-character*80 abort_message
-character*20 :: modname
+CHARACTER*80 abort_message
+CHARACTER*20 :: modname
 
 
Index: LMDZ6/branches/Amaury_dev/libf/phylmd/iophys.F90
===================================================================
--- LMDZ6/branches/Amaury_dev/libf/phylmd/iophys.F90	(revision 5134)
+++ LMDZ6/branches/Amaury_dev/libf/phylmd/iophys.F90	(revision 5135)
@@ -4,67 +4,68 @@
 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 
-      SUBROUTINE iophys_ecrit(nom,lllm,titre,unite,px)
-
-      USE lmdz_phys_para, ONLY: klon_omp, is_mpi_root
-      USE lmdz_phys_transfert_para, ONLY: gather
-      USE lmdz_grid_phy, ONLY: klon_glo, nbp_lon, nbp_lat, grid1dto2d_glo
-      IMPLICIT NONE
-
-
-
-!  Ecriture de variables diagnostiques au choix dans la physique 
-!  dans un fichier NetCDF nomme  'diagfi'. Ces variables peuvent etre
-!  3d (ex : temperature), 2d (ex : temperature de surface), ou
-!  0d (pour un scalaire qui ne depend que du temps : ex : la longitude
-!  solaire)
-!  (ou encore 1d, dans le cas de testphys1d, pour sortir une colonne)
-!  La periode d'ecriture est donnee par 
-!  "ecritphy " regle dans le fichier de controle de run :  run.def
-
-!    writediagfi peut etre appele de n'importe quelle subroutine
-!    de la physique, plusieurs fois. L'initialisation et la creation du
-!    fichier se fait au tout premier appel.
-
-! WARNING : les variables dynamique (u,v,t,q,ps)
-!  sauvees par writediagfi avec une
-! date donnee sont legerement differentes que dans le fichier histoire car 
-! on ne leur a pas encore ajoute de la dissipation et de la physique !!!
-! IL est  RECOMMANDE d'ajouter les tendance physique a ces variables
-! avant l'ecriture dans diagfi (cf. physiq.F)
-
-! Modifs: Aug.2010 Ehouarn: enforce outputs to be real*4
-
-!  parametres (input) :
-!  ----------
-!      unit : unite logique du fichier de sortie (toujours la meme)
-!      nom  : nom de la variable a sortir (chaine de caracteres)
-!      titre: titre de la variable (chaine de caracteres)
-!      unite : unite de la variable (chaine de caracteres)
-!      px : variable a sortir (real 0, 1, 2, ou 3d)
-
-!=================================================================
-
-
-! Arguments on input:
-      INTEGER lllm
-      CHARACTER (LEN=*) :: nom,titre,unite
-      INTEGER imjmax
-      parameter (imjmax=100000)
-      REAL px(klon_omp,lllm)
-      REAL xglo(klon_glo,lllm)
-      REAL zx(nbp_lon,nbp_lat,lllm)
-
-
-
-      CALL Gather(px,xglo)
-!$OMP MASTER
-      IF (is_mpi_root) THEN       
-        CALL Grid1Dto2D_glo(xglo,zx)
-        CALL iotd_ecrit(nom,lllm,titre,unite,zx)
-      ENDIF
-!$OMP END MASTER
-
-      RETURN
-      end
+SUBROUTINE iophys_ecrit(nom, lllm, titre, unite, px)
+
+  USE lmdz_phys_para, ONLY: klon_omp, is_mpi_root
+  USE lmdz_phys_transfert_para, ONLY: gather
+  USE lmdz_grid_phy, ONLY: klon_glo, nbp_lon, nbp_lat, grid1dto2d_glo
+  USE lmdz_iotd, ONLY: iotd_ecrit
+
+
+  IMPLICIT NONE
+
+
+
+  !  Ecriture de variables diagnostiques au choix dans la physique
+  !  dans un fichier NetCDF nomme  'diagfi'. Ces variables peuvent etre
+  !  3d (ex : temperature), 2d (ex : temperature de surface), ou
+  !  0d (pour un scalaire qui ne depend que du temps : ex : la longitude
+  !  solaire)
+  !  (ou encore 1d, dans le cas de testphys1d, pour sortir une colonne)
+  !  La periode d'ecriture est donnee par
+  !  "ecritphy " regle dans le fichier de controle de run :  run.def
+
+  !    writediagfi peut etre appele de n'importe quelle subroutine
+  !    de la physique, plusieurs fois. L'initialisation et la creation du
+  !    fichier se fait au tout premier appel.
+
+  ! WARNING : les variables dynamique (u,v,t,q,ps)
+  !  sauvees par writediagfi avec une
+  ! date donnee sont legerement differentes que dans le fichier histoire car
+  ! on ne leur a pas encore ajoute de la dissipation et de la physique !!!
+  ! IL est  RECOMMANDE d'ajouter les tendance physique a ces variables
+  ! avant l'ecriture dans diagfi (cf. physiq.F)
+
+  ! Modifs: Aug.2010 Ehouarn: enforce outputs to be real*4
+
+  !  parametres (input) :
+  !  ----------
+  !      unit : unite logique du fichier de sortie (toujours la meme)
+  !      nom  : nom de la variable a sortir (chaine de caracteres)
+  !      titre: titre de la variable (chaine de caracteres)
+  !      unite : unite de la variable (chaine de caracteres)
+  !      px : variable a sortir (real 0, 1, 2, ou 3d)
+
+  !=================================================================
+
+
+  ! Arguments on input:
+  INTEGER lllm
+  CHARACTER (LEN = *) :: nom, titre, unite
+  INTEGER imjmax
+  parameter (imjmax = 100000)
+  REAL px(klon_omp, lllm)
+  REAL xglo(klon_glo, lllm)
+  REAL zx(nbp_lon, nbp_lat, lllm)
+
+  CALL Gather(px, xglo)
+  !$OMP MASTER
+  IF (is_mpi_root) THEN
+    CALL Grid1Dto2D_glo(xglo, zx)
+    CALL iotd_ecrit(nom, lllm, titre, unite, zx)
+  ENDIF
+  !$OMP END MASTER
+
+  RETURN
+end
 
 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -74,114 +75,114 @@
 
 
-    SUBROUTINE iophys_ecrit_index(nom,lllm,titre,unite,knon,knindex,px)
-
-    USE lmdz_phys_para, ONLY: klon_omp
-    USE dimphy, ONLY: klon
-    USE lmdz_grid_phy, ONLY: klon_glo
-    USE lmdz_abort_physic, ONLY: abort_physic
-    IMPLICIT NONE
-
-! This SUBROUTINE returns the sea surface temperature already read from limit.nc
-
-! Arguments on input:
-    INTEGER lllm
-    CHARACTER (len=*) :: nom,titre,unite
-    REAL px(klon_omp,lllm)
-    INTEGER, INTENT(IN)                  :: knon     ! nomber of points on compressed grid
-    INTEGER, DIMENSION(klon), INTENT(IN) :: knindex  ! grid point number for compressed grid
-    REAL, DIMENSION(klon,lllm) :: varout
-
-    INTEGER :: i,l
-
-    IF (klon/=klon_omp) THEN
-      PRINT*,'klon, klon_omp',klon,klon_omp
-      CALL abort_physic('iophys_ecrit','probleme de dimension parallele',1)
+SUBROUTINE iophys_ecrit_index(nom, lllm, titre, unite, knon, knindex, px)
+
+  USE lmdz_phys_para, ONLY: klon_omp
+  USE dimphy, ONLY: klon
+  USE lmdz_grid_phy, ONLY: klon_glo
+  USE lmdz_abort_physic, ONLY: abort_physic
+  IMPLICIT NONE
+
+  ! This SUBROUTINE returns the sea surface temperature already read from limit.nc
+
+  ! Arguments on input:
+  INTEGER lllm
+  CHARACTER (len = *) :: nom, titre, unite
+  REAL px(klon_omp, lllm)
+  INTEGER, INTENT(IN) :: knon     ! nomber of points on compressed grid
+  INTEGER, DIMENSION(klon), INTENT(IN) :: knindex  ! grid point number for compressed grid
+  REAL, DIMENSION(klon, lllm) :: varout
+
+  INTEGER :: i, l
+
+  IF (klon/=klon_omp) THEN
+    PRINT*, 'klon, klon_omp', klon, klon_omp
+    CALL abort_physic('iophys_ecrit', 'probleme de dimension parallele', 1)
+  ENDIF
+
+  varout(1:klon, 1:lllm) = 0.
+  DO l = 1, lllm
+    DO i = 1, knon
+      varout(knindex(i), l) = px(i, l)
+    END DO
+  END DO
+  CALL iophys_ecrit(nom, lllm, titre, unite, varout)
+
+END SUBROUTINE iophys_ecrit_index
+
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+SUBROUTINE iophys_ini(timestep)
+  USE lmdz_phys_para, ONLY: is_mpi_root
+  USE lmdz_vertical_layers, ONLY: presnivs
+  USE lmdz_regular_lonlat, ONLY: lon_reg, lat_reg
+  USE dimphy, ONLY: klev
+  USE lmdz_grid_phy, ONLY: klon_glo
+  USE time_phylmdz_mod, ONLY: annee_ref, day_ref, day_ini
+  USE phys_cal_mod, ONLY: calend
+  USE lmdz_iotd, ONLY: iotd_ini
+
+  IMPLICIT NONE
+
+  include "YOMCST.h"
+  !=======================================================================
+
+  !   Auteur:  L. Fairhead  ,  P. Le Van, Y. Wanherdrick, F. Forget
+  !   -------
+
+  !   Objet:
+  !   ------
+
+  !   'Initialize' the diagfi.nc file: write down dimensions as well
+  !   as time-independent fields (e.g: geopotential, mesh area, ...)
+
+  !=======================================================================
+  !-----------------------------------------------------------------------
+  !   Declarations:
+  !   -------------
+
+  REAL pi
+  INTEGER nlat_eff
+  INTEGER jour0, mois0, an0
+  REAL timestep, t0
+  CHARACTER(len = 20) :: calendrier
+
+  !   Arguments:
+  !   ----------
+
+
+  !$OMP MASTER
+  IF (is_mpi_root) THEN
+
+    ! Bidouille pour gerer le fait que lat_reg contient deux latitudes
+    ! en version uni-dimensionnelle (chose qui pourrait être résolue
+    ! par ailleurs)
+    IF (klon_glo==1) THEN
+      nlat_eff = 1
+    ELSE
+      nlat_eff = size(lat_reg)
     ENDIF
-
-    varout(1:klon,1:lllm)=0.
-    DO l = 1, lllm
-    DO i = 1, knon
-       varout(knindex(i),l) = px(i,l)
-    END DO
-    END DO
-    CALL iophys_ecrit(nom,lllm,titre,unite,varout)
-
-  END SUBROUTINE iophys_ecrit_index
-
-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-      SUBROUTINE iophys_ini(timestep)
-      USE lmdz_phys_para, ONLY: is_mpi_root
-      USE lmdz_vertical_layers, ONLY: presnivs
-      USE lmdz_regular_lonlat, ONLY: lon_reg, lat_reg
-      USE dimphy, ONLY: klev
-      USE lmdz_grid_phy, ONLY: klon_glo
-      USE time_phylmdz_mod, ONLY: annee_ref, day_ref, day_ini
-      USE phys_cal_mod, ONLY: calend
-
-      IMPLICIT NONE
-
-      include "YOMCST.h"
-!=======================================================================
-
-!   Auteur:  L. Fairhead  ,  P. Le Van, Y. Wanherdrick, F. Forget
-!   -------
-
-!   Objet:
-!   ------
-
-!   'Initialize' the diagfi.nc file: write down dimensions as well
-!   as time-independent fields (e.g: geopotential, mesh area, ...)
-
-!=======================================================================
-!-----------------------------------------------------------------------
-!   Declarations:
-!   -------------
-
-REAL pi
-INTEGER nlat_eff
-INTEGER jour0,mois0,an0
-REAL timestep,t0
-CHARACTER(len=20) :: calendrier
-
-!   Arguments:
-!   ----------
-
-
-!$OMP MASTER
-    IF (is_mpi_root) THEN       
-
-! Bidouille pour gerer le fait que lat_reg contient deux latitudes
-! en version uni-dimensionnelle (chose qui pourrait être résolue
-! par ailleurs)
-IF (klon_glo==1) THEN
-   nlat_eff=1
-ELSE
-   nlat_eff=size(lat_reg)
-ENDIF
-pi=2.*asin(1.)
-
-! PRINT*,'day_ini,annee_ref,day_ref',day_ini,annee_ref,day_ref
-! PRINT*,'jD_ref,jH_ref,start_time, calend',jD_ref,jH_ref,start_time, calend
-
-! Attention : les lignes ci dessous supposent un calendrier en 360 jours
-! Pourrait être retravaillé
-
-jour0=day_ref-30*(day_ref/30)
-mois0=day_ref/30+1
-an0=annee_ref
-!FH BIZARE QUAND 1D ...  t0=(day_ini-1)*RDAY
-t0=0.
-calendrier=calend
-IF ( calendrier == "earth_360d" ) calendrier="360_day"
-
-PRINT*,'iophys_ini annee_ref day_ref',annee_ref,day_ref,day_ini,calend,t0
-
-
-CALL iotd_ini('phys.nc', &
-size(lon_reg),nlat_eff,klev,lon_reg(:)*180./pi,lat_reg*180./pi,presnivs,jour0,mois0,an0,t0,timestep,calendrier)
-    ENDIF
-!$OMP END MASTER
-
-      END
+    pi = 2. * asin(1.)
+
+    ! PRINT*,'day_ini,annee_ref,day_ref',day_ini,annee_ref,day_ref
+    ! PRINT*,'jD_ref,jH_ref,start_time, calend',jD_ref,jH_ref,start_time, calend
+
+    ! Attention : les lignes ci dessous supposent un calendrier en 360 jours
+    ! Pourrait être retravaillé
+
+    jour0 = day_ref - 30 * (day_ref / 30)
+    mois0 = day_ref / 30 + 1
+    an0 = annee_ref
+    !FH BIZARE QUAND 1D ...  t0=(day_ini-1)*RDAY
+    t0 = 0.
+    calendrier = calend
+    IF (calendrier == "earth_360d") calendrier = "360_day"
+
+    PRINT*, 'iophys_ini annee_ref day_ref', annee_ref, day_ref, day_ini, calend, t0
+
+    CALL iotd_ini('phys.nc', &
+            size(lon_reg), nlat_eff, klev, lon_reg(:) * 180. / pi, lat_reg * 180. / pi, presnivs, jour0, mois0, an0, t0, timestep, calendrier)
+  ENDIF
+  !$OMP END MASTER
+
+END
 
 #ifdef und
@@ -214,51 +215,47 @@
 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 
-      SUBROUTINE iotd_ecrit_seq(nom,lllm,titre,unite,px)
-
-      IMPLICIT NONE
-
-! px arrive 
-
-      INCLUDE "iotd.h"
-
-
-! Arguments on input:
-      INTEGER lllm
-      CHARACTER (LEN=*) :: nom,titre,unite
-      INTEGER imjmax
-      parameter (imjmax=100000)
-      REAL px(imjmax*lllm)
-      REAL, ALLOCATABLE :: zx(:,:,:)
-      INTEGER i,j,l,ijl
-
-      allocate(zx(imax,jmax,lllm))
-
-      ijl=0
-      do l=1,lllm
-         ! Pole nord
-         ijl=ijl+1
-         do i=1,imax
-            zx(i,1,l)=px(ijl)
-         enddo
-         ! Grille normale
-         do j=2,jmax-1
-            do i=1,imax
-               ijl=ijl+1
-               zx(i,j,l)=px(ijl)
-            enddo
-         enddo
-         ! Pole sud
-         IF ( jmax > 1 ) THEN
-            ijl=ijl+1
-            do i=1,imax
-               zx(i,jmax,l)=px(ijl)
-            enddo
-         endif
+SUBROUTINE iotd_ecrit_seq(nom, lllm, titre, unite, px)
+  USE lmdz_iotd, ONLY: iotd_ecrit, imax, jmax
+
+  IMPLICIT NONE
+
+  ! Arguments on input:
+  INTEGER lllm
+  CHARACTER (LEN = *) :: nom, titre, unite
+  INTEGER imjmax
+  parameter (imjmax = 100000)
+  REAL px(imjmax * lllm)
+  REAL, ALLOCATABLE :: zx(:, :, :)
+  INTEGER i, j, l, ijl
+
+  allocate(zx(imax, jmax, lllm))
+
+  ijl = 0
+  do l = 1, lllm
+    ! Pole nord
+    ijl = ijl + 1
+    do i = 1, imax
+      zx(i, 1, l) = px(ijl)
+    enddo
+    ! Grille normale
+    do j = 2, jmax - 1
+      do i = 1, imax
+        ijl = ijl + 1
+        zx(i, j, l) = px(ijl)
       enddo
-
-      CALL iotd_ecrit(nom,lllm,titre,unite,zx)
-      deallocate(zx)
-
-      RETURN
-      END
-
+    enddo
+    ! Pole sud
+    IF (jmax > 1) THEN
+      ijl = ijl + 1
+      do i = 1, imax
+        zx(i, jmax, l) = px(ijl)
+      enddo
+    endif
+  enddo
+
+  CALL iotd_ecrit(nom, lllm, titre, unite, zx)
+  deallocate(zx)
+
+  RETURN
+END
+
Index: LMDZ6/branches/Amaury_dev/libf/phylmd/iotd.h
===================================================================
--- LMDZ6/branches/Amaury_dev/libf/phylmd/iotd.h	(revision 5134)
+++ 	(revision )
@@ -1,22 +1,0 @@
-!=======================================================================
-
-!   Auteur:  F. Hourdin
-!   -------
-
-!   Objet:
-!   ------
-!   Light interface for netcdf outputs. can be used outside LMDZ
-
-!=======================================================================
-
-      INTEGER imax,jmax,lmax,nid
-      INTEGER dim_coord(4)
-      REAL iotd_ts,iotd_t0
-      INTEGER :: n_names_iotd_def
-      character*20, DIMENSION(200) :: names_iotd_def
-      character*20 :: un_nom
-
-      common/iotd_ca/imax,jmax,lmax,nid,dim_coord,iotd_t0,iotd_ts
-      common/iotd_cb/n_names_iotd_def,names_iotd_def
-!$OMP THREADPRIVATE(/iotd_ca/)
-!$OMP THREADPRIVATE(/iotd_cb/)
Index: LMDZ6/branches/Amaury_dev/libf/phylmd/iotd_ecrit.F90
===================================================================
--- LMDZ6/branches/Amaury_dev/libf/phylmd/iotd_ecrit.F90	(revision 5134)
+++ 	(revision )
@@ -1,184 +1,0 @@
-      SUBROUTINE iotd_ecrit(nom,llm,titre,unite,px)
-
-
-!=======================================================================
-
-!   Auteur:  F. Hourdin
-!   -------
-
-!   Objet:
-!   ------
-!   Light interface for netcdf outputs. can be used outside LMDZ
-
-!=======================================================================
-!-----------------------------------------------------------------------
-!  ----------
-!      nom  : nom de la variable a sortir (chaine de caracteres)
-!      llm  : nombre de couches
-!      titre: titre de la variable (chaine de caracteres)
-!      unite : unite de la variable (chaine de caracteres)
-!      px : variable a sortir
-
-!=================================================================
- 
-      USE netcdf, ONLY: nf90_put_var,nf90_inq_varid,nf90_enddef,nf90_redef,nf90_sync,nf90_noerr,&
-              nf90_float,nf90_def_var
-      IMPLICIT NONE
-
-! Commons
-
-      INCLUDE "iotd.h"
-
-
-! Arguments on input:
-      INTEGER llm
-      CHARACTER (LEN=*) :: nom,titre,unite
-      INTEGER imjmax
-      parameter (imjmax=100000)
-      REAL px(imjmax*llm)
-
-! Local variables:
-
-      real(kind=4) date
-      real(kind=4) zx(imjmax*llm)
-
-
-      INTEGER ierr,ndim,dim_cc(4)
-      INTEGER iq
-      INTEGER i,j,l
-
-      INTEGER zitau
-      character firstnom*20
-      SAVE firstnom
-      SAVE zitau
-      SAVE date
-      data firstnom /'1234567890'/
-      data zitau /0/
-
-! Ajouts
-      INTEGER, save :: ntime=0
-      INTEGER :: idim,varid
-      CHARACTER (LEN =50):: fichnom
-      INTEGER, DIMENSION(4) :: id
-      INTEGER, DIMENSION(4) :: edges,corner
-      
-
-
-       IF (n_names_iotd_def>0 .and..not.any(names_iotd_def==nom)) RETURN
-!***************************************************************
-! Initialisation of 'firstnom' and create/open the "diagfi.nc" NetCDF file
-! ------------------------------------------------------------------------
-! (Au tout premier appel de la SUBROUTINE durant le run.)
-
-
-!--------------------------------------------------------
-! Write the variables to output file if it's time to do so
-!--------------------------------------------------------
-
-
-! Compute/write/extend 'time' coordinate (date given in days)
-! (done every "first call" (at given time level) to writediagfi)
-! Note: date is incremented as 1 step ahead of physics time
-!--------------------------------------------------------
-
-        zx(1:imax*jmax*llm)=px(1:imax*jmax*llm)
-        IF (firstnom =='1234567890') THEN
-            firstnom=nom
-        endif
-
-       !PRINT*,'nom ',nom,firstnom
-
-!! Quand on tombe sur la premiere variable on ajoute un pas de temps
-        IF (nom==firstnom) THEN
-        ! We have identified a "first call" (at given date)
-
-           ntime=ntime+1 ! increment # of stored time steps
-
-!!          PRINT*,'ntime ',ntime
-           date=iotd_t0+ntime*iotd_ts
-           !PRINT*,'iotd_ecrit ',iotd_ts,ntime, date
-!          date= float (zitau +1)/float (day_step)
-
-           ! compute corresponding date (in days and fractions thereof)
-           ! Get NetCDF ID of 'time' variable
-
-           ierr=nf90_sync(nid)
-
-           ierr= nf90_inq_varid(nid,"time",varid)
-           ! Write (append) the new date to the 'time' array
-
-
-           ierr= nf90_put_var(nid,varid,date,[ntime])
-
-!          PRINT*,'date ',date,ierr,nid
-!        PRINT*,'IOTD Date ,varid,nid,ntime,date',varid,nid,ntime,date
-
-           IF (ierr/=nf90_noerr) THEN
-              WRITE(*,*) "***** PUT_VAR matter in writediagfi_nc"
-              WRITE(*,*) "***** with time"
-              WRITE(*,*) 'ierr=', ierr
-           endif
-
-!          WRITE(6,*)'WRITEDIAGFI: date= ', date
-        end if ! of if (nom.EQ.firstnom)
-
-
-!Case of a 3D variable
-!---------------------
-        IF (llm==lmax) THEN
-           ndim=4
-           corner(1)=1
-           corner(2)=1
-           corner(3)=1
-           corner(4)=ntime
-           edges(1)=imax
-           edges(2)=jmax
-           edges(3)=llm
-           edges(4)=1
-           dim_cc=dim_coord
-
-
-!Case of a 2D variable
-!---------------------
-
-        ELSE IF (llm==1) THEN
-           ndim=3
-           corner(1)=1
-           corner(2)=1
-           corner(3)=ntime
-           corner(4)=1
-           edges(1)=imax
-           edges(2)=jmax
-           edges(3)=1
-           edges(4)=1
-           dim_cc(1:2)=dim_coord(1:2)
-           dim_cc(3)=dim_coord(4)
-
-        endif ! of if llm=1 ou llm
-
-! AU premier pas de temps, on crée les variables
-!-----------------------------------------------
-
-      IF (ntime==1) THEN
-          ierr = nf90_redef (nid)
-          ierr = nf90_def_var(nid,nom,nf90_float,dim_cc,varid)
-          !PRINT*,'DEF ',nom,nid,varid
-          ierr = nf90_enddef(nid)
-      else
-         ierr= nf90_inq_varid(nid,nom,varid)
-          !PRINT*,'INQ ',nom,nid,varid
-! Commandes pour recuperer automatiquement les coordonnees
-!             ierr= nf90_inq_dimid(nid,"longitude",id(1))
-      endif
-
-
-      ierr= nf90_put_var(nid,varid,zx,corner,edges)
-
-      IF (ierr/=nf90_noerr) THEN
-           WRITE(*,*) "***** PUT_VAR problem in writediagfi"
-           WRITE(*,*) "***** with ",nom
-           WRITE(*,*) 'ierr=', ierr
-      endif 
-
-
-      END
Index: LMDZ6/branches/Amaury_dev/libf/phylmd/iotd_fin.F90
===================================================================
--- LMDZ6/branches/Amaury_dev/libf/phylmd/iotd_fin.F90	(revision 5134)
+++ 	(revision )
@@ -1,25 +1,0 @@
-SUBROUTINE iotd_fin
-  USE netcdf, ONLY: nf90_close
-
-  IMPLICIT NONE
-
-  !=======================================================================
-
-  !   Auteur:  F. Hourdin
-  !   -------
-
-  !   Objet:
-  !   ------
-  !   Light interface for netcdf outputs. can be used outside LMDZ
-
-  !=======================================================================
-
-  INCLUDE "iotd.h"
-  INTEGER ierr
-
-  !   Arguments:
-  !   ----------
-
-  ierr = nf90_close(nid)
-
-END
Index: LMDZ6/branches/Amaury_dev/libf/phylmd/iotd_ini.F90
===================================================================
--- LMDZ6/branches/Amaury_dev/libf/phylmd/iotd_ini.F90	(revision 5134)
+++ 	(revision )
@@ -1,160 +1,0 @@
-      SUBROUTINE iotd_ini(fichnom,iim,jjm,llm,prlon,prlat,pcoordv,jour0,mois0,an0,t0,timestep,calendrier)
-            USE netcdf, ONLY: nf90_enddef,nf90_put_att,nf90_float,nf90_def_var,nf90_redef,&
-                    nf90_global,nf90_def_dim,nf90_create,nf90_clobber,nf90_unlimited,nf90_put_var
-      IMPLICIT NONE
-
-!=======================================================================
-
-!   Auteur:  F. Hourdin
-!   -------
-
-!   Objet:
-!   ------
-!   Light interface for netcdf outputs. can be used outside LMDZ
-
-!=======================================================================
-!-----------------------------------------------------------------------
-!   Declarations:
-!   -------------
-
-      INCLUDE "iotd.h"
-
-!   Arguments:
-!   ----------
-
-      INTEGER iim,jjm,llm
-      REAL prlon(iim),prlat(jjm),pcoordv(llm),timestep,t0
-      INTEGER id_FOCE
-      INTEGER jour0,mois0,an0
-      CHARACTER*(*) calendrier
-
-      INTEGER corner(4),edges(4),ndim
-      real  px(1000)
-      CHARACTER (LEN=10) :: nom
-      real(kind=4) rlon(iim),rlat(jjm),coordv(llm)
-
-!   Local:
-!   ------
-      CHARACTER*3,DIMENSION(12) :: cmois=(/'JAN','FEB','MAR','APR','MAY','JUN','JUL','AUG','SEP','OCT','NOV','DEC'/)
-      CHARACTER*10 date0
-      CHARACTER*11 date0b
-
-      INTEGER :: ierr
-
-      INTEGER :: nvarid
-      INTEGER, DIMENSION(2) :: id
-
-      character*(*) fichnom
-
-      REAL pi
-
-      iotd_ts=timestep
-      iotd_t0=t0
-      PRINT*,'iotd_ini, ',timestep,iotd_ts
-      imax=iim
-      jmax=jjm
-      lmax=llm
-      ! Utile pour passer en real*4 pour les ecritures
-      rlon=prlon
-      rlat=prlat
-      coordv=pcoordv
-
-
-      !-----------------------------------------------------------------------
-      ! Possibilité de spécifier une liste de variables à sortir
-      ! dans iotd.def
-      ! Si iotd.def existe et est non vide,
-      ! seules les variables faisant à la fois l'objet d'un CALL iotd_ecrit
-      ! et étant spécifiées dans iotd.def sont sorties.
-      ! Sinon, toutes les variables faisant l'objet d'un CALL iotd_ecrit
-      ! sont sorties
-      !-----------------------------------------------------------------------
-      n_names_iotd_def=0
-      open(99,file='iotd.def',form='formatted',status='old',iostat=ierr)
-         IF ( ierr==0 ) THEN
-            ierr=0
-            do while (ierr==0)
-               read(99,*,iostat=ierr) un_nom
-               IF (ierr==0) THEN
-                  n_names_iotd_def=n_names_iotd_def+1
-                  names_iotd_def(n_names_iotd_def)=un_nom
-               endif
-            enddo
-         endif
-         PRINT*,n_names_iotd_def,names_iotd_def(1:n_names_iotd_def)
-      close(99)
-
-
-      pi=2.*asin(1.)
-
-! Define dimensions
-    
-      ! Create the NetCDF file
-      ierr=nf90_create(fichnom, nf90_clobber, nid)
-      ierr=nf90_def_dim(nid, "lon", iim, dim_coord(1))
-      ierr=nf90_def_dim(nid, "lat", jjm, dim_coord(2))
-      ierr=nf90_def_dim(nid, "lev", llm, dim_coord(3))
-      ierr=nf90_def_dim(nid,"time",nf90_unlimited,dim_coord(4))
-      ierr = nf90_put_att(nid,nf90_global,'Conventions',"CF-1.1")
-      !ierr = nf90_put_att(nid,nf90_global,'file_name',TRIM(fname))
-      ierr=nf90_enddef(nid)
-
-      ! Switch out of NetCDF Define mode
-
-
-      ierr=nf90_enddef(nid)
-
-!  Contol parameters for this run
-! ---- longitude -----------
-
-      ierr=nf90_redef(nid)
-      ierr=nf90_def_var(nid,"lon", nf90_float, dim_coord(1),nvarid)
-      ierr = nf90_put_att(nid,nvarid,'axis','X')
-      ierr=nf90_put_att(nid,nvarid,'units',"degrees_east")
-      ierr=nf90_enddef(nid)
-      ierr=nf90_put_var(nid,nvarid,rlon)
-       PRINT*,ierr
-
-! ---- latitude ------------
-      ierr=nf90_redef(nid)
-      ierr=nf90_def_var(nid, "lat", nf90_float, dim_coord(2),nvarid)
-      ierr = nf90_put_att(nid,nvarid,'axis','Y')
-      ierr=nf90_put_att(nid,nvarid,'units',"degrees_north")
-      ierr=nf90_enddef(nid)
-      ierr=nf90_put_var(nid,nvarid,rlat)
-
-! ---- vertical ------------
-      ierr=nf90_redef(nid)
-      ierr=nf90_def_var(nid, "lev", nf90_float,dim_coord(3),nvarid)
-      ierr=nf90_put_att(nid,nvarid,"long_name","vert level")
-      IF ( coordv(2)>coordv(1) ) THEN
-         ierr=nf90_put_att(nid,nvarid,"long_name","pseudo-alt")
-         ierr=nf90_put_att(nid,nvarid,'positive',"up")
-      else
-         ierr=nf90_put_att(nid,nvarid,"long_name","pressure")
-         ierr = nf90_put_att(nid,nvarid,'positive',"down")
-      endif
-      ierr=nf90_enddef(nid)
-      ierr=nf90_put_var(nid,nvarid,coordv)
-
-! ---- time ----------------
-      ierr=nf90_redef(nid)
-      ! Define the 'time' variable
-      ierr=nf90_def_var(nid, "time", nf90_float, dim_coord(4),nvarid)
-!     ! Add attributes
-      ierr = nf90_put_att(nid,nvarid,'axis','T')
-      ierr = nf90_put_att(nid,nvarid,'standard_name','time')
-      WRITE(date0,'(i4.4,"-",i2.2,"-",i2.2)') an0,mois0,jour0
-      ierr=nf90_put_att(nid, nvarid,'units', &
-   "seconds since "//date0//" 00:00:00")
-      ierr = nf90_put_att(nid,nvarid,'calendar',calendrier)
-      !ierr = nf90_put_att(nid,nvarid,'calendar','360d')
-      ierr = nf90_put_att(nid,nvarid,'title','Time')
-      ierr = nf90_put_att(nid,nvarid,'long_name','Time axis')
-      WRITE(date0b,'(i4.4,"-",a3,"-",i2.2)') an0,cmois(mois0),jour0
-      ierr = nf90_put_att(nid,nvarid,'time_origin', &
-          date0b//' 00:00:00')
-      ierr=nf90_enddef(nid)
-
-
-      END
Index: LMDZ6/branches/Amaury_dev/libf/phylmd/lmdz_iotd.f90
===================================================================
--- LMDZ6/branches/Amaury_dev/libf/phylmd/lmdz_iotd.f90	(revision 5135)
+++ LMDZ6/branches/Amaury_dev/libf/phylmd/lmdz_iotd.f90	(revision 5135)
@@ -0,0 +1,334 @@
+!=======================================================================
+
+!   Auteur:  F. Hourdin
+!   -------
+
+!   Objet:
+!   ------
+!   Light interface for netcdf outputs. can be used outside LMDZ
+
+!=======================================================================
+
+MODULE lmdz_iotd
+  IMPLICIT NONE; PRIVATE
+  PUBLIC iotd_fin, iotd_ecrit, iotd_ini, imax, jmax
+
+  INTEGER imax, jmax, lmax, nid
+  INTEGER dim_coord(4)
+  REAL iotd_ts, iotd_t0
+  INTEGER :: n_names_iotd_def
+  CHARACTER*20, DIMENSION(200) :: names_iotd_def
+  CHARACTER*20 :: un_nom
+
+  !$OMP THREADPRIVATE(imax, jmax, lmax, nid, dim_coord, iotd_t0, iotd_ts)
+  !$OMP THREADPRIVATE(n_names_iotd_def, names_iotd_def)
+CONTAINS
+  SUBROUTINE iotd_fin
+    USE netcdf, ONLY: nf90_close
+    IMPLICIT NONE
+    INTEGER ierr
+
+    ierr = nf90_close(nid)
+  END SUBROUTINE iotd_fin
+
+  SUBROUTINE iotd_ecrit(nom, llm, titre, unite, px)
+    !-----------------------------------------------------------------------
+    !  ----------
+    !      nom  : nom de la variable a sortir (chaine de caracteres)
+    !      llm  : nombre de couches
+    !      titre: titre de la variable (chaine de caracteres)
+    !      unite : unite de la variable (chaine de caracteres)
+    !      px : variable a sortir
+    !=================================================================
+
+    USE netcdf, ONLY: nf90_put_var, nf90_inq_varid, nf90_enddef, nf90_redef, nf90_sync, nf90_noerr, &
+            nf90_float, nf90_def_var
+    IMPLICIT NONE
+
+    ! Arguments on input:
+    INTEGER llm
+    CHARACTER (LEN = *) :: nom, titre, unite
+    INTEGER imjmax
+    parameter (imjmax = 100000)
+    REAL px(imjmax * llm)
+
+    ! Local variables:
+
+    real(kind = 4) date
+    real(kind = 4) zx(imjmax * llm)
+
+    INTEGER ierr, ndim, dim_cc(4)
+    INTEGER iq
+    INTEGER i, j, l
+
+    INTEGER zitau
+    CHARACTER firstnom*20
+    SAVE firstnom
+    SAVE zitau
+    SAVE date
+    DATA firstnom /'1234567890'/
+    DATA zitau /0/
+
+    ! Ajouts
+    INTEGER, save :: ntime = 0
+    INTEGER :: idim, varid
+    CHARACTER (LEN = 50) :: fichnom
+    INTEGER, DIMENSION(4) :: id
+    INTEGER, DIMENSION(4) :: edges, corner
+
+    IF (n_names_iotd_def>0 .and..not.any(names_iotd_def==nom)) RETURN
+    !***************************************************************
+    ! Initialisation of 'firstnom' and create/open the "diagfi.nc" NetCDF file
+    ! ------------------------------------------------------------------------
+    ! (Au tout premier appel de la SUBROUTINE durant le run.)
+
+
+    !--------------------------------------------------------
+    ! Write the variables to output file if it's time to do so
+    !--------------------------------------------------------
+
+
+    ! Compute/write/extend 'time' coordinate (date given in days)
+    ! (done every "first call" (at given time level) to writediagfi)
+    ! Note: date is incremented as 1 step ahead of physics time
+    !--------------------------------------------------------
+
+    zx(1:imax * jmax * llm) = px(1:imax * jmax * llm)
+    IF (firstnom =='1234567890') THEN
+      firstnom = nom
+    endif
+
+    !PRINT*,'nom ',nom,firstnom
+
+    !! Quand on tombe sur la premiere variable on ajoute un pas de temps
+    IF (nom==firstnom) THEN
+      ! We have identified a "first call" (at given date)
+
+      ntime = ntime + 1 ! increment # of stored time steps
+
+      !!          PRINT*,'ntime ',ntime
+      date = iotd_t0 + ntime * iotd_ts
+      !PRINT*,'iotd_ecrit ',iotd_ts,ntime, date
+      !          date= float (zitau +1)/float (day_step)
+
+      ! compute corresponding date (in days and fractions thereof)
+      ! Get NetCDF ID of 'time' variable
+
+      ierr = nf90_sync(nid)
+
+      ierr = nf90_inq_varid(nid, "time", varid)
+      ! Write (append) the new date to the 'time' array
+
+      ierr = nf90_put_var(nid, varid, date, [ntime])
+
+      !          PRINT*,'date ',date,ierr,nid
+      !        PRINT*,'IOTD Date ,varid,nid,ntime,date',varid,nid,ntime,date
+
+      IF (ierr/=nf90_noerr) THEN
+        WRITE(*, *) "***** PUT_VAR matter in writediagfi_nc"
+        WRITE(*, *) "***** with time"
+        WRITE(*, *) 'ierr=', ierr
+      endif
+
+      !          WRITE(6,*)'WRITEDIAGFI: date= ', date
+    end if ! of if (nom.EQ.firstnom)
+
+
+    !Case of a 3D variable
+    !---------------------
+    IF (llm==lmax) THEN
+      ndim = 4
+      corner(1) = 1
+      corner(2) = 1
+      corner(3) = 1
+      corner(4) = ntime
+      edges(1) = imax
+      edges(2) = jmax
+      edges(3) = llm
+      edges(4) = 1
+      dim_cc = dim_coord
+
+
+      !Case of a 2D variable
+      !---------------------
+
+    ELSE IF (llm==1) THEN
+      ndim = 3
+      corner(1) = 1
+      corner(2) = 1
+      corner(3) = ntime
+      corner(4) = 1
+      edges(1) = imax
+      edges(2) = jmax
+      edges(3) = 1
+      edges(4) = 1
+      dim_cc(1:2) = dim_coord(1:2)
+      dim_cc(3) = dim_coord(4)
+
+    END IF ! of if llm=1 ou llm
+
+    ! AU premier pas de temps, on crée les variables
+    !-----------------------------------------------
+
+    IF (ntime==1) THEN
+      ierr = nf90_redef (nid)
+      ierr = nf90_def_var(nid, nom, nf90_float, dim_cc, varid)
+      !PRINT*,'DEF ',nom,nid,varid
+      ierr = nf90_enddef(nid)
+    ELSE
+      ierr = nf90_inq_varid(nid, nom, varid)
+      !PRINT*,'INQ ',nom,nid,varid
+      ! Commandes pour recuperer automatiquement les coordonnees
+      !             ierr= nf90_inq_dimid(nid,"longitude",id(1))
+    END IF
+
+    ierr = nf90_put_var(nid, varid, zx, corner, edges)
+
+    IF (ierr/=nf90_noerr) THEN
+      WRITE(*, *) "***** PUT_VAR problem in writediagfi"
+      WRITE(*, *) "***** with ", nom
+      WRITE(*, *) 'ierr=', ierr
+    endif
+
+  END
+
+  SUBROUTINE iotd_ini(fichnom, iim, jjm, llm, prlon, prlat, pcoordv, jour0, mois0, an0, t0, timestep, calendrier)
+    USE netcdf, ONLY: nf90_enddef, nf90_put_att, nf90_float, nf90_def_var, nf90_redef, &
+            nf90_global, nf90_def_dim, nf90_create, nf90_clobber, nf90_unlimited, nf90_put_var
+    IMPLICIT NONE
+
+    INTEGER iim, jjm, llm
+    REAL prlon(iim), prlat(jjm), pcoordv(llm), timestep, t0
+    INTEGER id_FOCE
+    INTEGER jour0, mois0, an0
+    CHARACTER*(*) calendrier
+
+    INTEGER corner(4), edges(4), ndim
+    real  px(1000)
+    CHARACTER (LEN = 10) :: nom
+    real(kind = 4) rlon(iim), rlat(jjm), coordv(llm)
+
+    !   Local:
+    !   ------
+    CHARACTER*3, DIMENSION(12) :: cmois = (/'JAN', 'FEB', 'MAR', 'APR', 'MAY', 'JUN', 'JUL', 'AUG', 'SEP', 'OCT', 'NOV', 'DEC'/)
+    CHARACTER*10 date0
+    CHARACTER*11 date0b
+
+    INTEGER :: ierr
+
+    INTEGER :: nvarid
+    INTEGER, DIMENSION(2) :: id
+
+    CHARACTER*(*) fichnom
+
+    REAL pi
+
+    iotd_ts = timestep
+    iotd_t0 = t0
+    PRINT*, 'iotd_ini, ', timestep, iotd_ts
+    imax = iim
+    jmax = jjm
+    lmax = llm
+    ! Utile pour passer en real*4 pour les ecritures
+    rlon = prlon
+    rlat = prlat
+    coordv = pcoordv
+
+
+    !-----------------------------------------------------------------------
+    ! Possibilité de spécifier une liste de variables à sortir
+    ! dans iotd.def
+    ! Si iotd.def existe et est non vide,
+    ! seules les variables faisant à la fois l'objet d'un CALL iotd_ecrit
+    ! et étant spécifiées dans iotd.def sont sorties.
+    ! Sinon, toutes les variables faisant l'objet d'un CALL iotd_ecrit
+    ! sont sorties
+    !-----------------------------------------------------------------------
+    n_names_iotd_def = 0
+    open(99, file = 'iotd.def', form = 'formatted', status = 'old', iostat = ierr)
+    IF (ierr==0) THEN
+      ierr = 0
+      do while (ierr==0)
+        read(99, *, iostat = ierr) un_nom
+        IF (ierr==0) THEN
+          n_names_iotd_def = n_names_iotd_def + 1
+          names_iotd_def(n_names_iotd_def) = un_nom
+        endif
+      enddo
+    endif
+    PRINT*, n_names_iotd_def, names_iotd_def(1:n_names_iotd_def)
+    close(99)
+
+    pi = 2. * asin(1.)
+
+    ! Define dimensions
+
+    ! Create the NetCDF file
+    ierr = nf90_create(fichnom, nf90_clobber, nid)
+    ierr = nf90_def_dim(nid, "lon", iim, dim_coord(1))
+    ierr = nf90_def_dim(nid, "lat", jjm, dim_coord(2))
+    ierr = nf90_def_dim(nid, "lev", llm, dim_coord(3))
+    ierr = nf90_def_dim(nid, "time", nf90_unlimited, dim_coord(4))
+    ierr = nf90_put_att(nid, nf90_global, 'Conventions', "CF-1.1")
+    !ierr = nf90_put_att(nid,nf90_global,'file_name',TRIM(fname))
+    ierr = nf90_enddef(nid)
+
+    ! Switch out of NetCDF Define mode
+
+    ierr = nf90_enddef(nid)
+
+    !  Contol parameters for this run
+    ! ---- longitude -----------
+
+    ierr = nf90_redef(nid)
+    ierr = nf90_def_var(nid, "lon", nf90_float, dim_coord(1), nvarid)
+    ierr = nf90_put_att(nid, nvarid, 'axis', 'X')
+    ierr = nf90_put_att(nid, nvarid, 'units', "degrees_east")
+    ierr = nf90_enddef(nid)
+    ierr = nf90_put_var(nid, nvarid, rlon)
+    PRINT*, ierr
+
+    ! ---- latitude ------------
+    ierr = nf90_redef(nid)
+    ierr = nf90_def_var(nid, "lat", nf90_float, dim_coord(2), nvarid)
+    ierr = nf90_put_att(nid, nvarid, 'axis', 'Y')
+    ierr = nf90_put_att(nid, nvarid, 'units', "degrees_north")
+    ierr = nf90_enddef(nid)
+    ierr = nf90_put_var(nid, nvarid, rlat)
+
+    ! ---- vertical ------------
+    ierr = nf90_redef(nid)
+    ierr = nf90_def_var(nid, "lev", nf90_float, dim_coord(3), nvarid)
+    ierr = nf90_put_att(nid, nvarid, "long_name", "vert level")
+    IF (coordv(2)>coordv(1)) THEN
+      ierr = nf90_put_att(nid, nvarid, "long_name", "pseudo-alt")
+      ierr = nf90_put_att(nid, nvarid, 'positive', "up")
+    else
+      ierr = nf90_put_att(nid, nvarid, "long_name", "pressure")
+      ierr = nf90_put_att(nid, nvarid, 'positive', "down")
+    endif
+    ierr = nf90_enddef(nid)
+    ierr = nf90_put_var(nid, nvarid, coordv)
+
+    ! ---- time ----------------
+    ierr = nf90_redef(nid)
+    ! Define the 'time' variable
+    ierr = nf90_def_var(nid, "time", nf90_float, dim_coord(4), nvarid)
+    !     ! Add attributes
+    ierr = nf90_put_att(nid, nvarid, 'axis', 'T')
+    ierr = nf90_put_att(nid, nvarid, 'standard_name', 'time')
+    WRITE(date0, '(i4.4,"-",i2.2,"-",i2.2)') an0, mois0, jour0
+    ierr = nf90_put_att(nid, nvarid, 'units', &
+            "seconds since " // date0 // " 00:00:00")
+    ierr = nf90_put_att(nid, nvarid, 'calendar', calendrier)
+    !ierr = nf90_put_att(nid,nvarid,'calendar','360d')
+    ierr = nf90_put_att(nid, nvarid, 'title', 'Time')
+    ierr = nf90_put_att(nid, nvarid, 'long_name', 'Time axis')
+    WRITE(date0b, '(i4.4,"-",a3,"-",i2.2)') an0, cmois(mois0), jour0
+    ierr = nf90_put_att(nid, nvarid, 'time_origin', &
+            date0b // ' 00:00:00')
+    ierr = nf90_enddef(nid)
+
+  END
+
+END MODULE lmdz_iotd
Index: LMDZ6/branches/Amaury_dev/libf/phylmd/lmdz_simu_airs.f90
===================================================================
--- LMDZ6/branches/Amaury_dev/libf/phylmd/lmdz_simu_airs.f90	(revision 5134)
+++ LMDZ6/branches/Amaury_dev/libf/phylmd/lmdz_simu_airs.f90	(revision 5135)
@@ -1086,5 +1086,5 @@
 
     REAL, INTENT(IN) :: x, bsup, binf
-    character*14, INTENT(IN) :: sx
+    CHARACTER*14, INTENT(IN) :: sx
     CHARACTER (len = 50) :: modname = 'simu_airs.test_bornes'
     CHARACTER (len = 160) :: abort_message
Index: LMDZ6/branches/Amaury_dev/libf/phylmd/lmdz_thermcell_main.F90
===================================================================
--- LMDZ6/branches/Amaury_dev/libf/phylmd/lmdz_thermcell_main.F90	(revision 5134)
+++ LMDZ6/branches/Amaury_dev/libf/phylmd/lmdz_thermcell_main.F90	(revision 5135)
@@ -827,5 +827,5 @@
     INTEGER, INTENT(IN), DIMENSION(ngrid) :: long
     REAL seuil
-    character*21 comment
+    CHARACTER*21 comment
 
     seuil = 0.25
Index: LMDZ6/branches/Amaury_dev/libf/phylmdiso/iotd.h
===================================================================
--- LMDZ6/branches/Amaury_dev/libf/phylmdiso/iotd.h	(revision 5134)
+++ 	(revision )
@@ -1,1 +1,0 @@
-link ../phylmd/iotd.h
Index: LMDZ6/branches/Amaury_dev/libf/phylmdiso/iotd_ecrit.F90
===================================================================
--- LMDZ6/branches/Amaury_dev/libf/phylmdiso/iotd_ecrit.F90	(revision 5134)
+++ 	(revision )
@@ -1,1 +1,0 @@
-link ../phylmd/iotd_ecrit.F90
Index: LMDZ6/branches/Amaury_dev/libf/phylmdiso/iotd_fin.F90
===================================================================
--- LMDZ6/branches/Amaury_dev/libf/phylmdiso/iotd_fin.F90	(revision 5134)
+++ 	(revision )
@@ -1,1 +1,0 @@
-link ../phylmd/iotd_fin.F90
Index: LMDZ6/branches/Amaury_dev/libf/phylmdiso/iotd_ini.F90
===================================================================
--- LMDZ6/branches/Amaury_dev/libf/phylmdiso/iotd_ini.F90	(revision 5134)
+++ 	(revision )
@@ -1,1 +1,0 @@
-link ../phylmd/iotd_ini.F90
Index: LMDZ6/branches/Amaury_dev/libf/phylmdiso/isotopes_routines_mod.F90
===================================================================
--- LMDZ6/branches/Amaury_dev/libf/phylmdiso/isotopes_routines_mod.F90	(revision 5134)
+++ LMDZ6/branches/Amaury_dev/libf/phylmdiso/isotopes_routines_mod.F90	(revision 5135)
@@ -15748,5 +15748,5 @@
       INTEGER ixt,i,k,nsrf
 
-!      character*50 text
+!      CHARACTER*50 text
 
 !      WRITE(*,*) 'phyisoetat0 20: fichnom=',fichnom
@@ -15931,5 +15931,5 @@
         REAL deltaD_snow_fall_O18,deltaD_rain_fall_O18
         REAL alpha(niso),kcin(niso)
-!      character*50 text
+!      CHARACTER*50 text
         
       ! initialisation des isotopes
Index: LMDZ6/branches/Amaury_dev/libf/phylmdiso/isotopes_verif_mod.F90
===================================================================
--- LMDZ6/branches/Amaury_dev/libf/phylmdiso/isotopes_verif_mod.F90	(revision 5134)
+++ LMDZ6/branches/Amaury_dev/libf/phylmdiso/isotopes_verif_mod.F90	(revision 5135)
@@ -144,5 +144,5 @@
         ! input:
         REAL a, b
-        character*(*) err_msg ! message d''erreur à afficher
+        CHARACTER*(*) err_msg ! message d''erreur à afficher
 
         ! local
@@ -173,5 +173,5 @@
         ! input:
         REAL a, b
-        character*(*) err_msg ! message d''erreur à afficher
+        CHARACTER*(*) err_msg ! message d''erreur à afficher
         !ouptut
         INTEGER iso_verif_egalite_nostop
@@ -204,5 +204,5 @@
         ! input:
         REAL R
-        character*(*) err_msg ! message d''erreur à afficher
+        CHARACTER*(*) err_msg ! message d''erreur à afficher
         !real deltaD
         !integer iso_verif_aberrant_choix_nostop
@@ -234,5 +234,5 @@
         ! input:
         REAL R
-        character*(*) err_msg ! message d''erreur à afficher
+        CHARACTER*(*) err_msg ! message d''erreur à afficher
         !real deltaD
 
@@ -269,5 +269,5 @@
         ! input:
         REAL xt,q,qmin,deltaDmax
-        character*(*) err_msg ! message d''erreur à afficher
+        CHARACTER*(*) err_msg ! message d''erreur à afficher
         !real deltaD
 
@@ -303,5 +303,5 @@
         ! input:
         REAL R
-        character*(*) err_msg ! message d''erreur à afficher
+        CHARACTER*(*) err_msg ! message d''erreur à afficher
         INTEGER iso_verif_aberrant_nostop ! output: 1 si erreur, 0 sinon
         !real deltaD
@@ -334,5 +334,5 @@
         ! input:
         REAL R
-        character*(*) err_msg ! message d''erreur à afficher
+        CHARACTER*(*) err_msg ! message d''erreur à afficher
         INTEGER iso_verif_aberrant_enc_nostop ! output: 1 si erreur, 0 sinon
         !real deltaD
@@ -369,5 +369,5 @@
         ! input:
         REAL xt,q,qmin,deltaDmax
-        character*(*) err_msg ! message d''erreur à afficher
+        CHARACTER*(*) err_msg ! message d''erreur à afficher
         ! output
         INTEGER iso_verif_aberrant_choix_nostop
@@ -430,5 +430,5 @@
         ! input:
         REAL xt,q,qmin,deltaDmax
-        character*(*) err_msg ! message d''erreur à afficher
+        CHARACTER*(*) err_msg ! message d''erreur à afficher
         ! output
         INTEGER iso_verif_aberrant_enc_choix_nostop
@@ -474,5 +474,5 @@
         ! input:
         REAL R17,R18
-        character*(*) err_msg ! message d''erreur à afficher
+        CHARACTER*(*) err_msg ! message d''erreur à afficher
         !real o17excess
 
@@ -506,5 +506,5 @@
         ! input:
         REAL R17,R18
-        character*(*) err_msg ! message d''erreur à afficher
+        CHARACTER*(*) err_msg ! message d''erreur à afficher
         !local
         !real o17excess
@@ -545,5 +545,5 @@
         ! input:
         REAL x
-        character*(*) err_msg ! message d''erreur à afficher
+        CHARACTER*(*) err_msg ! message d''erreur à afficher
 
         ! locals
@@ -570,5 +570,5 @@
         ! input:
         REAL x
-        character*(*) err_msg ! message d''erreur à afficher
+        CHARACTER*(*) err_msg ! message d''erreur à afficher
 
         ! output 
@@ -601,5 +601,5 @@
           INTEGER n,m,ni
         REAL x(ni,n,m)
-        character*(*) err_msg ! message d''erreur à afficher
+        CHARACTER*(*) err_msg ! message d''erreur à afficher
 
         ! output 
@@ -640,5 +640,5 @@
           INTEGER n,ni
         REAL x(ni,n)
-        character*(*) err_msg ! message d''erreur à afficher
+        CHARACTER*(*) err_msg ! message d''erreur à afficher
 
         ! output 
@@ -680,5 +680,5 @@
         REAL a, b
         REAL erabs,errel !erreur absolue et relative
-        character*(*) err_msg ! message d''erreur à afficher
+        CHARACTER*(*) err_msg ! message d''erreur à afficher
 
         ! locals
@@ -709,5 +709,5 @@
         REAL a, b
         REAL erabs,errel !erreur absolue et relative
-        character*(*) err_msg ! message d''erreur à afficher
+        CHARACTER*(*) err_msg ! message d''erreur à afficher
 
         ! output
@@ -762,5 +762,5 @@
         ! input:
         REAL x
-        character*(*) err_msg ! message d''erreur à afficher
+        CHARACTER*(*) err_msg ! message d''erreur à afficher
 
         ! locals 
@@ -790,5 +790,5 @@
         INTEGER n
         REAL x(n)
-        character*(*) err_msg ! message d''erreur à afficher
+        CHARACTER*(*) err_msg ! message d''erreur à afficher
 
         ! locals
@@ -821,5 +821,5 @@
         REAL x(n)
         REAL ridic
-        character*(*) err_msg ! message d''erreur à afficher
+        CHARACTER*(*) err_msg ! message d''erreur à afficher
         ! locals 
         INTEGER i
@@ -852,5 +852,5 @@
         ! input:
         REAL x
-        character*(*) err_msg ! message d''erreur à afficher
+        CHARACTER*(*) err_msg ! message d''erreur à afficher
 
         ! locals
@@ -873,5 +873,5 @@
         ! input:
         REAL x
-        character*(*) err_msg ! message d''erreur à afficher*
+        CHARACTER*(*) err_msg ! message d''erreur à afficher*
 
         ! output
@@ -901,5 +901,5 @@
         REAL x
         REAL ridic
-        character*(*) err_msg ! message d''erreur à afficher
+        CHARACTER*(*) err_msg ! message d''erreur à afficher
 
         ! locals
@@ -929,5 +929,5 @@
         ! input:
         REAL x
-        character*(*) err_msg ! message d''erreur à afficher
+        CHARACTER*(*) err_msg ! message d''erreur à afficher
 
         ! output
@@ -960,5 +960,5 @@
         REAL x
         REAL ridic
-        character*(*) err_msg ! message d''erreur à afficher
+        CHARACTER*(*) err_msg ! message d''erreur à afficher
 
         ! output
@@ -997,5 +997,5 @@
         ! input:
         REAL Rd,Ro
-        character*(*) err_msg ! message d''erreur à afficher
+        CHARACTER*(*) err_msg ! message d''erreur à afficher
 
         ! local
@@ -1018,5 +1018,5 @@
         ! input:
         REAL Rd,Ro
-        character*(*) err_msg ! message d''erreur à afficher
+        CHARACTER*(*) err_msg ! message d''erreur à afficher
 
         ! outputs
@@ -1154,5 +1154,5 @@
           REAL q(n,m)
           REAL xt(ni,n,m)
-          character*(*) err_msg
+          CHARACTER*(*) err_msg
 
         ! locals
@@ -1205,5 +1205,5 @@
         REAL q(n)
         REAL xt(ni,n)
-        character*(*) err_msg
+        CHARACTER*(*) err_msg
 
         ! locals
@@ -1244,5 +1244,5 @@
           REAL a(n,m)
           REAL b(n,m)
-          character*(*) err_msg
+          CHARACTER*(*) err_msg
           REAL errmax,errmaxrel
 
@@ -1287,5 +1287,5 @@
           REAL q(n,m)
           REAL xt(ni,n,m)
-          character*(*) err_msg
+          CHARACTER*(*) err_msg
 
         ! locals
@@ -1334,5 +1334,5 @@
           REAL q(n,m)
           REAL xt(ni,n,m)
-          character*(*) err_msg
+          CHARACTER*(*) err_msg
 
         ! locals
@@ -1386,5 +1386,5 @@
           REAL q(n,m)
           REAL xt(ni,n,m)
-          character*(*) err_msg
+          CHARACTER*(*) err_msg
 
         ! locals
@@ -1436,5 +1436,5 @@
           REAL q(n,m)
           REAL xt(ni,n,m)
-          character*(*) err_msg
+          CHARACTER*(*) err_msg
           REAL deltaDmax
 
@@ -1484,5 +1484,5 @@
           REAL q(n,m)
           REAL xt(ni,n,m)
-          character*(*) err_msg
+          CHARACTER*(*) err_msg
 
         ! locals
@@ -1704,5 +1704,5 @@
           INTEGER n,m,ni,ib,ie
         REAL x(ni,n,m)
-        character*(*) err_msg ! message d''erreur à afficher
+        CHARACTER*(*) err_msg ! message d''erreur à afficher
 
         ! output 
@@ -1746,5 +1746,5 @@
           REAL q(n,m)
           REAL xt(ni,n,m)
-          character*(*) err_msg
+          CHARACTER*(*) err_msg
 
         ! locals
@@ -1795,5 +1795,5 @@
           REAL q(n,m)
           REAL xt(ni,n,m)
-          character*(*) err_msg
+          CHARACTER*(*) err_msg
 
         ! locals
@@ -1841,5 +1841,5 @@
        ! inputs
        REAL x(ntraciso)
-       character*(*) err_msg ! message d''erreur à afficher
+       CHARACTER*(*) err_msg ! message d''erreur à afficher
        REAL errmax,errmaxrel,ridicule_trac,deltalimtrac
 
@@ -1892,5 +1892,5 @@
        ! inputs
        REAL x(ntraciso)
-       character*(*) err_msg ! message d''erreur à afficher
+       CHARACTER*(*) err_msg ! message d''erreur à afficher
        REAL errmax,errmaxrel,ridicule_trac,deltalimtrac
 
@@ -1931,5 +1931,5 @@
         ! inputs
        REAL x(ntraciso)
-       character*(*) err_msg ! message d''erreur à afficher
+       CHARACTER*(*) err_msg ! message d''erreur à afficher
        REAL seuil
 
@@ -1961,5 +1961,5 @@
         ! inputs
        REAL x(ntraciso)
-       character*(*) err_msg ! message d''erreur à afficher
+       CHARACTER*(*) err_msg ! message d''erreur à afficher
 
        ! output
@@ -1993,5 +1993,5 @@
         ! inputs
         REAL x(ntraciso)
-        character*(*) err_msg ! message d''erreur à afficher
+        CHARACTER*(*) err_msg ! message d''erreur à afficher
         REAL errmaxin,errmaxrelin
 
@@ -2050,5 +2050,5 @@
         ! inputs
         REAL x(ntraciso)
-        character*(*) err_msg ! message d''erreur à afficher
+        CHARACTER*(*) err_msg ! message d''erreur à afficher
         REAL ridicule_trac,deltalimtrac
 
@@ -2135,5 +2135,5 @@
        ! inputs
        REAL x(ntraciso)
-       character*(*) err_msg ! message d''erreur à afficher
+       CHARACTER*(*) err_msg ! message d''erreur à afficher
 
        ! locals
@@ -2164,5 +2164,5 @@
        INTEGER n1,n2,n3
        REAL x(n1,n2,n3,ntraciso)
-       character*(*) err_msg ! message d''erreur à afficher
+       CHARACTER*(*) err_msg ! message d''erreur à afficher
        INTEGER i1,i2,i3
 
@@ -2196,5 +2196,5 @@
        INTEGER n1,n2,n3,n4
        REAL x(n1,n2,n3,n4,ntraciso)
-       character*(*) err_msg ! message d''erreur à afficher
+       CHARACTER*(*) err_msg ! message d''erreur à afficher
        INTEGER i1,i2,i3,i4
 
@@ -2228,5 +2228,5 @@
        INTEGER n1,n2
        REAL x(n1,n2,ntraciso)
-       character*(*) err_msg ! message d''erreur à afficher
+       CHARACTER*(*) err_msg ! message d''erreur à afficher
        INTEGER i1,i2
 
@@ -2258,5 +2258,5 @@
        INTEGER n,m
        REAL x(ntraciso,n,m)
-       character*(*) err_msg ! message d''erreur à afficher
+       CHARACTER*(*) err_msg ! message d''erreur à afficher
 
        ! locals
@@ -2292,5 +2292,5 @@
        INTEGER n,m
        REAL x(ntraciso,n,m)
-       character*(*) err_msg ! message d''erreur à afficher
+       CHARACTER*(*) err_msg ! message d''erreur à afficher
 
        ! locals
@@ -2317,5 +2317,5 @@
        INTEGER n,m
        REAL x(ntraciso,n,m)
-       character*(*) err_msg ! message d''erreur à afficher
+       CHARACTER*(*) err_msg ! message d''erreur à afficher
 
        ! locals
@@ -2361,5 +2361,5 @@
        INTEGER n,m
        REAL x(ntraciso,n,m)
-       character*(*) err_msg ! message d''erreur à afficher
+       CHARACTER*(*) err_msg ! message d''erreur à afficher
        REAL errmax,errmaxrel
 
@@ -2401,5 +2401,5 @@
        INTEGER n,m
        REAL x(ntraciso,n,m)
-       character*(*) err_msg ! message d''erreur à afficher
+       CHARACTER*(*) err_msg ! message d''erreur à afficher
 
        ! locals
@@ -2440,5 +2440,5 @@
        INTEGER n,m
        REAL x(ntraciso,n,m)
-       character*(*) err_msg ! message d''erreur à afficher
+       CHARACTER*(*) err_msg ! message d''erreur à afficher
        REAL seuil
 
@@ -2488,5 +2488,5 @@
        ! inputs
        REAL x(ntraciso)
-       character*(*) err_msg ! message d''erreur à afficher
+       CHARACTER*(*) err_msg ! message d''erreur à afficher
 
        ! locals
@@ -2512,5 +2512,5 @@
        ! inputs
        REAL x(ntraciso)
-       character*(*) err_msg ! message d''erreur à afficher
+       CHARACTER*(*) err_msg ! message d''erreur à afficher
        REAL seuil
 
@@ -2534,5 +2534,5 @@
        ! inputs
        REAL x(ntraciso)
-       character*(*) err_msg ! message d''erreur à afficher
+       CHARACTER*(*) err_msg ! message d''erreur à afficher
        REAL errmax,errmaxrel,ridicule_trac_loc,deltalimtrac
 
@@ -2561,5 +2561,5 @@
        ! inputs
        REAL x(ntraciso)
-       character*(*) err_msg ! message d''erreur à afficher
+       CHARACTER*(*) err_msg ! message d''erreur à afficher
 
        ! output
@@ -2585,5 +2585,5 @@
        ! inputs
        REAL x(ntraciso)
-       character*(*) err_msg ! message d''erreur à afficher
+       CHARACTER*(*) err_msg ! message d''erreur à afficher
 
        ! locals
@@ -2613,5 +2613,5 @@
        ! inputs
        REAL x(ntraciso)
-       character*(*) err_msg ! message d''erreur à afficher
+       CHARACTER*(*) err_msg ! message d''erreur à afficher
 
        ! output
@@ -2644,5 +2644,5 @@
         INTEGER n,m
         REAL x(ntraciso,n,m)
-        character*(*) err_msg
+        CHARACTER*(*) err_msg
 
         ! locals
@@ -2702,5 +2702,5 @@
         INTEGER n,m,nq
         REAL x(n,m,nq,ntraciso)
-        character*(*) err_msg
+        CHARACTER*(*) err_msg
 
         ! locals
Index: LMDZ6/branches/Amaury_dev/libf/phylmdiso/isotrac_routines_mod.F90
===================================================================
--- LMDZ6/branches/Amaury_dev/libf/phylmdiso/isotrac_routines_mod.F90	(revision 5134)
+++ LMDZ6/branches/Amaury_dev/libf/phylmdiso/isotrac_routines_mod.F90	(revision 5135)
@@ -2666,5 +2666,5 @@
        ! inputs
        REAL x(ntraciso)
-       character*(*) err_msg ! message d''erreur à afficher
+       CHARACTER*(*) err_msg ! message d''erreur à afficher
 
        ! local
@@ -2693,5 +2693,5 @@
        ! inputs
        REAL x(ntraciso)
-       character*(*) err_msg ! message d''erreur à afficher
+       CHARACTER*(*) err_msg ! message d''erreur à afficher
 
        ! output
@@ -2745,5 +2745,5 @@
        INTEGER n,m
        REAL x(ntraciso,n,m)
-       character*(*) err_msg ! message d''erreur à afficher       
+       CHARACTER*(*) err_msg ! message d''erreur à afficher
 
        ! locals
Index: LMDZ6/branches/Amaury_dev/libf/phylmdiso/lmdz_iotd.f90
===================================================================
--- LMDZ6/branches/Amaury_dev/libf/phylmdiso/lmdz_iotd.f90	(revision 5135)
+++ LMDZ6/branches/Amaury_dev/libf/phylmdiso/lmdz_iotd.f90	(revision 5135)
@@ -0,0 +1,1 @@
+link ../phylmd/lmdz_iotd.f90
