Index: trunk/NEMO/OPA_SRC/SBC/sbc_ice.F90
===================================================================
--- trunk/NEMO/OPA_SRC/SBC/sbc_ice.F90	(revision 1466)
+++ trunk/NEMO/OPA_SRC/SBC/sbc_ice.F90	(revision 1467)
@@ -24,5 +24,5 @@
    LOGICAL         , PUBLIC, PARAMETER ::   lk_lim2        = .TRUE.    !: LIM-2 ice model
    LOGICAL         , PUBLIC, PARAMETER ::   lk_lim3        = .FALSE.   !: no LIM-3
-   CHARACTER(len=1), PUBLIC            ::   cigr_type      = 'B'       !: 'B'-grid ice-velocity
+   CHARACTER(len=1), PUBLIC            ::   cigr_type      = 'I'       !: 'I'-grid ice-velocity (B-grid lower left corner)
 # endif
 # if defined  key_lim3
Index: trunk/NEMO/OPA_SRC/SBC/sbccpl.F90
===================================================================
--- trunk/NEMO/OPA_SRC/SBC/sbccpl.F90	(revision 1466)
+++ trunk/NEMO/OPA_SRC/SBC/sbccpl.F90	(revision 1467)
@@ -731,5 +731,5 @@
          !                                                  j+1   j     -----V---F
          ! ice stress on ice velocity point (cigr_type)                  !       |
-         ! (C-grid ==>(U,V) or B-grid ==> I)                      j      |   T   U
+         ! (C-grid ==>(U,V) or B-grid ==> I or F)                 j      |   T   U
          !                                                               |       |
          !                                                   j    j-1   -I-------|
@@ -739,5 +739,5 @@
          SELECT CASE ( cigr_type )
             !
-         CASE( 'B' )                                         ! B-grid ==> I
+         CASE( 'I' )                                         ! B-grid ==> I
             SELECT CASE ( srcv(jpr_itx1)%clgrid )
             CASE( 'U' )
@@ -770,4 +770,37 @@
             IF( srcv(jpr_itx1)%clgrid /= 'I' ) THEN 
                CALL lbc_lnk( p_taui, 'I',  -1. )   ;   CALL lbc_lnk( p_tauj, 'I',  -1. )
+            ENDIF
+            !
+         CASE( 'F' )                                         ! B-grid ==> F
+            SELECT CASE ( srcv(jpr_itx1)%clgrid )
+            CASE( 'U' )
+               DO jj = 2, jpjm1                                   ! (U,V) ==> F
+                  DO ji = fs_2, fs_jpim1   ! vector opt.
+                     p_taui(ji,jj) = 0.5 * ( frcv(ji,jj,jpr_itx1) + frcv(ji  ,jj+1,jpr_itx1) )
+                     p_tauj(ji,jj) = 0.5 * ( frcv(ji,jj,jpr_ity1) + frcv(ji+1,jj  ,jpr_ity1) )
+                  END DO
+               END DO
+            CASE( 'I' )
+               DO jj = 2, jpjm1                                   ! I ==> F
+                  DO ji = fs_2, fs_jpim1   ! vector opt.
+                     p_taui(ji,jj) = frcv(ji+1,jj+1,jpr_itx1) 
+                     p_tauj(ji,jj) = frcv(ji+1,jj+1,jpr_ity1)  
+                  END DO
+               END DO
+            CASE( 'T' )
+               DO jj = 2, jpjm1                                   ! T ==> F
+                  DO ji = fs_2, fs_jpim1   ! vector opt.
+                     p_taui(ji,jj) = 0.25 * ( frcv(ji,jj  ,jpr_itx1) + frcv(ji+1,jj  ,jpr_itx1)   &
+                        &                   + frcv(ji,jj+1,jpr_itx1) + frcv(ji+1,jj+1,jpr_itx1) ) 
+                     p_tauj(ji,jj) = 0.25 * ( frcv(ji,jj  ,jpr_ity1) + frcv(ji+1,jj  ,jpr_ity1)   &
+                        &                   + frcv(ji,jj+1,jpr_ity1) + frcv(ji+1,jj+1,jpr_ity1) )
+                  END DO
+               END DO
+            CASE( 'F' )
+               p_taui(:,:) = frcv(:,:,jpr_itx1)                   ! F ==> F
+               p_tauj(:,:) = frcv(:,:,jpr_ity1)
+            END SELECT
+            IF( srcv(jpr_itx1)%clgrid /= 'F' ) THEN 
+               CALL lbc_lnk( p_taui, 'F',  -1. )   ;   CALL lbc_lnk( p_tauj, 'F',  -1. )
             ENDIF
             !
@@ -1037,6 +1070,15 @@
       IF( ssnd(jps_ocx1)%laction ) THEN                      !      Surface current      !
          !                                                   ! ------------------------- !
+         !    
+         !                                                  j+1   j     -----V---F
+         ! surfacz velocity always sent from T point                     !       |
+         !                                                        j      |   T   U
+         !                                                               |       |
+         !                                                   j    j-1   -I-------|
+         !                                               (for I)         |       |
+         !                                                              i-1  i   i
+         !                                                               i      i+1 (for I)
          SELECT CASE( TRIM( cn_snd_crt(1) ) )
-         CASE( 'oce only'             )
+         CASE( 'oce only'             )      ! C-grid ==> T
             DO jj = 2, jpjm1
                DO ji = fs_2, fs_jpim1   ! vector opt.
@@ -1046,5 +1088,6 @@
             END DO
          CASE( 'weighted oce and ice' )   
-            IF( cigr_type == 'C' ) THEN      ! 'C'-grid ice velocity
+            SELECT CASE ( cigr_type )
+            CASE( 'C' )                      ! Ocean and Ice on C-grid ==> T
                DO jj = 2, jpjm1
                   DO ji = fs_2, fs_jpim1   ! vector opt.
@@ -1055,5 +1098,5 @@
                   END DO
                END DO
-            ELSE                            ! 'B'-grid ice velocity
+            CASE( 'I' )                      ! Ocean on C grid, Ice on I-point (B-grid) ==> T
                DO jj = 2, jpjm1
                   DO ji = fs_2, fs_jpim1   ! vector opt.
@@ -1066,8 +1109,20 @@
                   END DO
                END DO
-            ENDIF
+            CASE( 'F' )                      ! Ocean on C grid, Ice on F-point (B-grid) ==> T
+               DO jj = 2, jpjm1
+                  DO ji = fs_2, fs_jpim1   ! vector opt.
+                     zotx1(ji,jj) = 0.5  * ( un(ji,jj,1)          + un(ji-1,jj-1,1)    ) * zfr_l(ji,jj)  
+                     zoty1(ji,jj) = 0.5  * ( vn(ji,jj,1)          + vn(ji  ,jj-1,1)    ) * zfr_l(ji,jj)  
+                     zitx1(ji,jj) = 0.25 * ( utaui_ice(ji-1,jj-1) + utaui_ice(ji,jj-1)   &
+                        &                  + utaui_ice(ji-1,jj  ) + utaui_ice(ji,jj  ) ) * fr_i(ji,jj)
+                     zity1(ji,jj) = 0.25 * ( vtaui_ice(ji-1,jj-1) + vtaui_ice(ji,jj-1)   &
+                        &                  + vtaui_ice(ji-1,jj  ) + vtaui_ice(ji,jj  ) ) * fr_i(ji,jj)
+                  END DO
+               END DO
+            END SELECT
             CALL lbc_lnk( zitx1, 'T', -1. )   ;   CALL lbc_lnk( zity1, 'T', -1. )
          CASE( 'mixed oce-ice'        )
-            IF( cigr_type == 'C' ) THEN      ! 'C'-grid ice velocity
+            SELECT CASE ( cigr_type )
+            CASE( 'C' )                      ! Ocean and Ice on C-grid ==> T
                DO jj = 2, jpjm1
                   DO ji = fs_2, fs_jpim1   ! vector opt.
@@ -1078,5 +1133,5 @@
                   END DO
                END DO
-            ELSE                            ! 'B'-grid ice velocity
+            CASE( 'I' )                      ! Ocean on C grid, Ice on I-point (B-grid) ==> T
                DO jj = 2, jpjm1
                   DO ji = fs_2, fs_jpim1   ! vector opt.
@@ -1089,5 +1144,16 @@
                   END DO
                END DO
-            ENDIF
+            CASE( 'F' )                      ! Ocean on C grid, Ice on F-point (B-grid) ==> T
+               DO jj = 2, jpjm1
+                  DO ji = fs_2, fs_jpim1   ! vector opt.
+                     zotx1(ji,jj) = 0.5  * ( un(ji,jj,1)          + un(ji-1,jj-1,1)    ) * zfr_l(ji,jj) &   
+                        &         + 0.25 * ( utaui_ice(ji-1,jj-1) + utaui_ice(ji,jj-1)   &
+                        &                  + utaui_ice(ji-1,jj  ) + utaui_ice(ji,jj  ) ) *  fr_i(ji,jj)
+                     zoty1(ji,jj) = 0.5  * ( vn(ji,jj,1)          + vn(ji  ,jj-1,1)    ) * zfr_l(ji,jj) & 
+                        &         + 0.25 * ( vtaui_ice(ji-1,jj-1) + vtaui_ice(ji,jj-1)   &
+                        &                  + vtaui_ice(ji-1,jj  ) + vtaui_ice(ji,jj  ) ) *  fr_i(ji,jj)
+                  END DO
+               END DO
+            END SELECT
          END SELECT
          CALL lbc_lnk( zotx1, 'T', -1. )   ;   CALL lbc_lnk( zoty1, 'T', -1. )
