Index: LMDZ6/branches/DYNAMICO-conv/libf/phylmd/iophy.F90
===================================================================
--- LMDZ6/branches/DYNAMICO-conv/libf/phylmd/iophy.F90	(revision 3077)
+++ LMDZ6/branches/DYNAMICO-conv/libf/phylmd/iophy.F90	(revision 3312)
@@ -1331,7 +1331,4 @@
     !IF(.NOT.clef_stations(iff)) THEN
         IF (.TRUE.) THEN
-            ALLOCATE(index2d(nbp_lon*jj_nb))
-            ALLOCATE(fieldok(nbp_lon*jj_nb))
-    
     
             CALL xios_send_field(field_name, Field2d)
@@ -1354,9 +1351,8 @@
                 ENDDO
             ENDIF
-    
-        ENDIF
-                  
-        DEALLOCATE(index2d)
-        DEALLOCATE(fieldok)
+            DEALLOCATE(index2d)
+            DEALLOCATE(fieldok)
+    
+        ENDIF                  
       ENDIF
 !$OMP END MASTER   
@@ -1416,7 +1412,6 @@
     !IF (.NOT.clef_stations(iff)) THEN
         IF(.TRUE.)THEN
-            ALLOCATE(index3d(nbp_lon*jj_nb*nlev))
-            ALLOCATE(fieldok(nbp_lon*jj_nb,nlev))
-            CALL xios_send_field(field_name, Field3d(:,:,1:nlev))
+
+           CALL xios_send_field(field_name, Field3d(:,:,1:nlev))
                             
         ELSE 
@@ -1441,7 +1436,7 @@
                 ENDDO
             ENDIF
+            DEALLOCATE(index3d)
+            DEALLOCATE(fieldok)
         ENDIF 
-        DEALLOCATE(index3d)
-        DEALLOCATE(fieldok)
       ENDIF
 !$OMP END MASTER   
Index: LMDZ6/branches/DYNAMICO-conv/libf/phylmd/iostart.F90
===================================================================
--- LMDZ6/branches/DYNAMICO-conv/libf/phylmd/iostart.F90	(revision 3077)
+++ LMDZ6/branches/DYNAMICO-conv/libf/phylmd/iostart.F90	(revision 3312)
@@ -129,4 +129,5 @@
   USE netcdf
   USE dimphy
+  USE geometry_mod
   USE mod_grid_phy_lmdz
   USE mod_phys_lmdz_para
@@ -138,14 +139,19 @@
     
     REAL    :: field_glo(klon_glo,field_size)
+    REAL    :: field_glo_tmp(klon_glo,field_size)
+    INTEGER :: ind_cell_glo_glo(klon_glo)
     LOGICAL :: tmp_found
     INTEGER :: varid
-    INTEGER :: ierr
-    
-    IF (is_mpi_root .AND. is_omp_root) THEN
+    INTEGER :: ierr,i
+
+!    IF (is_master) ALLOCATE(ind_cell_glo_glo(1:klon_glo))
+    CALL gather(ind_cell_glo,ind_cell_glo_glo)
+    
+    IF (is_master) THEN
   
       ierr=NF90_INQ_VARID(nid_start,Field_name,varid)
       
       IF (ierr==NF90_NOERR) THEN
-        CALL body(field_glo)
+        CALL body(field_glo_tmp)
         tmp_found=.TRUE.
       ELSE
@@ -158,4 +164,9 @@
 
     IF (tmp_found) THEN
+      IF (is_master) THEN  
+        DO i=1,klon_glo
+         field_glo(i,:)=field_glo_tmp(ind_cell_glo_glo(i),:)
+        ENDDO
+      ENDIF
       CALL scatter(field_glo,field)
     ENDIF
@@ -384,4 +395,5 @@
   USE netcdf
   USE dimphy
+  USE geometry_mod
   USE mod_grid_phy_lmdz
   USE mod_phys_lmdz_para
@@ -393,12 +405,23 @@
   
   REAL                           :: field_glo(klon_glo,field_size)
-  INTEGER                        :: ierr
+  REAL                           :: field_glo_tmp(klon_glo,field_size)
+!  INTEGER,ALLOCATABLE            :: ind_cell_glo_glo(:)
+  INTEGER                        :: ind_cell_glo_glo(klon_glo)
+  INTEGER                        :: ierr,i
   INTEGER                        :: nvarid
   INTEGER                        :: idim
    
    
-    CALL gather(field,field_glo)
-    
-    IF (is_mpi_root .AND. is_omp_root) THEN
+!    IF (is_master) ALLOCATE(ind_cell_glo_glo(klon_glo))
+    CALL gather(ind_cell_glo,ind_cell_glo_glo)
+
+    CALL gather(field,field_glo_tmp)
+    
+    IF (is_master) THEN
+
+      DO i=1,klon_glo
+       field_glo(ind_cell_glo_glo(i),:)=field_glo_tmp(i,:)
+      ENDDO
+
 
       IF (field_size==1) THEN
Index: LMDZ6/branches/DYNAMICO-conv/libf/phylmd/limit_read_mod.F90
===================================================================
--- LMDZ6/branches/DYNAMICO-conv/libf/phylmd/limit_read_mod.F90	(revision 3077)
+++ LMDZ6/branches/DYNAMICO-conv/libf/phylmd/limit_read_mod.F90	(revision 3312)
@@ -1,4 +1,4 @@
 !
-! $Header$
+! $Id$
 !
 MODULE limit_read_mod
@@ -31,4 +31,26 @@
 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 
+
+  SUBROUTINE init_limit_read(first_day)
+  USE mod_grid_phy_lmdz
+  USE surface_data
+  USE mod_phys_lmdz_para
+#ifdef CPP_XIOS
+  USE XIOS
+#endif
+  IMPLICIT NONE
+    INTEGER, INTENT(IN) :: first_day
+    
+    
+    IF ( type_ocean /= 'couple') THEN
+      IF (grid_type==unstructured) THEN
+#ifdef CPP_XIOS
+        IF (is_omp_master) CALL xios_set_file_attr("limit_read",enabled=.TRUE.,record_offset=first_day)
+#endif
+      ENDIF  
+    ENDIF
+
+  END SUBROUTINE init_limit_read
+  
   SUBROUTINE limit_read_frac(itime, dtime, jour, pctsrf_new, is_modified)
 !
@@ -150,5 +172,8 @@
     USE phys_cal_mod, ONLY : calend, year_len
     USE print_control_mod, ONLY: lunout, prt_level
-
+#ifdef CPP_XIOS
+    USE XIOS, ONLY: xios_recv_field
+#endif
+    
     IMPLICIT NONE
     
@@ -179,4 +204,10 @@
     REAL, DIMENSION(klon_glo)                 :: rug_glo  ! rugosity at global grid
     REAL, DIMENSION(klon_glo)                 :: alb_glo  ! albedo at global grid
+
+    REAL, DIMENSION(klon_mpi,nbsrf)           :: pct_mpi  ! fraction at global grid
+    REAL, DIMENSION(klon_mpi)                 :: sst_mpi  ! sea-surface temperature at global grid
+    REAL, DIMENSION(klon_mpi)                 :: rug_mpi  ! rugosity at global grid
+    REAL, DIMENSION(klon_mpi)                 :: alb_mpi  ! albedo at global grid
+
     CHARACTER(len=20)                         :: modname='limit_read_mod'     
     CHARACTER(LEN=99)                         :: abort_message, calendar, str
@@ -220,6 +251,10 @@
           END IF
 
-          !--- ERROR IF FILE RECORDS NUMBER IS NOT EQUAL TO EXPECTED NUMBER OF DAYS
-          ierr=NF90_INQUIRE(nid, UnlimitedDimID=ndimid)
+          !--- ERROR IF FILE RECORDS NUMBER IS NOT EQUAL TO EXPECTED NUMBER OF DAYS          
+          IF (grid_type==unstructured) THEN
+            ierr=NF90_INQ_DIMID(nid,"time_year",ndimid)
+          ELSE
+            ierr=NF90_INQUIRE(nid, UnlimitedDimID=ndimid)
+          ENDIF
           ierr=NF90_INQUIRE_DIMENSION(nid, ndimid, len=nn)
           WRITE(abort_message,'(a,2(i3,a))')'limit.nc records number (',nn,') does no'//&
@@ -228,5 +263,9 @@
 
           !--- ERROR IF FILES AND LMDZ HORIZONTAL RESOLUTIONS DO NOT MATCH
-          ierr=NF90_INQ_DIMID(nid, 'points_physiques', ndimid)
+          IF (grid_type==unstructured) THEN
+            ierr=NF90_INQ_DIMID(nid, 'cell', ndimid)
+          ELSE
+            ierr=NF90_INQ_DIMID(nid, 'points_physiques', ndimid)
+          ENDIF
           ierr=NF90_INQUIRE_DIMENSION(nid, ndimid, len=nn)
           WRITE(abort_message,'(a,2(i0,a))')'limit.nc horizontal number of cells (',nn, &
@@ -252,4 +291,46 @@
        jour_lu = jour
        is_modified = .TRUE.
+
+      IF (grid_type==unstructured) THEN
+
+#ifdef CPP_XIOS
+        IF ( type_ocean /= 'couple') THEN
+
+           IF (is_omp_master) CALL xios_recv_field("foce_limin",pct_mpi(:,is_oce))
+           IF (is_omp_master) CALL xios_recv_field("fsic_limin",pct_mpi(:,is_sic))
+  !         IF (read_continents .OR. itime == 1) THEN
+           IF (is_omp_master) CALL xios_recv_field("fter_limin",pct_mpi(:,is_ter))
+           IF (is_omp_master) CALL xios_recv_field("flic_limin",pct_mpi(:,is_lic))
+  !         ENDIF
+         ENDIF! type_ocean /= couple
+         
+         IF ( type_ocean /= 'couple') THEN                    
+             IF (is_omp_master) CALL xios_recv_field("sst_limin",sst_mpi)
+         ENDIF
+       
+         IF (.NOT. ok_veget) THEN
+           IF (is_omp_master) CALL xios_recv_field("alb_limin",alb_mpi)
+           IF (is_omp_master) CALL xios_recv_field("rug_limin",rug_mpi)
+         ENDIF
+
+       IF ( type_ocean /= 'couple') THEN
+          CALL Scatter_omp(sst_mpi,sst)
+          CALL Scatter_omp(pct_mpi(:,is_oce),pctsrf(:,is_oce))
+          CALL Scatter_omp(pct_mpi(:,is_sic),pctsrf(:,is_sic))
+!          IF (read_continents .OR. itime == 1) THEN
+             CALL Scatter_omp(pct_mpi(:,is_ter),pctsrf(:,is_ter))
+             CALL Scatter_omp(pct_mpi(:,is_lic),pctsrf(:,is_lic))
+!          END IF
+       END IF
+
+       IF (.NOT. ok_veget) THEN
+          CALL Scatter_omp(alb_mpi, albedo)
+          CALL Scatter_omp(rug_mpi, rugos)
+       END IF
+#endif
+
+ 
+     ELSE      ! grid_type==regular
+
 !$OMP MASTER  ! Only master thread
        IF (is_mpi_root) THEN ! Only master processus
@@ -371,4 +452,6 @@
        END IF
 
+      ENDIF ! Grid type
+
     ENDIF ! time to read
 
Index: LMDZ6/branches/DYNAMICO-conv/libf/phylmd/phyaqua_mod.F90
===================================================================
--- LMDZ6/branches/DYNAMICO-conv/libf/phylmd/phyaqua_mod.F90	(revision 3077)
+++ LMDZ6/branches/DYNAMICO-conv/libf/phylmd/phyaqua_mod.F90	(revision 3312)
@@ -29,5 +29,9 @@
     USE indice_sol_mod
     USE nrtype, ONLY: pi
-    USE ioipsl
+!    USE ioipsl
+    USE mod_phys_lmdz_para, ONLY: is_master
+    USE mod_phys_lmdz_transfert_para, ONLY: bcast
+    USE mod_grid_phy_lmdz
+    USE ioipsl_getin_p_mod, ONLY : getin_p
     IMPLICIT NONE
 
@@ -57,6 +61,4 @@
     INTEGER it, unit, i, k, itap
 
-    REAL airefi, zcufi, zcvfi
-
     REAL rugos, albedo
     REAL tsurf
@@ -64,9 +66,5 @@
     REAL qsol_f
     REAL rugsrel(nlon)
-    ! real zmea(nlon),zstd(nlon),zsig(nlon)
-    ! real zgam(nlon),zthe(nlon),zpic(nlon),zval(nlon)
-    ! real rlon(nlon),rlat(nlon)
     LOGICAL alb_ocean
-    ! integer demih_pas
 
     CHARACTER *80 ans, file_forctl, file_fordat, file_start
@@ -86,11 +84,6 @@
 
     INTEGER, SAVE :: read_climoz = 0 ! read ozone climatology
-
-    ! intermediate variables to use getin (need to be "save" to be shared by
-    ! all threads)
-    INTEGER, SAVE :: nbapp_rad_omp
-    REAL, SAVE :: co2_ppm_omp, solaire_omp
-    LOGICAL, SAVE :: alb_ocean_omp
-    REAL, SAVE :: rugos_omp
+!$OMP THREADPRIVATE(read_climoz)
+
     ! -------------------------------------------------------------------------
     ! declaration pour l'appel a phyredem
@@ -117,8 +110,6 @@
     INTEGER l, ierr, aslun
 
-!    REAL longitude, latitude
     REAL paire
 
-!    DATA latitude, longitude/48., 0./
 
     ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -148,10 +139,4 @@
     time = 0.
 
-    ! IM ajout latfi, lonfi
-!    rlatd = latfi
-!    rlond = lonfi
-!    rlat = rlatd*180./pi
-!    rlon = rlond*180./pi
-
     ! -----------------------------------------------------------------------
     ! initialisations de la physique
@@ -160,13 +145,7 @@
     day_ini = day_ref
     day_end = day_ini + ndays
-!    airefi = 1.
-!    zcufi = 1.
-!    zcvfi = 1.
-    !$OMP MASTER
-    nbapp_rad_omp = 24
-    CALL getin('nbapp_rad', nbapp_rad_omp)
-    !$OMP END MASTER
-    !$OMP BARRIER
-    nbapp_rad = nbapp_rad_omp
+
+    nbapp_rad = 24
+    CALL getin_p('nbapp_rad', nbapp_rad)
 
     ! ---------------------------------------------------------------------
@@ -175,20 +154,17 @@
     ! Initialisations des constantes
     ! Ajouter les manquants dans planete.def... (albedo etc)
-    !$OMP MASTER
-    co2_ppm_omp = 348.
-    CALL getin('co2_ppm', co2_ppm_omp)
-    solaire_omp = 1365.
-    CALL getin('solaire', solaire_omp)
+    co2_ppm = 348.
+    CALL getin_p('co2_ppm', co2_ppm)
+
+    solaire = 1365.
+    CALL getin_p('solaire', solaire)
+ 
     ! CALL getin('albedo',albedo) ! albedo is set below, depending on
     ! type_aqua
-    alb_ocean_omp = .TRUE.
-    CALL getin('alb_ocean', alb_ocean_omp)
-    !$OMP END MASTER
-    !$OMP BARRIER
-    co2_ppm = co2_ppm_omp
+    alb_ocean = .TRUE.
+    CALL getin_p('alb_ocean', alb_ocean)
+
     WRITE (*, *) 'iniaqua: co2_ppm=', co2_ppm
-    solaire = solaire_omp
     WRITE (*, *) 'iniaqua: solaire=', solaire
-    alb_ocean = alb_ocean_omp
     WRITE (*, *) 'iniaqua: alb_ocean=', alb_ocean
 
@@ -226,10 +202,6 @@
     END IF
 
-    !$OMP MASTER
-    rugos_omp = rugos
-    CALL getin('rugos', rugos_omp)
-    !$OMP END MASTER
-    !$OMP BARRIER
-    rugos = rugos_omp
+    CALL getin_p('rugos', rugos)
+
     WRITE (*, *) 'iniaqua: rugos=', rugos
     zmasq(:) = pctsrf(:, is_ter)
@@ -262,7 +234,12 @@
     CALL profil_sst(nlon, latitude, type_profil, phy_sst)
 
-    CALL writelim(klon, phy_nat, phy_alb, phy_sst, phy_bil, phy_rug, phy_ice, &
-      phy_fter, phy_foce, phy_flic, phy_fsic)
-
+    IF (grid_type==unstructured) THEN
+      CALL writelim_unstruct(klon, phy_nat, phy_alb, phy_sst, phy_bil, phy_rug, phy_ice, &
+                             phy_fter, phy_foce, phy_flic, phy_fsic)
+    ELSE
+      
+       CALL writelim(klon, phy_nat, phy_alb, phy_sst, phy_bil, phy_rug, phy_ice, &
+                     phy_fter, phy_foce, phy_flic, phy_fsic)
+    ENDIF
 
     ! ---------------------------------------------------------------------
@@ -339,5 +316,5 @@
     PRINT *, 'iniaqua: before phyredem'
 
-    pbl_tke(:,:,:)=1.e-8
+    pbl_tke(:,:,:) = 1.e-8 
     falb1 = albedo
     falb2 = albedo
@@ -349,5 +326,5 @@
     wake_deltaq = 0.
     wake_s = 0.
-    wake_dens = 0. 
+    wake_dens = 0.
     wake_cstar = 0.
     wake_pe = 0.
@@ -360,4 +337,14 @@
     alp_bl =0.
     treedrg(:,:,:)=0.
+
+!ym error : the sub surface dimension is the third not second : forgotten for iniaqua
+!    falb_dir(:,is_ter,:)=0.08; falb_dir(:,is_lic,:)=0.6
+!    falb_dir(:,is_oce,:)=0.5;  falb_dir(:,is_sic,:)=0.6
+    falb_dir(:,:,is_ter)=0.08; falb_dir(:,:,is_lic)=0.6
+    falb_dir(:,:,is_oce)=0.5;  falb_dir(:,:,is_sic)=0.6
+
+!ym falb_dif has been forgotten, initialize with defaukt value found in phyetat0 or 0 ?
+!ym probably the uninitialized value was 0 for standard (regular grid) case
+    falb_dif(:,:,:)=0
 
 
@@ -488,11 +475,14 @@
   ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 
-  SUBROUTINE writelim(klon, phy_nat, phy_alb, phy_sst, phy_bil, phy_rug, &
+  SUBROUTINE writelim_unstruct(klon, phy_nat, phy_alb, phy_sst, phy_bil, phy_rug, &
       phy_ice, phy_fter, phy_foce, phy_flic, phy_fsic)
 
-    USE mod_phys_lmdz_para, ONLY: is_mpi_root, is_omp_root
-    USE mod_grid_phy_lmdz, ONLY: klon_glo
-    USE mod_phys_lmdz_transfert_para, ONLY: gather
+    USE mod_phys_lmdz_para, ONLY: is_omp_master, klon_mpi
+    USE mod_phys_lmdz_transfert_para, ONLY: gather_omp
+#ifdef CPP_XIOS
+    USE xios
+#endif
     IMPLICIT NONE
+
     include "netcdf.inc"
 
@@ -509,4 +499,59 @@
     REAL, INTENT (IN) :: phy_fsic(klon, 360)
 
+    REAL :: phy_mpi(klon_mpi, 360) ! temporary variable, to store phy_***(:)
+      ! on the whole physics grid
+ 
+#ifdef CPP_XIOS
+    PRINT *, 'writelim: Ecriture du fichier limit'
+
+    CALL gather_omp(phy_foce, phy_mpi)
+    IF (is_omp_master) CALL xios_send_field('foce_limout',phy_mpi)
+
+    CALL gather_omp(phy_fsic, phy_mpi)
+    IF (is_omp_master) CALL xios_send_field('fsic_limout',phy_mpi)
+      
+    CALL gather_omp(phy_fter, phy_mpi)
+    IF (is_omp_master) CALL xios_send_field('fter_limout',phy_mpi)
+      
+    CALL gather_omp(phy_flic, phy_mpi)
+    IF (is_omp_master) CALL xios_send_field('flic_limout',phy_mpi)
+
+    CALL gather_omp(phy_sst, phy_mpi)
+    IF (is_omp_master) CALL xios_send_field('sst_limout',phy_mpi)
+
+    CALL gather_omp(phy_bil, phy_mpi)
+    IF (is_omp_master) CALL xios_send_field('bils_limout',phy_mpi)
+
+    CALL gather_omp(phy_alb, phy_mpi)
+    IF (is_omp_master) CALL xios_send_field('alb_limout',phy_mpi)
+
+    CALL gather_omp(phy_rug, phy_mpi)
+    IF (is_omp_master) CALL xios_send_field('rug_limout',phy_mpi)
+#endif
+  END SUBROUTINE writelim_unstruct
+
+
+
+  SUBROUTINE writelim(klon, phy_nat, phy_alb, phy_sst, phy_bil, phy_rug, &
+      phy_ice, phy_fter, phy_foce, phy_flic, phy_fsic)
+
+    USE mod_phys_lmdz_para, ONLY: is_master
+    USE mod_grid_phy_lmdz, ONLY: klon_glo
+    USE mod_phys_lmdz_transfert_para, ONLY: gather
+    IMPLICIT NONE
+    include "netcdf.inc"
+
+    INTEGER, INTENT (IN) :: klon
+    REAL, INTENT (IN) :: phy_nat(klon, 360)
+    REAL, INTENT (IN) :: phy_alb(klon, 360)
+    REAL, INTENT (IN) :: phy_sst(klon, 360)
+    REAL, INTENT (IN) :: phy_bil(klon, 360)
+    REAL, INTENT (IN) :: phy_rug(klon, 360)
+    REAL, INTENT (IN) :: phy_ice(klon, 360)
+    REAL, INTENT (IN) :: phy_fter(klon, 360)
+    REAL, INTENT (IN) :: phy_foce(klon, 360)
+    REAL, INTENT (IN) :: phy_flic(klon, 360)
+    REAL, INTENT (IN) :: phy_fsic(klon, 360)
+
     REAL :: phy_glo(klon_glo, 360) ! temporary variable, to store phy_***(:)
       ! on the whole physics grid
@@ -522,9 +567,9 @@
     INTEGER id_fter, id_foce, id_fsic, id_flic
 
-    IF (is_mpi_root .AND. is_omp_root) THEN
+    IF (is_master) THEN
 
       PRINT *, 'writelim: Ecriture du fichier limit'
 
-      ierr = nf_create('limit.nc', nf_clobber, nid)
+      ierr = nf_create('limit.nc', NF_NETCDF4, nid)
 
       ierr = nf_put_att_text(nid, nf_global, 'title', 30, &
@@ -627,10 +672,10 @@
       END DO
 
-    END IF ! of if (is_mpi_root.and.is_omp_root)
+    END IF ! of if (is_master)
 
     ! write the fields, after having collected them on master
 
     CALL gather(phy_nat, phy_glo)
-    IF (is_mpi_root .AND. is_omp_root) THEN
+    IF (is_master) THEN
 #ifdef NC_DOUBLE
       ierr = nf_put_var_double(nid, id_nat, phy_glo)
@@ -645,5 +690,5 @@
 
     CALL gather(phy_sst, phy_glo)
-    IF (is_mpi_root .AND. is_omp_root) THEN
+    IF (is_master) THEN
 #ifdef NC_DOUBLE
       ierr = nf_put_var_double(nid, id_sst, phy_glo)
@@ -658,5 +703,5 @@
 
     CALL gather(phy_bil, phy_glo)
-    IF (is_mpi_root .AND. is_omp_root) THEN
+    IF (is_master) THEN
 #ifdef NC_DOUBLE
       ierr = nf_put_var_double(nid, id_bils, phy_glo)
@@ -671,5 +716,5 @@
 
     CALL gather(phy_alb, phy_glo)
-    IF (is_mpi_root .AND. is_omp_root) THEN
+    IF (is_master) THEN
 #ifdef NC_DOUBLE
       ierr = nf_put_var_double(nid, id_alb, phy_glo)
@@ -684,5 +729,5 @@
 
     CALL gather(phy_rug, phy_glo)
-    IF (is_mpi_root .AND. is_omp_root) THEN
+    IF (is_master) THEN
 #ifdef NC_DOUBLE
       ierr = nf_put_var_double(nid, id_rug, phy_glo)
@@ -697,5 +742,5 @@
 
     CALL gather(phy_fter, phy_glo)
-    IF (is_mpi_root .AND. is_omp_root) THEN
+    IF (is_master) THEN
 #ifdef NC_DOUBLE
       ierr = nf_put_var_double(nid, id_fter, phy_glo)
@@ -710,5 +755,5 @@
 
     CALL gather(phy_foce, phy_glo)
-    IF (is_mpi_root .AND. is_omp_root) THEN
+    IF (is_master) THEN
 #ifdef NC_DOUBLE
       ierr = nf_put_var_double(nid, id_foce, phy_glo)
@@ -723,5 +768,5 @@
 
     CALL gather(phy_fsic, phy_glo)
-    IF (is_mpi_root .AND. is_omp_root) THEN
+    IF (is_master) THEN
 #ifdef NC_DOUBLE
       ierr = nf_put_var_double(nid, id_fsic, phy_glo)
@@ -736,5 +781,5 @@
 
     CALL gather(phy_flic, phy_glo)
-    IF (is_mpi_root .AND. is_omp_root) THEN
+    IF (is_master) THEN
 #ifdef NC_DOUBLE
       ierr = nf_put_var_double(nid, id_flic, phy_glo)
@@ -749,5 +794,5 @@
 
     ! close file:
-    IF (is_mpi_root .AND. is_omp_root) THEN
+    IF (is_master) THEN
       ierr = nf_close(nid)
     END IF
Index: LMDZ6/branches/DYNAMICO-conv/libf/phylmd/phys_state_var_mod.F90
===================================================================
--- LMDZ6/branches/DYNAMICO-conv/libf/phylmd/phys_state_var_mod.F90	(revision 3077)
+++ LMDZ6/branches/DYNAMICO-conv/libf/phylmd/phys_state_var_mod.F90	(revision 3312)
@@ -279,4 +279,6 @@
       REAL,ALLOCATABLE,SAVE :: total_rain(:), nday_rain(:)  
 !$OMP THREADPRIVATE(total_rain,nday_rain)
+      REAL,ALLOCATABLE,SAVE :: paire_ter(:)
+!$OMP THREADPRIVATE(paire_ter)
 ! albsol1: albedo du sol total pour SW visible
 ! albsol2: albedo du sol total pour SW proche IR
@@ -410,4 +412,7 @@
       ! tendencies on wind due to gravity waves
 
+      LOGICAL,SAVE :: is_initialized=.FALSE.
+!$OMP THREADPRIVATE(is_initialized)    
+
 CONTAINS
 
@@ -430,4 +435,6 @@
 include "clesphys.h"
 
+      IF (is_initialized) RETURN
+      is_initialized=.TRUE.
       ALLOCATE(pctsrf(klon,nbsrf))
       ALLOCATE(ftsol(klon,nbsrf))
@@ -540,4 +547,5 @@
       ALLOCATE(pfrac_1nucl(klon,klev))
       ALLOCATE(total_rain(klon), nday_rain(klon))
+      ALLOCATE(paire_ter(klon))
       ALLOCATE(albsol1(klon), albsol2(klon))
 !albedo SB >>>
@@ -595,5 +603,8 @@
       ALLOCATE(ale_bl_trig(klon))
 !!! fin nrlmd le 10/04/2012
-      if (ok_gwd_rando) allocate(du_gwd_rando(klon, klev))
+      IF (ok_gwd_rando) THEN
+        allocate(du_gwd_rando(klon, klev))
+        du_gwd_rando(:,:)=0.
+      ENDIF
       if (.not. ok_hines .and. ok_gwd_rando) allocate(du_gwd_front(klon, klev))
 
@@ -680,4 +691,5 @@
       deallocate(pfrac_1nucl)
       deallocate(total_rain, nday_rain)
+      deallocate(paire_ter)
       deallocate(albsol1, albsol2)
 !albedo SB >>>
@@ -727,5 +739,5 @@
       deallocate(ale_bl_trig)
 !!! fin nrlmd le 10/04/2012
-
+      is_initialized=.FALSE.
 END SUBROUTINE phys_state_var_end
 
Index: LMDZ6/branches/DYNAMICO-conv/libf/phylmd/write_histrac.h
===================================================================
--- LMDZ6/branches/DYNAMICO-conv/libf/phylmd/write_histrac.h	(revision 3077)
+++ LMDZ6/branches/DYNAMICO-conv/libf/phylmd/write_histrac.h	(revision 3312)
@@ -8,5 +8,5 @@
      
      CALL histwrite_phy(nid_tra,.FALSE.,"phis",itau_w,pphis)
-     CALL histwrite_phy(nid_tra,.FALSE.,"aire",itau_w,airephy)
+     CALL histwrite_phy(nid_tra,.FALSE.,"aire",itau_w,cell_area)
      CALL histwrite_phy(nid_tra,.FALSE.,"zmasse",itau_w,zmasse)
 ! RomP >>>
Index: LMDZ6/branches/DYNAMICO-conv/libf/phylmd/yamada4.F90
===================================================================
--- LMDZ6/branches/DYNAMICO-conv/libf/phylmd/yamada4.F90	(revision 3077)
+++ LMDZ6/branches/DYNAMICO-conv/libf/phylmd/yamada4.F90	(revision 3312)
@@ -739,6 +739,4 @@
   IMPLICIT NONE
  
-  include "dimensions.h"
-
 !    vdif_q2: subroutine qui calcule la diffusion de la TKE par la TKE
 !             avec un schema implicite en temps avec 
@@ -830,6 +828,4 @@
   IMPLICIT NONE
 
-  include "dimensions.h"
-!
 ! vdif_q2e: subroutine qui calcule la diffusion de TKE par la TKE
 !           avec un schema explicite en temps
