Index: LMDZ5/trunk/DefLists/field_def_lmdz.xml
===================================================================
--- LMDZ5/trunk/DefLists/field_def_lmdz.xml	(revision 2537)
+++ LMDZ5/trunk/DefLists/field_def_lmdz.xml	(revision 2538)
@@ -379,4 +379,12 @@
         <field id="z0h_oce"    long_name="roughness length, enthalpy oce"    unit="m" />
         <field id="z0h_sic"    long_name="roughness length, enthalpy sic"    unit="m" />
+        <field id="sens_rain_oce"  long_name="Sensible heat flux associated withliquid prec. over ocean"    unit="W/m2" />
+        <field id="sens_rain_sic"  long_name="Sensible heat flux associated with liquid prec. over seaice"    unit="W/m2" />
+        <field id="sens_snow_oce"  long_name="Sensible heat flux associated with solid prec. over ocean"    unit="W/m2" />
+        <field id="sens_snow_sic"  long_name="Sensible heat flux associated with solid prec. over seaice"    unit="W/m2" />
+        <field id="lat_rain_oce"  long_name="Latent heat flux associated with liquid prec. over ocean"    unit="W/m2" />
+        <field id="lat_rain_sic"  long_name="Latent heat flux associated with liquid prec. over seaice"    unit="W/m2" />
+        <field id="lat_snow_oce"  long_name="Latent heat flux associated with solid prec. over ocean"    unit="W/m2" />
+        <field id="lat_snow_sic"  long_name="Latent heat flux associated with solid prec. over seaice"    unit="W/m2" />
         <field id="alb1"    long_name="Surface VIS albedo"    unit="-" />
         <field id="alb2"    long_name="Surface Near IR albedo"    unit="-" />
Index: LMDZ5/trunk/libf/phylmd/calcul_fluxs_mod.F90
===================================================================
--- LMDZ5/trunk/libf/phylmd/calcul_fluxs_mod.F90	(revision 2537)
+++ LMDZ5/trunk/libf/phylmd/calcul_fluxs_mod.F90	(revision 2538)
@@ -1,2 +1,4 @@
+!
+! $Id$
 !
 MODULE calcul_fluxs_mod
@@ -9,5 +11,7 @@
        radsol, dif_grnd, t1lay, q1lay, u1lay, v1lay, gustiness, &
        fqsat, petAcoef, peqAcoef, petBcoef, peqBcoef, &
-       tsurf_new, evap, fluxlat, fluxsens, dflux_s, dflux_l)
+       tsurf_new, evap, fluxlat, fluxsens, dflux_s, dflux_l, &
+       sens_prec_liq, sens_prec_sol, lat_prec_liq, lat_prec_sol)
+ 
     
     USE dimphy, ONLY : klon
@@ -49,5 +53,8 @@
 !   dflux_s      derivee du flux de chaleur sensible / Ts
 !   dflux_l      derivee du flux de chaleur latente  / Ts
-!
+!   sens_prec_liq flux sensible lié aux echanges de precipitations liquides
+!   sens_prec_sol                                    precipitations solides
+!   lat_prec_liq  flux latent lié aux echanges de precipitations liquides
+!   lat_prec_sol                                  precipitations solides
 
     INCLUDE "YOETHF.h"
@@ -77,4 +84,6 @@
     REAL, DIMENSION(klon), INTENT(OUT)   :: tsurf_new, evap, fluxsens, fluxlat
     REAL, DIMENSION(klon), INTENT(OUT)   :: dflux_s, dflux_l
+    REAL, DIMENSION(klon), OPTIONAL      :: sens_prec_liq, sens_prec_sol
+    REAL, DIMENSION(klon), OPTIONAL      :: lat_prec_liq, lat_prec_sol
 
 ! Variables locales
@@ -130,4 +139,8 @@
     dflux_s = 0.
     dflux_l = 0.
+    if (PRESENT(sens_prec_liq)) sens_prec_liq = 0.
+    if (PRESENT(sens_prec_sol)) sens_prec_sol = 0.
+    if (PRESENT(lat_prec_liq)) lat_prec_liq = 0.
+    if (PRESENT(lat_prec_sol)) lat_prec_sol = 0.
 !
 ! zx_qs = qsat en kg/kg
@@ -243,5 +256,34 @@
 !!$     &  run_off(i) = run_off(i) + max(qsol(i) - max_eau_sol, 0.0)
 !!$    qsol(i) = min(qsol(i), max_eau_sol) 
+!
+! calcul de l'enthalpie des precipitations liquides et solides
+!
+!       if (PRESENT(enth_prec_liq))                   &
+!       enth_prec_liq(i) = rcw * (t1lay(i) - tsurf(i)) * &
+!                          precip_rain(i)
+!       if (PRESENT(enth_prec_sol))                  &
+!       enth_prec_sol(i) = rcs * (t1lay(i) - tsurf(i)) * &
+!                          precip_snow(i)
+! On calcule par rapport a T=0
+       if (PRESENT(sens_prec_liq))                   &
+         sens_prec_liq(i) = rcw * (t1lay(i) - RTT) * &
+                          precip_rain(i)
+       if (PRESENT(sens_prec_sol))                   &
+         sens_prec_sol(i) = rcs * (t1lay(i) - RTT) * &
+                          precip_snow(i)
+       if (PRESENT(lat_prec_liq))                    &
+         lat_prec_liq(i) =  precip_rain(i) * (RLVTT - RLVTT) 
+       if (PRESENT(lat_prec_sol))                    &
+         lat_prec_sol(i) = precip_snow(i) * (RLSTT - RLVTT)
     ENDDO
+
+    
+!       if (PRESENT(sens_prec_liq))                  &
+!          WRITE(*,*)' calculs_fluxs sens_prec_liq (min, max)', &
+!          MINVAL(sens_prec_liq(1:knon)), MAXVAL(sens_prec_liq(1:knon))
+!       if (PRESENT(sens_prec_sol))                  &
+!          WRITE(*,*)' calculs_fluxs sens_prec_sol (min, max)', &
+!          MINVAL(sens_prec_sol(1:knon)), MAXVAL(sens_prec_sol(1:knon))
+ 
 !
 !****************************************************************************************
Index: LMDZ5/trunk/libf/phylmd/cpl_mod.F90
===================================================================
--- LMDZ5/trunk/libf/phylmd/cpl_mod.F90	(revision 2537)
+++ LMDZ5/trunk/libf/phylmd/cpl_mod.F90	(revision 2538)
@@ -52,4 +52,6 @@
   REAL, ALLOCATABLE, DIMENSION(:,:), SAVE   :: cpl_windsp
   !$OMP THREADPRIVATE(cpl_windsp)
+  REAL, ALLOCATABLE, DIMENSION(:,:), SAVE   :: cpl_sens_rain, cpl_sens_snow
+  !$OMP THREADPRIVATE(cpl_sens_rain, cpl_sens_snow)
   REAL, ALLOCATABLE, DIMENSION(:,:), SAVE   :: cpl_taumod
   !$OMP THREADPRIVATE(cpl_taumod)
@@ -90,4 +92,6 @@
   REAL, ALLOCATABLE, DIMENSION(:,:), SAVE   :: cpl_windsp2D
   !$OMP THREADPRIVATE(cpl_windsp2D)
+  REAL, ALLOCATABLE, DIMENSION(:,:,:), SAVE   :: cpl_sens_rain2D, cpl_sens_snow2D
+  !$OMP THREADPRIVATE(cpl_sens_rain2D, cpl_sens_snow2D)
   REAL, ALLOCATABLE, DIMENSION(:,:), SAVE   :: cpl_atm_co22D
   !$OMP THREADPRIVATE(cpl_atm_co22D)
@@ -168,5 +172,7 @@
     ALLOCATE(cpl_windsp(klon,2), stat = error)
     sum_error = sum_error + error
-    ALLOCATE(cpl_taumod(klon,2), stat = error)
+    ALLOCATE(cpl_sens_rain(klon,2), stat = error)
+    sum_error = sum_error + error
+    ALLOCATE(cpl_sens_snow(klon,2), stat = error)
     sum_error = sum_error + error
     ALLOCATE(cpl_rriv2D(nbp_lon,jj_nb), stat=error)
@@ -531,5 +537,6 @@
   SUBROUTINE cpl_send_ocean_fields(itime, knon, knindex, &
        swdown, lwdown, fluxlat, fluxsens, &
-       precip_rain, precip_snow, evap, tsurf, fder, albsol, taux, tauy, windsp)
+       precip_rain, precip_snow, evap, tsurf, fder, albsol, taux, tauy, windsp,&
+       sens_prec_liq, sens_prec_sol, lat_prec_liq, lat_prec_sol)
 !
 ! This subroutine cumulates some fields for each time-step during a coupling 
@@ -552,4 +559,6 @@
     REAL, DIMENSION(klon), INTENT(IN)       :: evap, tsurf, fder, albsol
     REAL, DIMENSION(klon), INTENT(IN)       :: taux, tauy, windsp
+    REAL, DIMENSION(klon), INTENT(IN)       :: sens_prec_liq, sens_prec_sol
+    REAL, DIMENSION(klon), INTENT(IN)       :: lat_prec_liq, lat_prec_sol
 
 ! Local variables
@@ -583,4 +592,6 @@
        cpl_tauy(1:knon,cpl_index) = 0.0
        cpl_windsp(1:knon,cpl_index) = 0.0
+       cpl_sens_rain(1:knon,cpl_index) = 0.0
+       cpl_sens_snow(1:knon,cpl_index) = 0.0
        cpl_taumod(1:knon,cpl_index) = 0.0
        IF (carbon_cycle_cpl) cpl_atm_co2(1:knon,cpl_index) = 0.0
@@ -614,4 +625,8 @@
        cpl_windsp(ig,cpl_index) = cpl_windsp(ig,cpl_index) + &
             windsp(ig)      / REAL(nexca)
+       cpl_sens_rain(ig,cpl_index) = cpl_sens_rain(ig,cpl_index) + &
+            sens_prec_liq(ig)      / REAL(nexca)
+       cpl_sens_snow(ig,cpl_index) = cpl_sens_snow(ig,cpl_index) + &
+            sens_prec_sol(ig)      / REAL(nexca)
        cpl_taumod(ig,cpl_index) =   cpl_taumod(ig,cpl_index) + &
           SQRT ( taux(ig)*taux(ig)+tauy(ig)*tauy(ig) ) / REAL (nexca)
@@ -654,4 +669,8 @@
           sum_error = sum_error + error
           ALLOCATE(cpl_windsp2D(nbp_lon,jj_nb), stat=error)
+          sum_error = sum_error + error
+          ALLOCATE(cpl_sens_rain2D(nbp_lon,jj_nb,2), stat=error)
+          sum_error = sum_error + error
+          ALLOCATE(cpl_sens_snow2D(nbp_lon,jj_nb,2), stat=error)
           sum_error = sum_error + error
           ALLOCATE(cpl_taumod2D(nbp_lon,jj_nb,2), stat=error)
@@ -706,4 +725,10 @@
             knon, knindex)
 
+       CALL gath2cpl(cpl_sens_rain(:,cpl_index), cpl_sens_rain2D(:,:,cpl_index), &
+            knon, knindex)
+
+       CALL gath2cpl(cpl_sens_snow(:,cpl_index), cpl_sens_snow2D(:,:,cpl_index), &
+            knon, knindex)
+
        CALL gath2cpl(cpl_taumod(:,cpl_index), cpl_taumod2D(:,:,cpl_index), &
             knon, knindex)
@@ -722,5 +747,6 @@
        pctsrf, lafin, rlon, rlat, &
        swdown, lwdown, fluxlat, fluxsens, &
-       precip_rain, precip_snow, evap, tsurf, fder, albsol, taux, tauy)
+       precip_rain, precip_snow, evap, tsurf, fder, albsol, taux, tauy,&
+       sens_prec_liq, sens_prec_sol, lat_prec_liq, lat_prec_sol)
 !
 ! This subroutine cumulates some fields for each time-step during a coupling 
@@ -746,4 +772,6 @@
     REAL, DIMENSION(klon), INTENT(IN)       :: albsol, taux, tauy
     REAL, DIMENSION(klon,nbsrf), INTENT(IN) :: pctsrf
+    REAL, DIMENSION(klon), INTENT(IN)       :: sens_prec_liq, sens_prec_sol
+    REAL, DIMENSION(klon), INTENT(IN)       :: lat_prec_liq, lat_prec_sol
     LOGICAL, INTENT(IN)                     :: lafin
 
@@ -778,4 +806,6 @@
        cpl_taux(1:knon,cpl_index) = 0.0
        cpl_tauy(1:knon,cpl_index) = 0.0
+       cpl_sens_rain(1:knon,cpl_index) = 0.0
+       cpl_sens_snow(1:knon,cpl_index) = 0.0
        cpl_taumod(1:knon,cpl_index) = 0.0
     ENDIF
@@ -806,4 +836,8 @@
        cpl_tauy(ig,cpl_index) = cpl_tauy(ig,cpl_index) + &
             tauy(ig)        / REAL(nexca)     
+       cpl_sens_rain(ig,cpl_index) = cpl_sens_rain(ig,cpl_index) + &
+            sens_prec_liq(ig)      / REAL(nexca)
+       cpl_sens_snow(ig,cpl_index) = cpl_sens_snow(ig,cpl_index) + &
+            sens_prec_sol(ig)      / REAL(nexca)
        cpl_taumod(ig,cpl_index) = cpl_taumod(ig,cpl_index) + &
             SQRT ( taux(ig)*taux(ig)+tauy(ig)*tauy(ig) ) / REAL(nexca) 
@@ -839,4 +873,8 @@
           sum_error = sum_error + error
           ALLOCATE(cpl_windsp2D(nbp_lon,jj_nb), stat=error)
+          sum_error = sum_error + error
+          ALLOCATE(cpl_sens_rain2D(nbp_lon,jj_nb,2), stat=error)
+          sum_error = sum_error + error
+          ALLOCATE(cpl_sens_snow2D(nbp_lon,jj_nb,2), stat=error)
           sum_error = sum_error + error
           ALLOCATE(cpl_taumod2D(nbp_lon,jj_nb,2), stat=error)
@@ -889,4 +927,10 @@
 
        CALL gath2cpl(cpl_tauy(:,cpl_index), cpl_tauy2D(:,:,cpl_index), &
+            knon, knindex)
+
+       CALL gath2cpl(cpl_sens_rain(:,cpl_index), cpl_sens_rain2D(:,:,cpl_index), &
+            knon, knindex)
+
+       CALL gath2cpl(cpl_sens_snow(:,cpl_index), cpl_sens_snow2D(:,:,cpl_index), &
             knon, knindex)
 
@@ -1078,4 +1122,8 @@
     tab_flds(:,:,ids_nsfice) = cpl_nsol2D(:,:,2)
     tab_flds(:,:,ids_dflxdt) = cpl_fder2D(:,:,2)
+    tab_flds(:,:,ids_qraioc) = cpl_sens_rain2D(:,:,1)
+    tab_flds(:,:,ids_qsnooc) = cpl_sens_snow2D(:,:,1)
+    tab_flds(:,:,ids_qraiic) = cpl_sens_rain2D(:,:,2)
+    tab_flds(:,:,ids_qsnoic) = cpl_sens_snow2D(:,:,2)
     
     IF (version_ocean=='nemo') THEN
@@ -1279,4 +1327,7 @@
     DEALLOCATE(cpl_taux2D, cpl_tauy2D, cpl_windsp2D, cpl_taumod2D, stat=error )
     sum_error = sum_error + error
+    DEALLOCATE(cpl_sens_rain2D, cpl_sens_snow2D, stat=error)
+    sum_error = sum_error + error
+
     
     IF (carbon_cycle_cpl) THEN
Index: LMDZ5/trunk/libf/phylmd/oasis.F90
===================================================================
--- LMDZ5/trunk/libf/phylmd/oasis.F90	(revision 2537)
+++ LMDZ5/trunk/libf/phylmd/oasis.F90	(revision 2538)
@@ -55,5 +55,9 @@
   INTEGER, PARAMETER :: ids_atmco2 = 24
   INTEGER, PARAMETER :: ids_taumod = 25
-  INTEGER, PARAMETER :: maxsend    = 25  ! Maximum number of fields to send
+  INTEGER, PARAMETER :: ids_qraioc = 26
+  INTEGER, PARAMETER :: ids_qsnooc = 27
+  INTEGER, PARAMETER :: ids_qraiic = 28
+  INTEGER, PARAMETER :: ids_qsnoic = 29
+  INTEGER, PARAMETER :: maxsend    = 29  ! Maximum number of fields to send
   
   ! Id for fields received from ocean
@@ -177,4 +181,8 @@
             infosend(ids_atmco2)%action = .TRUE. ; infosend(ids_atmco2)%name = 'COATMCO2'
         ENDIF
+        infosend(ids_qraioc)%action = .TRUE. ; infosend(ids_qraioc)%name = 'COQRAIOC'
+        infosend(ids_qsnooc)%action = .TRUE. ; infosend(ids_qsnooc)%name = 'COQSNOOC'
+        infosend(ids_qraiic)%action = .TRUE. ; infosend(ids_qraiic)%name = 'COQRAIIC'
+        infosend(ids_qsnoic)%action = .TRUE. ; infosend(ids_qsnoic)%name = 'COQSNOIC'
         
     ELSE IF (version_ocean=='opa8') THEN
Index: LMDZ5/trunk/libf/phylmd/ocean_cpl_mod.F90
===================================================================
--- LMDZ5/trunk/libf/phylmd/ocean_cpl_mod.F90	(revision 2537)
+++ LMDZ5/trunk/libf/phylmd/ocean_cpl_mod.F90	(revision 2538)
@@ -1,2 +1,4 @@
+!
+! $Id$
 !
 MODULE ocean_cpl_mod
@@ -10,4 +12,5 @@
 
   PUBLIC :: ocean_cpl_init, ocean_cpl_noice, ocean_cpl_ice
+
 
 !****************************************************************************************
@@ -63,4 +66,6 @@
     USE calcul_fluxs_mod
     USE indice_sol_mod
+    USE phys_output_var_mod, ONLY : sens_prec_liq_o, sens_prec_sol_o, lat_prec_liq_o, lat_prec_sol_o
+    USE cpl_mod,             ONLY : gath2cpl
 
     INCLUDE "YOMCST.h"
@@ -99,8 +104,9 @@
     REAL, DIMENSION(klon), INTENT(OUT)       :: tsurf_new
     REAL, DIMENSION(klon), INTENT(OUT)       :: dflux_s, dflux_l      
+  
 
 ! Local variables
 !****************************************************************************************
-    INTEGER               :: i
+    INTEGER               :: i, j
     INTEGER, DIMENSION(1) :: iloc
     REAL, DIMENSION(klon) :: cal, beta, dif_grnd
@@ -110,4 +116,6 @@
     REAL, DIMENSION(klon) :: u1_lay, v1_lay
     LOGICAL               :: check=.FALSE.
+    REAL, DIMENSION(klon) :: sens_prec_liq, sens_prec_sol    
+    REAL, DIMENSION(klon) :: lat_prec_liq, lat_prec_sol    
 
 ! End definitions
@@ -130,4 +138,6 @@
     dif_grnd = 0.
     agesno(:) = 0.
+    sens_prec_liq = 0.; sens_prec_sol = 0.; lat_prec_liq = 0.; lat_prec_sol = 0.
+    
 
     DO i = 1, knon
@@ -141,5 +151,15 @@
          radsol, dif_grnd, temp_air, spechum, u1_lay, v1_lay, gustiness, &
          f_qsat_oce,AcoefH, AcoefQ, BcoefH, BcoefQ, &
-         tsurf_new, evap, fluxlat, fluxsens, dflux_s, dflux_l)
+         tsurf_new, evap, fluxlat, fluxsens, dflux_s, dflux_l, &
+         sens_prec_liq, sens_prec_sol, lat_prec_liq, lat_prec_sol)
+    do j = 1, knon
+      i = knindex(j)
+      sens_prec_liq_o(i,1) = sens_prec_liq(j)
+      sens_prec_sol_o(i,1) = sens_prec_sol(j)
+      lat_prec_liq_o(i,1) = lat_prec_liq(j)
+      lat_prec_sol_o(i,1) = lat_prec_sol(j)
+    enddo
+
+
     
 ! - Flux calculation at first modele level for U and V
@@ -171,5 +191,6 @@
     CALL cpl_send_ocean_fields(itime, knon, knindex, &
          swnet, lwnet, fluxlat, fluxsens, &
-         precip_rain, precip_snow, evap, tsurf_new, fder_new, alb1, flux_u1, flux_v1, windsp)
+         precip_rain, precip_snow, evap, tsurf_new, fder_new, alb1, flux_u1, flux_v1, windsp,&
+         sens_prec_liq, sens_prec_sol, lat_prec_liq, lat_prec_sol)
     
 
@@ -199,4 +220,5 @@
     USE calcul_fluxs_mod
     USE indice_sol_mod
+    USE phys_output_var_mod, ONLY : sens_prec_liq_o, sens_prec_sol_o, lat_prec_liq_o, lat_prec_sol_o
 
     INCLUDE "YOMCST.h"
@@ -237,8 +259,9 @@
     REAL, DIMENSION(klon), INTENT(OUT)       :: tsurf_new
     REAL, DIMENSION(klon), INTENT(OUT)       :: dflux_s, dflux_l      
+  
 
 ! Local variables
 !****************************************************************************************
-    INTEGER                 :: i
+    INTEGER                 :: i, j
     INTEGER, DIMENSION(1)   :: iloc
     LOGICAL                 :: check=.FALSE.
@@ -249,4 +272,6 @@
     REAL, DIMENSION(klon)   :: u0, v0
     REAL, DIMENSION(klon)   :: u1_lay, v1_lay
+    REAL, DIMENSION(klon) :: sens_prec_liq, sens_prec_sol    
+    REAL, DIMENSION(klon) :: lat_prec_liq, lat_prec_sol    
 
 ! End definitions
@@ -254,4 +279,6 @@
     
     IF (check) WRITE(*,*)'Entering surface_seaice, knon=',knon 
+
+    sens_prec_liq = 0.; sens_prec_sol = 0.; lat_prec_liq = 0.; lat_prec_sol = 0.
 
 !****************************************************************************************
@@ -285,5 +312,13 @@
          radsol, dif_grnd, temp_air, spechum, u1_lay, v1_lay, gustiness, &
          f_qsat_oce,AcoefH, AcoefQ, BcoefH, BcoefQ, &
-         tsurf_new, evap, fluxlat, fluxsens, dflux_s, dflux_l)
+         tsurf_new, evap, fluxlat, fluxsens, dflux_s, dflux_l, &
+         sens_prec_liq, sens_prec_sol, lat_prec_liq, lat_prec_sol)
+    do j = 1, knon
+      i = knindex(j)
+      sens_prec_liq_o(i,2) = sens_prec_liq(j)
+      sens_prec_sol_o(i,2) = sens_prec_sol(j)
+      lat_prec_liq_o(i,2) = lat_prec_liq(j)
+      lat_prec_sol_o(i,2) = lat_prec_sol(j)
+    enddo
 
 
@@ -317,5 +352,7 @@
        pctsrf, lafin, rlon, rlat, &
        swnet, lwnet, fluxlat, fluxsens, &
-       precip_rain, precip_snow, evap, tsurf_new, fder_new, alb1, flux_u1, flux_v1)
+       precip_rain, precip_snow, evap, tsurf_new, fder_new, alb1, flux_u1, flux_v1,&
+       sens_prec_liq, sens_prec_sol, lat_prec_liq, lat_prec_sol)
+
  
 
Index: LMDZ5/trunk/libf/phylmd/ocean_forced_mod.F90
===================================================================
--- LMDZ5/trunk/libf/phylmd/ocean_forced_mod.F90	(revision 2537)
+++ LMDZ5/trunk/libf/phylmd/ocean_forced_mod.F90	(revision 2538)
@@ -1,2 +1,4 @@
+!
+! $Id$
 !
 MODULE ocean_forced_mod
@@ -32,4 +34,6 @@
     USE mod_grid_phy_lmdz
     USE indice_sol_mod
+    USE phys_output_var_mod, ONLY : sens_prec_liq_o, sens_prec_sol_o, lat_prec_liq_o, lat_prec_sol_o
+
     INCLUDE "YOMCST.h"
     INCLUDE "clesphys.h"
@@ -66,5 +70,5 @@
 ! Local variables
 !****************************************************************************************
-    INTEGER                     :: i
+    INTEGER                     :: i, j
     REAL, DIMENSION(klon)       :: cal, beta, dif_grnd
     REAL, DIMENSION(klon)       :: alb_neig, tsurf_lim, zx_sl
@@ -72,4 +76,6 @@
     REAL, DIMENSION(klon)       :: u1_lay, v1_lay
     LOGICAL                     :: check=.FALSE.
+    REAL, DIMENSION(klon) :: sens_prec_liq, sens_prec_sol    
+    REAL, DIMENSION(klon) :: lat_prec_liq, lat_prec_sol    
 
 !****************************************************************************************
@@ -103,4 +109,6 @@
     alb_neig(:) = 0.
     agesno(:) = 0.
+    sens_prec_liq = 0.; sens_prec_sol = 0.; lat_prec_liq = 0.; lat_prec_sol = 0.
+
 ! Suppose zero surface speed
     u0(:)=0.0
@@ -115,5 +123,15 @@
          radsol, dif_grnd, temp_air, spechum, u1_lay, v1_lay, gustiness, &
          f_qsat_oce,AcoefH, AcoefQ, BcoefH, BcoefQ, &
-         tsurf_new, evap, fluxlat, fluxsens, dflux_s, dflux_l)
+         tsurf_new, evap, fluxlat, fluxsens, dflux_s, dflux_l, &
+         sens_prec_liq, sens_prec_sol, lat_prec_liq, lat_prec_sol)
+
+    do j = 1, knon
+      i = knindex(j)
+      sens_prec_liq_o(i,1) = sens_prec_liq(j)
+      sens_prec_sol_o(i,1) = sens_prec_sol(j)
+      lat_prec_liq_o(i,1) = lat_prec_liq(j)
+      lat_prec_sol_o(i,1) = lat_prec_sol(j)
+    enddo
+
 
 ! - Flux calculation at first modele level for U and V
@@ -148,4 +166,5 @@
     USE fonte_neige_mod,  ONLY : fonte_neige
     USE indice_sol_mod
+    USE phys_output_var_mod, ONLY : sens_prec_liq_o, sens_prec_sol_o, lat_prec_liq_o, lat_prec_sol_o
 
 !    INCLUDE "indicesol.h"
@@ -189,5 +208,5 @@
 !****************************************************************************************
     LOGICAL                     :: check=.FALSE.
-    INTEGER                     :: i
+    INTEGER                     :: i, j
     REAL                        :: zfra
     REAL, PARAMETER             :: t_grnd=271.35
@@ -197,4 +216,7 @@
     REAL, DIMENSION(klon)       :: u0, v0
     REAL, DIMENSION(klon)       :: u1_lay, v1_lay
+    REAL, DIMENSION(klon)       :: sens_prec_liq, sens_prec_sol    
+    REAL, DIMENSION(klon)       :: lat_prec_liq, lat_prec_sol    
+
 
 !****************************************************************************************
@@ -208,4 +230,5 @@
 !                    dflux_s, dflux_l and qsurf
 !****************************************************************************************
+
     tsurf_tmp(:) = tsurf_in(:)
 
@@ -227,4 +250,6 @@
 
     beta = 1.0
+    sens_prec_liq = 0.; sens_prec_sol = 0.; lat_prec_liq = 0.; lat_prec_sol = 0.
+
 ! Suppose zero surface speed
     u0(:)=0.0
@@ -237,5 +262,13 @@
          radsol, dif_grnd, temp_air, spechum, u1_lay, v1_lay, gustiness, &
          f_qsat_oce,AcoefH, AcoefQ, BcoefH, BcoefQ, &
-         tsurf_new, evap, fluxlat, fluxsens, dflux_s, dflux_l)
+         tsurf_new, evap, fluxlat, fluxsens, dflux_s, dflux_l, &
+         sens_prec_liq, sens_prec_sol, lat_prec_liq, lat_prec_sol)
+    do j = 1, knon
+      i = knindex(j)
+      sens_prec_liq_o(i,2) = sens_prec_liq(j)
+      sens_prec_sol_o(i,2) = sens_prec_sol(j)
+      lat_prec_liq_o(i,2) = lat_prec_liq(j)
+      lat_prec_sol_o(i,2) = lat_prec_sol(j)
+    enddo
 
 ! - Flux calculation at first modele level for U and V
Index: LMDZ5/trunk/libf/phylmd/phys_output_ctrlout_mod.F90
===================================================================
--- LMDZ5/trunk/libf/phylmd/phys_output_ctrlout_mod.F90	(revision 2537)
+++ LMDZ5/trunk/libf/phylmd/phys_output_ctrlout_mod.F90	(revision 2538)
@@ -162,4 +162,22 @@
   TYPE(ctrl_out), SAVE :: o_evap = ctrl_out((/ 1, 1, 10, 10, 10, 10, 11, 11, 11 /), &
     'evap', 'Evaporat', 'kg/(s*m2)', (/ ('', i=1, 9) /))
+
+  TYPE(ctrl_out), SAVE :: o_sens_prec_liq_oce = ctrl_out((/ 5, 5, 10, 10, 5, 10, 11, 11, 11 /), &
+    'sens_rain_oce', 'Sensible heat flux of liquid prec. over ocean', 'W/m2', (/ ('', i=1, 9) /))
+  TYPE(ctrl_out), SAVE :: o_sens_prec_liq_sic = ctrl_out((/ 5, 5, 10, 10, 5, 10, 11, 11, 11 /), &
+    'sens_rain_sic', 'Sensible heat flux of liquid prec. over seaice', 'W/m2', (/ ('', i=1, 9) /))
+  TYPE(ctrl_out), SAVE :: o_sens_prec_sol_oce = ctrl_out((/ 5, 5, 10, 10, 5, 10, 11, 11, 11 /), &
+    'sens_snow_oce', 'Sensible heat flux of solid prec. over ocean', 'W/m2', (/ ('', i=1, 9) /))
+  TYPE(ctrl_out), SAVE :: o_sens_prec_sol_sic = ctrl_out((/ 5, 5, 10, 10, 5, 10, 11, 11, 11 /), &
+    'sens_snow_sic', 'Sensible heat flux of solid prec. over seaice', 'W/m2', (/ ('', i=1, 9) /))
+  TYPE(ctrl_out), SAVE :: o_lat_prec_liq_oce = ctrl_out((/ 5, 5, 10, 10, 5, 10, 11, 11, 11 /), &
+    'lat_rain_oce', 'Latent heat flux of liquid prec. over ocean', 'W/m2', (/ ('', i=1, 9) /))
+  TYPE(ctrl_out), SAVE :: o_lat_prec_liq_sic = ctrl_out((/ 5, 5, 10, 10, 5, 10, 11, 11, 11 /), &
+    'lat_rain_sic', 'Latent heat flux of liquid prec. over seaice', 'W/m2', (/ ('', i=1, 9) /))
+  TYPE(ctrl_out), SAVE :: o_lat_prec_sol_oce = ctrl_out((/ 5, 5, 10, 10, 5, 10, 11, 11, 11 /), &
+    'lat_snow_oce', 'Latent heat flux of solid prec. over ocean', 'W/m2', (/ ('', i=1, 9) /))
+  TYPE(ctrl_out), SAVE :: o_lat_prec_sol_sic = ctrl_out((/ 5, 5, 10, 10, 5, 10, 11, 11, 11 /), &
+    'lat_snow_sic', 'Latent heat flux of solid prec. over seaice', 'W/m2', (/ ('', i=1, 9) /))
+
 
   TYPE(ctrl_out), SAVE, DIMENSION(4) :: o_evap_srf     = (/ &
Index: LMDZ5/trunk/libf/phylmd/phys_output_var_mod.F90
===================================================================
--- LMDZ5/trunk/libf/phylmd/phys_output_var_mod.F90	(revision 2537)
+++ LMDZ5/trunk/libf/phylmd/phys_output_var_mod.F90	(revision 2538)
@@ -76,4 +76,8 @@
   END TYPE ctrl_out
 
+  REAL, SAVE, ALLOCATABLE :: sens_prec_liq_o(:,:), sens_prec_sol_o(:,:)
+  REAL, SAVE, ALLOCATABLE :: lat_prec_liq_o(:,:), lat_prec_sol_o(:,:)
+ !$OMP THREADPRIVATE(sens_prec_liq_o, sens_prec_sol_o,lat_prec_liq_o,lat_prec_sol_o)
+
 CONTAINS
 
@@ -90,4 +94,11 @@
     allocate(snow_o(klon), zfra_o(klon))
     allocate(itau_con(klon))
+    allocate(sens_prec_liq_o(klon,2))
+    allocate(sens_prec_sol_o(klon,2))
+    allocate(lat_prec_liq_o(klon,2))
+    allocate(lat_prec_sol_o(klon,2))
+    sens_prec_liq_o = 0.0 ; sens_prec_sol_o = 0.0
+    lat_prec_liq_o = 0.0 ; lat_prec_sol_o = 0.0
+
     allocate (bils_ec(klon),bils_ech(klon),bils_tke(klon),bils_diss(klon),bils_kinetic(klon),bils_enthalp(klon),bils_latent(klon))
 
Index: LMDZ5/trunk/libf/phylmd/phys_output_write_mod.F90
===================================================================
--- LMDZ5/trunk/libf/phylmd/phys_output_write_mod.F90	(revision 2537)
+++ LMDZ5/trunk/libf/phylmd/phys_output_write_mod.F90	(revision 2538)
@@ -163,5 +163,9 @@
          o_dtr_sat, o_dtr_uscav, o_trac_cum, o_du_gwd_rando, o_dv_gwd_rando, &
          o_ustr_gwd_hines,o_vstr_gwd_hines,o_ustr_gwd_rando,o_vstr_gwd_rando, &
-         o_ustr_gwd_front,o_vstr_gwd_front
+         o_ustr_gwd_front,o_vstr_gwd_front, &
+         o_sens_prec_liq_oce, o_sens_prec_liq_sic, &
+         o_sens_prec_sol_oce, o_sens_prec_sol_sic, &
+         o_lat_prec_liq_oce, o_lat_prec_liq_sic, &
+         o_lat_prec_sol_oce, o_lat_prec_sol_sic
 
     USE phys_state_var_mod, only: pctsrf, paire_ter, rain_fall, snow_fall, &
@@ -257,5 +261,8 @@
          itau_con, nfiles, clef_files, nid_files, &
          zustr_gwd_hines, zvstr_gwd_hines,zustr_gwd_rando, zvstr_gwd_rando, &
-         zustr_gwd_front, zvstr_gwd_front                                   
+         zustr_gwd_front, zvstr_gwd_front,     &
+         sens_prec_liq_o, sens_prec_sol_o, lat_prec_liq_o, lat_prec_sol_o
+  
+
     USE ocean_slab_mod, only: tslab, slab_bils, slab_bilg, tice, seaice
     USE pbl_surface_mod, only: snow
@@ -621,4 +628,23 @@
 
        ENDDO
+
+       IF (vars_defined) zx_tmp_fi2d(1 : klon) = sens_prec_liq_o(1 : klon, 1)
+       CALL histwrite_phy(o_sens_prec_liq_oce, zx_tmp_fi2d)       
+       IF (vars_defined) zx_tmp_fi2d(1 : klon) = sens_prec_liq_o(1 : klon, 2)
+       CALL histwrite_phy(o_sens_prec_liq_sic, zx_tmp_fi2d)       
+       IF (vars_defined) zx_tmp_fi2d(1 : klon) = sens_prec_sol_o(1 : klon, 1)
+       CALL histwrite_phy(o_sens_prec_sol_oce, zx_tmp_fi2d)       
+       IF (vars_defined) zx_tmp_fi2d(1 : klon) = sens_prec_sol_o(1 : klon, 2)
+       CALL histwrite_phy(o_sens_prec_sol_sic, zx_tmp_fi2d)       
+
+       IF (vars_defined) zx_tmp_fi2d(1 : klon) = lat_prec_liq_o(1 : klon, 1)
+       CALL histwrite_phy(o_lat_prec_liq_oce, zx_tmp_fi2d)       
+       IF (vars_defined) zx_tmp_fi2d(1 : klon) = lat_prec_liq_o(1 : klon, 2)
+       CALL histwrite_phy(o_lat_prec_liq_sic, zx_tmp_fi2d)       
+       IF (vars_defined) zx_tmp_fi2d(1 : klon) = lat_prec_sol_o(1 : klon, 1)
+       CALL histwrite_phy(o_lat_prec_sol_oce, zx_tmp_fi2d)       
+       IF (vars_defined) zx_tmp_fi2d(1 : klon) = lat_prec_sol_o(1 : klon, 2)
+       CALL histwrite_phy(o_lat_prec_sol_sic, zx_tmp_fi2d)       
+
        DO nsrf=1,nbsrf+1
           CALL histwrite_phy(o_wstar(nsrf), wstar(1 : klon, nsrf))
Index: LMDZ5/trunk/libf/phylmd/surf_ocean_mod.F90
===================================================================
--- LMDZ5/trunk/libf/phylmd/surf_ocean_mod.F90	(revision 2537)
+++ LMDZ5/trunk/libf/phylmd/surf_ocean_mod.F90	(revision 2538)
@@ -1,2 +1,4 @@
+!
+! $Id$
 !
 MODULE surf_ocean_mod
Index: LMDZ5/trunk/libf/phylmd/surface_data.F90
===================================================================
--- LMDZ5/trunk/libf/phylmd/surface_data.F90	(revision 2537)
+++ LMDZ5/trunk/libf/phylmd/surface_data.F90	(revision 2538)
@@ -1,4 +1,4 @@
 !
-! $Header$
+! $Id$
 !
 MODULE surface_data
