Index: NEMO/trunk/src/OCE/SBC/sbcblk.F90
===================================================================
--- NEMO/trunk/src/OCE/SBC/sbcblk.F90	(revision 12597)
+++ NEMO/trunk/src/OCE/SBC/sbcblk.F90	(revision 12615)
@@ -639,14 +639,4 @@
       END IF
 
-      !!      CALL iom_put( "Cd_oce", zcd_oce)  ! output value of pure ocean-atm. transfer coef.
-      !!      CALL iom_put( "Ch_oce", zch_oce)  ! output value of pure ocean-atm. transfer coef.
-
-      IF( ABS(rn_zu - rn_zqt) < 0.1_wp ) THEN
-         !! If zu == zt, then ensuring once for all that:
-         t_zu(:,:) = ztpot(:,:)
-         q_zu(:,:) = zqair(:,:)
-      ENDIF
-
-
       !  Turbulent fluxes over ocean  => BULK_FORMULA @ sbcblk_phy.F90
       ! -------------------------------------------------------------
@@ -663,8 +653,8 @@
       ELSE                      !==  BLK formulation  ==!   turbulent fluxes computation
          CALL BULK_FORMULA( rn_zu, ptsk(:,:), pssq(:,:), t_zu(:,:), q_zu(:,:), &
-            &               zcd_oce(:,:), zch_oce(:,:), zce_oce(:,:),         &
-            &               wndm(:,:), zU_zu(:,:), pslp(:,:),                 &
-            &               taum(:,:), psen(:,:), zqla(:,:),                  &
-            &               pEvap=pevp(:,:), prhoa=rhoa(:,:) )
+            &               zcd_oce(:,:), zch_oce(:,:), zce_oce(:,:),          &
+            &               wndm(:,:), zU_zu(:,:), pslp(:,:),                  &
+            &               taum(:,:), psen(:,:), zqla(:,:),                   &
+            &               pEvap=pevp(:,:), prhoa=rhoa(:,:), pfact_evap=rn_efac )
 
          zqla(:,:) = zqla(:,:) * tmask(:,:,1)
@@ -1046,5 +1036,5 @@
       evap_ice (:,:,:) = rn_efac * qla_ice (:,:,:) * z1_rLsub    ! sublimation
       devap_ice(:,:,:) = rn_efac * dqla_ice(:,:,:) * z1_rLsub    ! d(sublimation)/dT
-      zevap    (:,:)   = rn_efac * ( emp(:,:) + tprecip(:,:) )   ! evaporation over ocean
+      zevap    (:,:)   = rn_efac * ( emp(:,:) + tprecip(:,:) )   ! evaporation over ocean  !LB: should we remove rn_efac here???
 
       ! --- evaporation minus precipitation --- !
Index: NEMO/trunk/src/OCE/SBC/sbcblk_algo_coare3p0.F90
===================================================================
--- NEMO/trunk/src/OCE/SBC/sbcblk_algo_coare3p0.F90	(revision 12597)
+++ NEMO/trunk/src/OCE/SBC/sbcblk_algo_coare3p0.F90	(revision 12615)
@@ -194,6 +194,5 @@
       IF( kt == nit000 ) CALL SBCBLK_ALGO_COARE3P0_INIT(l_use_cs, l_use_wl)
 
-      l_zt_equal_zu = .FALSE.
-      IF( ABS(zu - zt) < 0.01_wp )   l_zt_equal_zu = .TRUE.    ! testing "zu == zt" is risky with double precision
+      l_zt_equal_zu = ( ABS(zu - zt) < 0.01_wp ) ! testing "zu == zt" is risky with double precision
       IF( .NOT. l_zt_equal_zu )  ALLOCATE( zeta_t(jpi,jpj) )
 
@@ -396,15 +395,15 @@
       !
       DO_2D_11_11
-         !
-         zw = pwnd(ji,jj)   ! wind speed
-         !
-         ! Charnock's constant, increases with the wind :
-         zgt10 = 0.5 + SIGN(0.5_wp,(zw - 10))  ! If zw<10. --> 0, else --> 1
-         zgt18 = 0.5 + SIGN(0.5_wp,(zw - 18.)) ! If zw<18. --> 0, else --> 1
-         !
-         alfa_charn_3p0(ji,jj) =  (1. - zgt10)*0.011    &    ! wind is lower than 10 m/s
-            &     + zgt10*((1. - zgt18)*(0.011 + (0.018 - 0.011) &
-            &      *(zw - 10.)/(18. - 10.)) + zgt18*( 0.018 ) )    ! Hare et al. (1999)
-         !
+      !
+      zw = pwnd(ji,jj)   ! wind speed
+      !
+      ! Charnock's constant, increases with the wind :
+      zgt10 = 0.5 + SIGN(0.5_wp,(zw - 10))  ! If zw<10. --> 0, else --> 1
+      zgt18 = 0.5 + SIGN(0.5_wp,(zw - 18.)) ! If zw<18. --> 0, else --> 1
+      !
+      alfa_charn_3p0(ji,jj) =  (1. - zgt10)*0.011    &    ! wind is lower than 10 m/s
+         &     + zgt10*((1. - zgt18)*(0.011 + (0.018 - 0.011) &
+         &      *(zw - 10.)/(18. - 10.)) + zgt18*( 0.018 ) )    ! Hare et al. (1999)
+      !
       END_2D
       !
@@ -432,26 +431,26 @@
       !
       DO_2D_11_11
-         !
-         zta = pzeta(ji,jj)
-         !
-         zphi_m = ABS(1. - 15.*zta)**.25    !!Kansas unstable
-         !
-         zpsi_k = 2.*LOG((1. + zphi_m)/2.) + LOG((1. + zphi_m*zphi_m)/2.)   &
-            & - 2.*ATAN(zphi_m) + 0.5*rpi
-         !
-         zphi_c = ABS(1. - 10.15*zta)**.3333                   !!Convective
-         !
-         zpsi_c = 1.5*LOG((1. + zphi_c + zphi_c*zphi_c)/3.) &
-            &     - 1.7320508*ATAN((1. + 2.*zphi_c)/1.7320508) + 1.813799447
-         !
-         zf = zta*zta
-         zf = zf/(1. + zf)
-         zc = MIN(50._wp, 0.35_wp*zta)
-         zstab = 0.5 + SIGN(0.5_wp, zta)
-         !
-         psi_m_coare(ji,jj) = (1. - zstab) * ( (1. - zf)*zpsi_k + zf*zpsi_c ) & ! (zta < 0)
-            &                -   zstab     * ( 1. + 1.*zta     &                ! (zta > 0)
-            &                         + 0.6667*(zta - 14.28)/EXP(zc) + 8.525 )   !     "
-         !
+      !
+      zta = pzeta(ji,jj)
+      !
+      zphi_m = ABS(1. - 15.*zta)**.25    !!Kansas unstable
+      !
+      zpsi_k = 2.*LOG((1. + zphi_m)/2.) + LOG((1. + zphi_m*zphi_m)/2.)   &
+         & - 2.*ATAN(zphi_m) + 0.5*rpi
+      !
+      zphi_c = ABS(1. - 10.15*zta)**.3333                   !!Convective
+      !
+      zpsi_c = 1.5*LOG((1. + zphi_c + zphi_c*zphi_c)/3.) &
+         &     - 1.7320508*ATAN((1. + 2.*zphi_c)/1.7320508) + 1.813799447
+      !
+      zf = zta*zta
+      zf = zf/(1. + zf)
+      zc = MIN(50._wp, 0.35_wp*zta)
+      zstab = 0.5 + SIGN(0.5_wp, zta)
+      !
+      psi_m_coare(ji,jj) = (1. - zstab) * ( (1. - zf)*zpsi_k + zf*zpsi_c ) & ! (zta < 0)
+         &                -   zstab     * ( 1. + 1.*zta     &                ! (zta > 0)
+         &                         + 0.6667*(zta - 14.28)/EXP(zc) + 8.525 )   !     "
+      !
       END_2D
       !
@@ -483,25 +482,25 @@
       !
       DO_2D_11_11
-         !
-         zta = pzeta(ji,jj)
-         !
-         zphi_h = (ABS(1. - 15.*zta))**.5  !! Kansas unstable   (zphi_h = zphi_m**2 when unstable, zphi_m when stable)
-         !
-         zpsi_k = 2.*LOG((1. + zphi_h)/2.)
-         !
-         zphi_c = (ABS(1. - 34.15*zta))**.3333   !! Convective
-         !
-         zpsi_c = 1.5*LOG((1. + zphi_c + zphi_c*zphi_c)/3.) &
-            &    -1.7320508*ATAN((1. + 2.*zphi_c)/1.7320508) + 1.813799447
-         !
-         zf = zta*zta
-         zf = zf/(1. + zf)
-         zc = MIN(50._wp,0.35_wp*zta)
-         zstab = 0.5 + SIGN(0.5_wp, zta)
-         !
-         psi_h_coare(ji,jj) = (1. - zstab) * ( (1. - zf)*zpsi_k + zf*zpsi_c ) &
-            &                -   zstab     * ( (ABS(1. + 2.*zta/3.))**1.5     &
-            &                           + .6667*(zta - 14.28)/EXP(zc) + 8.525 )
-         !
+      !
+      zta = pzeta(ji,jj)
+      !
+      zphi_h = (ABS(1. - 15.*zta))**.5  !! Kansas unstable   (zphi_h = zphi_m**2 when unstable, zphi_m when stable)
+      !
+      zpsi_k = 2.*LOG((1. + zphi_h)/2.)
+      !
+      zphi_c = (ABS(1. - 34.15*zta))**.3333   !! Convective
+      !
+      zpsi_c = 1.5*LOG((1. + zphi_c + zphi_c*zphi_c)/3.) &
+         &    -1.7320508*ATAN((1. + 2.*zphi_c)/1.7320508) + 1.813799447
+      !
+      zf = zta*zta
+      zf = zf/(1. + zf)
+      zc = MIN(50._wp,0.35_wp*zta)
+      zstab = 0.5 + SIGN(0.5_wp, zta)
+      !
+      psi_h_coare(ji,jj) = (1. - zstab) * ( (1. - zf)*zpsi_k + zf*zpsi_c ) &
+         &                -   zstab     * ( (ABS(1. + 2.*zta/3.))**1.5     &
+         &                           + .6667*(zta - 14.28)/EXP(zc) + 8.525 )
+      !
       END_2D
       !
Index: NEMO/trunk/src/OCE/SBC/sbcblk_algo_coare3p6.F90
===================================================================
--- NEMO/trunk/src/OCE/SBC/sbcblk_algo_coare3p6.F90	(revision 12597)
+++ NEMO/trunk/src/OCE/SBC/sbcblk_algo_coare3p6.F90	(revision 12615)
@@ -194,6 +194,5 @@
       IF( kt == nit000 ) CALL SBCBLK_ALGO_COARE3P6_INIT(l_use_cs, l_use_wl)
 
-      l_zt_equal_zu = .FALSE.
-      IF( ABS(zu - zt) < 0.01_wp )   l_zt_equal_zu = .TRUE.    ! testing "zu == zt" is risky with double precision
+      l_zt_equal_zu = ( ABS(zu - zt) < 0.01_wp ) ! testing "zu == zt" is risky with double precision
       IF( .NOT. l_zt_equal_zu )  ALLOCATE( zeta_t(jpi,jpj) )
 
@@ -432,26 +431,26 @@
       !
       DO_2D_11_11
-         !
-         zta = pzeta(ji,jj)
-         !
-         zphi_m = ABS(1. - 15.*zta)**.25    !!Kansas unstable
-         !
-         zpsi_k = 2.*LOG((1. + zphi_m)/2.) + LOG((1. + zphi_m*zphi_m)/2.)   &
-            & - 2.*ATAN(zphi_m) + 0.5*rpi
-         !
-         zphi_c = ABS(1. - 10.15*zta)**.3333                   !!Convective
-         !
-         zpsi_c = 1.5*LOG((1. + zphi_c + zphi_c*zphi_c)/3.) &
-            &     - 1.7320508*ATAN((1. + 2.*zphi_c)/1.7320508) + 1.813799447
-         !
-         zf = zta*zta
-         zf = zf/(1. + zf)
-         zc = MIN(50._wp, 0.35_wp*zta)
-         zstab = 0.5 + SIGN(0.5_wp, zta)
-         !
-         psi_m_coare(ji,jj) = (1. - zstab) * ( (1. - zf)*zpsi_k + zf*zpsi_c ) & ! (zta < 0)
-            &                -   zstab     * ( 1. + 1.*zta     &                ! (zta > 0)
-            &                         + 0.6667*(zta - 14.28)/EXP(zc) + 8.525 )   !     "
-         !
+      !
+      zta = pzeta(ji,jj)
+      !
+      zphi_m = ABS(1. - 15.*zta)**.25    !!Kansas unstable
+      !
+      zpsi_k = 2.*LOG((1. + zphi_m)/2.) + LOG((1. + zphi_m*zphi_m)/2.)   &
+         & - 2.*ATAN(zphi_m) + 0.5*rpi
+      !
+      zphi_c = ABS(1. - 10.15*zta)**.3333                   !!Convective
+      !
+      zpsi_c = 1.5*LOG((1. + zphi_c + zphi_c*zphi_c)/3.) &
+         &     - 1.7320508*ATAN((1. + 2.*zphi_c)/1.7320508) + 1.813799447
+      !
+      zf = zta*zta
+      zf = zf/(1. + zf)
+      zc = MIN(50._wp, 0.35_wp*zta)
+      zstab = 0.5 + SIGN(0.5_wp, zta)
+      !
+      psi_m_coare(ji,jj) = (1. - zstab) * ( (1. - zf)*zpsi_k + zf*zpsi_c ) & ! (zta < 0)
+         &                -   zstab     * ( 1. + 1.*zta     &                ! (zta > 0)
+         &                         + 0.6667*(zta - 14.28)/EXP(zc) + 8.525 )   !     "
+      !
       END_2D
       !
@@ -483,25 +482,25 @@
       !
       DO_2D_11_11
-         !
-         zta = pzeta(ji,jj)
-         !
-         zphi_h = (ABS(1. - 15.*zta))**.5  !! Kansas unstable   (zphi_h = zphi_m**2 when unstable, zphi_m when stable)
-         !
-         zpsi_k = 2.*LOG((1. + zphi_h)/2.)
-         !
-         zphi_c = (ABS(1. - 34.15*zta))**.3333   !! Convective
-         !
-         zpsi_c = 1.5*LOG((1. + zphi_c + zphi_c*zphi_c)/3.) &
-            &    -1.7320508*ATAN((1. + 2.*zphi_c)/1.7320508) + 1.813799447
-         !
-         zf = zta*zta
-         zf = zf/(1. + zf)
-         zc = MIN(50._wp,0.35_wp*zta)
-         zstab = 0.5 + SIGN(0.5_wp, zta)
-         !
-         psi_h_coare(ji,jj) = (1. - zstab) * ( (1. - zf)*zpsi_k + zf*zpsi_c ) &
-            &                -   zstab     * ( (ABS(1. + 2.*zta/3.))**1.5     &
-            &                           + .6667*(zta - 14.28)/EXP(zc) + 8.525 )
-         !
+      !
+      zta = pzeta(ji,jj)
+      !
+      zphi_h = (ABS(1. - 15.*zta))**.5  !! Kansas unstable   (zphi_h = zphi_m**2 when unstable, zphi_m when stable)
+      !
+      zpsi_k = 2.*LOG((1. + zphi_h)/2.)
+      !
+      zphi_c = (ABS(1. - 34.15*zta))**.3333   !! Convective
+      !
+      zpsi_c = 1.5*LOG((1. + zphi_c + zphi_c*zphi_c)/3.) &
+         &    -1.7320508*ATAN((1. + 2.*zphi_c)/1.7320508) + 1.813799447
+      !
+      zf = zta*zta
+      zf = zf/(1. + zf)
+      zc = MIN(50._wp,0.35_wp*zta)
+      zstab = 0.5 + SIGN(0.5_wp, zta)
+      !
+      psi_h_coare(ji,jj) = (1. - zstab) * ( (1. - zf)*zpsi_k + zf*zpsi_c ) &
+         &                -   zstab     * ( (ABS(1. + 2.*zta/3.))**1.5     &
+         &                           + .6667*(zta - 14.28)/EXP(zc) + 8.525 )
+      !
       END_2D
       !
Index: NEMO/trunk/src/OCE/SBC/sbcblk_algo_ecmwf.F90
===================================================================
--- NEMO/trunk/src/OCE/SBC/sbcblk_algo_ecmwf.F90	(revision 12597)
+++ NEMO/trunk/src/OCE/SBC/sbcblk_algo_ecmwf.F90	(revision 12615)
@@ -98,5 +98,5 @@
       &                      Qsw, rad_lw, slp, pdT_cs,                                & ! optionals for cool-skin (and warm-layer)
       &                      pdT_wl, pHz_wl )                                           ! optionals for warm-layer only
-      !!----------------------------------------------------------------------
+      !!----------------------------------------------------------------------------------
       !!                      ***  ROUTINE  turb_ecmwf  ***
       !!
@@ -184,7 +184,7 @@
       LOGICAL :: l_zt_equal_zu = .FALSE.      ! if q and t are given at same height as U
       !
-      REAL(wp), DIMENSION(jpi,jpj) ::  u_star, t_star, q_star
-      REAL(wp), DIMENSION(jpi,jpj) :: dt_zu, dq_zu     
-      REAL(wp), DIMENSION(jpi,jpj) :: znu_a !: Nu_air, Viscosity of air
+      REAL(wp), DIMENSION(jpi,jpj) :: u_star, t_star, q_star
+      REAL(wp), DIMENSION(jpi,jpj) :: dt_zu, dq_zu
+      REAL(wp), DIMENSION(jpi,jpj) :: znu_a         !: Nu_air, Viscosity of air
       REAL(wp), DIMENSION(jpi,jpj) :: Linv  !: 1/L (inverse of Monin Obukhov length...
       REAL(wp), DIMENSION(jpi,jpj) :: z0, z0t, z0q
@@ -196,9 +196,7 @@
       CHARACTER(len=40), PARAMETER :: crtnm = 'turb_ecmwf@sbcblk_algo_ecmwf.F90'
       !!----------------------------------------------------------------------------------
-
       IF( kt == nit000 ) CALL SBCBLK_ALGO_ECMWF_INIT(l_use_cs, l_use_wl)
 
-      l_zt_equal_zu = .FALSE.
-      IF( ABS(zu - zt) < 0.01_wp )   l_zt_equal_zu = .TRUE.    ! testing "zu == zt" is risky with double precision
+      l_zt_equal_zu = ( ABS(zu - zt) < 0.01_wp ) ! testing "zu == zt" is risky with double precision
 
       !! Initializations for cool skin and warm layer:
@@ -413,26 +411,26 @@
       !!----------------------------------------------------------------------------------
       DO_2D_11_11
-         !
-         zzeta = MIN( pzeta(ji,jj) , 5._wp ) !! Very stable conditions (L positif and big!):
-         !
-         ! Unstable (Paulson 1970):
-         !   eq.3.20, Chap.3, p.33, IFS doc - Cy31r1
-         zx = SQRT(ABS(1._wp - 16._wp*zzeta))
-         ztmp = 1._wp + SQRT(zx)
-         ztmp = ztmp*ztmp
-         psi_unst = LOG( 0.125_wp*ztmp*(1._wp + zx) )   &
-            &       -2._wp*ATAN( SQRT(zx) ) + 0.5_wp*rpi
-         !
-         ! Unstable:
-         ! eq.3.22, Chap.3, p.33, IFS doc - Cy31r1
-         psi_stab = -2._wp/3._wp*(zzeta - 5._wp/0.35_wp)*EXP(-0.35_wp*zzeta) &
-            &       - zzeta - 2._wp/3._wp*5._wp/0.35_wp
-         !
-         ! Combining:
-         stab = 0.5_wp + SIGN(0.5_wp, zzeta) ! zzeta > 0 => stab = 1
-         !
-         psi_m_ecmwf(ji,jj) = (1._wp - stab) * psi_unst & ! (zzeta < 0) Unstable
-            &                +      stab  * psi_stab      ! (zzeta > 0) Stable
-         !
+      !
+      zzeta = MIN( pzeta(ji,jj) , 5._wp ) !! Very stable conditions (L positif and big!):
+      !
+      ! Unstable (Paulson 1970):
+      !   eq.3.20, Chap.3, p.33, IFS doc - Cy31r1
+      zx = SQRT(ABS(1._wp - 16._wp*zzeta))
+      ztmp = 1._wp + SQRT(zx)
+      ztmp = ztmp*ztmp
+      psi_unst = LOG( 0.125_wp*ztmp*(1._wp + zx) )   &
+         &       -2._wp*ATAN( SQRT(zx) ) + 0.5_wp*rpi
+      !
+      ! Unstable:
+      ! eq.3.22, Chap.3, p.33, IFS doc - Cy31r1
+      psi_stab = -2._wp/3._wp*(zzeta - 5._wp/0.35_wp)*EXP(-0.35_wp*zzeta) &
+         &       - zzeta - 2._wp/3._wp*5._wp/0.35_wp
+      !
+      ! Combining:
+      stab = 0.5_wp + SIGN(0.5_wp, zzeta) ! zzeta > 0 => stab = 1
+      !
+      psi_m_ecmwf(ji,jj) = (1._wp - stab) * psi_unst & ! (zzeta < 0) Unstable
+         &                +      stab  * psi_stab      ! (zzeta > 0) Stable
+      !
       END_2D
    END FUNCTION psi_m_ecmwf
@@ -458,23 +456,23 @@
       !
       DO_2D_11_11
-         !
-         zzeta = MIN(pzeta(ji,jj) , 5._wp)   ! Very stable conditions (L positif and big!):
-         !
-         zx  = ABS(1._wp - 16._wp*zzeta)**.25        ! this is actually (1/phi_m)**2  !!!
-         !                                     ! eq.3.19, Chap.3, p.33, IFS doc - Cy31r1
-         ! Unstable (Paulson 1970) :
-         psi_unst = 2._wp*LOG(0.5_wp*(1._wp + zx*zx))   ! eq.3.20, Chap.3, p.33, IFS doc - Cy31r1
-         !
-         ! Stable:
-         psi_stab = -2._wp/3._wp*(zzeta - 5._wp/0.35_wp)*EXP(-0.35_wp*zzeta) & ! eq.3.22, Chap.3, p.33, IFS doc - Cy31r1
-            &       - ABS(1._wp + 2._wp/3._wp*zzeta)**1.5_wp - 2._wp/3._wp*5._wp/0.35_wp + 1._wp
-         ! LB: added ABS() to avoid NaN values when unstable, which contaminates the unstable solution...
-         !
-         stab = 0.5_wp + SIGN(0.5_wp, zzeta) ! zzeta > 0 => stab = 1
-         !
-         !
-         psi_h_ecmwf(ji,jj) = (1._wp - stab) * psi_unst &   ! (zzeta < 0) Unstable
-            &                +    stab    * psi_stab        ! (zzeta > 0) Stable
-         !
+      !
+      zzeta = MIN(pzeta(ji,jj) , 5._wp)   ! Very stable conditions (L positif and big!):
+      !
+      zx  = ABS(1._wp - 16._wp*zzeta)**.25        ! this is actually (1/phi_m)**2  !!!
+      !                                     ! eq.3.19, Chap.3, p.33, IFS doc - Cy31r1
+      ! Unstable (Paulson 1970) :
+      psi_unst = 2._wp*LOG(0.5_wp*(1._wp + zx*zx))   ! eq.3.20, Chap.3, p.33, IFS doc - Cy31r1
+      !
+      ! Stable:
+      psi_stab = -2._wp/3._wp*(zzeta - 5._wp/0.35_wp)*EXP(-0.35_wp*zzeta) & ! eq.3.22, Chap.3, p.33, IFS doc - Cy31r1
+         &       - ABS(1._wp + 2._wp/3._wp*zzeta)**1.5_wp - 2._wp/3._wp*5._wp/0.35_wp + 1._wp
+      ! LB: added ABS() to avoid NaN values when unstable, which contaminates the unstable solution...
+      !
+      stab = 0.5_wp + SIGN(0.5_wp, zzeta) ! zzeta > 0 => stab = 1
+      !
+      !
+      psi_h_ecmwf(ji,jj) = (1._wp - stab) * psi_unst &   ! (zzeta < 0) Unstable
+         &                +    stab    * psi_stab        ! (zzeta > 0) Stable
+      !
       END_2D
    END FUNCTION psi_h_ecmwf
Index: NEMO/trunk/src/OCE/SBC/sbcblk_algo_ncar.F90
===================================================================
--- NEMO/trunk/src/OCE/SBC/sbcblk_algo_ncar.F90	(revision 12597)
+++ NEMO/trunk/src/OCE/SBC/sbcblk_algo_ncar.F90	(revision 12615)
@@ -112,7 +112,5 @@
       REAL(wp), DIMENSION(jpi,jpj) ::   stab          ! stability test integer
       !!----------------------------------------------------------------------------------
-      !
-      l_zt_equal_zu = .FALSE.
-      IF( ABS(zu - zt) < 0.01_wp )   l_zt_equal_zu = .TRUE.    ! testing "zu == zt" is risky with double precision
+      l_zt_equal_zu = ( ABS(zu - zt) < 0.01_wp ) ! testing "zu == zt" is risky with double precision
 
       U_blk = MAX( 0.5_wp , U_zu )   !  relative wind speed at zu (normally 10m), we don't want to fall under 0.5 m/s
@@ -143,6 +141,7 @@
       ENDIF
 
-      !! Initializing values at z_u with z_t values:
-      t_zu = t_zt   ;   q_zu = q_zt
+      !! First guess of temperature and humidity at height zu:
+      t_zu = MAX( t_zt ,  180._wp )   ! who knows what's given on masked-continental regions...
+      q_zu = MAX( q_zt , 1.e-6_wp )   !               "
 
       !! ITERATION BLOCK
Index: NEMO/trunk/src/OCE/SBC/sbcblk_phy.F90
===================================================================
--- NEMO/trunk/src/OCE/SBC/sbcblk_phy.F90	(revision 12597)
+++ NEMO/trunk/src/OCE/SBC/sbcblk_phy.F90	(revision 12615)
@@ -520,9 +520,9 @@
          zCe = zz0*pqst(ji,jj)/zdq
 
-         CALL BULK_FORMULA( pzu, pTs(ji,jj), pqs(ji,jj), pTa(ji,jj), pqa(ji,jj), &
-            &              zCd, zCh, zCe,                                        &
-            &              pwnd(ji,jj), pUb(ji,jj), pslp(ji,jj),                 &
-            &              pTau(ji,jj), zQsen, zQlat )
-
+         CALL BULK_FORMULA_SCLR( pzu, pTs(ji,jj), pqs(ji,jj), pTa(ji,jj), pqa(ji,jj), &
+            &                    zCd, zCh, zCe,                                       &
+            &                    pwnd(ji,jj), pUb(ji,jj), pslp(ji,jj),                &
+            &                    pTau(ji,jj), zQsen, zQlat )
+         
          zTs2  = pTs(ji,jj)*pTs(ji,jj)
          zQlw  = emiss_w*(prlw(ji,jj) - stefan*zTs2*zTs2) ! Net longwave flux
@@ -535,8 +535,63 @@
 
 
-   SUBROUTINE BULK_FORMULA_VCTR( pzu, pTs, pqs, pTa, pqa,  &
-      &                          pCd, pCh, pCe,            &
-      &                          pwnd, pUb, pslp,          &
-      &                          pTau, pQsen, pQlat,  pEvap, prhoa )
+   SUBROUTINE BULK_FORMULA_SCLR( pzu, pTs, pqs, pTa, pqa, &
+      &                          pCd, pCh, pCe,           &
+      &                          pwnd, pUb, pslp,         &
+      &                          pTau, pQsen, pQlat,      &
+      &                          pEvap, prhoa, pfact_evap )
+      !!----------------------------------------------------------------------------------
+      REAL(wp),                     INTENT(in)  :: pzu  ! height above the sea-level where all this takes place (normally 10m)
+      REAL(wp), INTENT(in)  :: pTs  ! water temperature at the air-sea interface [K]
+      REAL(wp), INTENT(in)  :: pqs  ! satur. spec. hum. at T=pTs   [kg/kg]
+      REAL(wp), INTENT(in)  :: pTa  ! potential air temperature at z=pzu [K]
+      REAL(wp), INTENT(in)  :: pqa  ! specific humidity at z=pzu [kg/kg]
+      REAL(wp), INTENT(in)  :: pCd
+      REAL(wp), INTENT(in)  :: pCh
+      REAL(wp), INTENT(in)  :: pCe
+      REAL(wp), INTENT(in)  :: pwnd ! wind speed module at z=pzu [m/s]
+      REAL(wp), INTENT(in)  :: pUb  ! bulk wind speed at z=pzu (inc. pot. effect of gustiness etc) [m/s]
+      REAL(wp), INTENT(in)  :: pslp ! sea-level atmospheric pressure [Pa]
+      !!
+      REAL(wp), INTENT(out) :: pTau  ! module of the wind stress [N/m^2]
+      REAL(wp), INTENT(out) :: pQsen !  [W/m^2]
+      REAL(wp), INTENT(out) :: pQlat !  [W/m^2]
+      !!
+      REAL(wp), INTENT(out), OPTIONAL :: pEvap ! Evaporation [kg/m^2/s]
+      REAL(wp), INTENT(out), OPTIONAL :: prhoa ! Air density at z=pzu [kg/m^3]
+      REAL(wp), INTENT(in) , OPTIONAL :: pfact_evap  ! ABOMINATION: corrective factor for evaporation (doing this against my will! /laurent)
+      !!
+      REAL(wp) :: ztaa, zgamma, zrho, zUrho, zevap, zfact_evap
+      INTEGER  :: jq
+      !!----------------------------------------------------------------------------------
+      zfact_evap = 1._wp
+      IF( PRESENT(pfact_evap) ) zfact_evap = pfact_evap
+      
+      !! Need ztaa, absolute temperature at pzu (formula to estimate rho_air needs absolute temperature, not the potential temperature "pTa")
+      ztaa = pTa ! first guess...
+      DO jq = 1, 4
+         zgamma = gamma_moist( 0.5*(ztaa+pTs) , pqa )  !LOLO: why not "0.5*(pqs+pqa)" rather then "pqa" ???
+         ztaa = pTa - zgamma*pzu   ! Absolute temp. is slightly colder...
+      END DO
+      zrho = rho_air(ztaa, pqa, pslp)
+      zrho = rho_air(ztaa, pqa, pslp-zrho*grav*pzu) ! taking into account that we are pzu m above the sea level where SLP is given!
+
+      zUrho = pUb*MAX(zrho, 1._wp)     ! rho*U10
+
+      pTau = zUrho * pCd * pwnd ! Wind stress module
+
+      zevap = zUrho * pCe * (pqa - pqs)
+      pQsen = zUrho * pCh * (pTa - pTs) * cp_air(pqa)
+      pQlat = L_vap(pTs) * zevap
+
+      IF( PRESENT(pEvap) ) pEvap = - zfact_evap * zevap
+      IF( PRESENT(prhoa) ) prhoa = zrho
+
+   END SUBROUTINE BULK_FORMULA_SCLR
+
+   SUBROUTINE BULK_FORMULA_VCTR( pzu, pTs, pqs, pTa, pqa, &
+      &                          pCd, pCh, pCe,           &
+      &                          pwnd, pUb, pslp,         &
+      &                          pTau, pQsen, pQlat,      & 
+      &                          pEvap, prhoa, pfact_evap )      
       !!----------------------------------------------------------------------------------
       REAL(wp),                     INTENT(in)  :: pzu  ! height above the sea-level where all this takes place (normally 10m)
@@ -558,85 +613,25 @@
       REAL(wp), DIMENSION(jpi,jpj), INTENT(out), OPTIONAL :: pEvap ! Evaporation [kg/m^2/s]
       REAL(wp), DIMENSION(jpi,jpj), INTENT(out), OPTIONAL :: prhoa ! Air density at z=pzu [kg/m^3]
-      !!
-      REAL(wp) :: ztaa, zgamma, zrho, zUrho, zevap
-      INTEGER  :: ji, jj, jq     ! dummy loop indices
-      !!----------------------------------------------------------------------------------
-      DO_2D_11_11
-
-         !! Need ztaa, absolute temperature at pzu (formula to estimate rho_air needs absolute temperature, not the potential temperature "pTa")
-         ztaa = pTa(ji,jj) ! first guess...
-         DO jq = 1, 4
-            zgamma = gamma_moist( 0.5*(ztaa+pTs(ji,jj)) , pqa(ji,jj) )
-            ztaa = pTa(ji,jj) - zgamma*pzu   ! Absolute temp. is slightly colder...
-         END DO
-         zrho = rho_air(ztaa, pqa(ji,jj), pslp(ji,jj))
-         zrho = rho_air(ztaa, pqa(ji,jj), pslp(ji,jj)-zrho*grav*pzu) ! taking into account that we are pzu m above the sea level where SLP is given!
-
-         zUrho = pUb(ji,jj)*MAX(zrho, 1._wp)     ! rho*U10
-
-         pTau(ji,jj) = zUrho * pCd(ji,jj) * pwnd(ji,jj) ! Wind stress module
-
-         zevap        = zUrho * pCe(ji,jj) * (pqa(ji,jj) - pqs(ji,jj))
-         pQsen(ji,jj) = zUrho * pCh(ji,jj) * (pTa(ji,jj) - pTs(ji,jj)) * cp_air(pqa(ji,jj))
-         pQlat(ji,jj) = L_vap(pTs(ji,jj)) * zevap
-
-         IF( PRESENT(pEvap) ) pEvap(ji,jj) = - zevap
+      REAL(wp),                     INTENT(in) , OPTIONAL :: pfact_evap  ! ABOMINATION: corrective factor for evaporation (doing this against my will! /laurent)
+      !!
+      REAL(wp) :: ztaa, zgamma, zrho, zUrho, zevap, zfact_evap
+      INTEGER  :: ji, jj
+      !!----------------------------------------------------------------------------------
+      zfact_evap = 1._wp
+      IF( PRESENT(pfact_evap) ) zfact_evap = pfact_evap
+
+      DO_2D_11_11
+
+         CALL BULK_FORMULA_SCLR( pzu, pTs(ji,jj), pqs(ji,jj), pTa(ji,jj), pqa(ji,jj), &
+            &                    pCd(ji,jj), pCh(ji,jj), pCe(ji,jj),                  &
+            &                    pwnd(ji,jj), pUb(ji,jj), pslp(ji,jj),                &
+            &                    pTau(ji,jj), pQsen(ji,jj), pQlat(ji,jj),             &
+            &                    pEvap=zevap, prhoa=zrho, pfact_evap=zfact_evap       )
+
+         IF( PRESENT(pEvap) ) pEvap(ji,jj) = zevap
          IF( PRESENT(prhoa) ) prhoa(ji,jj) = zrho
-
+   
       END_2D
    END SUBROUTINE BULK_FORMULA_VCTR
-
-
-   SUBROUTINE BULK_FORMULA_SCLR( pzu, pTs, pqs, pTa, pqa, &
-      &                          pCd, pCh, pCe,           &
-      &                          pwnd, pUb, pslp,         &
-      &                          pTau, pQsen, pQlat,  pEvap, prhoa )
-      !!----------------------------------------------------------------------------------
-      REAL(wp),                     INTENT(in)  :: pzu  ! height above the sea-level where all this takes place (normally 10m)
-      REAL(wp), INTENT(in)  :: pTs  ! water temperature at the air-sea interface [K]
-      REAL(wp), INTENT(in)  :: pqs  ! satur. spec. hum. at T=pTs   [kg/kg]
-      REAL(wp), INTENT(in)  :: pTa  ! potential air temperature at z=pzu [K]
-      REAL(wp), INTENT(in)  :: pqa  ! specific humidity at z=pzu [kg/kg]
-      REAL(wp), INTENT(in)  :: pCd
-      REAL(wp), INTENT(in)  :: pCh
-      REAL(wp), INTENT(in)  :: pCe
-      REAL(wp), INTENT(in)  :: pwnd ! wind speed module at z=pzu [m/s]
-      REAL(wp), INTENT(in)  :: pUb  ! bulk wind speed at z=pzu (inc. pot. effect of gustiness etc) [m/s]
-      REAL(wp), INTENT(in)  :: pslp ! sea-level atmospheric pressure [Pa]
-      !!
-      REAL(wp), INTENT(out) :: pTau  ! module of the wind stress [N/m^2]
-      REAL(wp), INTENT(out) :: pQsen !  [W/m^2]
-      REAL(wp), INTENT(out) :: pQlat !  [W/m^2]
-      !!
-      REAL(wp), INTENT(out), OPTIONAL :: pEvap ! Evaporation [kg/m^2/s]
-      REAL(wp), INTENT(out), OPTIONAL :: prhoa ! Air density at z=pzu [kg/m^3]
-      !!
-      REAL(wp) :: ztaa, zgamma, zrho, zUrho, zevap
-      INTEGER  :: jq
-      !!----------------------------------------------------------------------------------
-
-      !! Need ztaa, absolute temperature at pzu (formula to estimate rho_air needs absolute temperature, not the potential temperature "pTa")
-      ztaa = pTa ! first guess...
-      DO jq = 1, 4
-         zgamma = gamma_moist( 0.5*(ztaa+pTs) , pqa )
-         ztaa = pTa - zgamma*pzu   ! Absolute temp. is slightly colder...
-      END DO
-      zrho = rho_air(ztaa, pqa, pslp)
-      zrho = rho_air(ztaa, pqa, pslp-zrho*grav*pzu) ! taking into account that we are pzu m above the sea level where SLP is given!
-
-      zUrho = pUb*MAX(zrho, 1._wp)     ! rho*U10
-
-      pTau = zUrho * pCd * pwnd ! Wind stress module
-
-      zevap = zUrho * pCe * (pqa - pqs)
-      pQsen = zUrho * pCh * (pTa - pTs) * cp_air(pqa)
-      pQlat = L_vap(pTs) * zevap
-
-      IF( PRESENT(pEvap) ) pEvap = - zevap
-      IF( PRESENT(prhoa) ) prhoa = zrho
-
-   END SUBROUTINE BULK_FORMULA_SCLR
-
-
 
 
