Index: /branches/2014/dev_r4822_INGV_WAVE/NEMOGCM/CONFIG/SHARED/namelist_ref
===================================================================
--- /branches/2014/dev_r4822_INGV_WAVE/NEMOGCM/CONFIG/SHARED/namelist_ref	(revision 4824)
+++ /branches/2014/dev_r4822_INGV_WAVE/NEMOGCM/CONFIG/SHARED/namelist_ref	(revision 4825)
@@ -635,4 +635,5 @@
    rn_bfrien   =    50.    !  local multiplying factor of bfr (ln_bfr2d=T)
    ln_bfrimp   = .true.    !  implicit bottom friction (requires ln_zdfexp = .false. if true)
+   ln_zdfqiao  = .false.    !  Enhanced wave vertical mixing Qiao (2010)
 /
 !-----------------------------------------------------------------------
@@ -1177,4 +1178,6 @@
    sn_usd      =  'sdw_wave' ,        1          , 'u_sd2d'     ,     .true.   , .false. , 'daily'   ,  ''      , ''       , ''
    sn_vsd      =  'sdw_wave' ,        1          , 'v_sd2d'     ,     .true.   , .false. , 'daily'   ,  ''      , ''       , ''
+   sn_swh      =  'sdw_wave' ,        1          , 'hs'         ,     .true.   , .false. , 'daily'   ,  ''      , ''       , ''
+   sn_wmp      =  'sdw_wave' ,        1          , 'wmp'        ,     .true.   , .false. , 'daily'   ,  ''      , ''       , ''
    sn_wn       =  'sdw_wave' ,        1          , 'wave_num'   ,     .true.   , .false. , 'daily'   ,  ''      , ''       , ''
 !
Index: /branches/2014/dev_r4822_INGV_WAVE/NEMOGCM/NEMO/OPA_SRC/DYN/sshwzv.F90
===================================================================
--- /branches/2014/dev_r4822_INGV_WAVE/NEMOGCM/NEMO/OPA_SRC/DYN/sshwzv.F90	(revision 4824)
+++ /branches/2014/dev_r4822_INGV_WAVE/NEMOGCM/NEMO/OPA_SRC/DYN/sshwzv.F90	(revision 4825)
@@ -9,4 +9,5 @@
    !!             -   !  2010-09  (D.Storkey and E.O'Dea) bug fixes for BDY module
    !!            3.3  !  2011-10  (M. Leclair) split former ssh_wzv routine and remove all vvl related work
+   !!            3.6  !  2014-10  (E. Clementi, P. Oddo) add wave contribution to surface vertical velocity 
    !!----------------------------------------------------------------------
 
@@ -42,4 +43,5 @@
    USE wrk_nemo        ! Memory Allocation
    USE timing          ! Timing
+   USE sbcwave,  ONLY: usd2dt, vsd2dt,wsd3d
 
    IMPLICIT NONE
@@ -172,4 +174,6 @@
       INTEGER             ::   ji, jj, jk   ! dummy loop indices
       REAL(wp)            ::   z1_2dt       ! local scalars
+      !
+      REAL(wp), ALLOCATABLE, DIMENSION(:,:  ) ::  sshnu, sshnv, dsshnu,dsshnv
       !!----------------------------------------------------------------------
       
@@ -220,4 +224,40 @@
          END DO
       ENDIF
+!
+!     In case ln_wave and ln_sdw the surface vertical velocity is modified
+!     accounting for Sokes Drift velocity
+      IF ( ln_sdw )  THEN
+       ALLOCATE(sshnu(jpi,jpj),sshnv(jpi,jpj),dsshnu(jpi,jpj),dsshnv(jpi,jpj))
+       sshnu (:,:) = 0._wp
+       sshnv (:,:) = 0._wp
+       dsshnu(:,:) = 0._wp
+       dsshnv(:,:) = 0._wp
+       ! sshn interpolated on U-V grid
+       !---------------------------------
+       DO jj = 1 , jpjm1
+         DO ji = 1 , jpim1
+           sshnu(ji,jj) =  0.5 * ( 2. - umask(ji,jj,1) ) *               &
+                        &        ( sshn(ji  ,jj) * tmask(ji  ,jj,1)      &
+                        &        + sshn(ji+1,jj) * tmask(ji+1,jj,1) )
+           sshnv(ji,jj) =  0.5 * ( 2. - vmask(ji,jj,1) ) *               &
+                        &        ( sshn(ji,jj  ) * tmask(ji,jj  ,1)      &
+                        &        + sshn(ji,jj+1) * tmask(ji,jj+1,1) )
+         ENDDO
+       ENDDO
+       ! Compute d(ssh)/dx  and d(ssh)/dy  
+       !---------------------------------
+       DO jj = 1 , jpjm1
+         DO ji = 1 , jpim1
+           dsshnu(ji,jj) = ( sshnu(ji+1,jj) - sshnu(ji,jj) ) / e1u(ji,jj)
+           dsshnv(ji,jj) = ( sshnv(ji,jj+1) - sshnv(ji,jj) ) / e2v(ji,jj)
+         ENDDO
+       ENDDO
+       ! Compute the surface vertical velocity accounting for the Stokes Drift 
+       !---------------------------------------------------------------------
+       wn(:,:,1) = wn(:,:,1) + usd2dt(:,:) * dsshnu(:,:)     &
+                 &           + vsd2dt(:,:) * dsshnv(:,:)      &
+                 &           - ( wsd3d (:,:,1) ) * tmask(:,:,1)
+      ENDIF
+!
 
 #if defined key_bdy
Index: /branches/2014/dev_r4822_INGV_WAVE/NEMOGCM/NEMO/OPA_SRC/ZDF/zdf_oce.F90
===================================================================
--- /branches/2014/dev_r4822_INGV_WAVE/NEMOGCM/NEMO/OPA_SRC/ZDF/zdf_oce.F90	(revision 4824)
+++ /branches/2014/dev_r4822_INGV_WAVE/NEMOGCM/NEMO/OPA_SRC/ZDF/zdf_oce.F90	(revision 4825)
@@ -35,4 +35,5 @@
    INTEGER , PUBLIC ::   nn_npc      !: non penetrative convective scheme call  frequency
    INTEGER , PUBLIC ::   nn_npcp     !: non penetrative convective scheme print frequency
+   LOGICAL , PUBLIC ::   ln_zdfqiao  !: Enhanced wave vertical mixing Qiao(2010) formulation flag
 
 
Index: /branches/2014/dev_r4822_INGV_WAVE/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfini.F90
===================================================================
--- /branches/2014/dev_r4822_INGV_WAVE/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfini.F90	(revision 4824)
+++ /branches/2014/dev_r4822_INGV_WAVE/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfini.F90	(revision 4825)
@@ -53,6 +53,7 @@
       INTEGER ::   ios
       !!
-      NAMELIST/namzdf/ rn_avm0, rn_avt0, nn_avb, nn_havtb, ln_zdfexp, nn_zdfexp,   &
-         &              ln_zdfevd, nn_evdm, rn_avevd, ln_zdfnpc, nn_npc, nn_npcp
+      NAMELIST/namzdf/ rn_avm0, rn_avt0, nn_avb, nn_havtb, ln_zdfexp, nn_zdfexp,  &
+         &        ln_zdfevd, nn_evdm, rn_avevd, ln_zdfnpc, nn_npc, nn_npcp,       &
+         &        ln_zdfqiao
       !!----------------------------------------------------------------------
 
@@ -83,4 +84,5 @@
          WRITE(numout,*) '      npc call  frequency                 nn_npc    = ', nn_npc
          WRITE(numout,*) '      npc print frequency                 nn_npcp   = ', nn_npcp
+         WRITE(numout,*) '      Qiao formulation flag               ln_zdfqiao=', ln_zdfqiao
       ENDIF
 
Index: /branches/2014/dev_r4822_INGV_WAVE/NEMOGCM/NEMO/OPA_SRC/step.F90
===================================================================
--- /branches/2014/dev_r4822_INGV_WAVE/NEMOGCM/NEMO/OPA_SRC/step.F90	(revision 4824)
+++ /branches/2014/dev_r4822_INGV_WAVE/NEMOGCM/NEMO/OPA_SRC/step.F90	(revision 4825)
@@ -25,4 +25,5 @@
    !!            3.4  !  2011-04  (G. Madec, C. Ethe) Merge of dtatem and dtasal
    !!                 !  2012-07  (J. Simeon, G. Madec. C. Ethe) Online coarsening of outputs
+   !!            3.6  !  2014-10  (E. Clementi, P. Oddo) Add Qiao vertical mixing in case of waves
    !!----------------------------------------------------------------------
 
@@ -70,5 +71,5 @@
       !!              -8- Outputs and diagnostics
       !!----------------------------------------------------------------------
-      INTEGER ::   jk       ! dummy loop indice
+      INTEGER ::   ji,jj,jk       ! dummy loop indice
       INTEGER ::   indic    ! error indicator if < 0
       INTEGER ::   kcall    ! optional integer argument (dom_vvl_sf_nxt)
@@ -116,4 +117,17 @@
       IF( lk_zdfgls  )   CALL zdf_gls( kstp )            ! GLS closure scheme for Kz
       IF( lk_zdfkpp  )   CALL zdf_kpp( kstp )            ! KPP closure scheme for Kz
+      IF( ln_zdfqiao )   THEN
+        CALL zdf_qiao(kstp )                             ! Qiao vertical mixing 
+         DO jk = 1, jpkm1
+          DO jj = 1, jpj
+            DO ji = 1, jpi
+               avmu(ji,jj,jk) = (avmu(ji,jj,jk) + QBvu(ji,jj,jk)) * umask(ji,jj,jk)
+               avmv(ji,jj,jk) = (avmv(ji,jj,jk) + QBvv(ji,jj,jk)) * vmask(ji,jj,jk)
+               avt( ji,jj,jk) = (avt( ji,jj,jk) + QBv(ji,jj,jk))  * tmask(ji,jj,jk)
+            END DO
+          END DO
+         END DO
+      ENDIF
+
       IF( lk_zdfcst  ) THEN                              ! Constant Kz (reset avt, avm[uv] to the background value)
          avt (:,:,:) = rn_avt0 * tmask(:,:,:)
@@ -121,4 +135,5 @@
          avmv(:,:,:) = rn_avm0 * vmask(:,:,:)
       ENDIF
+!
       IF( ln_rnf_mouth ) THEN                         ! increase diffusivity at rivers mouths
          DO jk = 2, nkrnf   ;   avt(:,:,jk) = avt(:,:,jk) + 2.e0 * rn_avt_rnf * rnfmsk(:,:) * tmask(:,:,jk)   ;   END DO
Index: /branches/2014/dev_r4822_INGV_WAVE/NEMOGCM/NEMO/OPA_SRC/step_oce.F90
===================================================================
--- /branches/2014/dev_r4822_INGV_WAVE/NEMOGCM/NEMO/OPA_SRC/step_oce.F90	(revision 4824)
+++ /branches/2014/dev_r4822_INGV_WAVE/NEMOGCM/NEMO/OPA_SRC/step_oce.F90	(revision 4825)
@@ -80,4 +80,5 @@
    USE zdfric           ! Richardson vertical mixing       (zdf_ric routine)
    USE zdfmxl           ! Mixed-layer depth                (zdf_mxl routine)
+   USE zdfqiao          !Qiao module wave induced mixing   (zdf_qiao routine)
 
    USE zpshde           ! partial step: hor. derivative     (zps_hde routine)
