Index: /LMDZ6/branches/Ocean_skin/bld.cfg
===================================================================
--- /LMDZ6/branches/Ocean_skin/bld.cfg	(revision 3428)
+++ /LMDZ6/branches/Ocean_skin/bld.cfg	(revision 3429)
@@ -37,4 +37,5 @@
 src::cosp    %COSP
 src::ext_src %EXT_SRC
+src::ocean_skin %SRC_PATH/phylmd/Ocean_skin
 
 bld::lib            lmdz
@@ -47,5 +48,5 @@
 dir::root            %CONFIG_PATH
 #dir::lib             %BASE_CONFIG_PATH
-dir::bin             %ROOT_PATH/bin
+dir::bin             %LIBO
 
 #search_src           1
Index: /LMDZ6/branches/Ocean_skin/libf/phylmd/YOMCST.h
===================================================================
--- /LMDZ6/branches/Ocean_skin/libf/phylmd/YOMCST.h	(revision 3428)
+++ /LMDZ6/branches/Ocean_skin/libf/phylmd/YOMCST.h	(revision 3429)
@@ -21,5 +21,5 @@
 ! A1.4 Thermodynamic gas phase
       REAL R,RMD,RMO3,RMCO2,RMC,RMV,RD,RV,RCPD,RCPV,RCVD,RCVV
-      REAL RKAPPA,RETV
+      REAL RKAPPA,RETV, eps_w
 ! A1.5,6 Thermodynamic liquid,solid phases
       REAL RCW,RCS
@@ -36,5 +36,5 @@
      &      ,RSIGMA                                                     &
      &      ,R     ,RMD   ,RMO3  ,RMCO2, RMC, RMV   ,RD    ,RV    ,RCPD &
-     &      ,RCPV  ,RCVD  ,RCVV  ,RKAPPA,RETV                           &
+     &      ,RCPV  ,RCVD  ,RCVV  ,RKAPPA,RETV, eps_w                    &
      &      ,RCW   ,RCS                                                 &
      &      ,RLVTT ,RLSTT ,RLMLT ,RTT   ,RATM                           &
Index: /LMDZ6/branches/Ocean_skin/libf/phylmd/conf_phys_m.F90
===================================================================
--- /LMDZ6/branches/Ocean_skin/libf/phylmd/conf_phys_m.F90	(revision 3428)
+++ /LMDZ6/branches/Ocean_skin/libf/phylmd/conf_phys_m.F90	(revision 3429)
@@ -29,4 +29,5 @@
     USE mod_grid_phy_lmdz, ONLY: klon_glo
     USE print_control_mod, ONLY: lunout
+    use config_ocean_skin_m, only: config_ocean_skin
 
     INCLUDE "conema3.h"
@@ -2170,4 +2171,6 @@
     CALL getin('level_coupling_esm',level_coupling_esm_omp)
     ! << PC
+
+    call config_ocean_skin
 
     !$OMP END MASTER
Index: /LMDZ6/branches/Ocean_skin/libf/phylmd/pbl_surface_mod.F90
===================================================================
--- /LMDZ6/branches/Ocean_skin/libf/phylmd/pbl_surface_mod.F90	(revision 3428)
+++ /LMDZ6/branches/Ocean_skin/libf/phylmd/pbl_surface_mod.F90	(revision 3429)
@@ -290,4 +290,7 @@
     USE print_control_mod,  ONLY : prt_level,lunout
     USE ioipsl_getin_p_mod, ONLY : getin_p
+    use phys_state_var_mod, only: ds_ns, dt_ns
+    use phys_output_var_mod, only: t_int, s_int, dter, dser, tkt, tks, rf, taur
+    use netcdf, only: nf90_fill_real
 
     IMPLICIT NONE
@@ -821,4 +824,9 @@
     ! Martin
 
+    real, DIMENSION(klon):: yt_int, ys_int, yds_ns, ydt_ns, ydter, ydser, &
+         ytkt, ytks, yrf, ytaur
+    ! compression of t_int, s_int, ds_ns, dt_ns, dter, dser, tkt, tks, rf,
+    ! taur on ocean points
+
 !****************************************************************************************
 ! End of declarations
@@ -954,5 +962,13 @@
 !!! jyg le 10/02/2012
     rh2m_x(:) = 0. ; qsat2m_x(:) = 0. ; rh2m_w(:) = 0. ; qsat2m_w(:) = 0.
-!!!
+
+    t_int = nf90_fill_real
+    s_int = nf90_fill_real
+    dter = nf90_fill_real
+    dser = nf90_fill_real
+    tkt = nf90_fill_real
+    tks = nf90_fill_real
+    rf = nf90_fill_real
+    taur = nf90_fill_real
 
 ! 2b) Initialization of all local variables that will be compressed later
@@ -1414,4 +1430,9 @@
           ENDDO
        ENDIF
+
+       if (nsrf == is_oce) then
+          yds_ns(:knon) = ds_ns(ni(:knon))
+          ydt_ns(:knon) = dt_ns(ni(:knon))
+       end if
        
 !****************************************************************************************
@@ -1934,5 +1955,7 @@
                yz0m, yz0h, SFRWL,yalb_dir_new, yalb_dif_new, yevap, yfluxsens,yfluxlat,&
                ytsurf_new, y_dflux_t, y_dflux_q, slab_wfbils, &
-               y_flux_u1, y_flux_v1)
+               y_flux_u1, y_flux_v1, yt_int(:knon), ys_int(:knon), &
+               yds_ns(:knon), ydt_ns(:knon), ydter(:knon), ydser(:knon), &
+               ytkt(:knon), ytks(:knon), yrf(:knon), ytaur(:knon))
       IF (prt_level >=10) THEN
           print *,'arg de surf_ocean: ycdragh ',ycdragh
@@ -2538,4 +2561,20 @@
        ENDIF
 
+       if (nsrf == is_oce) then
+          dt_ns = nf90_fill_real
+          ds_ns = nf90_fill_real
+          ds_ns(ni(:knon)) = yds_ns(:knon)
+          dt_ns(ni(:knon)) = ydt_ns(:knon)
+
+          t_int(ni(:knon)) = yt_int(:knon)
+          s_int(ni(:knon)) = ys_int(:knon)
+          dter(ni(:knon)) = ydter(:knon)
+          dser(ni(:knon)) = ydser(:knon)
+          tkt(ni(:knon)) = ytkt(:knon)
+          tks(ni(:knon)) = ytks(:knon)
+          rf(ni(:knon)) = yrf(:knon)
+          taur(ni(:knon)) = ytaur(:knon)
+       end if
+
 !****************************************************************************************
 ! 14) Calculate the temperature and relative humidity at 2m and the wind at 10m 
@@ -3141,11 +3180,12 @@
 
 !albedo SB >>>
-SUBROUTINE pbl_surface_newfrac(itime, pctsrf_new, pctsrf_old, &
-     evap, z0m, z0h, agesno,                                  &
-     tsurf,alb_dir,alb_dif, ustar, u10m, v10m, tke)  
-!albedo SB <<<
+  SUBROUTINE pbl_surface_newfrac(itime, pctsrf_new, pctsrf_old, &
+       evap, z0m, z0h, agesno,                                  &
+       tsurf,alb_dir,alb_dif, ustar, u10m, v10m, tke)  
+    !albedo SB <<<
     ! Give default values where new fraction has appread
 
     USE indice_sol_mod
+    use phys_state_var_mod, only: ds_ns, dt_ns
 
     INCLUDE "dimsoil.h"
@@ -3234,4 +3274,6 @@
                       alb_dif(i,k,nsrf) = 0.06
                    ENDDO
+                   ds_ns(i) = 0.
+                   dt_ns(i) = 0.
                 ELSE IF (nsrf.EQ.is_sic) THEN
                    tsurf(i,nsrf) = 271.35
Index: /LMDZ6/branches/Ocean_skin/libf/phylmd/phyetat0.F90
===================================================================
--- /LMDZ6/branches/Ocean_skin/libf/phylmd/phyetat0.F90	(revision 3428)
+++ /LMDZ6/branches/Ocean_skin/libf/phylmd/phyetat0.F90	(revision 3429)
@@ -19,5 +19,5 @@
        wake_s, wake_dens, zgam, zmax0, zmea, zpic, zsig, &
        zstd, zthe, zval, ale_bl, ale_bl_trig, alp_bl, u10m, v10m, treedrg, &
-       ale_wake, ale_bl_stat
+       ale_wake, ale_bl_stat, ds_ns, dt_ns
 !FC
   USE geometry_mod, ONLY : longitude_deg, latitude_deg
@@ -29,4 +29,5 @@
   USE ocean_slab_mod, ONLY: nslay, tslab, seaice, tice, ocean_slab_init
   USE time_phylmdz_mod, ONLY: init_iteration, pdtphys, itau_phy
+  use netcdf, only: nf90_fill_real
 
   IMPLICIT none
@@ -35,5 +36,4 @@
   ! Objet: Lecture de l'etat initial pour la physique
   !======================================================================
-  include "netcdf.inc"
   include "dimsoil.h"
   include "clesphys.h"
@@ -529,4 +529,12 @@
   CALL fonte_neige_init(run_off_lic_0)
 
+  found = phyetat0_get(1, ds_ns, "ds_ns", "delta salinity near surface", 0.)
+  found = phyetat0_get(1, dt_ns, "dT_ns", "delta temperature near surface", 0.)
+
+  where (pctsrf(:, is_oce) == 0.)
+     ds_ns = nf90_fill_real
+     dt_ns = nf90_fill_real
+  end where
+
 END SUBROUTINE phyetat0
 
Index: /LMDZ6/branches/Ocean_skin/libf/phylmd/phyredem.F90
===================================================================
--- /LMDZ6/branches/Ocean_skin/libf/phylmd/phyredem.F90	(revision 3428)
+++ /LMDZ6/branches/Ocean_skin/libf/phylmd/phyredem.F90	(revision 3429)
@@ -27,5 +27,5 @@
                                 ale_wake, ale_bl_stat,                       &
                                 du_gwd_rando, du_gwd_front, u10m, v10m,      &
-                                treedrg
+                                treedrg, ds_ns, dt_ns
   USE geometry_mod, ONLY : longitude_deg, latitude_deg
   USE iostart, ONLY: open_restartphy, close_restartphy, put_field, put_var
@@ -337,4 +337,7 @@
        "tendency on zonal wind due to acama gravity waves", du_gwd_front)
 
+  CALL put_field("ds_ns", "delta salinity near surface", ds_ns)
+  CALL put_field("dT_ns", "delta temperature near surface", dT_ns)
+  
   CALL close_restartphy
   !$OMP BARRIER
Index: /LMDZ6/branches/Ocean_skin/libf/phylmd/phys_output_ctrlout_mod.F90
===================================================================
--- /LMDZ6/branches/Ocean_skin/libf/phylmd/phys_output_ctrlout_mod.F90	(revision 3428)
+++ /LMDZ6/branches/Ocean_skin/libf/phylmd/phys_output_ctrlout_mod.F90	(revision 3429)
@@ -1913,3 +1913,43 @@
 #endif
 
+   type(ctrl_out), save:: o_t_int &
+        = ctrl_out([1, 10, 10, 1, 10, 10, 11, 11, 11, 11], 'T_int', &
+        "ocean-air interface temperature", "K", '')
+
+   type(ctrl_out), save:: o_s_int &
+        = ctrl_out([1, 10, 10, 1, 10, 10, 11, 11, 11, 11], 'S_int', &
+        "ocean-air interface salinity", "ppt", '')
+
+   type(ctrl_out), save:: o_ds_ns &
+        = ctrl_out([1, 10, 10, 1, 10, 10, 11, 11, 11, 11], 'ds_ns', &
+        "delta salinity near surface", "ppt", '')
+
+   type(ctrl_out), save:: o_dt_ns &
+        = ctrl_out([1, 10, 10, 1, 10, 10, 11, 11, 11, 11], 'dT_ns', &
+        "delta temperature near surface", "K", '')
+
+   type(ctrl_out), save:: o_dter &
+        = ctrl_out([1, 10, 10, 1, 10, 10, 11, 11, 11, 11], 'dTer', &
+        "temperature variation in the diffusive microlayer", "K", '')
+
+   type(ctrl_out), save:: o_dser &
+        = ctrl_out([1, 10, 10, 1, 10, 10, 11, 11, 11, 11], 'dser', &
+        "salinity variation in the diffusive microlayer", "ppt", '')
+
+   type(ctrl_out), save:: o_tkt &
+        = ctrl_out([1, 10, 10, 1, 10, 10, 11, 11, 11, 11], 'tkt', &
+        "thickness of thermal microlayer", "m", '')
+
+   type(ctrl_out), save:: o_tks &
+        = ctrl_out([1, 10, 10, 1, 10, 10, 11, 11, 11, 11], 'tks', &
+        "thickness os salinity microlayer", "m", '')
+
+   type(ctrl_out), save:: o_rf &
+        = ctrl_out([1, 10, 10, 1, 10, 10, 11, 11, 11, 11], 'rf', &
+        "sensible heat flux at the surface due to rainfall", "W m-2", '')
+
+   type(ctrl_out), save:: o_taur &
+        = ctrl_out([1, 10, 10, 1, 10, 10, 11, 11, 11, 11], 'taur', &
+        "momentum flux due to rain", "Pa", '')
+
 END MODULE phys_output_ctrlout_mod
Index: /LMDZ6/branches/Ocean_skin/libf/phylmd/phys_output_var_mod.F90
===================================================================
--- /LMDZ6/branches/Ocean_skin/libf/phylmd/phys_output_var_mod.F90	(revision 3428)
+++ /LMDZ6/branches/Ocean_skin/libf/phylmd/phys_output_var_mod.F90	(revision 3429)
@@ -133,4 +133,33 @@
  !$OMP THREADPRIVATE(sens_prec_liq_o, sens_prec_sol_o,lat_prec_liq_o,lat_prec_sol_o)
 
+  ! Ocean-atmosphere interface, subskin ocean and near-surface ocean:
+  
+  REAL, ALLOCATABLE, SAVE:: t_int(:) ! interface temperature, in K
+  REAL, ALLOCATABLE, SAVE:: s_int(:) ! interface salinity, in ppt
+
+  REAL, ALLOCATABLE, SAVE:: dter(:)
+  ! Temperature variation in the diffusive microlayer, that is
+  ! subskin temperature minus ocean-air interface temperature. In
+  ! K.
+      
+  REAL, SAVE, ALLOCATABLE:: dser(:)
+  ! Temperature variation in the diffusive microlayer, that is
+  ! subskin temperature minus ocean-air interface temperature. In K.
+
+  REAL, SAVE, ALLOCATABLE:: tkt(:)
+  ! épaisseur (m) de la couche de diffusion thermique (microlayer)
+  ! cool skin thickness
+
+  REAL, SAVE, ALLOCATABLE:: tks(:)
+  ! épaisseur (m) de la couche de diffusion de masse (microlayer)
+  
+  REAL, SAVE, ALLOCATABLE:: rf(:)
+  ! sensible heat flux at the surface due to rainfall, in  W m-2
+  
+  REAL, SAVE, ALLOCATABLE:: taur(:)
+  ! momentum flux due to rain, in Pa
+  
+  !$OMP THREADPRIVATE(t_int, s_int, dter, dser, tkt, tks, rf, taur)
+
 CONTAINS
 
@@ -191,4 +220,7 @@
     IF (ok_gwd_rando) allocate(zustr_gwd_rando(klon), zvstr_gwd_rando(klon))
 
+    allocate(t_int(klon), s_int(klon), dter(klon), dser(klon), tkt(klon), &
+         tks(klon), rf(klon), taur(klon))
+
   END SUBROUTINE phys_output_var_init
 
Index: /LMDZ6/branches/Ocean_skin/libf/phylmd/phys_output_write_mod.F90
===================================================================
--- /LMDZ6/branches/Ocean_skin/libf/phylmd/phys_output_write_mod.F90	(revision 3428)
+++ /LMDZ6/branches/Ocean_skin/libf/phylmd/phys_output_write_mod.F90	(revision 3429)
@@ -196,6 +196,7 @@
 ! Tropopause
          o_p_tropopause, o_z_tropopause, o_t_tropopause,  &
-         o_col_O3_strato, o_col_O3_tropo               ! Added ThL
-
+         o_col_O3_strato, o_col_O3_tropo, &               ! Added ThL
+         o_t_int, o_s_int, o_ds_ns, o_dt_ns, o_dter, o_dser, o_tkt, o_tks, &
+         o_rf, o_taur
 
 #ifdef CPP_StratAer
@@ -240,5 +241,5 @@
          ulevSTD, vlevSTD, wlevSTD, philevSTD, qlevSTD, tlevSTD, &
          rhlevSTD, O3STD, O3daySTD, uvSTD, vqSTD, vTSTD, wqSTD, &
-         vphiSTD, wTSTD, u2STD, v2STD, T2STD, missing_val_nf90
+         vphiSTD, wTSTD, u2STD, v2STD, T2STD, missing_val_nf90, ds_ns, dt_ns
 
     USE phys_local_var_mod, ONLY: zxfluxlat, slp, ptstar, pt0, zxtsol, zt2m, &
@@ -348,5 +349,5 @@
          alt_tropo, &
 !Ionela
-         ok_4xCO2atm
+         ok_4xCO2atm, t_int, s_int, dter, dser, tkt, tks, rf, taur
 
     USE ocean_slab_mod, ONLY: nslay, tslab, slab_bilg, tice, seaice, &
@@ -2110,4 +2111,14 @@
        ENDIF   !(iflag_phytrac==1)
 
+       CALL histwrite_phy(o_t_int, t_int)
+       CALL histwrite_phy(o_s_int, s_int)
+       CALL histwrite_phy(o_ds_ns, ds_ns)
+       CALL histwrite_phy(o_dt_ns, dt_ns)
+       CALL histwrite_phy(o_dter, dter)
+       CALL histwrite_phy(o_dser, dser)
+       CALL histwrite_phy(o_tkt, tkt)
+       CALL histwrite_phy(o_tks, tks)
+       CALL histwrite_phy(o_rf, rf)
+       CALL histwrite_phy(o_taur, taur)
 
        IF (.NOT.vars_defined) THEN
Index: /LMDZ6/branches/Ocean_skin/libf/phylmd/phys_state_var_mod.F90
===================================================================
--- /LMDZ6/branches/Ocean_skin/libf/phylmd/phys_state_var_mod.F90	(revision 3428)
+++ /LMDZ6/branches/Ocean_skin/libf/phylmd/phys_state_var_mod.F90	(revision 3429)
@@ -417,5 +417,19 @@
       ! tendencies on wind due to gravity waves
 
-CONTAINS
+      ! Ocean-atmosphere interface, subskin ocean and near-surface ocean:
+      
+      REAL, ALLOCATABLE, SAVE:: ds_ns(:)
+      ! "delta salinity near surface". Salinity variation in the
+      ! near-surface turbulent layer. That is subskin salinity minus
+      ! foundation salinity. In ppt.
+
+      REAL, ALLOCATABLE, SAVE:: dt_ns(:)
+      ! "delta temperature near surface". Temperature variation in the
+      ! near-surface turbulent layer. That is subskin temperature
+      ! minus foundation temperature. (Can be negative.) In K.
+      
+      !$OMP THREADPRIVATE(ds_ns, dt_ns)
+
+    CONTAINS
 
 !======================================================================
@@ -607,5 +621,7 @@
       if (.not. ok_hines .and. ok_gwd_rando) allocate(du_gwd_front(klon, klev))
 
-END SUBROUTINE phys_state_var_init
+      ALLOCATE(ds_ns(klon), dt_ns(klon))
+
+    END SUBROUTINE phys_state_var_init
 
 !======================================================================
Index: /LMDZ6/branches/Ocean_skin/libf/phylmd/suphel.F90
===================================================================
--- /LMDZ6/branches/Ocean_skin/libf/phylmd/suphel.F90	(revision 3428)
+++ /LMDZ6/branches/Ocean_skin/libf/phylmd/suphel.F90	(revision 3429)
@@ -127,4 +127,5 @@
   rcvv = rcpv - rv
   rkappa = rd/rcpd
+  eps_w = rmv / rmd
   retv = rv/rd - 1.
   WRITE (UNIT=6, FMT='('' *** Thermodynamic, gas     ***'')')
Index: /LMDZ6/branches/Ocean_skin/libf/phylmd/surf_ocean_mod.F90
===================================================================
--- /LMDZ6/branches/Ocean_skin/libf/phylmd/surf_ocean_mod.F90	(revision 3428)
+++ /LMDZ6/branches/Ocean_skin/libf/phylmd/surf_ocean_mod.F90	(revision 3429)
@@ -20,7 +20,9 @@
        z0m, z0h, SFRWL, alb_dir_new, alb_dif_new, evap, fluxsens, fluxlat, & 
        tsurf_new, dflux_s, dflux_l, lmt_bils, &
-       flux_u1, flux_v1)
+       flux_u1, flux_v1, t_int, s_int, ds_ns, dt_ns, dter, dser, tkt, tks, rf, &
+       taur)
 
     use albedo, only: alboc, alboc_cd
+    use bulk_flux_m, only: bulk_flux
     USE dimphy, ONLY: klon, zmasq
     USE surface_data, ONLY     : type_ocean
@@ -30,4 +32,5 @@
     USE indice_sol_mod, ONLY : nbsrf, is_oce
     USE limit_read_mod
+    use sens_heat_rain_m, only: sens_heat_rain
     !
     ! This subroutine will make a call to ocean_XXX_noice according to the ocean mode (force, 
@@ -50,5 +53,5 @@
     REAL, DIMENSION(klon), INTENT(IN)        :: lwnet  ! net longwave radiation at surface  
     REAL, DIMENSION(klon), INTENT(IN)        :: alb1   ! albedo in visible SW interval
-    REAL, DIMENSION(klon), INTENT(IN)        :: windsp
+    REAL, DIMENSION(klon), INTENT(IN)        :: windsp ! wind at 10 m, in m s-1
     REAL, DIMENSION(klon), INTENT(IN)        :: rmu0  
     REAL, DIMENSION(klon), INTENT(IN)        :: fder
@@ -73,4 +76,14 @@
     REAL, DIMENSION(klon), INTENT(inOUT):: z0h
 
+    REAL, intent(inout):: ds_ns(:) ! (knon)
+    ! "delta salinity near surface". Salinity variation in the
+    ! near-surface turbulent layer. That is subskin salinity minus
+    ! foundation salinity. In ppt.
+
+    REAL, intent(inout):: dt_ns(:) ! (knon)
+    ! "delta temperature near surface". Temperature variation in the
+    ! near-surface turbulent layer. That is subskin temperature
+    ! minus foundation temperature. (Can be negative.) In K.
+
     ! Output variables
     !******************************************************************************
@@ -83,8 +96,33 @@
     !albedo SB <<<     
     REAL, DIMENSION(klon), INTENT(OUT)       :: evap, fluxsens, fluxlat
-    REAL, DIMENSION(klon), INTENT(OUT)       :: tsurf_new
+    REAL, INTENT(OUT):: tsurf_new(klon) ! sea surface temperature, in K
     REAL, DIMENSION(klon), INTENT(OUT)       :: dflux_s, dflux_l      
     REAL, DIMENSION(klon), INTENT(OUT)       :: lmt_bils
     REAL, DIMENSION(klon), INTENT(OUT)       :: flux_u1, flux_v1
+
+    REAL, intent(out):: t_int(:) ! (knon) interface temperature, in K
+    real, intent(out):: s_int(:) ! (knon) interface salinity, in ppt
+    
+    REAL, intent(out):: dter(:) ! (knon)
+    ! Temperature variation in the diffusive microlayer, that is
+    ! subskin temperature minus ocean-air interface temperature. In
+    ! K.
+
+    REAL, intent(out):: dser(:) ! (knon)
+    ! Temperature variation in the diffusive microlayer, that is
+    ! subskin temperature minus ocean-air interface temperature. In K.
+
+    REAL, intent(out):: tkt(:) ! (knon)
+    ! épaisseur (m) de la couche de diffusion thermique (microlayer)
+    ! cool skin thickness
+
+    REAL, intent(out):: tks(:) ! (knon)
+    ! épaisseur (m) de la couche de diffusion de masse (microlayer)
+
+    REAL, intent(out):: rf(:) ! (knon)
+    ! sensible heat flux at the surface due to rainfall, in  W m-2
+
+    REAL, intent(out):: taur(:) ! (knon)
+    ! momentum flux due to rain, in Pa
 
     ! Local variables
@@ -97,4 +135,8 @@
     REAL, DIMENSION(klon) :: cdragq ! Cdrag pour l'evaporation
     CHARACTER(len=20),PARAMETER :: modname="surf_ocean"
+    real rhoa(knon) ! density of moist air  (kg / m3)
+    real xlv(knon) ! chaleur latente d'évaporation (J / kg)
+    real precip_tot(knon) ! rain + snow
+    real S1(knon) ! salinity at depth_1, in ppt
 
     ! End definition
@@ -268,6 +310,17 @@
        CALL abort_physic(modname,'version non prevue',1)
     ENDIF
-    !
-    !******************************************************************************
+
+    rhoa = PS(:KNON) / (Rd * temp_air(:knon) * (1. + retv * spechum(:knon)))
+    xlv = rlvtt
+    precip_tot = precip_rain(:knon) + precip_snow(:knon)
+    rf =  sens_heat_rain(precip_tot, temp_air(:knon), spechum(:knon), rhoa, &
+         xlv, tsurf_new(:knon), ps(:knon))
+    s1 = 35.
+    call bulk_flux(tkt, tks, taur, dter, dser, t_int, s_int, ds_ns, dt_ns, &
+         windsp(:knon), tsurf_new(:knon), s1, precip_tot, - fluxsens(:knon), &
+         - fluxlat(:knon), - lwnet(:knon), &
+         sqrt(flux_u1(:knon)**2 + flux_v1(:knon)**2), rhoa, xlv, rf, dtime, &
+         swnet(:knon))
+
   END SUBROUTINE surf_ocean
   !******************************************************************************
