Index: LMDZ6/branches/Optimisation_LMDZ/libf/phylmd/phys_output_write_xios_mod.f90
===================================================================
--- LMDZ6/branches/Optimisation_LMDZ/libf/phylmd/phys_output_write_xios_mod.f90	(revision 3765)
+++ LMDZ6/branches/Optimisation_LMDZ/libf/phylmd/phys_output_write_xios_mod.f90	(revision 3768)
@@ -353,5 +353,5 @@
     INTEGER :: flag_aerosol_strat
     INTEGER :: flag_aerosol
-    LOGICAL :: ok_cdnc
+    LOGICAL :: ok_cdnc, var_is_set
 
     ! Local
@@ -374,4 +374,5 @@
     INTEGER ISW
     CHARACTER*1 ch1
+    CHARACTER(len=3) :: isrf_str
     CHARACTER*20 varname
 
@@ -381,4 +382,7 @@
     REAL, DIMENSION(klon, klev) :: z, dz
     REAL, DIMENSION(klon)      :: zrho, zt
+
+    type(ctrl_out), SAVE :: o_wo_1 = ctrl_out(flag=0, name="wo_1", description = "Temporary", unit = "-", type_ecrit = "")
+    type(ctrl_out), SAVE :: o_swradcorr = ctrl_out(flag=0, name="swradcorr", description = "Temporary", unit = "-", type_ecrit = "")
 
     if( .not. CPP_XIOS_defined ) call abort_physic("phys_output_write_xios", "This io backend can only be used when LMDZ is compiled with XIOS support",1 )
@@ -420,4 +424,13 @@
 
     !$omp MASTER
+    IF (.not. vars_defined) THEN
+      var_is_set = xios_setVar("pdtphys", pdtphys)
+      var_is_set = xios_setVar("RG", RG) 
+      !wo_coeff = dobson_u*1e3/rmo3*rmd
+      var_is_set = xios_setVar("dobson_u", dobson_u) 
+      var_is_set = xios_setVar("rmo3", rmo3) 
+      var_is_set = xios_setVar("rmd", rmd) 
+      var_is_set = xios_setVar("missing_val", missing_val) 
+    ENDIF
     IF (.not. vars_defined .and. ok_strataer) THEN
       !On ajoute les variables 3D traceurs par l interface fortran
@@ -510,9 +523,9 @@
       CALL histwrite_phy(o_aire, zx_tmp_fi2d)
 
-      DO i = 1, klon
-        zx_tmp_fi2d(i) = pctsrf(i, is_ter) + pctsrf(i, is_lic)
-      ENDDO
-      CALL histwrite_phy(o_contfracATM, zx_tmp_fi2d)
-      CALL histwrite_phy(o_contfracOR, pctsrf(:, is_ter))
+      ! DO i = 1, klon
+      !   zx_tmp_fi2d(i) = pctsrf(i, is_ter) + pctsrf(i, is_lic)
+      ! ENDDO
+      ! CALL histwrite_phy(o_contfracATM, zx_tmp_fi2d)
+      !CALL histwrite_phy(o_contfracOR, pctsrf(:, is_ter))
       CALL histwrite_phy("R_ecc", R_ecc)
       CALL histwrite_phy("R_peri", R_peri)
@@ -580,16 +593,16 @@
       CALL histwrite_phy(o_tsol, zxtsol)
       CALL histwrite_phy(o_t2m, zt2m_cor)
-      CALL histwrite_phy(o_t2m_min, zt2m_cor)
-      CALL histwrite_phy(o_t2m_max, zt2m_cor)
+      !CALL histwrite_phy(o_t2m_min, zt2m_cor)
+      !CALL histwrite_phy(o_t2m_max, zt2m_cor)
       CALL histwrite_phy(o_t2m_max_mon, t2m_max_mon)
       CALL histwrite_phy(o_t2m_min_mon, t2m_min_mon)
-      DO i = 1, klon
-        zx_tmp_fi2d(i) = SQRT(zu10m_cor(i)*zu10m_cor(i) + zv10m_cor(i)*zv10m_cor(i))
-      ENDDO
-      CALL histwrite_phy(o_wind10m, zx_tmp_fi2d)
-      DO i = 1, klon
-        zx_tmp_fi2d(i) = SQRT(zu10m_cor(i)*zu10m_cor(i) + zv10m_cor(i)*zv10m_cor(i))
-      ENDDO
-      CALL histwrite_phy(o_wind10max, zx_tmp_fi2d)
+      ! DO i = 1, klon
+      !   zx_tmp_fi2d(i) = SQRT(zu10m_cor(i)*zu10m_cor(i) + zv10m_cor(i)*zv10m_cor(i))
+      ! ENDDO
+      ! CALL histwrite_phy(o_wind10m, zx_tmp_fi2d)
+      ! DO i = 1, klon
+      !   zx_tmp_fi2d(i) = SQRT(zu10m_cor(i)*zu10m_cor(i) + zv10m_cor(i)*zv10m_cor(i))
+      ! ENDDO
+      ! CALL histwrite_phy(o_wind10max, zx_tmp_fi2d)
 
       CALL histwrite_phy(o_gusts, gustiness)
@@ -615,20 +628,11 @@
         ENDDO
       ENDDO
-    CALL histwrite_phy(o_wind100m, zx_tmp_fi2d)
-    IF (vars_defined) THEN
-      DO i = 1, klon
-        zx_tmp_fi2d(i) = pctsrf(i, is_sic)
-      ENDDO
-    ENDIF
-      CALL histwrite_phy(o_sicf, zx_tmp_fi2d)
+      CALL histwrite_phy(o_wind100m, zx_tmp_fi2d)
+      !CALL histwrite_phy(o_sicf, pctsrf(1:klon, is_sic))
       CALL histwrite_phy(o_q2m, zq2m_cor)
       CALL histwrite_phy(o_ustar, zustar)
       CALL histwrite_phy(o_u10m, zu10m_cor)
       CALL histwrite_phy(o_v10m, zv10m_cor)
-      DO i = 1, klon
-        zx_tmp_fi2d(i) = paprs(i, 1)
-      ENDDO
-
-      CALL histwrite_phy(o_psol, zx_tmp_fi2d)
+      CALL histwrite_phy(o_psol, paprs(1:klon, 1))
       CALL histwrite_phy(o_mass, zmasse)
       CALL histwrite_phy(o_qsurf, zxqsurf)
@@ -638,24 +642,25 @@
       ENDIF
 
-      DO i = 1, klon
-        zx_tmp_fi2d(i) = rain_fall(i) + snow_fall(i)
-      ENDDO
-
-      CALL histwrite_phy(o_precip, zx_tmp_fi2d)
+      ! DO i = 1, klon
+      !   zx_tmp_fi2d(i) = rain_fall(i) + snow_fall(i)
+      ! ENDDO
+      ! CALL histwrite_phy(o_precip, zx_tmp_fi2d)
       CALL histwrite_phy(o_rain_fall, rain_fall)
       CALL histwrite_phy(o_ndayrain, nday_rain)
       CALL histwrite_phy(o_ep, ep)
       
-      DO i = 1, klon
-        zx_tmp_fi2d(i) = rain_lsc(i) + snow_lsc(i)
-      ENDDO
-      CALL histwrite_phy(o_plul, zx_tmp_fi2d)
+      ! DO i = 1, klon
+      !   zx_tmp_fi2d(i) = rain_lsc(i) + snow_lsc(i)
+      ! ENDDO
+      ! CALL histwrite_phy(o_plul, zx_tmp_fi2d)
+      CALL histwrite_phy(o_plul, rain_lsc)
       CALL histwrite_phy(o_plun, rain_num)
 
-      DO i = 1, klon
-        zx_tmp_fi2d(i) = rain_con(i) + snow_con(i)
-      ENDDO
-      CALL histwrite_phy(o_pluc, zx_tmp_fi2d)
-      CALL histwrite_phy(o_rain_con, rain_con)
+      ! DO i = 1, klon
+      !   zx_tmp_fi2d(i) = rain_con(i) + snow_con(i)
+      ! ENDDO
+      ! CALL histwrite_phy(o_pluc, zx_tmp_fi2d)
+      CALL histwrite_phy(o_pluc, snow_con)
+      CALL histwrite_phy(o_rain_con, rain_con)      
       CALL histwrite_phy(o_snow, snow_fall)
       CALL histwrite_phy(o_msnow, zxsnow)
@@ -663,65 +668,91 @@
       CALL histwrite_phy(o_evap, evap)
 
-
-      zx_tmp_fi2d = topsw*swradcorr
-      CALL histwrite_phy(o_tops, zx_tmp_fi2d)
-      zx_tmp_fi2d = topsw0*swradcorr
-      CALL histwrite_phy(o_tops0, zx_tmp_fi2d)
+      
+
       CALL histwrite_phy(o_topl, toplw)
       CALL histwrite_phy(o_topl0, toplw0)
-      zx_tmp_fi2d(:) = swup(:, klevp1)*swradcorr(:)
-      CALL histwrite_phy(o_SWupTOA, zx_tmp_fi2d)
-      zx_tmp_fi2d(:) = swup0(:, klevp1)*swradcorr(:)
-      CALL histwrite_phy(o_SWupTOAclr, zx_tmp_fi2d)
-      zx_tmp_fi2d(:) = swupc0(:, klevp1)*swradcorr(:)
-      CALL histwrite_phy(o_SWupTOAcleanclr, zx_tmp_fi2d)
-      zx_tmp_fi2d(:) = swdn(:, klevp1)*swradcorr(:)
-      CALL histwrite_phy(o_SWdnTOA, zx_tmp_fi2d)
-      zx_tmp_fi2d(:) = swdn0(:, klevp1)*swradcorr(:)
-      CALL histwrite_phy(o_SWdnTOAclr, zx_tmp_fi2d)
-      zx_tmp_fi2d(:) = topsw(:)*swradcorr(:) - toplw(:)
-      CALL histwrite_phy(o_nettop, zx_tmp_fi2d)
-      zx_tmp_fi2d = SWup200*swradcorr
-      CALL histwrite_phy(o_SWup200, zx_tmp_fi2d)
-      zx_tmp_fi2d = SWup200clr*swradcorr
-      CALL histwrite_phy(o_SWup200clr, zx_tmp_fi2d)
-      zx_tmp_fi2d = SWdn200*swradcorr
-      CALL histwrite_phy(o_SWdn200, zx_tmp_fi2d)
-      zx_tmp_fi2d = SWdn200clr*swradcorr
-      CALL histwrite_phy(o_SWdn200clr, zx_tmp_fi2d)
+
+      ! zx_tmp_fi2d = topsw*swradcorr
+      ! CALL histwrite_phy(o_tops, zx_tmp_fi2d)      
+      ! zx_tmp_fi2d = topsw0*swradcorr
+      ! CALL histwrite_phy(o_tops0, zx_tmp_fi2d)      
+      ! zx_tmp_fi2d(:) = swup(:, klevp1)*swradcorr(:)
+      ! CALL histwrite_phy(o_SWupTOA, zx_tmp_fi2d)
+      ! zx_tmp_fi2d(:) = swup0(:, klevp1)*swradcorr(:)
+      ! CALL histwrite_phy(o_SWupTOAclr, zx_tmp_fi2d)
+      ! zx_tmp_fi2d(:) = swupc0(:, klevp1)*swradcorr(:)
+      ! CALL histwrite_phy(o_SWupTOAcleanclr, zx_tmp_fi2d)
+      ! zx_tmp_fi2d(:) = swdn(:, klevp1)*swradcorr(:)
+      ! CALL histwrite_phy(o_SWdnTOA, zx_tmp_fi2d)
+      ! zx_tmp_fi2d(:) = swdn0(:, klevp1)*swradcorr(:)
+      ! CALL histwrite_phy(o_SWdnTOAclr, zx_tmp_fi2d)
+      ! zx_tmp_fi2d(:) = topsw(:)*swradcorr(:) - toplw(:)
+      ! CALL histwrite_phy(o_nettop, zx_tmp_fi2d)
+      ! zx_tmp_fi2d = SWup200*swradcorr
+      ! CALL histwrite_phy(o_SWup200, zx_tmp_fi2d)
+      ! zx_tmp_fi2d = SWup200clr*swradcorr
+      ! CALL histwrite_phy(o_SWup200clr, zx_tmp_fi2d)
+      ! zx_tmp_fi2d = SWdn200*swradcorr
+      ! CALL histwrite_phy(o_SWdn200, zx_tmp_fi2d)
+      ! zx_tmp_fi2d = SWdn200clr*swradcorr
+      ! CALL histwrite_phy(o_SWdn200clr, zx_tmp_fi2d)
+      ! zx_tmp_fi2d = solsw*swradcorr
+      ! CALL histwrite_phy(o_sols, zx_tmp_fi2d)
+      ! zx_tmp_fi2d = solsw0*swradcorr
+      ! CALL histwrite_phy(o_sols0, zx_tmp_fi2d)
+      ! zx_tmp_fi2d(:) = swup(:, 1)*swradcorr(:)
+      ! CALL histwrite_phy(o_SWupSFC, zx_tmp_fi2d)
+      ! zx_tmp_fi2d(:) = swup0(:, 1)*swradcorr(:)
+      ! CALL histwrite_phy(o_SWupSFCclr, zx_tmp_fi2d)
+      ! zx_tmp_fi2d(:) = swupc0(:, 1)*swradcorr(:)
+      ! CALL histwrite_phy(o_SWupSFCcleanclr, zx_tmp_fi2d)
+      ! zx_tmp_fi2d(:) = swdn(:, 1)*swradcorr(:)
+      ! CALL histwrite_phy(o_SWdnSFC, zx_tmp_fi2d)
+      ! zx_tmp_fi2d(:) = swdn0(:, 1)*swradcorr(:)
+      ! CALL histwrite_phy(o_SWdnSFCclr, zx_tmp_fi2d)
+      ! zx_tmp_fi2d(:) = swdnc0(:, 1)*swradcorr(:)
+      ! CALL histwrite_phy(o_SWdnSFCcleanclr, zx_tmp_fi2d)
+      CALL histwrite_phy(o_swradcorr, swradcorr)
+      CALL histwrite_phy(o_tops, topsw)
+      CALL histwrite_phy(o_tops0, topsw0)
+      CALL histwrite_phy(o_SWupTOA, swup(:, klevp1))
+      CALL histwrite_phy(o_SWupTOAclr, swup0(:, klevp1))
+      CALL histwrite_phy(o_SWupTOAcleanclr, swupc0(:, klevp1))
+      CALL histwrite_phy(o_SWdnTOA, swdn(:, klevp1))
+      CALL histwrite_phy(o_SWdnTOAclr, swdn0(:, klevp1))
+      CALL histwrite_phy(o_SWup200, SWup200)
+      CALL histwrite_phy(o_SWup200clr, SWup200clr) 
+      CALL histwrite_phy(o_SWdn200, SWdn200) 
+      CALL histwrite_phy(o_SWdn200clr, SWdn200clr)
+
+      CALL histwrite_phy(o_SWupSFC, swup(:, 1)) 
+      CALL histwrite_phy(o_SWupSFCclr, swup0(:, 1)) 
+      CALL histwrite_phy(o_SWupSFCcleanclr, swupc0(:, 1)) 
+      CALL histwrite_phy(o_SWdnSFC, swdn(:, 1)) 
+      CALL histwrite_phy(o_SWdnSFCclr, swdn0(:, 1)) 
+      CALL histwrite_phy(o_SWdnSFCcleanclr, swdnc0(:, 1)) 
+
       CALL histwrite_phy(o_LWup200, LWup200)
       CALL histwrite_phy(o_LWup200clr, LWup200clr)
       CALL histwrite_phy(o_LWdn200, LWdn200)
       CALL histwrite_phy(o_LWdn200clr, LWdn200clr)
-      zx_tmp_fi2d = solsw*swradcorr
-      CALL histwrite_phy(o_sols, zx_tmp_fi2d)
-      zx_tmp_fi2d = solsw0*swradcorr
-      CALL histwrite_phy(o_sols0, zx_tmp_fi2d)
+      
+      CALL histwrite_phy(o_sols, solsw)
+      CALL histwrite_phy(o_sols0, solsw0)
       CALL histwrite_phy(o_soll, sollw)
       CALL histwrite_phy(o_soll0, sollw0)
       CALL histwrite_phy(o_radsol, radsol)
-      zx_tmp_fi2d(:) = swup(:, 1)*swradcorr(:)
-      CALL histwrite_phy(o_SWupSFC, zx_tmp_fi2d)
-      zx_tmp_fi2d(:) = swup0(:, 1)*swradcorr(:)
-      CALL histwrite_phy(o_SWupSFCclr, zx_tmp_fi2d)
-      zx_tmp_fi2d(:) = swupc0(:, 1)*swradcorr(:)
-      CALL histwrite_phy(o_SWupSFCcleanclr, zx_tmp_fi2d)
-      zx_tmp_fi2d(:) = swdn(:, 1)*swradcorr(:)
-      CALL histwrite_phy(o_SWdnSFC, zx_tmp_fi2d)
-      zx_tmp_fi2d(:) = swdn0(:, 1)*swradcorr(:)
-      CALL histwrite_phy(o_SWdnSFCclr, zx_tmp_fi2d)
-      zx_tmp_fi2d(:) = swdnc0(:, 1)*swradcorr(:)
-      CALL histwrite_phy(o_SWdnSFCcleanclr, zx_tmp_fi2d)
-      zx_tmp_fi2d(:) = sollwdown(:) - sollw(:)
-      CALL histwrite_phy(o_LWupSFC, zx_tmp_fi2d)
+
       CALL histwrite_phy(o_LWdnSFC, sollwdown)
-      sollwdownclr(1:klon) = -1.*lwdn0(1:klon, 1)
-      zx_tmp_fi2d(1:klon) = sollwdownclr(1:klon) - sollw0(1:klon)
-      CALL histwrite_phy(o_LWupSFCclr, zx_tmp_fi2d)
-      CALL histwrite_phy(o_LWdnSFCclr, sollwdownclr)
-      zx_tmp_fi2d(:) = lwupc0(:, klevp1)
-      CALL histwrite_phy(o_LWupTOAcleanclr, zx_tmp_fi2d)
-      zx_tmp_fi2d(:) = -1.*lwdnc0(:, 1)
-      CALL histwrite_phy(o_LWdnSFCcleanclr, zx_tmp_fi2d)
+
+      !sollwdownclr(1:klon) = -1.*lwdn0(1:klon, 1)
+      !zx_tmp_fi2d(1:klon) = sollwdownclr(1:klon) - sollw0(1:klon)
+      !CALL histwrite_phy(o_LWupSFCclr, zx_tmp_fi2d)
+      !CALL histwrite_phy(o_LWdnSFCclr, sollwdownclr)
+      CALL histwrite_phy(o_LWdnSFCclr, lwdn0(1:klon, 1))
+      CALL histwrite_phy(o_LWupTOAcleanclr, lwupc0(:, klevp1))
+      ! zx_tmp_fi2d(:) = -1.*lwdnc0(:, 1)
+      ! CALL histwrite_phy(o_LWdnSFCcleanclr, zx_tmp_fi2d)
+      CALL histwrite_phy(o_LWdnSFCcleanclr, lwdnc0(:, 1))
       CALL histwrite_phy(o_bils, bils)
       CALL histwrite_phy(o_bils_diss, bils_diss)
@@ -732,24 +763,24 @@
       CALL histwrite_phy(o_bils_latent, bils_latent)
       CALL histwrite_phy(o_bils_enthalp, bils_enthalp)
-      zx_tmp_fi2d(1:klon) = -1*sens(1:klon)
-      CALL histwrite_phy(o_sens, zx_tmp_fi2d)
+      ! zx_tmp_fi2d(1:klon) = -1*sens(1:klon)
+      ! CALL histwrite_phy(o_sens, zx_tmp_fi2d)
+      CALL histwrite_phy(o_sens, sens(1:klon))
       CALL histwrite_phy(o_fder, fder)
       CALL histwrite_phy(o_ffonte, zxffonte)
       CALL histwrite_phy(o_fqcalving, zxfqcalving)
       CALL histwrite_phy(o_fqfonte, zxfqfonte)
-      zx_tmp_fi2d(1:klon) = (zxfqfonte(1:klon) + rain_fall(1:klon))*pctsrf(1:klon, is_lic)
-      CALL histwrite_phy(o_mrroli, zx_tmp_fi2d)
+      ! zx_tmp_fi2d(1:klon) = (zxfqfonte(1:klon) + rain_fall(1:klon))*pctsrf(1:klon, is_lic)
+      ! CALL histwrite_phy(o_mrroli, zx_tmp_fi2d)
       CALL histwrite_phy(o_runofflic, zxrunofflic)
-      zx_tmp_fi2d = 0.
-      DO nsrf = 1, nbsrf
-        zx_tmp_fi2d(:) = zx_tmp_fi2d(:) + pctsrf(:, nsrf)*fluxu(:, 1, nsrf)
-      ENDDO
-      CALL histwrite_phy(o_taux, zx_tmp_fi2d)
-
-      zx_tmp_fi2d = 0.
-      DO nsrf = 1, nbsrf
-        zx_tmp_fi2d(:) = zx_tmp_fi2d(:) + pctsrf(:, nsrf)*fluxv(:, 1, nsrf)
-      ENDDO
-      CALL histwrite_phy(o_tauy, zx_tmp_fi2d)
+      ! zx_tmp_fi2d = 0.
+      ! DO nsrf = 1, nbsrf
+      !   zx_tmp_fi2d(:) = zx_tmp_fi2d(:) + pctsrf(:, nsrf)*fluxu(:, 1, nsrf)
+      ! ENDDO
+      ! CALL histwrite_phy(o_taux, zx_tmp_fi2d)
+      ! zx_tmp_fi2d = 0.
+      ! DO nsrf = 1, nbsrf
+      !   zx_tmp_fi2d(:) = zx_tmp_fi2d(:) + pctsrf(:, nsrf)*fluxv(:, 1, nsrf)
+      ! ENDDO
+      ! CALL histwrite_phy(o_tauy, zx_tmp_fi2d)
 
       IF (ok_snow) THEN
@@ -764,49 +795,30 @@
     
       DO nsrf = 1, nbsrf
-        zx_tmp_fi2d(1:klon) = pctsrf(1:klon, nsrf)*100.
-        CALL histwrite_phy(o_pourc_srf(nsrf), zx_tmp_fi2d)
-        zx_tmp_fi2d(1:klon) = pctsrf(1:klon, nsrf)
-        CALL histwrite_phy(o_fract_srf(nsrf), zx_tmp_fi2d)
-        zx_tmp_fi2d(1:klon) = fluxu(1:klon, 1, nsrf)
-        CALL histwrite_phy(o_taux_srf(nsrf), zx_tmp_fi2d)
-        zx_tmp_fi2d(1:klon) = fluxv(1:klon, 1, nsrf)
-        CALL histwrite_phy(o_tauy_srf(nsrf), zx_tmp_fi2d)
-        zx_tmp_fi2d(1:klon) = ftsol(1:klon, nsrf)
-        CALL histwrite_phy(o_tsol_srf(nsrf), zx_tmp_fi2d)
-        zx_tmp_fi2d(1:klon) = evap_pot(1:klon, nsrf)
-        CALL histwrite_phy(o_evappot_srf(nsrf), zx_tmp_fi2d)
-        zx_tmp_fi2d(1:klon) = ustar(1:klon, nsrf)
-        CALL histwrite_phy(o_ustar_srf(nsrf), zx_tmp_fi2d)
-        zx_tmp_fi2d(1:klon) = u10m(1:klon, nsrf)
-        CALL histwrite_phy(o_u10m_srf(nsrf), zx_tmp_fi2d)
-        zx_tmp_fi2d(1:klon) = v10m(1:klon, nsrf)
-        CALL histwrite_phy(o_v10m_srf(nsrf), zx_tmp_fi2d)
-        zx_tmp_fi2d(1:klon) = t2m(1:klon, nsrf)
-        CALL histwrite_phy(o_t2m_srf(nsrf), zx_tmp_fi2d)
-        zx_tmp_fi2d(1:klon) = fevap(1:klon, nsrf)
-        CALL histwrite_phy(o_evap_srf(nsrf), zx_tmp_fi2d)
-        zx_tmp_fi2d(1:klon) = fluxt(1:klon, 1, nsrf)
-        CALL histwrite_phy(o_sens_srf(nsrf), zx_tmp_fi2d)
-        zx_tmp_fi2d(1:klon) = fluxlat(1:klon, nsrf)
-        CALL histwrite_phy(o_lat_srf(nsrf), zx_tmp_fi2d)
-        zx_tmp_fi2d(1:klon) = fsollw(1:klon, nsrf)
-        CALL histwrite_phy(o_flw_srf(nsrf), zx_tmp_fi2d)
-        zx_tmp_fi2d(1:klon) = fsolsw(1:klon, nsrf)
-        CALL histwrite_phy(o_fsw_srf(nsrf), zx_tmp_fi2d)
-        zx_tmp_fi2d(1:klon) = wfbils(1:klon, nsrf)
-        CALL histwrite_phy(o_wbils_srf(nsrf), zx_tmp_fi2d)
-        zx_tmp_fi2d(1:klon) = wfbilo(1:klon, nsrf)
-        CALL histwrite_phy(o_wbilo_srf(nsrf), zx_tmp_fi2d)
-        zx_tmp_fi2d(1:klon) = wfevap(1:klon, nsrf)
-        CALL histwrite_phy(o_wevap_srf(nsrf), zx_tmp_fi2d)
-        zx_tmp_fi2d(1:klon) = wfrain(1:klon, nsrf)
-        CALL histwrite_phy(o_wrain_srf(nsrf), zx_tmp_fi2d)
-        zx_tmp_fi2d(1:klon) = wfsnow(1:klon, nsrf)
-        CALL histwrite_phy(o_wsnow_srf(nsrf), zx_tmp_fi2d)
+        ! zx_tmp_fi2d(1:klon) = pctsrf(1:klon, nsrf)*100.
+        ! CALL histwrite_phy(o_pourc_srf(nsrf), zx_tmp_fi2d)
+        CALL histwrite_phy(o_fract_srf(nsrf), pctsrf(1:klon, nsrf))
+        CALL histwrite_phy(o_taux_srf(nsrf), fluxu(1:klon, 1, nsrf))
+        CALL histwrite_phy(o_tauy_srf(nsrf), fluxv(1:klon, 1, nsrf))
+        CALL histwrite_phy(o_tsol_srf(nsrf), ftsol(1:klon, nsrf))
+        CALL histwrite_phy(o_evappot_srf(nsrf), evap_pot(1:klon, nsrf))
+        CALL histwrite_phy(o_ustar_srf(nsrf), ustar(1:klon, nsrf))
+        CALL histwrite_phy(o_u10m_srf(nsrf), u10m(1:klon, nsrf))
+        CALL histwrite_phy(o_v10m_srf(nsrf), v10m(1:klon, nsrf))
+        CALL histwrite_phy(o_t2m_srf(nsrf), t2m(1:klon, nsrf))
+        CALL histwrite_phy(o_evap_srf(nsrf), fevap(1:klon, nsrf))
+        CALL histwrite_phy(o_sens_srf(nsrf), fluxt(1:klon, 1, nsrf))
+        CALL histwrite_phy(o_lat_srf(nsrf), fluxlat(1:klon, nsrf))
+        CALL histwrite_phy(o_flw_srf(nsrf), fsollw(1:klon, nsrf))
+        CALL histwrite_phy(o_fsw_srf(nsrf), fsolsw(1:klon, nsrf))
+        CALL histwrite_phy(o_wbils_srf(nsrf), wfbils(1:klon, nsrf))
+        CALL histwrite_phy(o_wbilo_srf(nsrf), wfbilo(1:klon, nsrf))
+        CALL histwrite_phy(o_wevap_srf(nsrf), wfevap(1:klon, nsrf))
+        CALL histwrite_phy(o_wrain_srf(nsrf), wfrain(1:klon, nsrf))
+        CALL histwrite_phy(o_wsnow_srf(nsrf), wfsnow(1:klon, nsrf))
 
         IF (iflag_pbl > 1) THEN
           CALL histwrite_phy(o_tke_srf(nsrf), pbl_tke(:, 1:klev, nsrf))
           CALL histwrite_phy(o_l_mixmin(nsrf), l_mixmin(:, 1:klev, nsrf))
-          CALL histwrite_phy(o_tke_max_srf(nsrf), pbl_tke(:, 1:klev, nsrf))
+          !CALL histwrite_phy(o_tke_max_srf(nsrf), pbl_tke(:, 1:klev, nsrf))
         ENDIF
         IF (iflag_pbl > 1 .AND. iflag_wake >= 1 .AND. iflag_pbl_split >= 1) THEN
@@ -815,21 +827,13 @@
       ENDDO
 
-      zx_tmp_fi2d(1:klon) = sens_prec_liq_o(1:klon, 1)
-      CALL histwrite_phy(o_sens_prec_liq_oce, zx_tmp_fi2d)
-      zx_tmp_fi2d(1:klon) = sens_prec_liq_o(1:klon, 2)
-      CALL histwrite_phy(o_sens_prec_liq_sic, zx_tmp_fi2d)
-      zx_tmp_fi2d(1:klon) = sens_prec_sol_o(1:klon, 1)
-      CALL histwrite_phy(o_sens_prec_sol_oce, zx_tmp_fi2d)
-      zx_tmp_fi2d(1:klon) = sens_prec_sol_o(1:klon, 2)
-      CALL histwrite_phy(o_sens_prec_sol_sic, zx_tmp_fi2d)
-
-      zx_tmp_fi2d(1:klon) = lat_prec_liq_o(1:klon, 1)
-      CALL histwrite_phy(o_lat_prec_liq_oce, zx_tmp_fi2d)
-      zx_tmp_fi2d(1:klon) = lat_prec_liq_o(1:klon, 2)
-      CALL histwrite_phy(o_lat_prec_liq_sic, zx_tmp_fi2d)
-      zx_tmp_fi2d(1:klon) = lat_prec_sol_o(1:klon, 1)
-      CALL histwrite_phy(o_lat_prec_sol_oce, zx_tmp_fi2d)
-      zx_tmp_fi2d(1:klon) = lat_prec_sol_o(1:klon, 2)
-      CALL histwrite_phy(o_lat_prec_sol_sic, zx_tmp_fi2d)
+      CALL histwrite_phy(o_sens_prec_liq_oce, sens_prec_liq_o(1:klon, 1))
+      CALL histwrite_phy(o_sens_prec_liq_sic, sens_prec_liq_o(1:klon, 2))
+      CALL histwrite_phy(o_sens_prec_sol_oce, sens_prec_sol_o(1:klon, 1))
+      CALL histwrite_phy(o_sens_prec_sol_sic, sens_prec_sol_o(1:klon, 2))
+
+      CALL histwrite_phy(o_lat_prec_liq_oce, lat_prec_liq_o(1:klon, 1))
+      CALL histwrite_phy(o_lat_prec_liq_sic, lat_prec_liq_o(1:klon, 2))
+      CALL histwrite_phy(o_lat_prec_sol_oce, lat_prec_sol_o(1:klon, 1))
+      CALL histwrite_phy(o_lat_prec_sol_sic, lat_prec_sol_o(1:klon, 2))
 
       DO nsrf = 1, nbsrf + 1
@@ -845,21 +849,16 @@
       CALL histwrite_phy(o_JrNt, JrNt)
 
-      zx_tmp_fi2d = cldl*JrNt
-      CALL histwrite_phy(o_cldljn, zx_tmp_fi2d)
-
-      zx_tmp_fi2d = cldm*JrNt
-      CALL histwrite_phy(o_cldmjn, zx_tmp_fi2d)
-
-      zx_tmp_fi2d = cldh*JrNt
-      CALL histwrite_phy(o_cldhjn, zx_tmp_fi2d)
-
-      zx_tmp_fi2d = cldt*JrNt
-      CALL histwrite_phy(o_cldtjn, zx_tmp_fi2d)
+      ! zx_tmp_fi2d = cldl*JrNt
+      ! CALL histwrite_phy(o_cldljn, zx_tmp_fi2d)
+      ! zx_tmp_fi2d = cldm*JrNt
+      ! CALL histwrite_phy(o_cldmjn, zx_tmp_fi2d)
+      ! zx_tmp_fi2d = cldh*JrNt
+      ! CALL histwrite_phy(o_cldhjn, zx_tmp_fi2d)
+      ! zx_tmp_fi2d = cldt*JrNt
+      ! CALL histwrite_phy(o_cldtjn, zx_tmp_fi2d)
 
       CALL histwrite_phy(o_cldq, cldq)
-      zx_tmp_fi2d(1:klon) = flwp(1:klon)
-      CALL histwrite_phy(o_lwp, zx_tmp_fi2d)
-      zx_tmp_fi2d(1:klon) = fiwp(1:klon)
-      CALL histwrite_phy(o_iwp, zx_tmp_fi2d)
+      CALL histwrite_phy(o_lwp, flwp(1:klon))
+      CALL histwrite_phy(o_iwp, fiwp(1:klon))
       CALL histwrite_phy(o_ue, ue)
       CALL histwrite_phy(o_ve, ve)
@@ -868,5 +867,5 @@
       CALL histwrite_phy(o_uwat, uwat)
       CALL histwrite_phy(o_vwat, vwat)
-    
+
       IF (iflag_con .GE. 3) THEN ! sb
         CALL histwrite_phy(o_cape, cape)
@@ -881,5 +880,5 @@
         ENDIF
 
-        CALL histwrite_phy(o_cape_max, cape)
+        !CALL histwrite_phy(o_cape_max, cape)
 
         CALL histwrite_phy(o_upwd, upwd)
@@ -891,10 +890,10 @@
             !! convection (output of the 3 fields: ftime_deepcv, ftime_th and
             !!  ftime_con).
-        IF (iflag_thermals >= 1) THEN
-          zx_tmp_fi3d = -dnwd + dnwd0 + upwd + fm_therm(:, 1:klev)
-        ELSE
-          zx_tmp_fi3d = -dnwd + dnwd0 + upwd
-        ENDIF
-        CALL histwrite_phy(o_mc, zx_tmp_fi3d)
+        ! IF (iflag_thermals >= 1) THEN
+        !   zx_tmp_fi3d = -dnwd + dnwd0 + upwd + fm_therm(:, 1:klev)
+        ! ELSE
+        !   zx_tmp_fi3d = -dnwd + dnwd0 + upwd
+        ! ENDIF
+        ! CALL histwrite_phy(o_mc, zx_tmp_fi3d)
       ENDIF !iflag_con .GE. 3
       CALL histwrite_phy(o_prw, prw)
@@ -922,15 +921,17 @@
         ENDIF !(bb2.EQ."850".OR.bb2.EQ."700".OR.
       ENDDO
-      DO i = 1, klon
-        IF (pctsrf(i, is_oce) .GT. epsfra .OR. &
-            pctsrf(i, is_sic) .GT. epsfra) THEN
-          zx_tmp_fi2d(i) = (ftsol(i, is_oce)*pctsrf(i, is_oce) + &
-                            ftsol(i, is_sic)*pctsrf(i, is_sic))/ &
-                           (pctsrf(i, is_oce) + pctsrf(i, is_sic))
-        ELSE
-          zx_tmp_fi2d(i) = 273.15
-        ENDIF
-      ENDDO
-      CALL histwrite_phy(o_t_oce_sic, zx_tmp_fi2d)
+
+      if( epsfra /= 1.0E-05 ) call abort_physic("phys_output_write_xios", "epsfra changed and is not synchronized with field_def_lmdz.xml", 1)
+      ! DO i = 1, klon
+      !   IF (pctsrf(i, is_oce) .GT. epsfra .OR. &
+      !       pctsrf(i, is_sic) .GT. epsfra) THEN
+      !     zx_tmp_fi2d(i) = (ftsol(i, is_oce)*pctsrf(i, is_oce) + &
+      !                       ftsol(i, is_sic)*pctsrf(i, is_sic))/ &
+      !                      (pctsrf(i, is_oce) + pctsrf(i, is_sic))
+      !   ELSE
+      !     zx_tmp_fi2d(i) = 273.15
+      !   ENDIF
+      ! ENDDO
+      ! CALL histwrite_phy(o_t_oce_sic, zx_tmp_fi2d)
 
       ! Couplage convection-couche limite
@@ -948,12 +949,17 @@
           CALL histwrite_phy(o_alp_wk, alp_wake)
           IF (iflag_pbl_split >= 1) THEN
-            zx_tmp_fi3d(1:klon, 1:klev) = d_t_vdf_x(1:klon, 1:klev)/pdtphys
-            CALL histwrite_phy(o_dtvdf_x, zx_tmp_fi3d)
-            zx_tmp_fi3d(1:klon, 1:klev) = d_t_vdf_w(1:klon, 1:klev)/pdtphys
-            CALL histwrite_phy(o_dtvdf_w, zx_tmp_fi3d)
-            zx_tmp_fi3d(1:klon, 1:klev) = d_q_vdf_x(1:klon, 1:klev)/pdtphys
-            CALL histwrite_phy(o_dqvdf_x, zx_tmp_fi3d)
-            zx_tmp_fi3d(1:klon, 1:klev) = d_q_vdf_w(1:klon, 1:klev)/pdtphys
-            CALL histwrite_phy(o_dqvdf_w, zx_tmp_fi3d)
+            ! zx_tmp_fi3d(1:klon, 1:klev) = d_t_vdf_x(1:klon, 1:klev)/pdtphys
+            ! CALL histwrite_phy(o_dtvdf_x, zx_tmp_fi3d)
+            ! zx_tmp_fi3d(1:klon, 1:klev) = d_t_vdf_w(1:klon, 1:klev)/pdtphys
+            ! CALL histwrite_phy(o_dtvdf_w, zx_tmp_fi3d)
+            ! zx_tmp_fi3d(1:klon, 1:klev) = d_q_vdf_x(1:klon, 1:klev)/pdtphys
+            ! CALL histwrite_phy(o_dqvdf_x, zx_tmp_fi3d)
+            ! zx_tmp_fi3d(1:klon, 1:klev) = d_q_vdf_w(1:klon, 1:klev)/pdtphys
+            ! CALL histwrite_phy(o_dqvdf_w, zx_tmp_fi3d)
+            CALL histwrite_phy(o_dtvdf_x, d_t_vdf_x(1:klon, 1:klev))
+            CALL histwrite_phy(o_dtvdf_w, d_t_vdf_w(1:klon, 1:klev))
+            CALL histwrite_phy(o_dqvdf_x, d_q_vdf_x(1:klon, 1:klev))
+            CALL histwrite_phy(o_dqvdf_w, d_q_vdf_w(1:klon, 1:klev))
+
             CALL histwrite_phy(o_sens_x, sens_x)
             CALL histwrite_phy(o_sens_w, sens_w)
@@ -980,9 +986,12 @@
           CALL histwrite_phy(o_wake_deltaq, wake_deltaq)
           CALL histwrite_phy(o_wake_omg, wake_omg)
-          zx_tmp_fi3d(1:klon, 1:klev) = d_t_wake(1:klon, 1:klev) &
-                                                          /pdtphys
-          CALL histwrite_phy(o_dtwak, zx_tmp_fi3d)
+          ! zx_tmp_fi3d(1:klon, 1:klev) = d_t_wake(1:klon, 1:klev) &
+          !                                                 /pdtphys
+          ! CALL histwrite_phy(o_dtwak, zx_tmp_fi3d)
+          ! zx_tmp_fi3d(1:klon, 1:klev) = d_q_wake(1:klon, 1:klev)/pdtphys
+          ! CALL histwrite_phy(o_dqwak, zx_tmp_fi3d)
+          CALL histwrite_phy(o_dtwak, d_t_wake(1:klon, 1:klev))
+          CALL histwrite_phy(o_dqwak, d_q_wake(1:klon, 1:klev))
           zx_tmp_fi3d(1:klon, 1:klev) = d_q_wake(1:klon, 1:klev)/pdtphys
-          CALL histwrite_phy(o_dqwak, zx_tmp_fi3d)
           CALL water_int(klon, klev, zx_tmp_fi3d, zmasse, zx_tmp_fi2d)
           CALL histwrite_phy(o_dqwak2d, zx_tmp_fi2d)
@@ -1021,8 +1030,6 @@
         CALL histwrite_phy(o_slab_bils, slab_wfbils)
         IF (nslay .EQ. 1) THEN
-          zx_tmp_fi2d(:) = tslab(:, 1)
-          CALL histwrite_phy(o_tslab, zx_tmp_fi2d)
-          zx_tmp_fi2d(:) = dt_qflux(:, 1)
-          CALL histwrite_phy(o_slab_qflux, zx_tmp_fi2d)
+          CALL histwrite_phy(o_tslab, tslab(:, 1))
+          CALL histwrite_phy(o_slab_qflux, dt_qflux(:, 1))
         ELSE
           CALL histwrite_phy(o_tslab, tslab(:, 1:nslay))
@@ -1039,6 +1046,5 @@
         IF (slab_hdiff) THEN
           IF (nslay .EQ. 1) THEN
-            zx_tmp_fi2d(:) = dt_hdiff(:, 1)
-            CALL histwrite_phy(o_slab_hdiff, zx_tmp_fi2d)
+            CALL histwrite_phy(o_slab_hdiff, dt_hdiff(:, 1))
           ELSE
             CALL histwrite_phy(o_slab_hdiff, dt_hdiff(:, 1:nslay))
@@ -1047,6 +1053,5 @@
         IF (slab_ekman .GT. 0) THEN
           IF (nslay .EQ. 1) THEN
-            zx_tmp_fi2d(:) = dt_ekman(:, 1)
-            CALL histwrite_phy(o_slab_ekman, zx_tmp_fi2d)
+            CALL histwrite_phy(o_slab_ekman, dt_ekman(:, 1))
           ELSE
             CALL histwrite_phy(o_slab_ekman, dt_ekman(:, 1:nslay))
@@ -1064,16 +1069,16 @@
       CALL histwrite_phy(o_re, re)
       CALL histwrite_phy(o_fl, fl)
-      DO i = 1, klon
-        zx_tmp_fi2d(i) = MIN(100., rh2m(i)*100.)
-      ENDDO
-      CALL histwrite_phy(o_rh2m, zx_tmp_fi2d)
+      ! DO i = 1, klon
+      !   zx_tmp_fi2d(i) = MIN(100., rh2m(i)*100.)
+      ! ENDDO
+      ! CALL histwrite_phy(o_rh2m, zx_tmp_fi2d)
+      CALL histwrite_phy(o_rh2m, rh2m)
       CALL histwrite_phy(o_qsat2m, zqsat2m_cor)
       CALL histwrite_phy(o_tpot, tpot)
       CALL histwrite_phy(o_tpote, tpote)
-      zx_tmp_fi2d(1:klon) = fsolsw(1:klon, is_ter)
-      CALL histwrite_phy(o_SWnetOR, zx_tmp_fi2d)
-      CALL histwrite_phy(o_LWdownOR, sollwdown)
+      !CALL histwrite_phy(o_SWnetOR, fsolsw(1:klon, is_ter))
+      !CALL histwrite_phy(o_LWdownOR, sollwdown)
       CALL histwrite_phy(o_snowl, snow_lsc)
-      CALL histwrite_phy(o_solldown, sollwdown)
+      !CALL histwrite_phy(o_solldown, sollwdown)
       CALL histwrite_phy(o_dtsvdfo, d_ts(:, is_oce))
       CALL histwrite_phy(o_dtsvdft, d_ts(:, is_ter))
@@ -1141,4 +1146,5 @@
       END DO
       CALL histwrite_phy(o_col_O3_tropo, zx_tmp_fi2d)   ! Added ThL
+      CALL histwrite_phy(o_wo_1, wo(:,:,1)) 
 
       IF (ok_strataer .and. type_trac == 'coag') THEN
@@ -1182,21 +1188,27 @@
         ENDDO
         CALL histwrite_phy(o_heat_volc, zx_tmp_fi3d)
-        DO k = 1, klev
-          zx_tmp_fi3d(:, k) = cool_volc(:, k)
-        ENDDO
-        CALL histwrite_phy(o_cool_volc, zx_tmp_fi3d)
+        ! DO k = 1, klev
+        !   zx_tmp_fi3d(:, k) = cool_volc(:, k)
+        ! ENDDO
+        ! CALL histwrite_phy(o_cool_volc, zx_tmp_fi3d)
+        CALL histwrite_phy(o_cool_volc, cool_volc)
       ENDIF
       IF (ok_ade) THEN
-        zx_tmp_fi2d(:) = topswad_aero*swradcorr
-        CALL histwrite_phy(o_topswad, zx_tmp_fi2d)
-
-        zx_tmp_fi2d(:) = topswad0_aero*swradcorr
-        CALL histwrite_phy(o_topswad0, zx_tmp_fi2d)
-
-        zx_tmp_fi2d(:) = solswad_aero*swradcorr
-        CALL histwrite_phy(o_solswad, zx_tmp_fi2d)
-
-        zx_tmp_fi2d(:) = solswad0_aero*swradcorr
-        CALL histwrite_phy(o_solswad0, zx_tmp_fi2d)
+        ! zx_tmp_fi2d(:) = topswad_aero*swradcorr
+        ! CALL histwrite_phy(o_topswad, zx_tmp_fi2d)
+
+        ! zx_tmp_fi2d(:) = topswad0_aero*swradcorr
+        ! CALL histwrite_phy(o_topswad0, zx_tmp_fi2d)
+
+        ! zx_tmp_fi2d(:) = solswad_aero*swradcorr
+        ! CALL histwrite_phy(o_solswad, zx_tmp_fi2d)
+
+        ! zx_tmp_fi2d(:) = solswad0_aero*swradcorr
+        ! CALL histwrite_phy(o_solswad0, zx_tmp_fi2d)
+
+        CALL histwrite_phy(o_topswad, topswad_aero)
+        CALL histwrite_phy(o_topswad0, topswad0_aero)
+        CALL histwrite_phy(o_solswad, solswad_aero)
+        CALL histwrite_phy(o_solswad0, solswad0_aero)
 
         CALL histwrite_phy(o_toplwad, toplwad_aero)
@@ -1208,50 +1220,60 @@
         !ym => init to 0 in radlwsw_m.F90 ztopsw_aero, zsolsw_aero, ztopsw0_aero, zsolsw0_aero
 
-        zx_tmp_fi2d(:) = topsw_aero(:, 1)*swradcorr(:)
-        CALL histwrite_phy(o_swtoaas_nat, zx_tmp_fi2d)
-        zx_tmp_fi2d(:) = solsw_aero(:, 1)*swradcorr(:)
-        CALL histwrite_phy(o_swsrfas_nat, zx_tmp_fi2d)
-        zx_tmp_fi2d(:) = topsw0_aero(:, 1)*swradcorr(:)
-        CALL histwrite_phy(o_swtoacs_nat, zx_tmp_fi2d)
-        zx_tmp_fi2d(:) = solsw0_aero(:, 1)*swradcorr(:)
-        CALL histwrite_phy(o_swsrfcs_nat, zx_tmp_fi2d)
+        ! zx_tmp_fi2d(:) = topsw_aero(:, 1)*swradcorr(:)
+        ! CALL histwrite_phy(o_swtoaas_nat, zx_tmp_fi2d)
+        ! zx_tmp_fi2d(:) = solsw_aero(:, 1)*swradcorr(:)
+        ! CALL histwrite_phy(o_swsrfas_nat, zx_tmp_fi2d)
+        ! zx_tmp_fi2d(:) = topsw0_aero(:, 1)*swradcorr(:)
+        ! CALL histwrite_phy(o_swtoacs_nat, zx_tmp_fi2d)
+        ! zx_tmp_fi2d(:) = solsw0_aero(:, 1)*swradcorr(:)
+        ! CALL histwrite_phy(o_swsrfcs_nat, zx_tmp_fi2d)
+        ! !ant
+        ! zx_tmp_fi2d(:) = topsw_aero(:, 2)*swradcorr(:)
+        ! CALL histwrite_phy(o_swtoaas_ant, zx_tmp_fi2d)
+        ! zx_tmp_fi2d(:) = solsw_aero(:, 2)*swradcorr(:)
+        ! CALL histwrite_phy(o_swsrfas_ant, zx_tmp_fi2d)
+        ! zx_tmp_fi2d(:) = topsw0_aero(:, 2)*swradcorr(:)
+        ! CALL histwrite_phy(o_swtoacs_ant, zx_tmp_fi2d)
+        ! zx_tmp_fi2d(:) = solsw0_aero(:, 2)*swradcorr(:)
+        ! CALL histwrite_phy(o_swsrfcs_ant, zx_tmp_fi2d)
+
+        CALL histwrite_phy(o_swtoaas_nat, topsw_aero(:, 1))
+        CALL histwrite_phy(o_swsrfas_nat, solsw_aero(:, 1))
+        CALL histwrite_phy(o_swtoacs_nat, topsw0_aero(:, 1))
+        CALL histwrite_phy(o_swsrfcs_nat, solsw0_aero(:, 1))
         !ant
-        zx_tmp_fi2d(:) = topsw_aero(:, 2)*swradcorr(:)
-        CALL histwrite_phy(o_swtoaas_ant, zx_tmp_fi2d)
-        zx_tmp_fi2d(:) = solsw_aero(:, 2)*swradcorr(:)
-        CALL histwrite_phy(o_swsrfas_ant, zx_tmp_fi2d)
-        zx_tmp_fi2d(:) = topsw0_aero(:, 2)*swradcorr(:)
-        CALL histwrite_phy(o_swtoacs_ant, zx_tmp_fi2d)
-        zx_tmp_fi2d(:) = solsw0_aero(:, 2)*swradcorr(:)
-        CALL histwrite_phy(o_swsrfcs_ant, zx_tmp_fi2d)
+        CALL histwrite_phy(o_swtoaas_ant, topsw_aero(:, 2))
+        CALL histwrite_phy(o_swsrfas_ant, solsw_aero(:, 2))
+        CALL histwrite_phy(o_swtoacs_ant, topsw0_aero(:, 2))
+        CALL histwrite_phy(o_swsrfcs_ant, solsw0_aero(:, 2))
         !cf
         IF (.not. aerosol_couple) THEN
-          zx_tmp_fi2d(:) = topswcf_aero(:, 1)*swradcorr(:)
-          CALL histwrite_phy(o_swtoacf_nat, zx_tmp_fi2d)
-          zx_tmp_fi2d(:) = solswcf_aero(:, 1)*swradcorr(:)
-          CALL histwrite_phy(o_swsrfcf_nat, zx_tmp_fi2d)
-          zx_tmp_fi2d(:) = topswcf_aero(:, 2)*swradcorr(:)
-          CALL histwrite_phy(o_swtoacf_ant, zx_tmp_fi2d)
-          zx_tmp_fi2d(:) = solswcf_aero(:, 2)*swradcorr(:)
-          CALL histwrite_phy(o_swsrfcf_ant, zx_tmp_fi2d)
-          zx_tmp_fi2d(:) = topswcf_aero(:, 3)*swradcorr(:)
-          CALL histwrite_phy(o_swtoacf_zero, zx_tmp_fi2d)
-          zx_tmp_fi2d(:) = solswcf_aero(:, 3)*swradcorr(:)
-          CALL histwrite_phy(o_swsrfcf_zero, zx_tmp_fi2d)
+          ! zx_tmp_fi2d(:) = topswcf_aero(:, 1)*swradcorr(:)
+          ! CALL histwrite_phy(o_swtoacf_nat, zx_tmp_fi2d)
+          ! zx_tmp_fi2d(:) = solswcf_aero(:, 1)*swradcorr(:)
+          ! CALL histwrite_phy(o_swsrfcf_nat, zx_tmp_fi2d)
+          ! zx_tmp_fi2d(:) = topswcf_aero(:, 2)*swradcorr(:)
+          ! CALL histwrite_phy(o_swtoacf_ant, zx_tmp_fi2d)
+          ! zx_tmp_fi2d(:) = solswcf_aero(:, 2)*swradcorr(:)
+          ! CALL histwrite_phy(o_swsrfcf_ant, zx_tmp_fi2d)
+          ! zx_tmp_fi2d(:) = topswcf_aero(:, 3)*swradcorr(:)
+          ! CALL histwrite_phy(o_swtoacf_zero, zx_tmp_fi2d)
+          ! zx_tmp_fi2d(:) = solswcf_aero(:, 3)*swradcorr(:)
+          ! CALL histwrite_phy(o_swsrfcf_zero, zx_tmp_fi2d)
+
+          CALL histwrite_phy(o_swtoacf_nat, topswcf_aero(:, 1))
+          CALL histwrite_phy(o_swsrfcf_nat, solswcf_aero(:, 1))
+          CALL histwrite_phy(o_swtoacf_ant, topswcf_aero(:, 2))
+          CALL histwrite_phy(o_swsrfcf_ant, solswcf_aero(:, 2))
+          CALL histwrite_phy(o_swtoacf_zero, topswcf_aero(:, 3))
+          CALL histwrite_phy(o_swsrfcf_zero, solswcf_aero(:, 3))
         ENDIF
         !====MS forcing diagnostics
       ENDIF
       IF (ok_aie) THEN
-        zx_tmp_fi2d(:) = topswai_aero*swradcorr
-        CALL histwrite_phy(o_topswai, zx_tmp_fi2d)
-
-        zx_tmp_fi2d(:) = toplwai_aero*swradcorr
-        CALL histwrite_phy(o_toplwai, zx_tmp_fi2d)
-
-        zx_tmp_fi2d(:) = solswai_aero*swradcorr
-        CALL histwrite_phy(o_solswai, zx_tmp_fi2d)
-
-        zx_tmp_fi2d(:) = sollwai_aero*swradcorr
-        CALL histwrite_phy(o_sollwai, zx_tmp_fi2d)
+        CALL histwrite_phy(o_topswai, topswai_aero)
+        CALL histwrite_phy(o_toplwai, toplwai_aero)
+        CALL histwrite_phy(o_solswai, solswai_aero)
+        CALL histwrite_phy(o_sollwai, sollwai_aero)
       ENDIF
       IF (flag_aerosol .GT. 0 .AND. ok_cdnc) THEN
@@ -1268,6 +1290,7 @@
         CALL histwrite_phy(o_icc3dstra, icc3dstra)
         CALL histwrite_phy(o_cldicemxrat, zfice)
-        zx_tmp_fi3d(:, :) = 1 - zfice(:, :)
-        CALL histwrite_phy(o_cldwatmxrat, zx_tmp_fi3d)
+        ! zx_tmp_fi3d(:, :) = 1 - zfice(:, :)
+        ! CALL histwrite_phy(o_cldwatmxrat, zx_tmp_fi3d)
+        CALL histwrite_phy(o_cldwatmxrat, zfice)
         CALL histwrite_phy(o_reffclwtop, reffclwtop)
       ENDIF
@@ -1284,6 +1307,7 @@
       CALL histwrite_phy(o_oliq, ql_seri)
 
-      zx_tmp_fi3d = ql_seri + qs_seri
-      CALL histwrite_phy(o_ocond, zx_tmp_fi3d)
+      ! zx_tmp_fi3d = ql_seri + qs_seri
+      ! CALL histwrite_phy(o_ocond, zx_tmp_fi3d)
+      CALL histwrite_phy(o_ocond, qs_seri)
 
       CALL histwrite_phy(o_geop, zphi)
@@ -1294,6 +1318,6 @@
       CALL histwrite_phy(o_paprs, paprs(:, 1:klev))
 
-      zx_tmp_fi3d = zphi/RG
-      CALL histwrite_phy(o_zfull, zx_tmp_fi3d)
+      ! zx_tmp_fi3d = zphi/RG
+      ! CALL histwrite_phy(o_zfull, zx_tmp_fi3d)
 
       IF (ok_rrtm .and. iflag_rrtm .EQ. 1) THEN
@@ -1304,7 +1328,7 @@
       ENDIF
 
-      IF (flag_aerosol_strat .EQ. 2) THEN
+      !IF (flag_aerosol_strat .EQ. 2) THEN
         CALL histwrite_phy(o_stratomask, stratomask)
-      ENDIF
+      !ENDIF
 
       zx_tmp_fi3d(:, 1) = pphis(:)/RG
@@ -1329,10 +1353,12 @@
       CALL histwrite_phy(o_rhum, zx_rh)
 
-      zx_tmp_fi3d = wo(:, :, 1)*dobson_u*1e3/zmasse/rmo3*rmd
-      CALL histwrite_phy(o_ozone, zx_tmp_fi3d)
+      
+      ! zx_tmp_fi3d = wo(:, :, 1)*dobson_u*1e3/zmasse/rmo3*rmd
+      ! CALL histwrite_phy(o_ozone, zx_tmp_fi3d) ! o_wo_1*dobson_u*1e3/o_mass/rmo3*rmd
 
       IF (read_climoz == 2) THEN
-        zx_tmp_fi3d = wo(:, :, 2)*dobson_u*1e3/zmasse/rmo3*rmd
-        CALL histwrite_phy(o_ozone_light, zx_tmp_fi3d)
+        ! zx_tmp_fi3d = wo(:, :, 2)*dobson_u*1e3/zmasse/rmo3*rmd
+        ! CALL histwrite_phy(o_ozone_light, zx_tmp_fi3d)
+        CALL histwrite_phy(o_ozone_light, wo(:, :, 2))
       ENDIF
 
@@ -1361,14 +1387,9 @@
 
       DO nsrf = 1, nbsrf
-        zx_tmp_fi2d(1:klon) = falb1(1:klon, nsrf)
-        CALL histwrite_phy(o_albe_srf(nsrf), zx_tmp_fi2d)
-        zx_tmp_fi2d(1:klon) = z0m(1:klon, nsrf)
-        CALL histwrite_phy(o_z0m_srf(nsrf), zx_tmp_fi2d)
-        zx_tmp_fi2d(1:klon) = z0h(1:klon, nsrf)
-        CALL histwrite_phy(o_z0h_srf(nsrf), zx_tmp_fi2d)
-        zx_tmp_fi2d(1:klon) = agesno(1:klon, nsrf)
-        CALL histwrite_phy(o_ages_srf(nsrf), zx_tmp_fi2d)
-        zx_tmp_fi2d(1:klon) = snow(1:klon, nsrf)
-        CALL histwrite_phy(o_snow_srf(nsrf), zx_tmp_fi2d)
+        CALL histwrite_phy(o_albe_srf(nsrf), falb1(1:klon, nsrf))
+        CALL histwrite_phy(o_z0m_srf(nsrf), z0m(1:klon, nsrf))
+        CALL histwrite_phy(o_z0h_srf(nsrf), z0h(1:klon, nsrf))
+        CALL histwrite_phy(o_ages_srf(nsrf), agesno(1:klon, nsrf))
+        CALL histwrite_phy(o_snow_srf(nsrf), snow(1:klon, nsrf))
       ENDDO !nsrf=1, nbsrf
       CALL histwrite_phy(o_alb1, albsol1)
@@ -1383,12 +1404,13 @@
           ENDDO
         ENDDO
-        CALL histwrite_phy(o_tke, zx_tmp_fi3d)
-
-        CALL histwrite_phy(o_tke_max, zx_tmp_fi3d)
+        ! reduce( sum(nsrf[1,4], o_fract_srf(nsrf)(:) * o_tke_srf(nsrf)(:,:))  )
+        ! == sum( o_fract_srf(nsrf)(:) * reduce(o_tke_srf(nsrf)(:,:)) )
+        CALL histwrite_phy(o_tke, zx_tmp_fi3d) 
+        !CALL histwrite_phy(o_tke_max, zx_tmp_fi3d)
       ENDIF
 
       CALL histwrite_phy(o_kz, coefh(:, :, is_ave))
 
-      CALL histwrite_phy(o_kz_max, coefh(:, :, is_ave))
+      !CALL histwrite_phy(o_kz_max, coefh(:, :, is_ave))
 
       CALL histwrite_phy(o_clwcon, clwcon0)
@@ -1410,28 +1432,36 @@
       CALL histwrite_phy(o_dvdyn, d_v_dyn)
 
-      zx_tmp_fi3d(1:klon, 1:klev) = d_t_con(1:klon, 1:klev)/pdtphys
-      CALL histwrite_phy(o_dtcon, zx_tmp_fi3d)
+      ! zx_tmp_fi3d(1:klon, 1:klev) = d_t_con(1:klon, 1:klev)/pdtphys
+      ! CALL histwrite_phy(o_dtcon, zx_tmp_fi3d)
+      CALL histwrite_phy(o_dtcon, d_t_con(:, 1:klev))
+
       IF (iflag_thermals .EQ. 0) THEN
         zx_tmp_fi3d(1:klon, 1:klev) = d_t_con(1:klon, 1:klev)/pdtphys + &
                                       d_t_ajsb(1:klon, 1:klev)/pdtphys
-        CALL histwrite_phy(o_tntc, zx_tmp_fi3d)
+        CALL histwrite_phy(o_tntc, zx_tmp_fi3d) ! o_tntc = dtcon + o_dtthe
       ELSE IF (iflag_thermals .GE. 1 .AND. iflag_wake .EQ. 1) THEN
         zx_tmp_fi3d(1:klon, 1:klev) = d_t_con(1:klon, 1:klev)/pdtphys + &
                                       d_t_ajs(1:klon, 1:klev)/pdtphys + &
                                       d_t_wake(1:klon, 1:klev)/pdtphys
-        CALL histwrite_phy(o_tntc, zx_tmp_fi3d)
-      ENDIF
-      zx_tmp_fi3d(1:klon, 1:klev) = d_u_con(1:klon, 1:klev)/pdtphys
-      CALL histwrite_phy(o_ducon, zx_tmp_fi3d)
-      zx_tmp_fi3d(1:klon, 1:klev) = d_v_con(1:klon, 1:klev)/pdtphys
-      CALL histwrite_phy(o_dvcon, zx_tmp_fi3d)
+        CALL histwrite_phy(o_tntc, zx_tmp_fi3d) ! o_tntc = dtcon + ? + o_dtwak
+      ENDIF
+      ! zx_tmp_fi3d(1:klon, 1:klev) = d_u_con(1:klon, 1:klev)/pdtphys
+      ! CALL histwrite_phy(o_ducon, zx_tmp_fi3d)
+      ! zx_tmp_fi3d(1:klon, 1:klev) = d_v_con(1:klon, 1:klev)/pdtphys
+      ! CALL histwrite_phy(o_dvcon, zx_tmp_fi3d)
+      ! zx_tmp_fi3d(1:klon, 1:klev) = d_q_con(1:klon, 1:klev)/pdtphys
+      ! CALL histwrite_phy(o_dqcon, zx_tmp_fi3d)      
+      CALL histwrite_phy(o_ducon, d_u_con(1:klon, 1:klev))
+      CALL histwrite_phy(o_dvcon, d_v_con(1:klon, 1:klev))
+      CALL histwrite_phy(o_dqcon, d_q_con(1:klon, 1:klev))
+
       zx_tmp_fi3d(1:klon, 1:klev) = d_q_con(1:klon, 1:klev)/pdtphys
-      CALL histwrite_phy(o_dqcon, zx_tmp_fi3d)
       CALL water_int(klon, klev, zx_tmp_fi3d, zmasse, zx_tmp_fi2d)
       CALL histwrite_phy(o_dqcon2d, zx_tmp_fi2d)
 
       IF (iflag_thermals .EQ. 0) THEN
-        zx_tmp_fi3d(1:klon, 1:klev) = d_q_con(1:klon, 1:klev)/pdtphys
-        CALL histwrite_phy(o_tnhusc, zx_tmp_fi3d)
+        ! zx_tmp_fi3d(1:klon, 1:klev) = d_q_con(1:klon, 1:klev)/pdtphys
+        ! CALL histwrite_phy(o_tnhusc, d_q_con)
+        CALL histwrite_phy(o_tnhusc, d_q_con(1:klon, 1:klev))
       ELSE IF (iflag_thermals .GE. 1 .AND. iflag_wake .EQ. 1) THEN
         zx_tmp_fi3d(1:klon, 1:klev) = d_q_con(1:klon, 1:klev)/pdtphys + &
@@ -1455,36 +1485,43 @@
       ! Sorties specifiques a la separation thermiques/non thermiques
       IF (iflag_thermals >= 1) THEN
-        zx_tmp_fi3d(1:klon, 1:klev) = d_t_lscth(1:klon, 1:klev)/pdtphys
-        CALL histwrite_phy(o_dtlscth, zx_tmp_fi3d)
-        zx_tmp_fi3d(1:klon, 1:klev) = d_t_lscst(1:klon, 1:klev)/pdtphys
-        CALL histwrite_phy(o_dtlscst, zx_tmp_fi3d)
+        ! zx_tmp_fi3d(1:klon, 1:klev) = d_t_lscth(1:klon, 1:klev)/pdtphys
+        ! CALL histwrite_phy(o_dtlscth, zx_tmp_fi3d)
+        ! zx_tmp_fi3d(1:klon, 1:klev) = d_t_lscst(1:klon, 1:klev)/pdtphys
+        ! CALL histwrite_phy(o_dtlscst, zx_tmp_fi3d)
+        ! zx_tmp_fi3d(1:klon, 1:klev) = d_q_lscth(1:klon, 1:klev)/pdtphys
+        ! CALL histwrite_phy(o_dqlscth, zx_tmp_fi3d)
+        ! zx_tmp_fi3d(1:klon, 1:klev) = d_q_lscst(1:klon, 1:klev)/pdtphys
+        ! CALL histwrite_phy(o_dqlscst, zx_tmp_fi3d)
+
+        CALL histwrite_phy(o_dtlscth, d_t_lscth(1:klon, 1:klev))
+        CALL histwrite_phy(o_dtlscst, d_t_lscst(1:klon, 1:klev))
+        CALL histwrite_phy(o_dqlscth, d_q_lscth(1:klon, 1:klev))
+        CALL histwrite_phy(o_dqlscst, d_q_lscst(1:klon, 1:klev))
+
         zx_tmp_fi3d(1:klon, 1:klev) = d_q_lscth(1:klon, 1:klev)/pdtphys
-        CALL histwrite_phy(o_dqlscth, zx_tmp_fi3d)
         CALL water_int(klon, klev, zx_tmp_fi3d, zmasse, zx_tmp_fi2d)
-        CALL histwrite_phy(o_dqlscth2d, zx_tmp_fi2d)
+        CALL histwrite_phy(o_dqlscth2d, zx_tmp_fi2d)        
         zx_tmp_fi3d(1:klon, 1:klev) = d_q_lscst(1:klon, 1:klev)/pdtphys
-        CALL histwrite_phy(o_dqlscst, zx_tmp_fi3d)
         CALL water_int(klon, klev, zx_tmp_fi3d, zmasse, zx_tmp_fi2d)
         CALL histwrite_phy(o_dqlscst2d, zx_tmp_fi2d)
         CALL histwrite_phy(o_plulth, plul_th)
         CALL histwrite_phy(o_plulst, plul_st)
-        DO i = 1, klon
-          zx_tmp_fi2d(1:klon) = lmax_th(:)
-        ENDDO
+        zx_tmp_fi2d(:) = lmax_th(1:klon) ! Cast from int to real
         CALL histwrite_phy(o_lmaxth, zx_tmp_fi2d)
-        DO k = 1, klev
-          DO i = 1, klon
-            IF (ptconvth(i, k)) THEN
-              zx_tmp_fi3d(i, k) = 1.
-            ELSE
-              zx_tmp_fi3d(i, k) = 0.
-            ENDIF
-          ENDDO
-        ENDDO
+        ! DO k = 1, klev
+        !   DO i = 1, klon
+        !     IF (ptconvth(i, k)) THEN
+        !       zx_tmp_fi3d(i, k) = 1.
+        !     ELSE
+        !       zx_tmp_fi3d(i, k) = 0.
+        !     ENDIF
+        !   ENDDO
+        ! ENDDO
+        ! CALL histwrite_phy(o_ptconvth, zx_tmp_fi3d)
+        zx_tmp_fi3d(:,:) = MERGE(1., 0., ptconvth(:,:)) ! Cast from logical to real
         CALL histwrite_phy(o_ptconvth, zx_tmp_fi3d)
       ENDIF ! iflag_thermals>=1
 
-      zpt_conv = 0.
-      WHERE (ptconv) zpt_conv = 1.
+      zpt_conv(:,:) = MERGE(1., 0., ptconv(:,:))
       CALL histwrite_phy(o_ptconv, zpt_conv)
       zpt_conv2d(:) = 0.
@@ -1498,29 +1535,27 @@
       ENDDO
       CALL histwrite_phy(o_ftime_th, zx_tmp_fi2d)
-      zx_tmp_fi2d(:) = max(zx_tmp_fi2d(:), zpt_conv2d(:))
-      CALL histwrite_phy(o_ftime_con, zx_tmp_fi2d)
+      ! zx_tmp_fi2d(:) = max(zx_tmp_fi2d(:), zpt_conv2d(:))
+      ! CALL histwrite_phy(o_ftime_con, zx_tmp_fi2d)
       !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-      zx_tmp_fi3d(1:klon, 1:klev) = d_t_vdf(1:klon, 1:klev)/pdtphys
-      CALL histwrite_phy(o_dtvdf, zx_tmp_fi3d)
-      zx_tmp_fi3d(1:klon, 1:klev) = d_t_diss(1:klon, 1:klev)/pdtphys
-      CALL histwrite_phy(o_dtdis, zx_tmp_fi3d)
+      CALL histwrite_phy(o_dtvdf, d_t_vdf(1:klon, 1:klev))
+      CALL histwrite_phy(o_dtdis, d_t_diss(1:klon, 1:klev))
+      CALL histwrite_phy(o_dqvdf, d_q_vdf(1:klon, 1:klev))
+      CALL histwrite_phy(o_dteva, d_t_eva(1:klon, 1:klev))
+      CALL histwrite_phy(o_dqeva, d_q_eva(1:klon, 1:klev))
+      CALL histwrite_phy(o_duthe, d_u_ajs(1:klon, 1:klev))
+      CALL histwrite_phy(o_dvthe, d_v_ajs(1:klon, 1:klev))
+
       zx_tmp_fi3d(1:klon, 1:klev) = d_q_vdf(1:klon, 1:klev)/pdtphys
-      CALL histwrite_phy(o_dqvdf, zx_tmp_fi3d)
       CALL water_int(klon, klev, zx_tmp_fi3d, zmasse, zx_tmp_fi2d)
       CALL histwrite_phy(o_dqvdf2d, zx_tmp_fi2d)
-      zx_tmp_fi3d(1:klon, 1:klev) = d_t_eva(1:klon, 1:klev)/pdtphys
-      CALL histwrite_phy(o_dteva, zx_tmp_fi3d)
       zx_tmp_fi3d(1:klon, 1:klev) = d_q_eva(1:klon, 1:klev)/pdtphys
-      CALL histwrite_phy(o_dqeva, zx_tmp_fi3d)
       CALL water_int(klon, klev, zx_tmp_fi3d, zmasse, zx_tmp_fi2d)
       CALL histwrite_phy(o_dqeva2d, zx_tmp_fi2d)
+      ! zx_tmp_fi3d(1:klon, 1:klev) = d_t_ajs(1:klon, 1:klev)/pdtphys - &
+      !                               d_t_ajsb(1:klon, 1:klev)/pdtphys
+      ! CALL histwrite_phy(o_dtthe, zx_tmp_fi3d) ! d_t_ajs(1:klon, 1:klev)/pdtphys + o_dtajs
+      CALL histwrite_phy(o_dtthe, d_t_ajs(1:klon, 1:klev))
       CALL histwrite_phy(o_ratqs, ratqs)
-        zx_tmp_fi3d(1:klon, 1:klev) = d_t_ajs(1:klon, 1:klev)/pdtphys - &
-                                      d_t_ajsb(1:klon, 1:klev)/pdtphys
-      CALL histwrite_phy(o_dtthe, zx_tmp_fi3d)
-        zx_tmp_fi3d(1:klon, 1:klev) = d_u_ajs(1:klon, 1:klev)/pdtphys
-      CALL histwrite_phy(o_duthe, zx_tmp_fi3d)
-        zx_tmp_fi3d(1:klon, 1:klev) = d_v_ajs(1:klon, 1:klev)/pdtphys
-      CALL histwrite_phy(o_dvthe, zx_tmp_fi3d)
+      
 
       IF (iflag_thermals >= 1) THEN
@@ -1546,53 +1581,58 @@
         CALL water_int(klon, klev, zx_tmp_fi3d, zmasse, zx_tmp_fi2d)
         CALL histwrite_phy(o_dqthe2d, zx_tmp_fi2d)
+      ELSE
+        zx_tmp_fi2d(:) = 0
+        CALL histwrite_phy(o_f_th, zx_tmp_fi2d)
       ENDIF !iflag_thermals
-      zx_tmp_fi3d(1:klon, 1:klev) = d_t_ajsb(1:klon, 1:klev)/pdtphys
-      CALL histwrite_phy(o_dtajs, zx_tmp_fi3d)
       zx_tmp_fi3d(1:klon, 1:klev) = d_q_ajsb(1:klon, 1:klev)/pdtphys
-      CALL histwrite_phy(o_dqajs, zx_tmp_fi3d)
       CALL water_int(klon, klev, zx_tmp_fi3d, zmasse, zx_tmp_fi2d)
       CALL histwrite_phy(o_dqajs2d, zx_tmp_fi2d)
-      zx_tmp_fi3d(1:klon, 1:klev) = d_t_swr(1:klon, 1:klev)/pdtphys
-      CALL histwrite_phy(o_dtswr, zx_tmp_fi3d)
-      zx_tmp_fi3d(1:klon, 1:klev) = d_t_sw0(1:klon, 1:klev)/pdtphys
-      CALL histwrite_phy(o_dtsw0, zx_tmp_fi3d)
-      zx_tmp_fi3d(1:klon, 1:klev) = d_t_lwr(1:klon, 1:klev)/pdtphys
-      CALL histwrite_phy(o_dtlwr, zx_tmp_fi3d)
-      zx_tmp_fi3d(1:klon, 1:klev) = d_t_lw0(1:klon, 1:klev)/pdtphys
-      CALL histwrite_phy(o_dtlw0, zx_tmp_fi3d)
-      zx_tmp_fi3d(1:klon, 1:klev) = d_t_ec(1:klon, 1:klev)/pdtphys
-      CALL histwrite_phy(o_dtec, zx_tmp_fi3d)
-      zx_tmp_fi3d(1:klon, 1:klev) = d_u_vdf(1:klon, 1:klev)/pdtphys
-      CALL histwrite_phy(o_duvdf, zx_tmp_fi3d)
-      zx_tmp_fi3d(1:klon, 1:klev) = d_v_vdf(1:klon, 1:klev)/pdtphys
-      CALL histwrite_phy(o_dvvdf, zx_tmp_fi3d)
+
+      CALL histwrite_phy(o_dtajs, d_t_ajsb(1:klon, 1:klev))
+      CALL histwrite_phy(o_dqajs, d_q_ajsb(1:klon, 1:klev))
+      CALL histwrite_phy(o_dtswr, d_t_swr(1:klon, 1:klev))
+      CALL histwrite_phy(o_dtsw0, d_t_sw0(1:klon, 1:klev))
+      CALL histwrite_phy(o_dtlwr, d_t_lwr(1:klon, 1:klev))
+      CALL histwrite_phy(o_dtlw0, d_t_lw0(1:klon, 1:klev))
+      CALL histwrite_phy(o_dtec, d_t_ec(1:klon, 1:klev))
+      CALL histwrite_phy(o_duvdf, d_u_vdf(1:klon, 1:klev))
+      CALL histwrite_phy(o_dvvdf, d_v_vdf(1:klon, 1:klev))
+
       IF (ok_orodr) THEN
-        zx_tmp_fi3d(1:klon, 1:klev) = d_u_oro(1:klon, 1:klev)/pdtphys
-        CALL histwrite_phy(o_duoro, zx_tmp_fi3d)
-        zx_tmp_fi3d(1:klon, 1:klev) = d_v_oro(1:klon, 1:klev)/pdtphys
-        CALL histwrite_phy(o_dvoro, zx_tmp_fi3d)
-        zx_tmp_fi3d(1:klon, 1:klev) = d_t_oro(1:klon, 1:klev)/pdtphys
-        CALL histwrite_phy(o_dtoro, zx_tmp_fi3d)
+        ! zx_tmp_fi3d(1:klon, 1:klev) = d_u_oro(1:klon, 1:klev)/pdtphys
+        ! CALL histwrite_phy(o_duoro, zx_tmp_fi3d)
+        ! zx_tmp_fi3d(1:klon, 1:klev) = d_v_oro(1:klon, 1:klev)/pdtphys
+        ! CALL histwrite_phy(o_dvoro, zx_tmp_fi3d)
+        ! zx_tmp_fi3d(1:klon, 1:klev) = d_t_oro(1:klon, 1:klev)/pdtphys
+        ! CALL histwrite_phy(o_dtoro, zx_tmp_fi3d)
+
+        CALL histwrite_phy(o_duoro, d_u_oro(1:klon, 1:klev))
+        CALL histwrite_phy(o_dvoro, d_v_oro(1:klon, 1:klev))
+        CALL histwrite_phy(o_dtoro, d_t_oro(1:klon, 1:klev))
       ENDIF
       IF (ok_orolf) THEN
-        zx_tmp_fi3d(1:klon, 1:klev) = d_u_lif(1:klon, 1:klev)/pdtphys
-        CALL histwrite_phy(o_dulif, zx_tmp_fi3d)
-
-        zx_tmp_fi3d(1:klon, 1:klev) = d_v_lif(1:klon, 1:klev)/pdtphys
-        CALL histwrite_phy(o_dvlif, zx_tmp_fi3d)
-
-        zx_tmp_fi3d(1:klon, 1:klev) = d_t_lif(1:klon, 1:klev)/pdtphys
-        CALL histwrite_phy(o_dtlif, zx_tmp_fi3d)
+        ! zx_tmp_fi3d(1:klon, 1:klev) = d_u_lif(1:klon, 1:klev)/pdtphys
+        ! CALL histwrite_phy(o_dulif, zx_tmp_fi3d)
+        ! zx_tmp_fi3d(1:klon, 1:klev) = d_v_lif(1:klon, 1:klev)/pdtphys
+        ! CALL histwrite_phy(o_dvlif, zx_tmp_fi3d)
+        ! zx_tmp_fi3d(1:klon, 1:klev) = d_t_lif(1:klon, 1:klev)/pdtphys
+        ! CALL histwrite_phy(o_dtlif, zx_tmp_fi3d)
+
+        CALL histwrite_phy(o_dulif, d_u_lif(1:klon, 1:klev))
+        CALL histwrite_phy(o_dvlif, d_v_lif(1:klon, 1:klev))
+        CALL histwrite_phy(o_dtlif, d_t_lif(1:klon, 1:klev))
       ENDIF
 
       IF (ok_hines) THEN
-        zx_tmp_fi3d = du_gwd_hines/pdtphys
-        CALL histwrite_phy(o_du_gwd_hines, zx_tmp_fi3d)
-
-        zx_tmp_fi3d = dv_gwd_hines/pdtphys
-        CALL histwrite_phy(o_dv_gwd_hines, zx_tmp_fi3d)
-
-        zx_tmp_fi3d(1:klon, 1:klev) = d_t_hin(1:klon, 1:klev)/pdtphys
-        CALL histwrite_phy(o_dthin, zx_tmp_fi3d)
+        ! zx_tmp_fi3d = du_gwd_hines/pdtphys
+        ! CALL histwrite_phy(o_du_gwd_hines, zx_tmp_fi3d)
+        ! zx_tmp_fi3d = dv_gwd_hines/pdtphys
+        ! CALL histwrite_phy(o_dv_gwd_hines, zx_tmp_fi3d)
+        ! zx_tmp_fi3d = d_t_hin(1:klon, 1:klev)/pdtphys
+
+        CALL histwrite_phy(o_du_gwd_hines, du_gwd_hines)
+        CALL histwrite_phy(o_dv_gwd_hines, dv_gwd_hines)
+        CALL histwrite_phy(o_dthin, d_t_hin)
+
         CALL histwrite_phy(o_ustr_gwd_hines, zustr_gwd_hines)
         CALL histwrite_phy(o_vstr_gwd_hines, zvstr_gwd_hines)
@@ -1600,9 +1640,11 @@
 
       IF (.not. ok_hines .and. ok_gwd_rando) THEN
-        zx_tmp_fi3d = du_gwd_front/pdtphys
-        CALL histwrite_phy(o_du_gwd_front, zx_tmp_fi3d)
-
-        zx_tmp_fi3d = dv_gwd_front/pdtphys
-        CALL histwrite_phy(o_dv_gwd_front, zx_tmp_fi3d)
+        ! zx_tmp_fi3d = du_gwd_front/pdtphys
+        ! CALL histwrite_phy(o_du_gwd_front, zx_tmp_fi3d)
+        ! zx_tmp_fi3d = dv_gwd_front/pdtphys
+        ! CALL histwrite_phy(o_dv_gwd_front, zx_tmp_fi3d)
+
+        CALL histwrite_phy(o_du_gwd_front, du_gwd_front)
+        CALL histwrite_phy(o_dv_gwd_front, dv_gwd_front)
 
         CALL histwrite_phy(o_ustr_gwd_front, zustr_gwd_front)
@@ -1611,9 +1653,12 @@
 
       IF (ok_gwd_rando) THEN
-        zx_tmp_fi3d = du_gwd_rando/pdtphys
-        CALL histwrite_phy(o_du_gwd_rando, zx_tmp_fi3d)
-
-        zx_tmp_fi3d = dv_gwd_rando/pdtphys
-        CALL histwrite_phy(o_dv_gwd_rando, zx_tmp_fi3d)
+        ! zx_tmp_fi3d = du_gwd_rando/pdtphys
+        ! CALL histwrite_phy(o_du_gwd_rando, zx_tmp_fi3d)
+        ! zx_tmp_fi3d = dv_gwd_rando/pdtphys
+        ! CALL histwrite_phy(o_dv_gwd_rando, zx_tmp_fi3d)
+
+        CALL histwrite_phy(o_du_gwd_rando, du_gwd_rando)
+        CALL histwrite_phy(o_dv_gwd_rando, dv_gwd_rando)
+
         CALL histwrite_phy(o_ustr_gwd_rando, zustr_gwd_rando)
         CALL histwrite_phy(o_vstr_gwd_rando, zvstr_gwd_rando)
@@ -1623,4 +1668,5 @@
 
       IF (ok_qch4) THEN
+        ! GLITCHY : not in field_def_lmdz.xml
         zx_tmp_fi3d = d_q_ch4/pdtphys
         CALL histwrite_phy(o_dqch4, zx_tmp_fi3d)
@@ -1630,5 +1676,4 @@
         zx_tmp_fi3d1(:, k) = swup(:, k)*swradcorr(:)
       ENDDO
-
       CALL histwrite_phy(o_rsu, zx_tmp_fi3d1)
 
@@ -1636,12 +1681,11 @@
         zx_tmp_fi3d1(:, k) = swdn(:, k)*swradcorr(:)
       ENDDO
-
-
       CALL histwrite_phy(o_rsd, zx_tmp_fi3d1)
+
       DO k = 1, klevp1
         zx_tmp_fi3d1(:, k) = swup0(:, k)*swradcorr(:)
       ENDDO
-
       CALL histwrite_phy(o_rsucs, zx_tmp_fi3d1)
+
       DO k = 1, klevp1
         zx_tmp_fi3d1(:, k) = swupc0(:, k)*swradcorr(:)
@@ -1664,36 +1708,36 @@
       CALL histwrite_phy(o_rldcs, lwdn0)
 
-      zx_tmp_fi3d(1:klon, 1:klev) = d_t(1:klon, 1:klev) + &
-                                    d_t_dyn(1:klon, 1:klev)
-      CALL histwrite_phy(o_tnt, zx_tmp_fi3d)
-
-      zx_tmp_fi3d(1:klon, 1:klev) = d_t_swr(1:klon, 1:klev)/pdtphys + &
-                                    d_t_lwr(1:klon, 1:klev)/pdtphys
-      CALL histwrite_phy(o_tntr, zx_tmp_fi3d)
-      zx_tmp_fi3d(1:klon, 1:klev) = (d_t_lsc(1:klon, 1:klev) + &
-                                     d_t_eva(1:klon, 1:klev) + &
-                                     d_t_vdf(1:klon, 1:klev))/pdtphys
-      CALL histwrite_phy(o_tntscpbl, zx_tmp_fi3d)
-      zx_tmp_fi3d(1:klon, 1:klev) = d_qx(1:klon, 1:klev, ivap) + &
-                                    d_q_dyn(1:klon, 1:klev)
-      CALL histwrite_phy(o_tnhus, zx_tmp_fi3d)
-      zx_tmp_fi3d(1:klon, 1:klev) = d_q_lsc(1:klon, 1:klev)/pdtphys + &
-                                    d_q_eva(1:klon, 1:klev)/pdtphys
-      CALL histwrite_phy(o_tnhusscpbl, zx_tmp_fi3d)
       CALL histwrite_phy(o_evu, coefm(:, :, is_ave))
-      zx_tmp_fi3d(1:klon, 1:klev) = q_seri(1:klon, 1:klev) + &
-                                    ql_seri(1:klon, 1:klev)
-      CALL histwrite_phy(o_h2o, zx_tmp_fi3d)
+
+      ! zx_tmp_fi3d(1:klon, 1:klev) = d_t(1:klon, 1:klev) + &
+      !                               d_t_dyn(1:klon, 1:klev)
+      ! CALL histwrite_phy(o_tnt, zx_tmp_fi3d) ! o_dtphy + o_dtdyn
+      ! zx_tmp_fi3d(1:klon, 1:klev) = d_t_swr(1:klon, 1:klev)/pdtphys + &
+      !                               d_t_lwr(1:klon, 1:klev)/pdtphys
+      ! CALL histwrite_phy(o_tntr, zx_tmp_fi3d)!o_dtswr + o_dtlwr
+      ! zx_tmp_fi3d(1:klon, 1:klev) = (d_t_lsc(1:klon, 1:klev) + &
+      !                                d_t_eva(1:klon, 1:klev) + &
+      !                                d_t_vdf(1:klon, 1:klev))/pdtphys
+      ! CALL histwrite_phy(o_tntscpbl, zx_tmp_fi3d) ! o_dtlsc + o_dteva + o_dtvdf
+      ! zx_tmp_fi3d(1:klon, 1:klev) = d_qx(1:klon, 1:klev, ivap) + &
+      !                               d_q_dyn(1:klon, 1:klev)
+      ! CALL histwrite_phy(o_tnhus, zx_tmp_fi3d) ! o_dqphy + o_dqdyn
+      ! zx_tmp_fi3d(1:klon, 1:klev) = d_q_lsc(1:klon, 1:klev)/pdtphys + &
+      !                               d_q_eva(1:klon, 1:klev)/pdtphys
+      ! CALL histwrite_phy(o_tnhusscpbl, zx_tmp_fi3d) ! o_dqlsc + o_dqeva
+      ! zx_tmp_fi3d(1:klon, 1:klev) = q_seri(1:klon, 1:klev) + &
+      !                               ql_seri(1:klon, 1:klev)
+      ! CALL histwrite_phy(o_h2o, zx_tmp_fi3d) ! o_ovap + o_oliq
       IF (iflag_con >= 3) THEN
         zx_tmp_fi3d(1:klon, 1:klev) = -1*(dnwd(1:klon, 1:klev) + &
                                             dnwd0(1:klon, 1:klev))
-        CALL histwrite_phy(o_mcd, zx_tmp_fi3d)
+        CALL histwrite_phy(o_mcd, zx_tmp_fi3d) ! - (o_dnwd + dnwd0)
         zx_tmp_fi3d(1:klon, 1:klev) = upwd(1:klon, 1:klev) + &
                                         dnwd(1:klon, 1:klev) + dnwd0(1:klon, 1:klev)
-        CALL histwrite_phy(o_dmc, zx_tmp_fi3d)
+        CALL histwrite_phy(o_dmc, zx_tmp_fi3d) ! o_upwd - o_mcd
       ELSE IF (iflag_con == 2) THEN
         CALL histwrite_phy(o_mcd, pmfd)
         zx_tmp_fi3d = pmfu + pmfd
-        CALL histwrite_phy(o_dmc, zx_tmp_fi3d)
+        CALL histwrite_phy(o_dmc, zx_tmp_fi3d) ! pmfu + o_mcd
       ENDIF
       CALL histwrite_phy(o_ref_liq, ref_liq)
@@ -1701,28 +1745,40 @@
 
       IF (ok_4xCO2atm) THEN
-        zx_tmp_fi2d(:) = swupp(:, klevp1)*swradcorr(:)
-        CALL histwrite_phy(o_rsut4co2, zx_tmp_fi2d)
-        zx_tmp_fi2d(:) = lwupp(:, klevp1)
-        CALL histwrite_phy(o_rlut4co2, zx_tmp_fi2d)
-        zx_tmp_fi2d(:) = swup0p(:, klevp1)*swradcorr(:)
-        CALL histwrite_phy(o_rsutcs4co2, zx_tmp_fi2d)
-        zx_tmp_fi2d(:) = lwup0p(:, klevp1)
-        CALL histwrite_phy(o_rlutcs4co2, zx_tmp_fi2d)
-        DO k = 1, klevp1
-          zx_tmp_fi3d1(:, k) = swupp(:, k)*swradcorr(:)
-        ENDDO
-        CALL histwrite_phy(o_rsu4co2, zx_tmp_fi3d1)
-        DO k = 1, klevp1
-          zx_tmp_fi3d1(:, k) = swup0p(:, k)*swradcorr(:)
-        ENDDO
-        CALL histwrite_phy(o_rsucs4co2, zx_tmp_fi3d1)
-        DO k = 1, klevp1
-          zx_tmp_fi3d1(:, k) = swdnp(:, k)*swradcorr(:)
-        ENDDO
-        CALL histwrite_phy(o_rsd4co2, zx_tmp_fi3d1)
-        DO k = 1, klevp1
-          zx_tmp_fi3d1(:, k) = swdn0p(:, k)*swradcorr(:)
-        ENDDO
-        CALL histwrite_phy(o_rsdcs4co2, zx_tmp_fi3d1)
+        ! zx_tmp_fi2d(:) = swupp(:, klevp1)*swradcorr(:)
+        ! CALL histwrite_phy(o_rsut4co2, zx_tmp_fi2d)
+        ! zx_tmp_fi2d(:) = lwupp(:, klevp1)
+        ! CALL histwrite_phy(o_rlut4co2, zx_tmp_fi2d)
+        ! zx_tmp_fi2d(:) = swup0p(:, klevp1)*swradcorr(:)
+        ! CALL histwrite_phy(o_rsutcs4co2, zx_tmp_fi2d)
+        ! zx_tmp_fi2d(:) = lwup0p(:, klevp1)
+        ! CALL histwrite_phy(o_rlutcs4co2, zx_tmp_fi2d)
+        CALL histwrite_phy(o_rsut4co2, swupp(:, klevp1))
+        CALL histwrite_phy(o_rlut4co2, lwupp(:, klevp1))
+        CALL histwrite_phy(o_rsutcs4co2, swup0p(:, klevp1))
+        CALL histwrite_phy(o_rlutcs4co2, lwup0p(:, klevp1))
+        
+        if( any(swradcorr(:) /= 1.0) ) then
+          DO k = 1, klevp1
+            zx_tmp_fi3d1(:, k) = swupp(:, k)*swradcorr(:)
+          ENDDO
+          CALL histwrite_phy(o_rsu4co2, zx_tmp_fi3d1)
+          DO k = 1, klevp1
+            zx_tmp_fi3d1(:, k) = swup0p(:, k)*swradcorr(:)
+          ENDDO
+          CALL histwrite_phy(o_rsucs4co2, zx_tmp_fi3d1)
+          DO k = 1, klevp1
+            zx_tmp_fi3d1(:, k) = swdnp(:, k)*swradcorr(:)
+          ENDDO
+          CALL histwrite_phy(o_rsd4co2, zx_tmp_fi3d1)
+          DO k = 1, klevp1
+            zx_tmp_fi3d1(:, k) = swdn0p(:, k)*swradcorr(:)
+          ENDDO
+          CALL histwrite_phy(o_rsdcs4co2, zx_tmp_fi3d1)
+        else
+          CALL histwrite_phy(o_rsu4co2, swupp)
+          CALL histwrite_phy(o_rsucs4co2, swup0p)
+          CALL histwrite_phy(o_rsd4co2, swdnp)
+          CALL histwrite_phy(o_rsdcs4co2, swdn0p)
+        endif
         CALL histwrite_phy(o_rlu4co2, lwupp)
         CALL histwrite_phy(o_rlucs4co2, lwup0p)
@@ -1738,26 +1794,34 @@
       CALL histwrite_phy(o_va, vlevSTD(:, :))
       CALL histwrite_phy(o_wap, wlevSTD(:, :))
-      DO k = 1, nlevSTD
-        DO i = 1, klon
-          IF (O3STD(i, k) .NE. missing_val) THEN
-            zx_tmp_fi3d_STD(i, k) = O3STD(i, k)*1.e+9
-          ELSE
-            zx_tmp_fi3d_STD(i, k) = missing_val
-          ENDIF
-        ENDDO
-      ENDDO !k=1, nlevSTD
-      CALL histwrite_phy(o_tro3, zx_tmp_fi3d_STD)
+      ! DO k = 1, nlevSTD
+      !   DO i = 1, klon
+      !     IF (O3STD(i, k) .NE. missing_val) THEN
+      !       zx_tmp_fi3d_STD(i, k) = O3STD(i, k)*1.e+9
+      !     ELSE
+      !       zx_tmp_fi3d_STD(i, k) = missing_val
+      !     ENDIF
+      !   ENDDO
+      ! ENDDO !k=1, nlevSTD
+      ! CALL histwrite_phy(o_tro3, zx_tmp_fi3d_STD)
+      ! !(this/=missing_val)?this*1.e+9:missing_val
+      CALL histwrite_phy(o_tro3, O3STD(1:klon, 1:nlevSTD))
+      ! IF (read_climoz == 2) THEN
+      !   DO k = 1, nlevSTD
+      !     DO i = 1, klon
+      !       IF (O3daySTD(i, k) .NE. missing_val) THEN
+      !         zx_tmp_fi3d_STD(i, k) = O3daySTD(i, k)*1.e+9
+      !       ELSE
+      !         zx_tmp_fi3d_STD(i, k) = missing_val
+      !       ENDIF
+      !     ENDDO
+      !   ENDDO !k=1, nlevSTD
+      ! ENDIF
+      ! CALL histwrite_phy(o_tro3_daylight, zx_tmp_fi3d_STD)
+      ! !(this/=missing_val)?this*1.e+9:missing_val
       IF (read_climoz == 2) THEN
-        DO k = 1, nlevSTD
-          DO i = 1, klon
-            IF (O3daySTD(i, k) .NE. missing_val) THEN
-              zx_tmp_fi3d_STD(i, k) = O3daySTD(i, k)*1.e+9
-            ELSE
-              zx_tmp_fi3d_STD(i, k) = missing_val
-            ENDIF
-          ENDDO
-        ENDDO !k=1, nlevSTD
-      ENDIF
-      CALL histwrite_phy(o_tro3_daylight, zx_tmp_fi3d_STD)
+        CALL histwrite_phy(o_tro3_daylight, O3daySTD(1:klon, 1:nlevSTD))
+      else
+        CALL histwrite_phy(o_tro3_daylight, O3STD(1:klon, 1:nlevSTD))
+      ENDIF
       CALL histwrite_phy(o_uxv, uvSTD(:, :))
       CALL histwrite_phy(o_vxq, vqSTD(:, :))
@@ -1790,9 +1854,9 @@
             !--2D fields
             CALL histwrite_phy(o_dtr_dry(iq - nqo), flux_tr_dry(:, iq - nqo))
-            zx_tmp_fi2d = 0.
-            DO k = 1, klev
-              zx_tmp_fi2d(:) = zx_tmp_fi2d(:) + zmasse(:, k)*tr_seri(:, k, iq - nqo)
-            ENDDO
             if (.not. ok_reprobus) then
+              zx_tmp_fi2d = 0.
+              DO k = 1, klev
+                zx_tmp_fi2d(:) = zx_tmp_fi2d(:) + zmasse(:, k)*tr_seri(:, k, iq - nqo)
+              ENDDO
               CALL histwrite_phy(o_trac_cum(iq - nqo), zx_tmp_fi2d)
             end if
