Index: /LMDZ5/trunk/libf/phylmd/declare_STDlev.h
===================================================================
--- /LMDZ5/trunk/libf/phylmd/declare_STDlev.h	(revision 1796)
+++ /LMDZ5/trunk/libf/phylmd/declare_STDlev.h	(revision 1797)
@@ -1,10 +1,10 @@
 cIM for NMC files
-      real twriteSTD(klon,nlevSTD,nfiles)
-      real qwriteSTD(klon,nlevSTD,nfiles)
+!      real twriteSTD(klon,nlevSTD,nfiles)
+!      real qwriteSTD(klon,nlevSTD,nfiles)
       real rhwriteSTD(klon,nlevSTD,nfiles)
-      real phiwriteSTD(klon,nlevSTD,nfiles)
-      real uwriteSTD(klon,nlevSTD,nfiles)
-      real vwriteSTD(klon,nlevSTD,nfiles)
-      real wwriteSTD(klon,nlevSTD,nfiles)
+!      real phiwriteSTD(klon,nlevSTD,nfiles)
+!      real uwriteSTD(klon,nlevSTD,nfiles)
+!      real vwriteSTD(klon,nlevSTD,nfiles)
+!      real wwriteSTD(klon,nlevSTD,nfiles)
 
       real twriteSTD3(klon,nlevSTD3)
Index: /LMDZ5/trunk/libf/phylmd/iophy.F90
===================================================================
--- /LMDZ5/trunk/libf/phylmd/iophy.F90	(revision 1796)
+++ /LMDZ5/trunk/libf/phylmd/iophy.F90	(revision 1797)
@@ -4,6 +4,6 @@
 module iophy
   
-! abd  REAL,private,allocatable,dimension(:),save :: io_lat
-! abd  REAL,private,allocatable,dimension(:),save :: io_lon
+! abd  REAL,private,allocatable,DIMENSION(:),save :: io_lat
+! abd  REAL,private,allocatable,DIMENSION(:),save :: io_lon
   REAL,ALLOCATABLE,DIMENSION(:),SAVE :: io_lat
   REAL,ALLOCATABLE,DIMENSION(:),SAVE :: io_lon
@@ -24,18 +24,25 @@
 
 
-contains
-
-  subroutine init_iophy_new(rlat,rlon)
+CONTAINS
+
+! ug Routine pour définir itau_iophy depuis phys_output_write_mod:
+  SUBROUTINE set_itau_iophy(ito)
+      IMPLICIT NONE
+      INTEGER, INTENT(IN) :: ito
+      itau_iophy = ito
+  END SUBROUTINE
+
+  SUBROUTINE init_iophy_new(rlat,rlon)
   USE dimphy
   USE mod_phys_lmdz_para
   USE mod_grid_phy_lmdz
   USE ioipsl
-  implicit none
-  include 'dimensions.h'   
-    real,dimension(klon),intent(in) :: rlon
-    real,dimension(klon),intent(in) :: rlat
-
-    REAL,dimension(klon_glo)        :: rlat_glo
-    REAL,dimension(klon_glo)        :: rlon_glo
+  IMPLICIT NONE
+  INCLUDE 'dimensions.h'   
+    REAL,DIMENSION(klon),INTENT(IN) :: rlon
+    REAL,DIMENSION(klon),INTENT(IN) :: rlat
+
+    REAL,DIMENSION(klon_glo)        :: rlat_glo
+    REAL,DIMENSION(klon_glo)        :: rlon_glo
     
     INTEGER,DIMENSION(2) :: ddid
@@ -72,25 +79,25 @@
     dpl=(/ iim, jj_end /)
     dhs=(/ ii_begin-1,0 /)
-    if (mpi_rank==mpi_size-1) then
+    IF (mpi_rank==mpi_size-1) THEN
       dhe=(/0,0/)
-    else
+    ELSE
       dhe=(/ iim-ii_end,0 /)  
-    endif
-    
-    call flio_dom_set(mpi_size,mpi_rank,ddid,dsg,dsl,dpf,dpl,dhs,dhe, &
+    ENDIF
+    
+    CALL flio_dom_set(mpi_size,mpi_rank,ddid,dsg,dsl,dpf,dpl,dhs,dhe, &
                       'APPLE',phys_domain_id)
 
 !$OMP END MASTER
       
-  end subroutine init_iophy_new
-
-  subroutine init_iophy(lat,lon)
-  USE dimphy
-  USE mod_phys_lmdz_para
-  use ioipsl
-  implicit none
-  include 'dimensions.h'   
-    real,dimension(iim),intent(in) :: lon
-    real,dimension(jjm+1-1/(iim*jjm)),intent(in) :: lat
+  END SUBROUTINE init_iophy_new
+
+  SUBROUTINE init_iophy(lat,lon)
+  USE dimphy
+  USE mod_phys_lmdz_para
+  USE ioipsl
+  IMPLICIT NONE
+  INCLUDE 'dimensions.h'   
+    REAL,DIMENSION(iim),INTENT(IN) :: lon
+    REAL,DIMENSION(jjm+1-1/(iim*jjm)),INTENT(IN) :: lat
 
     INTEGER,DIMENSION(2) :: ddid
@@ -125,18 +132,18 @@
 !$OMP END MASTER
       
-  end subroutine init_iophy
-  
-  subroutine histbeg_phy(name,itau0,zjulian,dtime,nhori,nid_day)
+  end SUBROUTINE init_iophy
+  
+  SUBROUTINE histbeg_phy(name,itau0,zjulian,dtime,nhori,nid_day)
   USE dimphy
   USE mod_phys_lmdz_para
   use ioipsl
   use write_field
-  implicit none
+  IMPLICIT NONE
   include 'dimensions.h'
     
-    character*(*), intent(IN) :: name
-    integer, intent(in) :: itau0
-    real,intent(in) :: zjulian
-    real,intent(in) :: dtime
+    character*(*), INTENT(IN) :: name
+    integer, INTENT(IN) :: itau0
+    REAL,INTENT(IN) :: zjulian
+    REAL,INTENT(IN) :: dtime
     integer,intent(out) :: nhori
     integer,intent(out) :: nid_day
@@ -152,7 +159,7 @@
 !$OMP END MASTER
   
-  end subroutine histbeg_phy
-
-  subroutine histbeg_phy_points(rlon,rlat,pim,tabij,ipt,jpt, &
+  END SUBROUTINE histbeg_phy
+
+  SUBROUTINE histbeg_phy_points(rlon,rlat,pim,tabij,ipt,jpt, &
              plon,plat,plon_bounds,plat_bounds, &
              nname,itau0,zjulian,dtime,nnhori,nnid_day)
@@ -162,23 +169,23 @@
   use ioipsl
   use write_field
-  implicit none
+  IMPLICIT NONE
   include 'dimensions.h' 
 
-    real,dimension(klon),intent(in) :: rlon
-    real,dimension(klon),intent(in) :: rlat
-    integer, intent(in) :: itau0
-    real,intent(in) :: zjulian
-    real,intent(in) :: dtime
-    integer, intent(in) :: pim
+    REAL,DIMENSION(klon),INTENT(IN) :: rlon
+    REAL,DIMENSION(klon),INTENT(IN) :: rlat
+    integer, INTENT(IN) :: itau0
+    REAL,INTENT(IN) :: zjulian
+    REAL,INTENT(IN) :: dtime
+    integer, INTENT(IN) :: pim
     integer, intent(out) :: nnhori
-    character(len=20), intent(in) :: nname
+    character(len=20), INTENT(IN) :: nname
     INTEGER, intent(out) :: nnid_day
     integer :: i
-    REAL,dimension(klon_glo)        :: rlat_glo
-    REAL,dimension(klon_glo)        :: rlon_glo
-    INTEGER, DIMENSION(pim), intent(in)  :: tabij
-    REAL,dimension(pim), intent(in) :: plat, plon
-    INTEGER,dimension(pim), intent(in) :: ipt, jpt
-    REAL,dimension(pim,2), intent(out) :: plat_bounds, plon_bounds
+    REAL,DIMENSION(klon_glo)        :: rlat_glo
+    REAL,DIMENSION(klon_glo)        :: rlon_glo
+    INTEGER, DIMENSION(pim), INTENT(IN)  :: tabij
+    REAL,DIMENSION(pim), INTENT(IN) :: plat, plon
+    INTEGER,DIMENSION(pim), INTENT(IN) :: ipt, jpt
+    REAL,DIMENSION(pim,2), intent(out) :: plat_bounds, plon_bounds
 
     INTEGER, SAVE :: tabprocbeg, tabprocend
@@ -187,8 +194,8 @@
     INTEGER, PARAMETER :: nip=1
     INTEGER :: npproc
-    REAL, allocatable, dimension(:) :: npplat, npplon
-    REAL, allocatable, dimension(:,:) :: npplat_bounds, npplon_bounds
+    REAL, allocatable, DIMENSION(:) :: npplat, npplon
+    REAL, allocatable, DIMENSION(:,:) :: npplat_bounds, npplon_bounds
     INTEGER, PARAMETER :: jjmp1=jjm+1-1/jjm
-    REAL, dimension(iim,jjmp1) :: zx_lon, zx_lat
+    REAL, DIMENSION(iim,jjmp1) :: zx_lon, zx_lat
 
     CALL gather(rlat,rlat_glo)
@@ -323,5 +330,5 @@
 !$OMP END MASTER
 
-  end subroutine histbeg_phy_points
+  end SUBROUTINE histbeg_phy_points
  
   SUBROUTINE histwrite2d_phy_old(nid,lpoint,name,itau,field)
@@ -334,18 +341,18 @@
   include 'iniprint.h'
     
-    integer,intent(in) :: nid
-    logical,intent(in) :: lpoint 
-    character*(*), intent(IN) :: name
-    integer, intent(in) :: itau
-    real,dimension(:),intent(in) :: field
-    REAL,dimension(klon_mpi) :: buffer_omp
-    INTEGER, allocatable, dimension(:) :: index2d
+    integer,INTENT(IN) :: nid
+    logical,INTENT(IN) :: lpoint 
+    character*(*), INTENT(IN) :: name
+    integer, INTENT(IN) :: itau
+    REAL,DIMENSION(:),INTENT(IN) :: field
+    REAL,DIMENSION(klon_mpi) :: buffer_omp
+    INTEGER, allocatable, DIMENSION(:) :: index2d
     REAL :: Field2d(iim,jj_nb)
 
     integer :: ip
-    real,allocatable,dimension(:) :: fieldok
-
-
-    IF (size(field)/=klon) CALL abort_gcm('iophy::histwrite2d','Field first dimension not equal to klon',1)
+    REAL,allocatable,DIMENSION(:) :: fieldok
+
+
+    IF (size(field)/=klon) CALL abort_gcm('iophy::histwrite2d','Field first DIMENSION not equal to klon',1)
     
     CALL Gather_omp(field,buffer_omp)    
@@ -387,7 +394,7 @@
 
  
-  end subroutine histwrite2d_phy_old
-
-  subroutine histwrite3d_phy_old(nid,lpoint,name,itau,field)
+  end SUBROUTINE histwrite2d_phy_old
+
+  SUBROUTINE histwrite3d_phy_old(nid,lpoint,name,itau,field)
   USE dimphy
   USE mod_phys_lmdz_para
@@ -395,21 +402,21 @@
 
   use ioipsl
-  implicit none
+  IMPLICIT NONE
   include 'dimensions.h'
   include 'iniprint.h'
     
-    integer,intent(in) :: nid
-    logical,intent(in) :: lpoint
-    character*(*), intent(IN) :: name
-    integer, intent(in) :: itau
-    real,dimension(:,:),intent(in) :: field  ! --> field(klon,:)
-    REAL,dimension(klon_mpi,size(field,2)) :: buffer_omp
+    integer,INTENT(IN) :: nid
+    logical,INTENT(IN) :: lpoint
+    character*(*), INTENT(IN) :: name
+    integer, INTENT(IN) :: itau
+    REAL,DIMENSION(:,:),INTENT(IN) :: field  ! --> field(klon,:)
+    REAL,DIMENSION(klon_mpi,size(field,2)) :: buffer_omp
     REAL :: Field3d(iim,jj_nb,size(field,2))
     INTEGER :: ip, n, nlev
-    INTEGER, ALLOCATABLE, dimension(:) :: index3d
-    real,allocatable, dimension(:,:) :: fieldok
-
-
-    IF (size(field,1)/=klon) CALL abort_gcm('iophy::histwrite3d','Field first dimension not equal to klon',1)
+    INTEGER, ALLOCATABLE, DIMENSION(:) :: index3d
+    REAL,allocatable, DIMENSION(:,:) :: fieldok
+
+
+    IF (size(field,1)/=klon) CALL abort_gcm('iophy::histwrite3d','Field first DIMENSION not equal to klon',1)
     nlev=size(field,2)
 
@@ -460,5 +467,5 @@
 !$OMP END MASTER    
 
-  end subroutine histwrite3d_phy_old
+  end SUBROUTINE histwrite3d_phy_old
 
 
@@ -480,9 +487,9 @@
   include 'dimensions.h'
     
-!    integer,intent(in) :: nid
-!    logical,intent(in) :: lpoint 
-!    character*(*), intent(IN) :: name
-!    integer, intent(in) :: itau
-!    real,dimension(:),intent(in) :: field
+!    integer,INTENT(IN) :: nid
+!    logical,INTENT(IN) :: lpoint 
+!    character*(*), INTENT(IN) :: name
+!    integer, INTENT(IN) :: itau
+!    REAL,DIMENSION(:),INTENT(IN) :: field
 
       TYPE(ctrl_out), INTENT(IN) :: var
@@ -492,6 +499,6 @@
       INTEGER :: iff, iff_beg, iff_end
       
-    REAL,dimension(klon_mpi) :: buffer_omp
-    INTEGER, allocatable, dimension(:) :: index2d
+    REAL,DIMENSION(klon_mpi) :: buffer_omp
+    INTEGER, allocatable, DIMENSION(:) :: index2d
     REAL :: Field2d(iim,jj_nb)
 
@@ -508,5 +515,5 @@
       END IF
 
-    IF (size(field)/=klon) CALL abort_gcm('iophy::histwrite2d','Field first dimension not equal to klon',1)
+    IF (size(field)/=klon) CALL abort_gcm('iophy::histwrite2d','Field first DIMENSION not equal to klon',1)
     
     CALL Gather_omp(field,buffer_omp)    
@@ -578,9 +585,9 @@
   include 'dimensions.h'
     
-!    integer,intent(in) :: nid
-!    logical,intent(in) :: lpoint
-!    character*(*), intent(IN) :: name
-!    integer, intent(in) :: itau
-!    real,dimension(:,:),intent(in) :: field  ! --> field(klon,:)
+!    integer,INTENT(IN) :: nid
+!    logical,INTENT(IN) :: lpoint
+!    character*(*), INTENT(IN) :: name
+!    integer, INTENT(IN) :: itau
+!    REAL,DIMENSION(:,:),INTENT(IN) :: field  ! --> field(klon,:)
 
       TYPE(ctrl_out), INTENT(IN) :: var
@@ -594,5 +601,5 @@
     REAL,ALLOCATABLE, DIMENSION(:,:) :: fieldok
 
-    IF (size(field,1)/=klon) CALL abort_gcm('iophy::histwrite3d','Field first dimension not equal to klon',1)
+    IF (size(field,1)/=klon) CALL abort_gcm('iophy::histwrite3d','Field first DIMENSION not equal to klon',1)
     nlev=size(field,2)
 
Index: /LMDZ5/trunk/libf/phylmd/phys_local_var_mod.F90
===================================================================
--- /LMDZ5/trunk/libf/phylmd/phys_local_var_mod.F90	(revision 1796)
+++ /LMDZ5/trunk/libf/phylmd/phys_local_var_mod.F90	(revision 1797)
@@ -3,5 +3,4 @@
 !
       MODULE phys_local_var_mod
-
 ! Variables locales pour effectuer les appels en serie
 !======================================================================
@@ -187,4 +186,82 @@
 !$OMP THREADPRIVATE(topswcf_aerop, solswcf_aerop)
 
+
+!Ajout de celles nécessaires au phys_output_write_mod
+      REAL, SAVE, ALLOCATABLE :: slp(:)
+!$OMP THREADPRIVATE(slp)
+      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: sens, flwp, fiwp 
+!$OMP THREADPRIVATE(sens, flwp, fiwp)
+      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: ale_wake, alp_wake, bils
+!$OMP THREADPRIVATE(ale_wake, alp_wake, bils)
+      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: cdragm, cdragh
+!$OMP THREADPRIVATE(cdragm, cdragh)
+      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: cldh, cldl, cldm, cldq, cldt, qsat2m, qsol
+!$OMP THREADPRIVATE(cldh, cldl, cldm, cldq, cldt, qsat2m, qsol)
+      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: dthmin, evap, fder, plcl, plfc, prw
+!$OMP THREADPRIVATE(dthmin, evap, fder, plcl, plfc, prw)
+      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: zustar, zu10m, zv10m, rh2m
+!$OMP THREADPRIVATE(zustar, zu10m, zv10m, rh2m)
+      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: s_lcl, s_pblh, s_pblt, s_therm
+!$OMP THREADPRIVATE(s_lcl, s_pblh, s_pblt, s_therm)
+      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: slab_wfbils
+!$OMP THREADPRIVATE(slab_wfbils)
+      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: tpot, tpote, ue, uq, ve, vq, zxffonte
+!$OMP THREADPRIVATE(tpot, tpote, ue, uq, ve, vq, zxffonte)
+      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: zxfqcalving
+!$OMP THREADPRIVATE(zxfqcalving)
+      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: zxfluxlat, zxrugs, zxtsol, snow_lsc, zxfqfonte
+!$OMP THREADPRIVATE(zxfluxlat, zxrugs, zxtsol, snow_lsc, zxfqfonte)
+      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: zxqsurf, rain_lsc
+!$OMP THREADPRIVATE(zxqsurf, rain_lsc)
+      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: wake_h, wbeff, zmax_th, zq2m, zt2m
+!$OMP THREADPRIVATE(wake_h, wbeff, zmax_th, zq2m, zt2m)
+      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: weak_inversion
+!$OMP THREADPRIVATE(weak_inversion)
+      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: ale_bl_stat,alp_bl_conv,alp_bl_det
+!$OMP THREADPRIVATE(ale_bl_stat,alp_bl_conv,alp_bl_det)
+      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: alp_bl_fluct_m,alp_bl_fluct_tke
+!$OMP THREADPRIVATE(alp_bl_fluct_m,alp_bl_fluct_tke)
+      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: alp_bl_stat, n2, s2
+!$OMP THREADPRIVATE(alp_bl_stat, n2, s2)
+      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: proba_notrig, random_notrig
+!$OMP THREADPRIVATE(proba_notrig, random_notrig)
+      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: fsolsw, wfbils, wfbilo
+!$OMP THREADPRIVATE(fsolsw, wfbils, wfbilo)
+      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:)  :: t2m, fevap, fluxlat, fsollw,evap_pot
+!$OMP THREADPRIVATE(t2m, fevap, fluxlat, fsollw,evap_pot)
+      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: dnwd, dnwd0, upwd, omega
+!$OMP THREADPRIVATE(dnwd, dnwd0, upwd, omega)
+!      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: coefh, coefm, lambda_th
+      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: lambda_th
+!$OMP THREADPRIVATE(lambda_th)
+      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: cldemi, cldfra, cldtau, fiwc, fl, re, flwc
+!$OMP THREADPRIVATE(cldemi, cldfra, cldtau, fiwc, fl, re, flwc)
+      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: ref_liq, ref_ice, theta, zphi
+!$OMP THREADPRIVATE(ref_liq, ref_ice, theta, zphi)
+      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: wake_omg, zx_rh
+!$OMP THREADPRIVATE(wake_omg, zx_rh)
+      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: frugs, agesno
+!$OMP THREADPRIVATE(frugs, agesno)
+      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: pmflxr, pmflxs, prfl, psfl, fraca
+!$OMP THREADPRIVATE(pmflxr, pmflxs, prfl, psfl, fraca)
+      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: Vprecip, zw2
+!$OMP THREADPRIVATE(Vprecip, zw2)
+      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: pmfd, pmfu
+!$OMP THREADPRIVATE(pmfd, pmfu)
+      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:,:) :: fluxt, fluxu, fluxv
+!$OMP THREADPRIVATE(fluxt, fluxu, fluxv)
+      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:,:) :: uwriteSTD, vwriteSTD, wwriteSTD
+!$OMP THREADPRIVATE(uwriteSTD, vwriteSTD, wwriteSTD)
+      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:,:) :: phiwriteSTD, qwriteSTD, twriteSTD
+!$OMP THREADPRIVATE(phiwriteSTD, qwriteSTD, twriteSTD)
+
+! ug et d'autres encore:
+      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: wdtrainA, wdtrainM
+!$OMP THREADPRIVATE(wdtrainA, wdtrainM)
+      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: beta_prec
+!$OMP THREADPRIVATE(beta_prec)
+      REAL, ALLOCATABLE, SAVE, DIMENSION(:,:) :: rneb
+!$OMP THREADPRIVATE(rneb)
+
 CONTAINS
 
@@ -195,4 +272,6 @@
 USE aero_mod
 USE indice_sol_mod
+USE phys_output_var_mod
+USE phys_state_var_mod
 
 IMPLICIT NONE
@@ -279,4 +358,59 @@
       ALLOCATE(topswcf_aerop(klon,naero_grp), solswcf_aerop(klon,naero_grp))
 
+! FH Ajout de celles nécessaires au phys_output_write_mod
+
+      ALLOCATE(slp(klon))
+      ALLOCATE(ale_wake(klon), alp_wake(klon), bils(klon))
+      ALLOCATE(cdragm(klon), cdragh(klon), cldh(klon), cldl(klon))
+      ALLOCATE(cldm(klon), cldq(klon), cldt(klon), qsat2m(klon), qsol(klon))
+      ALLOCATE(dthmin(klon), evap(klon), fder(klon), plcl(klon), plfc(klon))
+      ALLOCATE(prw(klon), zustar(klon), zu10m(klon), zv10m(klon), rh2m(klon))
+      ALLOCATE(s_lcl(klon))
+      ALLOCATE(s_pblh(klon), s_pblt(klon), s_therm(klon))
+      ALLOCATE(slab_wfbils(klon), tpot(klon), tpote(klon), ue(klon))
+      ALLOCATE(uq(klon), ve(klon), vq(klon), zxffonte(klon))
+      ALLOCATE(zxfqcalving(klon), zxfluxlat(klon), zxrugs(klon))
+      ALLOCATE(zxtsol(klon), snow_lsc(klon), zxfqfonte(klon), zxqsurf(klon))
+      ALLOCATE(rain_lsc(klon), wake_h(klon), wbeff(klon), zmax_th(klon))
+      ALLOCATE(zq2m(klon), zt2m(klon), weak_inversion(klon))
+      ALLOCATE(sens(klon), flwp(klon), fiwp(klon))
+      ALLOCATE(ale_bl_stat(klon), alp_bl_conv(klon), alp_bl_det(klon))
+      ALLOCATE(alp_bl_fluct_m(klon), alp_bl_fluct_tke(klon))
+      ALLOCATE(alp_bl_stat(klon), n2(klon), s2(klon))
+      ALLOCATE(proba_notrig(klon), random_notrig(klon))
+
+      ALLOCATE(dnwd(klon, klev), dnwd0(klon, klev))
+!      ALLOCATE(upwd(klon, klev), omega(klon, klev), coefh(klon, klev))
+      ALLOCATE(upwd(klon, klev), omega(klon, klev))
+!      ALLOCATE(coefm(klon, klev), lambda_th(klon, klev), cldemi(klon, klev))
+      ALLOCATE(lambda_th(klon, klev), cldemi(klon, klev))
+      ALLOCATE(cldfra(klon, klev), cldtau(klon, klev), fiwc(klon, klev))
+      ALLOCATE(fl(klon, klev), re(klon, klev), flwc(klon, klev))
+      ALLOCATE(ref_liq(klon, klev), ref_ice(klon, klev), theta(klon, klev))
+      ALLOCATE(zphi(klon, klev), wake_omg(klon, klev), zx_rh(klon, klev))
+      ALLOCATE(pmfd(klon, klev), pmfu(klon, klev))
+
+      ALLOCATE(t2m(klon, nbsrf), fevap(klon, nbsrf), fluxlat(klon, nbsrf))
+      ALLOCATE(frugs(klon, nbsrf), agesno(klon, nbsrf), fsollw(klon, nbsrf))
+      ALLOCATE(fsolsw(klon, nbsrf), wfbils(klon, nbsrf), wfbilo(klon, nbsrf))
+      ALLOCATE(evap_pot(klon, nbsrf))
+
+      ALLOCATE(pmflxr(klon, klev+1), pmflxs(klon, klev+1), prfl(klon, klev+1))
+      ALLOCATE(psfl(klon, klev+1), fraca(klon, klev+1), Vprecip(klon, klev+1))
+      ALLOCATE(zw2(klon, klev+1))
+
+      ALLOCATE(fluxu(klon, klev, nbsrf), fluxv(klon, klev, nbsrf))
+      ALLOCATE(fluxt(klon, klev, nbsrf))
+
+      ALLOCATE(uwriteSTD(klon,nlevSTD,nfiles), vwriteSTD(klon,nlevSTD,nfiles))
+      ALLOCATE(wwriteSTD(klon,nlevSTD,nfiles), phiwriteSTD(klon,nlevSTD,nfiles))
+      ALLOCATE(qwriteSTD(klon,nlevSTD,nfiles), twriteSTD(klon,nlevSTD,nfiles))
+
+! ug et d'autres encore:
+      ALLOCATE(wdtrainA(klon,klev),wdtrainM(klon,klev))
+      ALLOCATE(beta_prec(klon,klev))
+      ALLOCATE(rneb(klon,klev))
+
+
 END SUBROUTINE phys_local_var_init
 
@@ -368,4 +502,56 @@
       deallocate(topswcf_aerop, solswcf_aerop)
 
+
+! FH Ajout de celles nécessaires au phys_output_write_mod
+      DEALLOCATE(slp)
+      DEALLOCATE(ale_wake, alp_wake, bils)
+      DEALLOCATE(cdragm, cdragh, cldh, cldl)
+      DEALLOCATE(cldm, cldq, cldt, qsat2m, qsol)
+      DEALLOCATE(dthmin, evap, fder, plcl, plfc)
+      DEALLOCATE(prw, zustar, zu10m, zv10m, rh2m, s_lcl)
+      DEALLOCATE(s_pblh, s_pblt, s_therm)
+      DEALLOCATE(slab_wfbils, tpot, tpote, ue)
+      DEALLOCATE(uq, ve, vq, zxffonte)
+      DEALLOCATE(zxfqcalving, zxfluxlat, zxrugs)
+      DEALLOCATE(zxtsol, snow_lsc, zxfqfonte, zxqsurf)
+      DEALLOCATE(rain_lsc, wake_h, wbeff, zmax_th)
+      DEALLOCATE(zq2m, zt2m, weak_inversion)
+      DEALLOCATE(sens, flwp, fiwp)
+      DEALLOCATE(ale_bl_stat,alp_bl_conv,alp_bl_det)
+      DEALLOCATE(alp_bl_fluct_m,alp_bl_fluct_tke)
+      DEALLOCATE(alp_bl_stat, n2, s2)
+      DEALLOCATE(proba_notrig, random_notrig)
+
+      DEALLOCATE(dnwd, dnwd0)
+!      DEALLOCATE(upwd, omega, coefh)
+      DEALLOCATE(upwd, omega)
+!      DEALLOCATE(coefm, lambda_th, cldemi)
+      DEALLOCATE(lambda_th, cldemi)
+      DEALLOCATE(cldfra, cldtau, fiwc)
+      DEALLOCATE(fl, re, flwc)
+      DEALLOCATE(ref_liq, ref_ice, theta)
+      DEALLOCATE(zphi, wake_omg, zx_rh)
+      DEALLOCATE(pmfd, pmfu)
+
+      DEALLOCATE(t2m, fevap, fluxlat)
+      DEALLOCATE(frugs, agesno, fsollw, evap_pot)
+      DEALLOCATE(fsolsw, wfbils, wfbilo)
+
+      DEALLOCATE(pmflxr, pmflxs, prfl)
+      DEALLOCATE(psfl, fraca, Vprecip)
+      DEALLOCATE(zw2)
+
+      DEALLOCATE(fluxu, fluxv)
+      DEALLOCATE(fluxt)
+
+      DEALLOCATE(uwriteSTD, vwriteSTD)
+      DEALLOCATE(wwriteSTD, phiwriteSTD)
+      DEALLOCATE(qwriteSTD, twriteSTD)
+
+! ug et d'autres encore:
+      DEALLOCATE(wdtrainA, wdtrainM)
+      DEALLOCATE(beta_prec)
+      DEALLOCATE(rneb)
+
 END SUBROUTINE phys_local_var_end
 
Index: /LMDZ5/trunk/libf/phylmd/phys_output_var_mod.F90
===================================================================
--- /LMDZ5/trunk/libf/phylmd/phys_output_var_mod.F90	(revision 1796)
+++ /LMDZ5/trunk/libf/phylmd/phys_output_var_mod.F90	(revision 1797)
@@ -50,4 +50,7 @@
 !$OMP THREADPRIVATE(levmin, levmax)
 
+      LOGICAL, SAVE :: vars_defined = .TRUE.
+!$OMP THREADPRIVATE(vars_defined)
+
   TYPE ctrl_out
      INTEGER,DIMENSION(nfiles)            :: flag
Index: /LMDZ5/trunk/libf/phylmd/phys_output_write_new.h
===================================================================
--- /LMDZ5/trunk/libf/phylmd/phys_output_write_new.h	(revision 1796)
+++ /LMDZ5/trunk/libf/phylmd/phys_output_write_new.h	(revision 1797)
@@ -1,5 +1,5 @@
       itau_w = itau_phy + itap + start_time * day_step / iphysiq
       ! ug On transmet le pas de temps à iophy pour que les méthodes histwrite y aient accès:
-      itau_iophy = itau_w
+      CALL set_itau_iophy(itau_w)
 
              ndex2d = 0
Index: /LMDZ5/trunk/libf/phylmd/physiq.F
===================================================================
--- /LMDZ5/trunk/libf/phylmd/physiq.F	(revision 1796)
+++ /LMDZ5/trunk/libf/phylmd/physiq.F	(revision 1797)
@@ -173,5 +173,4 @@
       PARAMETER (ok_region=.FALSE.)
 c======================================================================
-      real weak_inversion(klon),dthmin(klon)
       real seuil_inversion
       save seuil_inversion
@@ -184,5 +183,4 @@
       REAL zz,znum,zden
       REAL wmax_th(klon)
-      REAL zmax_th(klon)
       REAL tau_overturning_th(klon)
 
@@ -220,5 +218,5 @@
       REAL u(klon,klev)
       REAL v(klon,klev)
-      REAL t(klon,klev),theta(klon,klev),thetal(klon,klev)
+      REAL t(klon,klev),thetal(klon,klev)
 c thetal: ligne suivante a decommenter si vous avez les fichiers     MPL 20130625
 c fth_fonctions.F90 et parkind1.F90
@@ -227,5 +225,4 @@
       REAL qx(klon,klev,nqtot)
       REAL flxmass_w(klon,klev)
-      REAL omega(klon,klev) ! vitesse verticale en Pa/s
       REAL d_u(klon,klev)
       REAL d_v(klon,klev)
@@ -242,5 +239,4 @@
       real clw(klon,klev),elij(klon,klev,klev)
       real epmlmMm(klon,klev,klev),eplaMm(klon,klev)
-      real wdtrainA(klon,klev),wdtrainM(klon,klev)
 ! RomP <<<
 !IM definition dynamique o_trac dans phys_output_open
@@ -281,6 +277,4 @@
 c
 c
-c prw: precipitable water
-      real prw(klon)
 
       REAL convliq(klon,klev)  ! eau liquide nuageuse convective
@@ -295,6 +289,4 @@
 c flwp, fiwp = Liquid Water Path & Ice Water Path (kg/m2)
 c flwc, fiwc = Liquid Water Content & Ice Water Content (kg/kg)
-      REAL flwp(klon), fiwp(klon)
-      REAL flwc(klon,klev), fiwc(klon,klev)
       REAL flwp_c(klon), fiwp_c(klon)
       REAL flwc_c(klon,klev), fiwc_c(klon,klev)
@@ -302,5 +294,4 @@
       REAL flwc_s(klon,klev), fiwc_s(klon,klev)
 
-      REAL evap_pot(klon,nbsrf)
 
 cIM ISCCP simulator v3.4
@@ -528,10 +519,4 @@
 c$OMP THREADPRIVATE(itap)
 c
-      real slp(klon) ! sea level pressure
-c
-      REAL fevap(klon,nbsrf)
-      REAL fluxlat(klon,nbsrf)
-c
-      REAL qsol(klon)
       REAL,save ::  solarlong0
 c$OMP THREADPRIVATE(solarlong0)
@@ -544,6 +529,4 @@
 c
       INTEGER igwd,idx(klon),itest(klon)
-c
-      REAL agesno(klon,nbsrf)
 c
 c      REAL,allocatable,save :: run_off_lic_0(:)
@@ -565,5 +548,4 @@
 
       REAL mip(klon,klev)  ! mass flux shed by the adiab ascent at each level
-      REAL Vprecip(klon,klev+1)   ! precipitation vertical profile
 c
       REAL wape_prescr, fip_prescr
@@ -589,6 +571,4 @@
 c$OMP THREADPRIVATE(wake_s_min_lsp)
 
-      real ale_wake(klon)
-      real alp_wake(klon)
 
       real ok_wk_lsp(klon)
@@ -609,5 +589,4 @@
       REAL wake_dtPBL(klon,klev)      ! Wake : differential heating (wake - unpertubed) PBL
       REAL wake_dqPBL(klon,klev)      ! Wake : differential moistening (wake - unpertubed) PBL
-      REAL wake_omg(klon,klev)        ! Wake : velocity difference (wake - unpertubed)
       REAL wake_ddeltat(klon,klev),wake_ddeltaq(klon,klev)
       REAL wake_dp_deltomg(klon,klev) ! Wake : gradient vertical de wake_omg
@@ -615,5 +594,4 @@
 c
 cpourquoi y'a pas de save??
-      REAL wake_h(klon)               ! Wake : hauteur de la poche froide
 c
       INTEGER wake_k(klon)            ! Wake sommet
@@ -645,7 +623,5 @@
 cRR:fin declarations poches froides
 c=======================================================================================================
-
-      REAL zw2(klon,klev+1)
-      REAL fraca(klon,klev+1)        
+        
       REAL ztv(klon,klev),ztva(klon,klev)
       REAL zpspsk(klon,klev)
@@ -665,12 +641,6 @@
       real env_tke_max0(klon)                                ! TKE dans l'environnement au LCL 
 
-c---Spectre de thermiques de type 2 au LCL
-      real n2(klon),s2(klon)
-      real ale_bl_stat(klon)
-
 c---D\'eclenchement stochastique
       integer :: tau_trig(klon)
-      real proba_notrig(klon)
-      real random_notrig(klon)
 
 c--------Statistical Boundary Layer Closure: ALP_BL--------
@@ -680,10 +650,4 @@
       real env_tke_max(klon,klev)                            ! Profil de TKE dans l'environnement
 
-c---Fermeture statistique
-      real alp_bl_det(klon)                                     ! ALP d\'terministe du thermique unique
-      real alp_bl_fluct_m(klon)                                 ! ALP li\'ee aux fluctuations de flux de masse sous-nuageux
-      real alp_bl_fluct_tke(klon)                               ! ALP li\'ee aux fluctuations d'\'energie cin\'etique sous-nuageuse 
-      real alp_bl_conv(klon)                                    ! ALP li\'ee \`a grande \'echelle
-      real alp_bl_stat(klon)                                    ! ALP totale
 
 ccc fin nrlmd le 10/04/2012
@@ -697,12 +661,8 @@
 c Variables locales:
 c
-      REAL cdragh(klon) ! drag coefficient pour T and Q
-      REAL cdragm(klon) ! drag coefficient pour vent
 cAA
 cAA  Pour phytrac 
       REAL u1(klon)             ! vents dans la premiere couche U
       REAL v1(klon)             ! vents dans la premiere couche V
-
-      REAL zxffonte(klon), zxfqcalving(klon),zxfqfonte(klon)
 
 c@$$      LOGICAL offline           ! Controle du stockage ds "physique"
@@ -713,5 +673,4 @@
 ! RomP >>> 
       REAL beta_prec_fisrt(klon,klev) ! taux de conv de l'eau cond (fisrt)
-      REAL beta_prec(klon,klev)       ! taux de conv de l'eau cond (utilise)
 ! RomP <<<
       INTEGER       :: iii
@@ -722,23 +681,7 @@
 c
 cIM 050204 END
-      REAL evap(klon), devap(klon) ! evaporation et sa derivee
-      REAL sens(klon), dsens(klon) ! chaleur sensible et sa derivee
-
-      REAL bils(klon) ! bilan de chaleur au sol
-
-      REAL wfbilo(klon,nbsrf) ! bilan d'eau, pour chaque
-C                             ! type de sous-surface et pondere par la fraction
-      REAL wfbils(klon,nbsrf) ! bilan de chaleur au sol, pour chaque
-C                             ! type de sous-surface et pondere par la fraction
-      REAL slab_wfbils(klon)  ! bilan de chaleur au sol pour le cas de slab, sur les points d'ocean
-
-      REAL fder(klon)         
-      REAL ve(klon) ! integr. verticale du transport meri. de l'energie
-      REAL vq(klon) ! integr. verticale du transport meri. de l'eau
-      REAL ue(klon) ! integr. verticale du transport zonal de l'energie
-      REAL uq(klon) ! integr. verticale du transport zonal de l'eau
-c
-      REAL frugs(klon,nbsrf)
-      REAL zxrugs(klon) ! longueur de rugosite
+      REAL devap(klon) ! evaporation et sa derivee
+      REAL dsens(klon) ! chaleur sensible et sa derivee
+
 c
 c Conditions aux limites
@@ -804,13 +747,7 @@
       REAL diafra(klon,klev)  ! fraction nuageuse
       REAL cldliq(klon,klev)  ! eau liquide nuageuse
-      REAL cldfra(klon,klev)  ! fraction nuageuse
-      REAL cldtau(klon,klev)  ! epaisseur optique
-      REAL cldemi(klon,klev)  ! emissivite infrarouge
 c
 CXXX PB 
       REAL fluxq(klon,klev, nbsrf)   ! flux turbulent d'humidite
-      REAL fluxt(klon,klev, nbsrf)   ! flux turbulent de chaleur
-      REAL fluxu(klon,klev, nbsrf)   ! flux turbulent de vitesse u
-      REAL fluxv(klon,klev, nbsrf)   ! flux turbulent de vitesse v
 c
       REAL zxfluxt(klon, klev)
@@ -818,8 +755,5 @@
       REAL zxfluxu(klon, klev)
       REAL zxfluxv(klon, klev)
-CXXX
-c
-      REAL fsollw(klon, nbsrf)   ! bilan flux IR pour chaque sous surface
-      REAL fsolsw(klon, nbsrf)   ! flux solaire absorb. pour chaque sous surface
+
 c Le rayonnement n'est pas calcule tous les pas, il faut donc
 c                      sauvegarder les sorties du rayonnement
@@ -834,9 +768,7 @@
       REAL conv_q(klon,klev) ! convergence de l'humidite (kg/kg/s)
       REAL conv_t(klon,klev) ! convergence de la temperature(K/s)
-c
-      REAL cldl(klon),cldm(klon),cldh(klon) !nuages bas, moyen et haut
-      REAL cldt(klon),cldq(klon) !nuage total, eau liquide integree
-c
-      REAL zxtsol(klon), zxqsurf(klon), zxsnow(klon), zxfluxlat(klon)
+
+c
+      REAL zxsnow(klon)
       REAL zxsnow_dummy(klon)
 c
@@ -857,6 +789,5 @@
       REAL t_coup
       PARAMETER (t_coup=234.0)
-c
-      REAL zphi(klon,klev)
+
 cym A voir plus tard !!
 cym      REAL zx_relief(iim,jjmp1)
@@ -864,18 +795,12 @@
 c
 c Grandeurs de sorties
-      REAL s_pblh(klon), s_lcl(klon), s_capCL(klon)
-      REAL s_oliqCL(klon), s_cteiCL(klon), s_pblt(klon)
-      REAL s_therm(klon), s_trmb1(klon), s_trmb2(klon)
+      REAL s_capCL(klon)
+      REAL s_oliqCL(klon), s_cteiCL(klon)
+      REAL s_trmb1(klon), s_trmb2(klon)
       REAL s_trmb3(klon)
 cKE43
 c Variables locales pour la convection de K. Emanuel (sb):
-c
-      REAL upwd(klon,klev)      ! saturated updraft mass flux
-      REAL dnwd(klon,klev)      ! saturated downdraft mass flux
-      REAL dnwd0(klon,klev)     ! unsaturated downdraft mass flux
+
       REAL tvp(klon,klev)       ! virtual temp of lifted parcel
-      REAL plcl(klon)           ! Lifting Condensation Level
-      REAL plfc(klon)           ! Level of Free Convection
-      REAL wbeff(klon)          ! saturated updraft velocity at LFC
       CHARACTER*40 capemaxcels  !max(CAPE)
 
@@ -902,5 +827,4 @@
 c eva: evaporation de l'eau liquide nuageuse
 c vdf: couche limite (Vertical DiFfusion)
-      REAL rneb(klon,klev)
 
 ! tendance nulles
@@ -914,13 +838,7 @@
 cIM 081204 END
 c
-      REAL pmfu(klon,klev), pmfd(klon,klev)
       REAL pen_u(klon,klev), pen_d(klon,klev)
       REAL pde_u(klon,klev), pde_d(klon,klev)
       INTEGER kcbot(klon), kctop(klon), kdtop(klon)
-      REAL pmflxr(klon,klev+1), pmflxs(klon,klev+1)
-      REAL prfl(klon,klev+1), psfl(klon,klev+1)
-c
-      REAL rain_lsc(klon)
-      REAL snow_lsc(klon)
 c
       REAL ratqsc(klon,klev)
@@ -935,5 +853,4 @@
       logical ok_newmicro
       save ok_newmicro
-      real ref_liq(klon,klev), ref_ice(klon,klev)
 c$OMP THREADPRIVATE(ok_newmicro)
       save fact_cldcon,facttemps
@@ -973,8 +890,5 @@
 c Variables locales pour effectuer les appels en serie
 c
-      REAL zx_rh(klon,klev)
 cIM RH a 2m (la surface)
-      REAL rh2m(klon), qsat2m(klon)
-      REAL tpot(klon), tpote(klon)
       REAL Lheat
 
@@ -1091,16 +1005,11 @@
       REAL ZRCPD
 c-jld ec_conser
-      REAL t2m(klon,nbsrf)  ! temperature a 2m
       REAL q2m(klon,nbsrf)  ! humidite a 2m
 
 cIM: t2m, q2m, ustar, u10m, v10m et t2mincels, t2maxcels
-      REAL zt2m(klon), zq2m(klon)             !temp., hum. 2m moyenne s/ 1 maille
-      REAL zustar(klon),zu10m(klon), zv10m(klon)  ! u* et vents a 10m moyennes s/1 maille
       CHARACTER*40 t2mincels, t2maxcels       !t2m min., t2m max
       CHARACTER*40 tinst, tave, typeval
       REAL cldtaupi(klon,klev)  ! Cloud optical thickness for pre-industrial (pi) aerosols
 
-      REAL re(klon, klev)       ! Cloud droplet effective radius
-      REAL fl(klon, klev)  ! denominator of re
 
       REAL re_top(klon), fl_top(klon) ! CDR at top of liquid water clouds
@@ -1228,6 +1137,5 @@
 ! Utilise notamment en 1D mais peut etre active egalement en 3D
 ! en imposant la valeur de igout.
-c======================================================================
-
+c======================================================================d
       if (prt_level.ge.1) then
           igout=klon/2+1/klon
@@ -1250,15 +1158,4 @@
 
 c======================================================================
-
-cym => necessaire pour iflag_con != 2    
-      pmfd(:,:) = 0.
-      pen_u(:,:) = 0.
-      pen_d(:,:) = 0.
-      pde_d(:,:) = 0.
-      pde_u(:,:) = 0.
-      aam=0.
-
-      torsfc=0.
-      forall (k=1: llm) zmasse(:, k) = (paprs(:, k)-paprs(:, k+1)) / rg
 
       if (first) then 
@@ -1301,4 +1198,17 @@
 
       endif  ! first
+
+cym => necessaire pour iflag_con != 2    
+      pmfd(:,:) = 0.
+      pen_u(:,:) = 0.
+      pen_d(:,:) = 0.
+      pde_d(:,:) = 0.
+      pde_u(:,:) = 0.
+      aam=0.
+
+      torsfc=0.
+      forall (k=1: llm) zmasse(:, k) = (paprs(:, k)-paprs(:, k+1)) / rg
+
+
 
        modname = 'physiq'
