Index: branches/UKMO/r6232_HZG_WAVE-coupling/NEMOGCM/CONFIG/SHARED/namelist_ref
===================================================================
--- branches/UKMO/r6232_HZG_WAVE-coupling/NEMOGCM/CONFIG/SHARED/namelist_ref	(revision 7791)
+++ branches/UKMO/r6232_HZG_WAVE-coupling/NEMOGCM/CONFIG/SHARED/namelist_ref	(revision 7792)
@@ -240,6 +240,7 @@
    ln_blk_core = .true.    !  CORE bulk formulation                     (T => fill namsbc_core)
    ln_blk_mfs  = .false.   !  MFS bulk formulation                      (T => fill namsbc_mfs )
-   ln_cpl      = .false.   !  atmosphere coupled   formulation          ( requires key_oasis3 )
-   ln_mixcpl   = .false.   !  forced-coupled mixed formulation          ( requires key_oasis3 )
+   ln_cpl      = .false.   !  coupled   formulation                       ( requires key_oasis3 )
+   ln_mixcpl   = .false.   !  forced-coupled mixed atmosphere formulation ( requires key_oasis3 )
+   ln_wavcpl   = .false.   !  forced-coupled mixed wave       formulation ( requires key_oasis3 )
    nn_components = 0       !  configuration of the opa-sas OASIS coupling
                            !  =0 no opa-sas OASIS coupling: default single executable configuration
@@ -276,4 +277,8 @@
                            !  = 1  Average and redistribute per-category fluxes, forced mode only, not yet implemented coupled
                            !  = 2  Redistribute a single flux over categories (coupled mode only)
+   nn_drag   = 0           !  formula to calculate momentum from the wind components
+                           !  = 0 UKMO SHELF formulation
+                           !  = 1 standard formulation with forced of coupled drag coefficient
+                           !  = 2 standard formulation with constant drag coefficient
 /
 !-----------------------------------------------------------------------
@@ -298,5 +303,6 @@
    sn_emp      = 'emp'       ,        24         , 'emp'     , .false.      , .false., 'yearly'  , ''       , ''       , ''
 
-   cn_dir      = './'      !  root directory for the location of the flux files
+   cn_dir       = './'      !  root directory for the location of the flux files
+   ln_shelf_flx = .false.   !  UKMO SHELF specific flux flag - read from file wind components instead of momentum 
 /
 !-----------------------------------------------------------------------
@@ -1295,5 +1301,5 @@
    sn_tauoc    =  'sdw_wave' ,        1          , 'wave_stress',     .true.   , .false. , 'daily'   ,  ''      , ''       , '' 
 ! 
-   cn_dir  = './'  !  root directory for the location of drag coefficient files
+   cn_dir      = './'  !  root directory for the location of drag coefficient files
 /
 !-----------------------------------------------------------------------
Index: branches/UKMO/r6232_HZG_WAVE-coupling/NEMOGCM/NEMO/OPA_SRC/SBC/sbc_oce.F90
===================================================================
--- branches/UKMO/r6232_HZG_WAVE-coupling/NEMOGCM/NEMO/OPA_SRC/SBC/sbc_oce.F90	(revision 7791)
+++ branches/UKMO/r6232_HZG_WAVE-coupling/NEMOGCM/NEMO/OPA_SRC/SBC/sbc_oce.F90	(revision 7792)
@@ -42,4 +42,6 @@
    LOGICAL , PUBLIC ::   ln_cpl         !: ocean-atmosphere coupled formulation
    LOGICAL , PUBLIC ::   ln_mixcpl      !: ocean-atmosphere forced-coupled mixed formulation
+   LOGICAL , PUBLIC ::   ln_wavcpl      !: ocean-wave forced-coupled mixed formulation
+   LOGICAL , PUBLIC ::   ll_purecpl     !: ocean-atmosphere or ocean-wave pure coupled formulation
    LOGICAL , PUBLIC ::   ln_dm2dc       !: Daily mean to Diurnal Cycle short wave (qsr)
    LOGICAL , PUBLIC ::   ln_rnf         !: runoffs / runoff mouths
Index: branches/UKMO/r6232_HZG_WAVE-coupling/NEMOGCM/NEMO/OPA_SRC/SBC/sbccpl.F90
===================================================================
--- branches/UKMO/r6232_HZG_WAVE-coupling/NEMOGCM/NEMO/OPA_SRC/SBC/sbccpl.F90	(revision 7791)
+++ branches/UKMO/r6232_HZG_WAVE-coupling/NEMOGCM/NEMO/OPA_SRC/SBC/sbccpl.F90	(revision 7792)
@@ -956,4 +956,5 @@
       !!----------------------------------------------------------------------
       USE zdf_oce,  ONLY : ln_zdfqiao
+      USE sbcflx ,  ONLY : ln_shelf_flx, nn_drag, jp_std
 
       INTEGER, INTENT(in)           ::   kt          ! ocean model time step index
@@ -1039,7 +1040,22 @@
       ELSE                                                   !   No dynamical coupling   !
          !                                                   ! ========================= !
+         ! it is possible that the momentum is calculated from the winds (ln_shelf_flx) and a coupled drag coefficient
+         IF( srcv(jpr_wdrag)%laction .AND. ln_shelf_flx .AND. ln_cdgw .AND. nn_drag == jp_std ) THEN
+            DO jj = 1, jpj
+               DO ji = 1, jpi
+                  ! here utau and vtau should contain the wind components as read from the forcing files
+                  zcoef = SQRT(utau(ji,jj)*utau(ji,jj) + vtau(ji,jj)*vtau(ji,jj))
+                  frcv(jpr_otx1)%z3(ji,jj,1) = zrhoa * frcv(jpr_wdrag)%z3(ji,jj,1) * utau(ji,jj) * zcoef
+                  frcv(jpr_oty1)%z3(ji,jj,1) = zrhoa * frcv(jpr_wdrag)%z3(ji,jj,1) * vtau(ji,jj) * zcoef
+                  utau(ji,jj) = frcv(jpr_otx1)%z3(ji,jj,1)
+                  vtau(ji,jj) = frcv(jpr_oty1)%z3(ji,jj,1)
+               END DO
+            END DO
+            llnewtx = .TRUE.
+         ELSE
          frcv(jpr_otx1)%z3(:,:,1) = 0.e0                               ! here simply set to zero 
          frcv(jpr_oty1)%z3(:,:,1) = 0.e0                               ! an external read in a file can be added instead
          llnewtx = .TRUE.
+         ENDIF
          !
       ENDIF
@@ -1061,4 +1077,7 @@
             END DO
             CALL lbc_lnk( frcv(jpr_taum)%z3(:,:,1), 'T', 1. )
+            IF( .NOT. srcv(jpr_otx1)%laction .AND. srcv(jpr_wdrag)%laction .AND. &
+                                ln_shelf_flx .AND. ln_cdgw .AND. nn_drag == jp_std ) &
+               taum(:,:) = frcv(jpr_taum)%z3(:,:,1)
             llnewtau = .TRUE.
          ELSE
@@ -1075,4 +1094,5 @@
       !                                                      ! ========================= !
       !                                                      !      10 m wind speed      !   (wndm)
+      !                                                      !   include wave drag coef  !   (wndm)
       !                                                      ! ========================= !
       !
@@ -1085,5 +1105,9 @@
 !CDIR NOVERRCHK
                DO ji = 1, jpi 
+                  IF( ln_shelf_flx ) THEN   ! the 10 wind module is properly calculated before if ln_shelf_flx
+                     frcv(jpr_w10m)%z3(ji,jj,1) = wndm(ji,jj)
+                  ELSE
                   frcv(jpr_w10m)%z3(ji,jj,1) = SQRT( frcv(jpr_taum)%z3(ji,jj,1) * zcoef )
+                  ENDIF
                END DO
             END DO
@@ -1095,10 +1119,15 @@
       IF( MOD( kt-1, k_fsbc ) == 0 ) THEN
          !
+         ! if ln_wavcpl, the fields already contain the right information from forcing even if not ln_mixcpl
          IF( ln_mixcpl ) THEN
-            utau(:,:) = utau(:,:) * xcplmask(:,:,0) + frcv(jpr_otx1)%z3(:,:,1) * zmsk(:,:)
-            vtau(:,:) = vtau(:,:) * xcplmask(:,:,0) + frcv(jpr_oty1)%z3(:,:,1) * zmsk(:,:)
-            taum(:,:) = taum(:,:) * xcplmask(:,:,0) + frcv(jpr_taum)%z3(:,:,1) * zmsk(:,:)
-            wndm(:,:) = wndm(:,:) * xcplmask(:,:,0) + frcv(jpr_w10m)%z3(:,:,1) * zmsk(:,:)
-         ELSE
+            IF( srcv(jpr_otx1)%laction ) THEN
+               utau(:,:) = utau(:,:) * xcplmask(:,:,0) + frcv(jpr_otx1)%z3(:,:,1) * zmsk(:,:)
+               vtau(:,:) = vtau(:,:) * xcplmask(:,:,0) + frcv(jpr_oty1)%z3(:,:,1) * zmsk(:,:)
+            ENDIF
+            IF( srcv(jpr_taum)%laction )   &
+               taum(:,:) = taum(:,:) * xcplmask(:,:,0) + frcv(jpr_taum)%z3(:,:,1) * zmsk(:,:)
+            IF( srcv(jpr_w10m)%laction )   &
+               wndm(:,:) = wndm(:,:) * xcplmask(:,:,0) + frcv(jpr_w10m)%z3(:,:,1) * zmsk(:,:)
+         ELSE IF( ll_purecpl ) THEN
             utau(:,:) = frcv(jpr_otx1)%z3(:,:,1)
             vtau(:,:) = frcv(jpr_oty1)%z3(:,:,1)
@@ -1167,9 +1196,4 @@
       IF( srcv(jpr_wstrf)%laction .AND. ln_tauoc ) tauoc_wave(:,:) = frcv(jpr_wstrf)%z3(:,:,1) 
       
-      !                                                      ! ========================= !  
-      !                                                      !   Wave drag coefficient   ! 
-      !                                                      ! ========================= !  
-      IF( srcv(jpr_wdrag)%laction .AND. ln_cdgw ) cdn_wave(:,:) = frcv(jpr_wdrag)%z3(:,:,1)
-
       !  Fields received by SAS when OASIS coupling
       !  (arrays no more filled at sbcssm stage)
@@ -1242,5 +1266,5 @@
                CALL ctl_stop( 'sbc_cpl_rcv: wrong definition of sn_rcv_emp%cldes' )
             END SELECT
-         ELSE
+         ELSE IF( ll_purecpl ) THEN
             zemp(:,:) = 0._wp
          ENDIF
@@ -1250,6 +1274,7 @@
          IF( srcv(jpr_cal)%laction )     zemp(:,:) = zemp(:,:) - frcv(jpr_cal)%z3(:,:,1)
          
-         IF( ln_mixcpl ) THEN   ;   emp(:,:) = emp(:,:) * xcplmask(:,:,0) + zemp(:,:) * zmsk(:,:)
-         ELSE                   ;   emp(:,:) =                              zemp(:,:)
+         IF( ln_mixcpl .AND. ( srcv(jpr_oemp)%laction .OR. srcv(jpr_rain)%laction )) THEN
+                                         emp(:,:) = emp(:,:) * xcplmask(:,:,0) + zemp(:,:) * zmsk(:,:)
+         ELSE IF( ll_purecpl ) THEN  ;   emp(:,:) =                              zemp(:,:)
          ENDIF
          !
@@ -1266,6 +1291,7 @@
             ENDIF
          ENDIF
-         IF( ln_mixcpl ) THEN   ;   qns(:,:) = qns(:,:) * xcplmask(:,:,0) + zqns(:,:) * zmsk(:,:)
-         ELSE                   ;   qns(:,:) =                              zqns(:,:)
+         IF( ln_mixcpl .AND. ( srcv(jpr_qnsoce)%laction .OR. srcv(jpr_qnsmix)%laction )) THEN
+                                          qns(:,:) = qns(:,:) * xcplmask(:,:,0) + zqns(:,:) * zmsk(:,:)
+         ELSE IF( ll_purecpl ) THEN   ;   qns(:,:) =                              zqns(:,:)
          ENDIF
 
@@ -1276,6 +1302,7 @@
          ENDIF
          IF( ln_dm2dc .AND. ln_cpl )   zqsr(:,:) = sbc_dcy( zqsr )   ! modify qsr to include the diurnal cycle
-         IF( ln_mixcpl ) THEN   ;   qsr(:,:) = qsr(:,:) * xcplmask(:,:,0) + zqsr(:,:) * zmsk(:,:)
-         ELSE                   ;   qsr(:,:) =                              zqsr(:,:)
+         IF( ln_mixcpl .AND. ( srcv(jpr_qsroce)%laction .OR. srcv(jpr_qsrmix)%laction )) THEN
+                                          qsr(:,:) = qsr(:,:) * xcplmask(:,:,0) + zqsr(:,:) * zmsk(:,:)
+         ELSE IF( ll_purecpl ) THEN   ;   qsr(:,:) =                              zqsr(:,:)
          ENDIF
          !
Index: branches/UKMO/r6232_HZG_WAVE-coupling/NEMOGCM/NEMO/OPA_SRC/SBC/sbcflx.F90
===================================================================
--- branches/UKMO/r6232_HZG_WAVE-coupling/NEMOGCM/NEMO/OPA_SRC/SBC/sbcflx.F90	(revision 7791)
+++ branches/UKMO/r6232_HZG_WAVE-coupling/NEMOGCM/NEMO/OPA_SRC/SBC/sbcflx.F90	(revision 7792)
@@ -22,4 +22,5 @@
    USE lib_mpp         ! distribued memory computing library
    USE lbclnk          ! ocean lateral boundary conditions (or mpp link)
+   USE sbcwave         ! wave physics
 
    IMPLICIT NONE
@@ -32,7 +33,16 @@
    INTEGER , PARAMETER ::   jp_vtau = 2   ! index of wind stress (j-component) file
    INTEGER , PARAMETER ::   jp_qtot = 3   ! index of total (non solar+solar) heat file
+
+   ! These lines are here just to allow merging with another branch
+   INTEGER, PUBLIC            ::   nn_drag        ! type of formula to calculate wind stress from wind components
+   INTEGER, PUBLIC, PARAMETER ::   jp_ukmo  = 0        ! UKMO SHELF formulation
+   INTEGER, PUBLIC, PARAMETER ::   jp_std   = 1        ! standard formulation with forced or coupled drag coefficient 
+   INTEGER, PUBLIC, PARAMETER ::   jp_const = 2        ! standard formulation with constant drag coefficient 
+
    INTEGER , PARAMETER ::   jp_qsr  = 4   ! index of solar heat file
    INTEGER , PARAMETER ::   jp_emp  = 5   ! index of evaporation-precipation file
    TYPE(FLD), ALLOCATABLE, DIMENSION(:) ::   sf    ! structure of input fields (file informations, fields read)
+   LOGICAL , PUBLIC    ::   ln_shelf_flx = .FALSE. ! UKMO SHELF specific flux flag
+   INTEGER             ::   jpfld_local   ! maximum number of files to read (locally modified depending on ln_shelf_flx) 
 
    !! * Substitutions
@@ -81,7 +91,9 @@
       REAL(wp) ::   zrhoa  = 1.22         ! Air density kg/m3
       REAL(wp) ::   zcdrag = 1.5e-3       ! drag coefficient
+      REAL(wp) ::   totwind               ! UKMO SHELF: Module of wind speed
       REAL(wp) ::   ztx, zty, zmod, zcoef ! temporary variables
       !!
       CHARACTER(len=100) ::  cn_dir                               ! Root directory for location of flx files
+      NAMELIST/namsbc_flx/ ln_shelf_flx                           ! Put here to allow merging with another UKMO branch
       TYPE(FLD_N), DIMENSION(jpfld) ::   slf_i                    ! array of namelist information structures
       TYPE(FLD_N) ::   sn_utau, sn_vtau, sn_qtot, sn_qsr, sn_emp  ! informations about the fields to be read
@@ -140,4 +152,36 @@
             END DO
          END DO
+         !                                                        ! add modification due to drag coefficient read from wave forcing
+         !                                                        ! this code is inefficient but put here to allow merging with another UKMO branch
+         IF( ln_shelf_flx ) THEN
+            IF( ln_cdgw .AND. nn_drag == jp_std ) THEN
+               IF( cpl_wdrag ) THEN 
+                  ! reset utau and vtau to the wind components: the momentum will
+                  ! be calculated from the coupled value of the drag coefficient
+                  DO jj = 1, jpj
+                     DO ji = 1, jpi
+                        utau(ji,jj) = sf(jp_utau)%fnow(ji,jj,1)
+                        vtau(ji,jj) = sf(jp_vtau)%fnow(ji,jj,1)
+                     END DO
+                  END DO
+               ELSE
+                  DO jj = 1, jpj
+                     DO ji = 1, jpi
+                        totwind = sqrt((sf(jp_utau)%fnow(ji,jj,1))**2.0 + (sf(jp_vtau)%fnow(ji,jj,1))**2.0)
+                        utau(ji,jj) = zrhoa * cdn_wave(ji,jj) * sf(jp_utau)%fnow(ji,jj,1) * totwind
+                        vtau(ji,jj) = zrhoa * cdn_wave(ji,jj) * sf(jp_vtau)%fnow(ji,jj,1) * totwind
+                     END DO
+                  END DO
+               ENDIF
+            ELSE IF( nn_drag == jp_const ) THEN
+               DO jj = 1, jpj
+                  DO ji = 1, jpi
+                     totwind = sqrt((sf(jp_utau)%fnow(ji,jj,1))**2.0 + (sf(jp_vtau)%fnow(ji,jj,1))**2.0)
+                     utau(ji,jj) = zrhoa * zcdrag * sf(jp_utau)%fnow(ji,jj,1) * totwind
+                     vtau(ji,jj) = zrhoa * zcdrag * sf(jp_vtau)%fnow(ji,jj,1) * totwind
+                  END DO
+               END DO
+            ENDIF
+         ENDIF
          !                                                        ! add to qns the heat due to e-p
          qns(:,:) = qns(:,:) - emp(:,:) * sst_m(:,:) * rcp        ! mass flux is at SST
@@ -153,5 +197,11 @@
                zmod = 0.5 * SQRT( ztx * ztx + zty * zty )
                taum(ji,jj) = zmod
+               IF( ln_shelf_flx ) THEN
+                  ztx = sf(jp_utau)%fnow(ji-1,jj  ) + sf(jp_utau)%fnow(ji,jj)
+                  zty = sf(jp_vtau)%fnow(ji  ,jj-1) + sf(jp_vtau)%fnow(ji,jj)
+                  wndm(ji,jj) = 0.5 * SQRT( ztx * ztx + zty * zty )
+               ELSE
                wndm(ji,jj) = SQRT( zmod * zcoef )
+               ENDIF
             END DO
          END DO
Index: branches/UKMO/r6232_HZG_WAVE-coupling/NEMOGCM/NEMO/OPA_SRC/SBC/sbcmod.F90
===================================================================
--- branches/UKMO/r6232_HZG_WAVE-coupling/NEMOGCM/NEMO/OPA_SRC/SBC/sbcmod.F90	(revision 7791)
+++ branches/UKMO/r6232_HZG_WAVE-coupling/NEMOGCM/NEMO/OPA_SRC/SBC/sbcmod.F90	(revision 7792)
@@ -89,8 +89,8 @@
          &             ln_blk_mfs, ln_apr_dyn, nn_ice, nn_ice_embd, ln_dm2dc   , ln_rnf   ,   &
          &             ln_ssr    , nn_isf    , nn_fwb, ln_cdgw    , ln_wave    , ln_sdw   ,   &
-         &             ln_tauoc  , ln_stcor  , nn_lsm, nn_limflx , nn_components, ln_cpl
+         &             ln_tauoc  , ln_stcor  , nn_lsm, nn_limflx , nn_components, ln_cpl  ,   &
+         &             ln_wavcpl , nn_drag
       INTEGER  ::   ios
       INTEGER  ::   ierr, ierr0, ierr1, ierr2, ierr3, jpm
-      LOGICAL  ::   ll_purecpl
       !!----------------------------------------------------------------------
 
@@ -131,10 +131,11 @@
          WRITE(numout,*) '              MFS  bulk  formulation                     ln_blk_mfs  = ', ln_blk_mfs
          WRITE(numout,*) '              ocean-atmosphere coupled formulation       ln_cpl      = ', ln_cpl
-         WRITE(numout,*) '              forced-coupled mixed formulation           ln_mixcpl   = ', ln_mixcpl
+         WRITE(numout,*) '              forced-coupled atm mixed formulation       ln_mixcpl   = ', ln_mixcpl
+         WRITE(numout,*) '              forced-coupled wav mixed formulation       ln_wavcpl   = ', ln_wavcpl
          WRITE(numout,*) '              wave physics                               ln_wave     = ', ln_wave 
          WRITE(numout,*) '                 Stokes drift corr. to vert. velocity    ln_sdw      = ', ln_sdw 
          WRITE(numout,*) '                 wave modified ocean stress              ln_tauoc    = ', ln_tauoc 
          WRITE(numout,*) '                 Stokes coriolis term                    ln_stcor    = ', ln_stcor 
-         WRITE(numout,*) '                 neutral drag coefficient (CORE, MFS)    ln_cdgw     = ', ln_cdgw
+         WRITE(numout,*) '                 neutral drag coefficient                ln_cdgw     = ', ln_cdgw
          WRITE(numout,*) '              OASIS coupling (with atm or sas)           lk_oasis    = ', lk_oasis
          WRITE(numout,*) '              components of your executable              nn_components = ', nn_components
@@ -151,4 +152,5 @@
          WRITE(numout,*) '              closed sea (=0/1) (set in namdom)          nn_closea   = ', nn_closea
          WRITE(numout,*) '              n. of iterations if land-sea-mask applied  nn_lsm      = ', nn_lsm
+         WRITE(numout,*) '              momentum formulation (ln_shelf_flx)        nn_drag     = ', nn_drag
       ENDIF
 
@@ -169,14 +171,14 @@
       IF ( nn_components == jp_iam_opa .AND. ln_cpl )   &
          &      CALL ctl_stop( 'STOP', 'sbc_init : OPA-SAS coupled via OASIS, but ln_cpl = T in OPA' )
-      IF ( nn_components == jp_iam_opa .AND. ln_mixcpl )   &
-         &      CALL ctl_stop( 'STOP', 'sbc_init : OPA-SAS coupled via OASIS, but ln_mixcpl = T in OPA' )
+      IF ( nn_components == jp_iam_opa .AND. ( ln_mixcpl .OR. ln_wavcpl) )   &
+         &      CALL ctl_stop( 'STOP', 'sbc_init : OPA-SAS coupled via OASIS, but ln_mixcpl or ln_wavcpl = T in OPA' )
       IF ( ln_cpl .AND. .NOT. lk_oasis )    &
          &      CALL ctl_stop( 'STOP', 'sbc_init : OASIS-coupled atmosphere model, but key_oasis3 disabled' )
-      IF( ln_mixcpl .AND. .NOT. lk_oasis )    &
-         &      CALL ctl_stop( 'the forced-coupled mixed mode (ln_mixcpl) requires the cpp key key_oasis3' )
-      IF( ln_mixcpl .AND. .NOT. ln_cpl )    &
-         &      CALL ctl_stop( 'the forced-coupled mixed mode (ln_mixcpl) requires ln_cpl = T' )
-      IF( ln_mixcpl .AND. nn_components /= jp_iam_nemo )    &
-         &      CALL ctl_stop( 'the forced-coupled mixed mode (ln_mixcpl) is not yet working with sas-opa coupling via oasis' )
+      IF( ( ln_mixcpl .OR. ln_wavcpl ) .AND. .NOT. lk_oasis )    &
+         &      CALL ctl_stop( 'the forced-coupled mixed mode (ln_mixcpl or ln_wavcpl) requires the cpp key key_oasis3' )
+      IF( ( ln_mixcpl .OR. ln_wavcpl ) .AND. .NOT. ln_cpl )    &
+         &      CALL ctl_stop( 'the forced-coupled mixed mode (ln_mixcpl or ln_wavcpl) requires ln_cpl = T' )
+      IF( ( ln_mixcpl .OR. ln_wavcpl ) .AND. nn_components /= jp_iam_nemo )    &
+         &      CALL ctl_stop( 'the forced-coupled mixed mode (ln_mixcpl or ln_wavcpl) is not yet working with sas-opa coupling via oasis' )
 
       !                              ! allocate sbc arrays
@@ -224,7 +226,4 @@
          IF ( .NOT.(ln_cdgw .OR. ln_sdw .OR. ln_tauoc .OR. ln_stcor ) )   THEN  
              CALL ctl_warn( 'Ask for wave coupling but ln_cdgw=F, ln_sdw=F, ln_tauoc=F, ln_stcor=F') 
-         !drag coefficient read from wave model definable only with mfs bulk formulae and core
-         ELSEIF (ln_cdgw .AND. .NOT.(ln_blk_mfs .OR. ln_blk_core) )       THEN       
-             CALL ctl_stop( 'drag coefficient read from wave model definable only with mfs bulk formulae and core')
          ELSEIF (ln_stcor .AND. .NOT. ln_sdw) THEN  
              CALL ctl_stop( 'Stokes-Coriolis term calculated only if activated Stokes Drift ln_sdw=T')
@@ -239,5 +238,5 @@
       ENDIF 
       !                          ! Choice of the Surface Boudary Condition (set nsbc)
-      ll_purecpl = ln_cpl .AND. .NOT. ln_mixcpl
+      ll_purecpl = ln_cpl .AND. .NOT. ln_mixcpl .AND. .NOT. ln_wavcpl
       !
       icpt = 0
@@ -271,5 +270,6 @@
          IF( nsbc == jp_mfs     )   WRITE(numout,*) '              MFS Bulk formulation'
          IF( nsbc == jp_none    )   WRITE(numout,*) '              OPA coupled to SAS via oasis'
-         IF( ln_mixcpl          )   WRITE(numout,*) '              + forced-coupled mixed formulation'
+         IF( ln_mixcpl          )   WRITE(numout,*) '              + forced-coupled mixed atm formulation'
+         IF( ln_wavcpl          )   WRITE(numout,*) '              + forced-coupled mixed wav formulation'
          IF( nn_components/= jp_iam_nemo )  &
             &                       WRITE(numout,*) '              + OASIS coupled SAS'
@@ -395,5 +395,5 @@
       END SELECT
 
-      IF( ln_mixcpl )        CALL sbc_cpl_rcv ( kt, nn_fsbc, nn_ice )   ! forced-coupled mixed formulation after forcing
+      IF( ln_mixcpl .OR. ln_wavcpl )  CALL sbc_cpl_rcv ( kt, nn_fsbc, nn_ice )   ! forced-coupled mixed formulation after forcing
 
       IF ( ln_wave .AND. ln_tauoc) THEN                 ! Wave stress subctracted 
Index: branches/UKMO/r6232_HZG_WAVE-coupling/NEMOGCM/NEMO/OPA_SRC/SBC/sbcwave.F90
===================================================================
--- branches/UKMO/r6232_HZG_WAVE-coupling/NEMOGCM/NEMO/OPA_SRC/SBC/sbcwave.F90	(revision 7791)
+++ branches/UKMO/r6232_HZG_WAVE-coupling/NEMOGCM/NEMO/OPA_SRC/SBC/sbcwave.F90	(revision 7792)
@@ -64,5 +64,4 @@
    REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:,:,:) ::   usd  , vsd  , wsd   !: Stokes drift velocities at u-, v- & w-points, resp.
 
-   !! * Substitutions
 #  include "vectopt_loop_substitute.h90"
    !!----------------------------------------------------------------------
@@ -210,4 +209,8 @@
          CALL fld_read( kt, nn_fsbc, sf_cd )             ! read from external forcing
          cdn_wave(:,:) = sf_cd(1)%fnow(:,:,1)
+         ! check that the drag coefficient contains proper information even if
+         ! the masks do not match - the momentum stress is not masked!
+         WHERE( cdn_wave < 0.0 ) cdn_wave = 1.5e-3
+         WHERE( cdn_wave > 1.0 ) cdn_wave = 1.5e-3
       ENDIF
 
@@ -215,4 +218,6 @@
          CALL fld_read( kt, nn_fsbc, sf_tauoc )          ! read wave norm stress from external forcing
          tauoc_wave(:,:) = sf_tauoc(1)%fnow(:,:,1)
+         WHERE( tauoc_wave < -100.0 ) tauoc_wave = 1.0
+         WHERE( tauoc_wave >  100.0 ) tauoc_wave = 1.0
       ENDIF
 
