Index: /LMDZ5/trunk/libf/phylmd/calcul_fluxs_mod.F90
===================================================================
--- /LMDZ5/trunk/libf/phylmd/calcul_fluxs_mod.F90	(revision 2253)
+++ /LMDZ5/trunk/libf/phylmd/calcul_fluxs_mod.F90	(revision 2254)
@@ -5,8 +5,8 @@
 CONTAINS
   SUBROUTINE calcul_fluxs( knon, nisurf, dtime, &
-       tsurf, p1lay, cal, beta, coef1lay, ps, &
+       tsurf, p1lay, cal, beta, cdragh, cdragq, ps, &
        precip_rain, precip_snow, snow, qsurf, &
        radsol, dif_grnd, t1lay, q1lay, u1lay, v1lay, gustiness, &
-       petAcoef, peqAcoef, petBcoef, peqBcoef, &
+       fqsat, petAcoef, peqAcoef, petBcoef, peqBcoef, &
        tsurf_new, evap, fluxlat, fluxsens, dflux_s, dflux_l)
     
@@ -28,5 +28,6 @@
 !   cal          capacite calorifique du sol
 !   beta         evap reelle
-!   coef1lay     coefficient d'echange
+!   cdragh       coefficient d'echange temperature
+!   cdragq       coefficient d'echange evaporation
 !   ps           pression au sol
 !   precip_rain  precipitations liquides
@@ -61,8 +62,9 @@
     REAL, DIMENSION(klon), INTENT(IN)    :: petBcoef, peqBcoef
     REAL, DIMENSION(klon), INTENT(IN)    :: ps, q1lay
-    REAL, DIMENSION(klon), INTENT(IN)    :: tsurf, p1lay, cal, beta, coef1lay
+    REAL, DIMENSION(klon), INTENT(IN)    :: tsurf, p1lay, cal, beta, cdragh,cdragq
     REAL, DIMENSION(klon), INTENT(IN)    :: precip_rain, precip_snow ! pas utiles
     REAL, DIMENSION(klon), INTENT(IN)    :: radsol, dif_grnd
     REAL, DIMENSION(klon), INTENT(IN)    :: t1lay, u1lay, v1lay,gustiness
+    REAL,                  INTENT(IN)    :: fqsat ! correction factor on qsat (generally 0.98 over salty water, 1 everywhere else)
 
 ! Parametres entree-sorties
@@ -81,6 +83,6 @@
     REAL, DIMENSION(klon)                :: zx_mh, zx_nh, zx_oh
     REAL, DIMENSION(klon)                :: zx_mq, zx_nq, zx_oq
-    REAL, DIMENSION(klon)                :: zx_pkh, zx_dq_s_dt, zx_qsat, zx_coef
-    REAL, DIMENSION(klon)                :: zx_sl, zx_k1
+    REAL, DIMENSION(klon)                :: zx_pkh, zx_dq_s_dt, zx_qsat
+    REAL, DIMENSION(klon)                :: zx_sl, zx_coefh, zx_coefq, zx_wind
     REAL, DIMENSION(klon)                :: d_ts
     REAL                                 :: zdelta, zcvm5, zx_qs, zcor, zx_dq_s_dh
@@ -127,5 +129,5 @@
     fluxlat=0.
     dflux_s = 0.
-    dflux_l = 0.	
+    dflux_l = 0.
 !
 ! zx_qs = qsat en kg/kg
@@ -156,8 +158,11 @@
        zx_dq_s_dt(i) = RCPD * zx_pkh(i) * zx_dq_s_dh
        zx_qsat(i) = zx_qs
-       zx_coef(i) = coef1lay(i) * &
-            (min_wind_speed+SQRT(gustiness(i)+u1lay(i)**2+v1lay(i)**2)) * &
-            p1lay(i)/(RD*t1lay(i))
-       
+       zx_wind(i)=min_wind_speed+SQRT(gustiness(i)+u1lay(i)**2+v1lay(i)**2)
+       zx_coefh(i) = cdragh(i) * zx_wind(i) * p1lay(i)/(RD*t1lay(i))
+       zx_coefq(i) = cdragq(i) * zx_wind(i) * p1lay(i)/(RD*t1lay(i))
+!      zx_wind(i)=min_wind_speed+SQRT(gustiness(i)+u1lay(i)**2+v1lay(i)**2) &
+!                * p1lay(i)/(RD*t1lay(i))
+!      zx_coefh(i) = cdragh(i) * zx_wind(i)
+!      zx_coefq(i) = cdragq(i) * zx_wind(i)
     ENDDO
 
@@ -170,5 +175,4 @@
        zx_sl(i) = RLVTT
        IF (tsurf(i) .LT. RTT) zx_sl(i) = RLSTT
-       zx_k1(i) = zx_coef(i)
     ENDDO
     
@@ -176,16 +180,18 @@
     DO i = 1, knon
 ! Q
-       zx_oq(i) = 1. - (beta(i) * zx_k1(i) * peqBcoef(i) * dtime)
-       zx_mq(i) = beta(i) * zx_k1(i) * &
-            (peqAcoef(i) - zx_qsat(i) + &
-            zx_dq_s_dt(i) * tsurf(i)) &
+       zx_oq(i) = 1. - (beta(i) * zx_coefq(i) * peqBcoef(i) * dtime)
+       zx_mq(i) = beta(i) * zx_coefq(i) * &
+            (peqAcoef(i) -             &
+! conv num avec precedente version
+            fqsat * zx_qsat(i) + fqsat * zx_dq_s_dt(i) * tsurf(i))  &
+!           fqsat * ( zx_qsat(i) - zx_dq_s_dt(i) * tsurf(i)) ) &
             / zx_oq(i)
-       zx_nq(i) = beta(i) * zx_k1(i) * (-1. * zx_dq_s_dt(i)) &
+       zx_nq(i) = beta(i) * zx_coefq(i) * (- fqsat * zx_dq_s_dt(i)) &
             / zx_oq(i)
        
 ! H
-       zx_oh(i) = 1. - (zx_k1(i) * petBcoef(i) * dtime)
-       zx_mh(i) = zx_k1(i) * petAcoef(i) / zx_oh(i)
-       zx_nh(i) = - (zx_k1(i) * RCPD * zx_pkh(i))/ zx_oh(i)
+       zx_oh(i) = 1. - (zx_coefh(i) * petBcoef(i) * dtime)
+       zx_mh(i) = zx_coefh(i) * petAcoef(i) / zx_oh(i)
+       zx_nh(i) = - (zx_coefh(i) * RCPD * zx_pkh(i))/ zx_oh(i)
      
 ! Tsurface
Index: /LMDZ5/trunk/libf/phylmd/clesphys.h
===================================================================
--- /LMDZ5/trunk/libf/phylmd/clesphys.h	(revision 2253)
+++ /LMDZ5/trunk/libf/phylmd/clesphys.h	(revision 2254)
@@ -44,5 +44,5 @@
 ! Frottement au sol (Cdrag)
        Real f_cdrag_ter,f_cdrag_oce
-       REAL min_wind_speed,f_gust_wk,f_gust_bl,f_qsat_oce
+       REAL min_wind_speed,f_gust_wk,f_gust_bl,f_qsat_oce,f_z0qh_oce
        REAL z0m_seaice,z0h_seaice
        INTEGER iflag_gusts,iflag_z0_oce
@@ -96,5 +96,5 @@
      &     , fmagic, pmagic                                             &
      &     , f_cdrag_ter,f_cdrag_oce,f_rugoro,z0min                     &
-     &     , min_wind_speed,f_gust_wk,f_gust_bl,f_qsat_oce              &
+     &     , min_wind_speed,f_gust_wk,f_gust_bl,f_qsat_oce,f_z0qh_oce   &
      &     , z0m_seaice,z0h_seaice                                      &
      &     , pasphys            , freq_outNMC, freq_calNMC              &
Index: /LMDZ5/trunk/libf/phylmd/conf_phys_m.F90
===================================================================
--- /LMDZ5/trunk/libf/phylmd/conf_phys_m.F90	(revision 2253)
+++ /LMDZ5/trunk/libf/phylmd/conf_phys_m.F90	(revision 2254)
@@ -119,5 +119,5 @@
     Real,SAVE           :: f_rugoro_omp   , z0min_omp
     Real,SAVE           :: z0m_seaice_omp,z0h_seaice_omp
-    REAL,SAVE           :: min_wind_speed_omp,f_gust_wk_omp,f_gust_bl_omp,f_qsat_oce_omp
+    REAL,SAVE           :: min_wind_speed_omp,f_gust_wk_omp,f_gust_bl_omp,f_qsat_oce_omp, f_z0qh_oce_omp
     INTEGER,SAVE        :: iflag_gusts_omp,iflag_z0_oce_omp
 
@@ -1679,4 +1679,7 @@
 
 ! Gustiness flags
+    f_z0qh_oce_omp = 1.
+    call getin('f_z0qh_oce',f_z0qh_oce_omp)
+    !
     f_qsat_oce_omp = 1.
     call getin('f_qsat_oce',f_qsat_oce_omp)
@@ -2062,4 +2065,5 @@
     f_gust_bl=f_gust_bl_omp
     f_qsat_oce=f_qsat_oce_omp
+    f_z0qh_oce=f_z0qh_oce_omp
     min_wind_speed=min_wind_speed_omp
     iflag_gusts=iflag_gusts_omp
Index: /LMDZ5/trunk/libf/phylmd/ocean_cpl_mod.F90
===================================================================
--- /LMDZ5/trunk/libf/phylmd/ocean_cpl_mod.F90	(revision 2253)
+++ /LMDZ5/trunk/libf/phylmd/ocean_cpl_mod.F90	(revision 2254)
@@ -46,5 +46,5 @@
        windsp, fder_old, &
        itime, dtime, knon, knindex, &
-       p1lay, cdragh, cdragm, precip_rain, precip_snow, temp_air, spechum, &
+       p1lay, cdragh, cdragq, cdragm, precip_rain, precip_snow, temp_air, spechum, &
        AcoefH, AcoefQ, BcoefH, BcoefQ, &
        AcoefU, AcoefV, BcoefU, BcoefV, &
@@ -65,4 +65,5 @@
 
     INCLUDE "YOMCST.h"
+    INCLUDE "clesphys.h"
 !    
 ! Input arguments  
@@ -77,5 +78,5 @@
     REAL, DIMENSION(klon), INTENT(IN)        :: fder_old
     REAL, DIMENSION(klon), INTENT(IN)        :: p1lay
-    REAL, DIMENSION(klon), INTENT(IN)        :: cdragh, cdragm
+    REAL, DIMENSION(klon), INTENT(IN)        :: cdragh, cdragq, cdragm
     REAL, DIMENSION(klon), INTENT(IN)        :: precip_rain, precip_snow
     REAL, DIMENSION(klon), INTENT(IN)        :: temp_air, spechum
@@ -136,8 +137,8 @@
 
     CALL calcul_fluxs(knon, is_oce, dtime, &
-         tsurf_cpl, p1lay, cal, beta, cdragh, ps, &
+         tsurf_cpl, p1lay, cal, beta, cdragh, cdragq, ps, &
          precip_rain, precip_snow, snow, qsurf,  &
          radsol, dif_grnd, temp_air, spechum, u1_lay, v1_lay, gustiness, &
-         AcoefH, AcoefQ, BcoefH, BcoefQ, &
+         f_qsat_oce,AcoefH, AcoefQ, BcoefH, BcoefQ, &
          tsurf_new, evap, fluxlat, fluxsens, dflux_s, dflux_l)
     
@@ -200,4 +201,5 @@
 
     INCLUDE "YOMCST.h"
+    INCLUDE "clesphys.h"
 
 ! Input arguments
@@ -279,8 +281,8 @@
 
     CALL calcul_fluxs(knon, is_sic, dtime, &
-         tsurf_cpl, p1lay, cal, beta, cdragh, ps, &
+         tsurf_cpl, p1lay, cal, beta, cdragh, cdragh, ps, &
          precip_rain, precip_snow, snow, qsurf,  &
          radsol, dif_grnd, temp_air, spechum, u1_lay, v1_lay, gustiness, &
-         AcoefH, AcoefQ, BcoefH, BcoefQ, &
+         f_qsat_oce,AcoefH, AcoefQ, BcoefH, BcoefQ, &
          tsurf_new, evap, fluxlat, fluxsens, dflux_s, dflux_l)
 
Index: /LMDZ5/trunk/libf/phylmd/ocean_forced_mod.F90
===================================================================
--- /LMDZ5/trunk/libf/phylmd/ocean_forced_mod.F90	(revision 2253)
+++ /LMDZ5/trunk/libf/phylmd/ocean_forced_mod.F90	(revision 2254)
@@ -13,5 +13,5 @@
   SUBROUTINE ocean_forced_noice( &
        itime, dtime, jour, knon, knindex, &
-       p1lay, cdragh, cdragm, precip_rain, precip_snow, &
+       p1lay, cdragh, cdragq, cdragm, precip_rain, precip_snow, &
        temp_air, spechum, &
        AcoefH, AcoefQ, BcoefH, BcoefQ, &
@@ -33,4 +33,6 @@
     USE indice_sol_mod
     INCLUDE "YOMCST.h"
+    INCLUDE "clesphys.h"
+
 
 ! Input arguments
@@ -40,5 +42,5 @@
     REAL, INTENT(IN)                         :: dtime
     REAL, DIMENSION(klon), INTENT(IN)        :: p1lay
-    REAL, DIMENSION(klon), INTENT(IN)        :: cdragh, cdragm
+    REAL, DIMENSION(klon), INTENT(IN)        :: cdragh, cdragq, cdragm
     REAL, DIMENSION(klon), INTENT(IN)        :: precip_rain, precip_snow
     REAL, DIMENSION(klon), INTENT(IN)        :: temp_air, spechum
@@ -109,8 +111,8 @@
 ! Calcul de tsurf_new, evap, fluxlat, fluxsens, dflux_s, dflux_l and qsurf
     CALL calcul_fluxs(knon, is_oce, dtime, &
-         tsurf_lim, p1lay, cal, beta, cdragh, ps, &
+         tsurf_lim, p1lay, cal, beta, cdragh, cdragq, ps, &
          precip_rain, precip_snow, snow, qsurf,  &
          radsol, dif_grnd, temp_air, spechum, u1_lay, v1_lay, gustiness, &
-         AcoefH, AcoefQ, BcoefH, BcoefQ, &
+         f_qsat_oce,AcoefH, AcoefQ, BcoefH, BcoefQ, &
          tsurf_new, evap, fluxlat, fluxsens, dflux_s, dflux_l)
 
@@ -231,8 +233,8 @@
     v1_lay(:) = v1(:) - v0(:)
     CALL calcul_fluxs(knon, is_sic, dtime, &
-         tsurf_tmp, p1lay, cal, beta, cdragh, ps, &
+         tsurf_tmp, p1lay, cal, beta, cdragh, cdragh, ps, &
          precip_rain, precip_snow, snow, qsurf,  &
          radsol, dif_grnd, temp_air, spechum, u1_lay, v1_lay, gustiness, &
-         AcoefH, AcoefQ, BcoefH, BcoefQ, &
+         f_qsat_oce,AcoefH, AcoefQ, BcoefH, BcoefQ, &
          tsurf_new, evap, fluxlat, fluxsens, dflux_s, dflux_l)
 
Index: /LMDZ5/trunk/libf/phylmd/ocean_slab_mod.F90
===================================================================
--- /LMDZ5/trunk/libf/phylmd/ocean_slab_mod.F90	(revision 2253)
+++ /LMDZ5/trunk/libf/phylmd/ocean_slab_mod.F90	(revision 2254)
@@ -216,5 +216,5 @@
   SUBROUTINE ocean_slab_noice( & 
        itime, dtime, jour, knon, knindex, &
-       p1lay, cdragh, cdragm, precip_rain, precip_snow, temp_air, spechum, &
+       p1lay, cdragh, cdragq, cdragm, precip_rain, precip_snow, temp_air, spechum, &
        AcoefH, AcoefQ, BcoefH, BcoefQ, &
        AcoefU, AcoefV, BcoefU, BcoefV, &
@@ -227,4 +227,5 @@
 
     INCLUDE "iniprint.h"
+    INCLUDE "clesphys.h"
 
 ! Input arguments
@@ -236,5 +237,5 @@
     REAL, INTENT(IN)                     :: dtime
     REAL, DIMENSION(klon), INTENT(IN)    :: p1lay
-    REAL, DIMENSION(klon), INTENT(IN)    :: cdragh, cdragm
+    REAL, DIMENSION(klon), INTENT(IN)    :: cdragh, cdragq, cdragm
     REAL, DIMENSION(klon), INTENT(IN)    :: precip_rain, precip_snow
     REAL, DIMENSION(klon), INTENT(IN)    :: temp_air, spechum
@@ -287,8 +288,8 @@
 
     CALL calcul_fluxs(knon, is_oce, dtime, &
-         tsurf_in, p1lay, cal, beta, cdragh, ps, &
+         tsurf_in, p1lay, cal, beta, cdragh, cdragq, ps, &
          precip_rain, precip_snow, snow, qsurf,  &
          radsol, dif_grnd, temp_air, spechum, u1_lay, v1_lay, gustiness, &
-         AcoefH, AcoefQ, BcoefH, BcoefQ, &
+         f_qsat_oce,AcoefH, AcoefQ, BcoefH, BcoefQ, &
          tsurf_new, evap, fluxlat, fluxsens, dflux_s, dflux_l)
 
@@ -406,4 +407,5 @@
 
    INCLUDE "YOMCST.h"
+   INCLUDE "clesphys.h"
 
 ! Input arguments
@@ -498,8 +500,8 @@
 ! calcul_fluxs (sens, lat etc)
     CALL calcul_fluxs(knon, is_sic, dtime, &
-        tsurf_in, p1lay, cal, beta, cdragh, ps, &
+        tsurf_in, p1lay, cal, beta, cdragh, cdragh, ps, &
         precip_rain, precip_snow, snow, qsurf,  &
         radsol, dif_grnd, temp_air, spechum, u1_lay, v1_lay, gustiness, &
-        AcoefH, AcoefQ, BcoefH, BcoefQ, &
+        f_qsat_oce,AcoefH, AcoefQ, BcoefH, BcoefQ, &
         tsurf_new, evap, fluxlat, fluxsens, dflux_s, dflux_l)
     DO i=1,knon 
Index: /LMDZ5/trunk/libf/phylmd/pbl_surface_mod.F90
===================================================================
--- /LMDZ5/trunk/libf/phylmd/pbl_surface_mod.F90	(revision 2253)
+++ /LMDZ5/trunk/libf/phylmd/pbl_surface_mod.F90	(revision 2254)
@@ -1791,5 +1791,5 @@
                ywindsp, rmu0, yfder, yts, &
                itap, dtime, jour, knon, ni, &
-               ypplay(:,1), ycdragh, ycdragm, yrain_f, ysnow_f, yt(:,1), yq(:,1),&
+               ypplay(:,1), zgeo1/RG, ycdragh, ycdragm, yrain_f, ysnow_f, yt(:,1), yq(:,1),&
                AcoefH, AcoefQ, BcoefH, BcoefQ, &
                AcoefU, AcoefV, BcoefU, BcoefV, &
Index: /LMDZ5/trunk/libf/phylmd/surf_land_bucket_mod.F90
===================================================================
--- /LMDZ5/trunk/libf/phylmd/surf_land_bucket_mod.F90	(revision 2253)
+++ /LMDZ5/trunk/libf/phylmd/surf_land_bucket_mod.F90	(revision 2254)
@@ -123,8 +123,8 @@
 
     CALL calcul_fluxs(knon, is_ter, dtime, &
-         tsurf, p1lay, cal, beta, tq_cdrag, pref, &
+         tsurf, p1lay, cal, beta, tq_cdrag, tq_cdrag, pref, &
          precip_rain, precip_snow, snow, qsurf,  &
          radsol, dif_grnd, temp_air, spechum, u1_lay, v1_lay, gustiness, &
-         petAcoef, peqAcoef, petBcoef, peqBcoef, &
+         1.,petAcoef, peqAcoef, petBcoef, peqBcoef, &
          tsurf_new, evap, fluxlat, fluxsens, dflux_s, dflux_l)
     
Index: /LMDZ5/trunk/libf/phylmd/surf_landice_mod.F90
===================================================================
--- /LMDZ5/trunk/libf/phylmd/surf_landice_mod.F90	(revision 2253)
+++ /LMDZ5/trunk/libf/phylmd/surf_landice_mod.F90	(revision 2254)
@@ -179,7 +179,7 @@
           tsoil0(i,:)=tsoil(i,:)
        END DO
-	   ! Martin
-	   PRINT*, 'on appelle surf_sisvat'
-	   ! Martin
+           ! Martin
+           PRINT*, 'on appelle surf_sisvat'
+           ! Martin
        CALL surf_sisvat(knon, rlon, rlat, knindex, itime, dtime, debut, lafin, &
             rmu0, swdown, lwdown, pexner, ps, p1lay, &
@@ -241,8 +241,8 @@
 
     CALL calcul_fluxs(knon, is_lic, dtime, &
-         tsurf, p1lay, cal, beta, cdragh, ps, &
+         tsurf, p1lay, cal, beta, cdragh, cdragh, ps, &
          precip_rain, precip_snow, snow, qsurf,  &
          radsol, dif_grnd, temp_air, spechum, u1_lay, v1_lay, gustiness, &
-         AcoefH, AcoefQ, BcoefH, BcoefQ, &
+         1.,AcoefH, AcoefQ, BcoefH, BcoefQ, &
          tsurf_new, evap, fluxlat, fluxsens, dflux_s, dflux_l)
 
Index: /LMDZ5/trunk/libf/phylmd/surf_ocean_mod.F90
===================================================================
--- /LMDZ5/trunk/libf/phylmd/surf_ocean_mod.F90	(revision 2253)
+++ /LMDZ5/trunk/libf/phylmd/surf_ocean_mod.F90	(revision 2254)
@@ -6,10 +6,10 @@
 CONTAINS
 !
-!****************************************************************************************
+!******************************************************************************
 !
   SUBROUTINE surf_ocean(rlon, rlat, swnet, lwnet, alb1, &
        windsp, rmu0, fder, tsurf_in, &
        itime, dtime, jour, knon, knindex, &
-       p1lay, cdragh, cdragm, precip_rain, precip_snow, temp_air, spechum, &
+       p1lay, z1lay, cdragh, cdragm, precip_rain, precip_snow, temp_air, spechum, &
        AcoefH, AcoefQ, BcoefH, BcoefQ, &
        AcoefU, AcoefV, BcoefU, BcoefV, &
@@ -38,5 +38,5 @@
 
 ! Input variables
-!****************************************************************************************
+!******************************************************************************
     INTEGER, INTENT(IN)                      :: itime, jour, knon
     INTEGER, DIMENSION(klon), INTENT(IN)     :: knindex
@@ -50,5 +50,5 @@
     REAL, DIMENSION(klon), INTENT(IN)        :: fder
     REAL, DIMENSION(klon), INTENT(IN)        :: tsurf_in
-    REAL, DIMENSION(klon), INTENT(IN)        :: p1lay
+    REAL, DIMENSION(klon), INTENT(IN)        :: p1lay,z1lay ! pression (Pa) et altitude (m) du premier niveau
     REAL, DIMENSION(klon), INTENT(IN)        :: cdragh
     REAL, DIMENSION(klon), INTENT(IN)        :: cdragm
@@ -63,5 +63,5 @@
 
 ! In/Output variables
-!****************************************************************************************
+!******************************************************************************
     REAL, DIMENSION(klon), INTENT(INOUT)     :: snow
     REAL, DIMENSION(klon), INTENT(INOUT)     :: qsurf
@@ -69,5 +69,5 @@
 
 ! Output variables
-!****************************************************************************************
+!******************************************************************************
     REAL, DIMENSION(klon), INTENT(OUT)       :: z0m, z0h
 !albedo SB >>>
@@ -84,5 +84,5 @@
 
 ! Local variables
-!****************************************************************************************
+!******************************************************************************
     INTEGER               :: i, k
     REAL                  :: tmp
@@ -90,19 +90,35 @@
     REAL, DIMENSION(klon) :: alb_eau
     REAL, DIMENSION(klon) :: radsol
+    REAL, DIMENSION(klon) :: cdragq ! Cdrag pour l'evaporation
 
 ! End definition
-!****************************************************************************************
-
-
-!****************************************************************************************
+!******************************************************************************
+
+
+!******************************************************************************
 ! Calculate total net radiance at surface
 !
-!****************************************************************************************
+!******************************************************************************
     radsol(:) = 0.0
     radsol(1:knon) = swnet(1:knon) + lwnet(1:knon)
 
-!****************************************************************************************
+!******************************************************************************
+! Cdragq computed from cdrag
+! The difference comes only from a factor (f_z0qh_oce) on z0, so that
+! it can be computed inside surf_ocean
+! More complicated appraches may require the propagation through
+! pbl_surface of an independant cdragq variable.
+!******************************************************************************
+
+    IF ( f_z0qh_oce .ne. 1.) THEN
+       cdragq(:)=cdragh(:)*                                      &
+       log(z1lay(:)/z0h(:))/log(z1lay(:)/(f_z0qh_oce*z0h(:)))
+    ELSE
+       cdragq(:)=cdragh(:)
+    ENDIF
+
+!******************************************************************************
 ! Switch according to type of ocean (couple, slab or forced)
-!****************************************************************************************
+!******************************************************************************
     SELECT CASE(type_ocean)
     CASE('couple')
@@ -111,5 +127,5 @@
             windsp, fder, & 
             itime, dtime, knon, knindex, &
-            p1lay, cdragh, cdragm, precip_rain, precip_snow,temp_air,spechum,& 
+            p1lay, cdragh, cdragq, cdragm, precip_rain, precip_snow,temp_air,spechum,& 
             AcoefH, AcoefQ, BcoefH, BcoefQ, &
             AcoefU, AcoefV, BcoefU, BcoefV, &
@@ -122,5 +138,5 @@
        CALL ocean_slab_noice( &
             itime, dtime, jour, knon, knindex, &
-            p1lay, cdragh, cdragm, precip_rain, precip_snow, temp_air, spechum,&
+            p1lay, cdragh, cdragq, cdragm, precip_rain, precip_snow, temp_air, spechum,&
             AcoefH, AcoefQ, BcoefH, BcoefQ, &
             AcoefU, AcoefV, BcoefU, BcoefV, &
@@ -133,5 +149,5 @@
        CALL ocean_forced_noice( &
             itime, dtime, jour, knon, knindex, &
-            p1lay, cdragh, cdragm, precip_rain, precip_snow, &
+            p1lay, cdragh, cdragq, cdragm, precip_rain, precip_snow, &
             temp_air, spechum, &
             AcoefH, AcoefQ, BcoefH, BcoefQ, &
@@ -143,7 +159,7 @@
     END SELECT
 
-!****************************************************************************************
+!******************************************************************************
 ! fcodron: compute lmt_bils  forced case (same as wfbils_oce / 1.-contfracatm)
-!****************************************************************************************
+!******************************************************************************
     IF (type_ocean.NE.'slab') THEN
         lmt_bils(:)=0.
@@ -154,11 +170,8 @@
     END IF
 
-!****************************************************************************************
+!******************************************************************************
 ! Calculate albedo
-!
-!****************************************************************************************
+!******************************************************************************
 !albedo SB >>>
-
-
   if(iflag_albedo==1)then
     call ocean_albedo(knon,rmu0,knindex,windsp,SFRWL,alb_dir_new,alb_dif_new)
@@ -180,8 +193,7 @@
 !albedo SB <<<
 
-!****************************************************************************************
+!******************************************************************************
 ! Calculate the rugosity
-!
-!****************************************************************************************
+!******************************************************************************
 IF (iflag_z0_oce==0) THEN
     DO i = 1, knon
@@ -197,9 +209,7 @@
 ENDIF
 !
-!****************************************************************************************
-!    
+!******************************************************************************
   END SUBROUTINE surf_ocean
-!
-!****************************************************************************************
+!******************************************************************************
 !
 END MODULE surf_ocean_mod
