Index: /branches/UKMO/dev_r6912_GO6_package/NEMOGCM/NEMO/OPA_SRC/IOM/restart.F90
===================================================================
--- /branches/UKMO/dev_r6912_GO6_package/NEMOGCM/NEMO/OPA_SRC/IOM/restart.F90	(revision 9131)
+++ /branches/UKMO/dev_r6912_GO6_package/NEMOGCM/NEMO/OPA_SRC/IOM/restart.F90	(revision 9132)
@@ -154,4 +154,5 @@
                      CALL iom_rstput( kt, nitrst, numrow, 'sshn'   , sshn      )
                      CALL iom_rstput( kt, nitrst, numrow, 'rhop'   , rhop      )
+                     CALL iom_rstput( kt, nitrst, numrow, 'fromCICE'   , vcice      )
 #if defined key_zdfkpp
                      CALL iom_rstput( kt, nitrst, numrow, 'rhd'    , rhd       )
Index: /branches/UKMO/dev_r6912_GO6_package/NEMOGCM/NEMO/OPA_SRC/LBC/mppini.F90
===================================================================
--- /branches/UKMO/dev_r6912_GO6_package/NEMOGCM/NEMO/OPA_SRC/LBC/mppini.F90	(revision 9131)
+++ /branches/UKMO/dev_r6912_GO6_package/NEMOGCM/NEMO/OPA_SRC/LBC/mppini.F90	(revision 9132)
@@ -154,5 +154,5 @@
       IF(  iresti == 0 )   iresti = jpni
 
-#if defined key_nemocice_decomp
+!#if defined key_nemocice_decomp
       ! In order to match CICE the size of domains in NEMO has to be changed
       ! The last line of blocks (west) will have fewer points
@@ -165,16 +165,16 @@
       END DO
 
-#else
-
-      DO jj = 1, jpnj
-         DO ji = 1, iresti
-            ilcit(ji,jj) = jpi
-         END DO
-         DO ji = iresti+1, jpni
-            ilcit(ji,jj) = jpi -1
-         END DO
-      END DO
-      
-#endif
+!#else
+
+!      DO jj = 1, jpnj
+!         DO ji = 1, iresti
+!            ilcit(ji,jj) = jpi
+!         END DO
+!         DO ji = iresti+1, jpni
+!            ilcit(ji,jj) = jpi -1
+!         END DO
+!      END DO
+      
+!#endif
       nfilcit(:,:) = ilcit(:,:)
       IF( irestj == 0 )   irestj = jpnj
Index: /branches/UKMO/dev_r6912_GO6_package/NEMOGCM/NEMO/OPA_SRC/LBC/mppini_2.h90
===================================================================
--- /branches/UKMO/dev_r6912_GO6_package/NEMOGCM/NEMO/OPA_SRC/LBC/mppini_2.h90	(revision 9131)
+++ /branches/UKMO/dev_r6912_GO6_package/NEMOGCM/NEMO/OPA_SRC/LBC/mppini_2.h90	(revision 9132)
@@ -152,5 +152,5 @@
       irestj = 1 + MOD( jpjglo - nrecj -1 , jpnj )
 
-#if defined key_nemocice_decomp
+!#if defined key_nemocice_decomp
       ! Change padding to be consistent with CICE
       ilci(1:jpni-1      ,:) = jpi
@@ -159,11 +159,11 @@
       ilcj(:,      1:jpnj-1) = jpj
       ilcj(:,          jpnj) = jpjglo - (jpnj - 1) * (jpj - nrecj)
-#else
-      ilci(1:iresti      ,:) = jpi
-      ilci(iresti+1:jpni ,:) = jpi-1
-
-      ilcj(:,      1:irestj) = jpj
-      ilcj(:, irestj+1:jpnj) = jpj-1
-#endif
+!#else
+!      ilci(1:iresti      ,:) = jpi
+!      ilci(iresti+1:jpni ,:) = jpi-1
+!
+!      ilcj(:,      1:irestj) = jpj
+!      ilcj(:, irestj+1:jpnj) = jpj-1
+!#endif
 
       nfilcit(:,:) = ilci(:,:)
Index: /branches/UKMO/dev_r6912_GO6_package/NEMOGCM/NEMO/OPA_SRC/SBC/cpl_oasis3.F90
===================================================================
--- /branches/UKMO/dev_r6912_GO6_package/NEMOGCM/NEMO/OPA_SRC/SBC/cpl_oasis3.F90	(revision 9131)
+++ /branches/UKMO/dev_r6912_GO6_package/NEMOGCM/NEMO/OPA_SRC/SBC/cpl_oasis3.F90	(revision 9132)
@@ -41,4 +41,5 @@
    PUBLIC   cpl_freq
    PUBLIC   cpl_finalize
+   INTEGER, PUBLIC ::              paral(5)       ! OASIS3 box partition
 
    INTEGER, PUBLIC            ::   OASIS_Rcv  = 1    !: return code if received field
@@ -71,5 +72,5 @@
    TYPE, PUBLIC ::   FLD_CPL               !: Type for coupling field information
       LOGICAL               ::   laction   ! To be coupled or not
-      CHARACTER(len = 8)    ::   clname    ! Name of the coupling field   
+      CHARACTER(len = 80)   ::   clname    ! Name of the coupling field   
       CHARACTER(len = 1)    ::   clgrid    ! Grid type  
       REAL(wp)              ::   nsgn      ! Control of the sign change
@@ -80,4 +81,5 @@
 
    TYPE(FLD_CPL), DIMENSION(nmaxfld), PUBLIC ::   srcv, ssnd   !: Coupling fields
+   TYPE(FLD_CPL), DIMENSION(nmaxfld), PUBLIC ::   srcv_c2n, ssnd_n2c
 
    REAL(wp), DIMENSION(:,:), ALLOCATABLE ::   exfld   ! Temporary buffer for receiving
@@ -137,5 +139,5 @@
       !
       INTEGER :: id_part
-      INTEGER :: paral(5)       ! OASIS3 box partition
+!     INTEGER :: paral(5)       ! OASIS3 box partition
       INTEGER :: ishape(2,2)    ! shape of arrays passed to PSMILe
       INTEGER :: ji,jc,jm       ! local loop indicees
@@ -145,5 +147,5 @@
 
       IF(lwp) WRITE(numout,*)
-      IF(lwp) WRITE(numout,*) 'cpl_define : initialization in coupled ocean/atmosphere case'
+      IF(lwp) WRITE(numout,*) 'cpl_define : initialization in coupled case'
       IF(lwp) WRITE(numout,*) '~~~~~~~~~~~~~~~~~'
       IF(lwp) WRITE(numout,*)
@@ -188,5 +190,4 @@
       paral(4) = nlej-nldj+1                                    ! local extent in j
       paral(5) = jpiglo                                         ! global extent in x
-      
       IF( ln_ctl ) THEN
          WRITE(numout,*) ' multiexchg: paral (1:5)', paral
@@ -196,9 +197,9 @@
       ENDIF
       
-      CALL oasis_def_partition ( id_part, paral, nerror )
+      CALL oasis_def_partition ( id_part, paral, nerror, name="oce" )
       !
       ! ... Announce send variables. 
       !
-      ssnd(:)%ncplmodel = kcplmodel
+      ssnd(:)%ncplmodel = 1
       !
       DO ji = 1, ksnd
@@ -238,4 +239,36 @@
                   IF( ln_ctl .AND. ssnd(ji)%nid(jc,jm) /= -1 ) WRITE(numout,*) "variable defined in the namcouple"
                   IF( ln_ctl .AND. ssnd(ji)%nid(jc,jm) == -1 ) WRITE(numout,*) "variable NOT defined in the namcouple"
+               END DO
+            END DO
+         ENDIF
+
+         IF ( ssnd_n2c(ji)%laction ) THEN
+            IF( ssnd_n2c(ji)%nct > nmaxcat ) THEN
+               CALL oasis_abort ( ncomp_id, 'cpl_define', 'Number of categories of '//   &
+                  &              TRIM(ssnd_n2c(ji)%clname)//' is larger than nmaxcat, increase nmaxcat' )
+               RETURN
+            ENDIF
+            DO jc = 1, ssnd_n2c(ji)%nct
+               DO jm = 1, kcplmodel
+
+                  IF ( ssnd_n2c(ji)%nct .GT. 1 ) THEN
+                     WRITE(cli2,'(i2.2)') jc
+                     zclname = TRIM(ssnd_n2c(ji)%clname)//'_cat'//cli2
+                  ELSE
+                     zclname = ssnd_n2c(ji)%clname
+                  ENDIF
+                  IF ( kcplmodel  > 1 ) THEN
+                     WRITE(cli2,'(i2.2)') jm
+                     zclname = 'model'//cli2//'_'//TRIM(zclname)
+                  ENDIF
+                  IF( ln_ctl ) WRITE(numout,*) "Define", ji, jc, jm, " "//TRIM(zclname), " for ", OASIS_Out
+                  CALL oasis_def_var (ssnd_n2c(ji)%nid(jc,jm), zclname, id_part   , (/ 2, 0 /),   &
+                     &                OASIS_Out          , ishape , OASIS_REAL, nerror )
+                  IF ( nerror /= OASIS_Ok ) THEN
+                     WRITE(numout,*) 'Failed to define transient ', ji, jc, jm, " "//TRIM(zclname)
+                     CALL oasis_abort ( ssnd_n2c(ji)%nid(jc,jm), 'cpl_define', 'Failure in oasis_def_var' )
+                  ENDIF
+                  IF( ln_ctl .AND. ssnd_n2c(ji)%nid(jc,jm) /= -1 ) WRITE(numout,*) "variable defined in the namcouple"
+                  IF( ln_ctl .AND. ssnd_n2c(ji)%nid(jc,jm) == -1 ) WRITE(numout,*) "variable NOT defined in the namcouple"
                END DO
             END DO
@@ -287,4 +320,38 @@
             END DO
          ENDIF
+
+         IF ( srcv_c2n(ji)%laction ) THEN 
+            
+            IF( srcv_c2n(ji)%nct > nmaxcat ) THEN
+               CALL oasis_abort ( ncomp_id, 'cpl_define', 'Number of categories of '//   &
+                  &              TRIM(srcv_c2n(ji)%clname)//' is larger than nmaxcat, increase nmaxcat' )
+               RETURN
+            ENDIF
+            
+            DO jc = 1, srcv_c2n(ji)%nct
+               DO jm = 1, kcplmodel
+                  
+                  IF ( srcv_c2n(ji)%nct .GT. 1 ) THEN
+                     WRITE(cli2,'(i2.2)') jc
+                     zclname = TRIM(srcv_c2n(ji)%clname)//'_cat'//cli2
+                  ELSE
+                     zclname = srcv_c2n(ji)%clname
+                  ENDIF
+                  IF ( kcplmodel  > 1 ) THEN
+                     WRITE(cli2,'(i2.2)') jm
+                     zclname = 'model'//cli2//'_'//TRIM(zclname)
+                  ENDIF
+                  IF( ln_ctl ) WRITE(numout,*) "Define", ji, jc, jm, " "//TRIM(zclname), " for ", OASIS_In
+                  CALL oasis_def_var (srcv_c2n(ji)%nid(jc,jm), zclname, id_part   , (/ 2, 0 /),   &
+                     &                OASIS_In           , ishape , OASIS_REAL, nerror )
+                  IF ( nerror /= OASIS_Ok ) THEN
+                     WRITE(numout,*) 'Failed to define transient ', ji, jc, jm, " "//TRIM(zclname)
+                     CALL oasis_abort ( srcv_c2n(ji)%nid(jc,jm), 'cpl_define', 'Failure in oasis_def_var' )
+                  ENDIF
+                  IF( ln_ctl .AND. srcv_c2n(ji)%nid(jc,jm) /= -1 ) WRITE(numout,*) "variable defined in the namcouple"
+                  IF( ln_ctl .AND. srcv_c2n(ji)%nid(jc,jm) == -1 ) WRITE(numout,*) "variable NOT defined in the namcouple"
+               END DO
+            END DO
+         ENDIF
       END DO
       
@@ -293,6 +360,6 @@
       !------------------------------------------------------------------
       
-      CALL oasis_enddef(nerror)
-      IF( nerror /= OASIS_Ok )   CALL oasis_abort ( ncomp_id, 'cpl_define', 'Failure in oasis_enddef')
+!     CALL oasis_enddef(nerror)
+!     IF( nerror /= OASIS_Ok )   CALL oasis_abort ( ncomp_id, 'cpl_define', 'Failure in oasis_enddef')
       !
    END SUBROUTINE cpl_define
@@ -430,7 +497,9 @@
       INTEGER               :: ji,jm     ! local loop index
       INTEGER               :: mop
+      INTEGER               :: ncpl
       !!----------------------------------------------------------------------
       cpl_freq = 0   ! defaut definition
       id = -1        ! defaut definition
+      ncpl = 1
       !
       DO ji = 1, nsnd
@@ -459,9 +528,23 @@
       ENDDO
       !
+
+      DO ji = 1, nsnd
+         IF (ssnd_n2c(ji)%laction ) THEN
+            DO jm = 1, 1
+               IF( ssnd_n2c(ji)%nid(1,jm) /= -1 ) THEN
+                  IF( TRIM(cdfieldname) == TRIM(ssnd_n2c(ji)%clname) ) THEN
+                     id = ssnd_n2c(ji)%nid(1,1)
+                     mop = OASIS_Out
+                     ncpl = 1
+                  ENDIF
+               ENDIF
+            ENDDO
+         ENDIF
+      ENDDO
       IF( id /= -1 ) THEN
 #if defined key_oa3mct_v3
-         CALL oasis_get_freqs(id, mop, 1, itmp, info)
+         CALL oasis_get_freqs(id, mop, ncpl, itmp, info)
 #else
-         CALL oasis_get_freqs(id,      1, itmp, info)
+         CALL oasis_get_freqs(id, ncpl, itmp, info)
 #endif
          cpl_freq = itmp(1)
@@ -514,7 +597,8 @@
    END SUBROUTINE oasis_get_localcomm
 
-   SUBROUTINE oasis_def_partition(k1,k2,k3)
+   SUBROUTINE oasis_def_partition(k1,k2,k3, name)
       INTEGER     , INTENT(  out) ::  k1,k3
       INTEGER     , INTENT(in   ) ::  k2(5)
+      CHARACTER(len=*), INTENT(IN), OPTIONAL :: name
       k1 = k2(1) ; k3 = k2(5)
       WRITE(numout,*) 'oasis_def_partition: Error you sould not be there...'
Index: /branches/UKMO/dev_r6912_GO6_package/NEMOGCM/NEMO/OPA_SRC/SBC/sbc_oce.F90
===================================================================
--- /branches/UKMO/dev_r6912_GO6_package/NEMOGCM/NEMO/OPA_SRC/SBC/sbc_oce.F90	(revision 9131)
+++ /branches/UKMO/dev_r6912_GO6_package/NEMOGCM/NEMO/OPA_SRC/SBC/sbc_oce.F90	(revision 9132)
@@ -35,5 +35,5 @@
    LOGICAL , PUBLIC ::   ln_blk_core    !: CORE bulk formulation
    LOGICAL , PUBLIC ::   ln_blk_mfs     !: MFS  bulk formulation
-#if defined key_oasis3
+#if defined key_oasis3 || ! defined key_nemocice_decomp
    LOGICAL , PUBLIC ::   lk_oasis = .TRUE.  !: OASIS used
 #else
Index: /branches/UKMO/dev_r6912_GO6_package/NEMOGCM/NEMO/OPA_SRC/SBC/sbccpl.F90
===================================================================
--- /branches/UKMO/dev_r6912_GO6_package/NEMOGCM/NEMO/OPA_SRC/SBC/sbccpl.F90	(revision 9131)
+++ /branches/UKMO/dev_r6912_GO6_package/NEMOGCM/NEMO/OPA_SRC/SBC/sbccpl.F90	(revision 9132)
@@ -52,4 +52,8 @@
 #endif
    USE lib_fortran, ONLY: glob_sum
+#if ! defined key_nemocice_decomp
+   USE OASIS_NEMO_CICE
+#endif
+
 
    IMPLICIT NONE
@@ -149,6 +153,67 @@
    INTEGER, PARAMETER ::   jpsnd      = 35            ! total number of fields sent
 
+!NEMO CICE coupling intervace
+!NEMO send:
+   INTEGER, PARAMETER, PUBLIC :: id_sst0_np = 1
+   INTEGER, PARAMETER, PUBLIC :: id_sstfrz0_np = 2
+   INTEGER, PARAMETER, PUBLIC :: id_strax_np = 3
+   INTEGER, PARAMETER, PUBLIC :: id_stray_np = 4
+   INTEGER, PARAMETER, PUBLIC :: id_flatn_f_np = 5
+   INTEGER, PARAMETER, PUBLIC :: id_fcondtopn_f_np = 6
+   INTEGER, PARAMETER, PUBLIC :: id_fsurfn_f_np = 7
+   INTEGER, PARAMETER, PUBLIC :: id_uatm_np = 8
+   INTEGER, PARAMETER, PUBLIC :: id_vatm_np = 9
+   INTEGER, PARAMETER, PUBLIC :: id_wind_np = 10 
+   INTEGER, PARAMETER, PUBLIC :: id_fsw_np = 11
+   INTEGER, PARAMETER, PUBLIC :: id_flw_np = 12
+   INTEGER, PARAMETER, PUBLIC :: id_Tair_np = 13
+   INTEGER, PARAMETER, PUBLIC :: id_potT_np = 14
+   INTEGER, PARAMETER, PUBLIC :: id_rhoa_np = 15
+   INTEGER, PARAMETER, PUBLIC :: id_Qa_np = 16
+   INTEGER, PARAMETER, PUBLIC :: id_zlvl_np = 17
+   INTEGER, PARAMETER, PUBLIC :: id_swvdr_np = 18
+   INTEGER, PARAMETER, PUBLIC :: id_swvdf_np = 19
+   INTEGER, PARAMETER, PUBLIC :: id_swidr_np = 20
+   INTEGER, PARAMETER, PUBLIC :: id_swidf_np = 21
+   INTEGER, PARAMETER, PUBLIC :: id_fsnow_np = 22
+   INTEGER, PARAMETER, PUBLIC :: id_frain_np = 23
+   INTEGER, PARAMETER, PUBLIC :: id_sstfrz_np = 24
+   INTEGER, PARAMETER, PUBLIC :: id_nfrzmlt_np = 25
+   INTEGER, PARAMETER, PUBLIC :: id_sst_m_np = 26
+   INTEGER, PARAMETER, PUBLIC :: id_sss_m_np = 27
+   INTEGER, PARAMETER, PUBLIC :: id_tsfc_ice_np = 28
+   INTEGER, PARAMETER, PUBLIC :: id_uocn_np = 29
+   INTEGER, PARAMETER, PUBLIC :: id_vocn_np = 30
+   INTEGER, PARAMETER, PUBLIC :: id_ss_tltx_np = 31
+   INTEGER, PARAMETER, PUBLIC :: id_ss_tlty_np = 32
+!NEMO get:
+   INTEGER, PARAMETER, PUBLIC :: id_fr_i0_ng = 1
+   INTEGER, PARAMETER, PUBLIC :: id_a_i0_ng = 2
+   INTEGER, PARAMETER, PUBLIC :: id_vsno0_ng = 3
+   INTEGER, PARAMETER, PUBLIC :: id_vice0_ng = 4
+   INTEGER, PARAMETER, PUBLIC :: id_strocnx_ng = 5
+   INTEGER, PARAMETER, PUBLIC :: id_strocny_ng = 6
+   INTEGER, PARAMETER, PUBLIC :: id_strocnxT_ng = 7
+   INTEGER, PARAMETER, PUBLIC :: id_strocnyT_ng = 8
+   INTEGER, PARAMETER, PUBLIC :: id_fresh_ai_ng = 9
+   INTEGER, PARAMETER, PUBLIC :: id_fsalt_ai_ng = 10
+   INTEGER, PARAMETER, PUBLIC :: id_fswthru_ai_ng = 11
+   INTEGER, PARAMETER, PUBLIC :: id_fhocn_ai_ng = 12
+   INTEGER, PARAMETER, PUBLIC :: id_fr_i_ng = 13
+   INTEGER, PARAMETER, PUBLIC :: id_a_i_ng = 14
+   INTEGER, PARAMETER, PUBLIC :: id_vsno_ng = 15
+   INTEGER, PARAMETER, PUBLIC :: id_vice_ng = 16
+   INTEGER, PARAMETER, PUBLIC :: id_a_p_ng = 17
+   INTEGER, PARAMETER, PUBLIC :: id_ht_p_ng = 18
+!hadgem
+   INTEGER, PARAMETER, PUBLIC :: id_u_ice_ng = 19
+   INTEGER, PARAMETER, PUBLIC :: id_v_ice_ng = 20
+   INTEGER, PARAMETER, PUBLIC :: id_ht_s_ng = 21
+   INTEGER, PARAMETER, PUBLIC :: id_ht_i_ng = 22
+   INTEGER, PARAMETER, PUBLIC :: id_tn_ice_ng = 23
+   INTEGER, PARAMETER, PUBLIC :: id_kn_ice_ng = 24
+
    REAL(wp), PARAMETER :: dms_unit_conv = 1.0e+6      ! Coversion factor to get outgong DMS in standard units for coupling
-	                                              ! i.e. specifically nmol/L (= umol/m3)
+
 
    !                                                         !!** namelist namsbc_cpl **
@@ -173,4 +238,5 @@
    LOGICAL     ::   ln_usecplmask          !  use a coupling mask file to merge data received from several models
                                            !   -> file cplmask.nc with the float variable called cplmask (jpi,jpj,nn_cplmodel)
+   LOGICAL, PARAMETER :: LOASIS_NEMO_CICE = .TRUE.
    TYPE ::   DYNARR     
       REAL(wp), POINTER, DIMENSION(:,:,:)    ::   z3   
@@ -273,5 +339,6 @@
          WRITE(numout,*)'~~~~~~~~~~~~'
       ENDIF
-      IF( lwp .AND. ln_cpl ) THEN                        ! control print
+!     IF( lwp .AND. ln_cpl ) THEN                        ! control print
+      IF( lwp ) THEN
          WRITE(numout,*)'  received fields (mutiple ice categories)'
          WRITE(numout,*)'      10m wind module                 = ', TRIM(sn_rcv_w10m%cldes  ), ' (', TRIM(sn_rcv_w10m%clcat  ), ')'
@@ -533,5 +600,5 @@
         srcv(jpr_atm_dust)%laction = .TRUE.
       END IF
-	 
+
       !                                                      ! ------------------------- !
       !                                                      !   topmelt and botmelt     !   
@@ -643,5 +710,7 @@
          ENDIF
       ENDIF
-      
+
+      srcv(:)%laction = .FALSE.
+
       ! =================================================== !
       ! Allocate all parts of frcv used for received fields !
@@ -663,4 +732,129 @@
       END IF
 
+      ! =================================================== !
+      ! NEMO CICE interface recv definitions                !
+      ! =================================================== !
+      srcv_c2n(:)%laction = .FALSE.
+!
+!     srcv_c2n(1)%laction = .TRUE.   
+!     srcv_c2n(1)%clgrid  = 'T'      
+!     srcv_c2n(1)%nsgn    = 1.      
+!     srcv_c2n(1)%clname = 'OCN_O1G'
+!     srcv_c2n(1)%nct = 1
+!     srcv_c2n(1)%ncplmodel = 1
+#if ! defined key_nemocice_decomp
+!initialization
+      srcv_c2n(id_fr_i0_ng)%laction = .TRUE.   
+      srcv_c2n(id_fr_i0_ng)%clgrid  = 'T'      
+      srcv_c2n(id_fr_i0_ng)%nsgn    = 1.      
+      srcv_c2n(id_fr_i0_ng)%clname = 'fr_i0_ng'
+      srcv_c2n(id_fr_i0_ng)%nct = 1
+      srcv_c2n(id_fr_i0_ng)%ncplmodel = 1
+
+      srcv_c2n(id_a_i0_ng)%laction = .FALSE.   
+      srcv_c2n(id_a_i0_ng)%clgrid  = 'T'      
+      srcv_c2n(id_a_i0_ng)%nsgn    = 1.      
+      srcv_c2n(id_a_i0_ng)%clname = 'a_i0_ng'
+      srcv_c2n(id_a_i0_ng)%nct = 5
+      srcv_c2n(id_a_i0_ng)%ncplmodel = 1
+
+      srcv_c2n(id_vsno0_ng)%laction = .TRUE.   
+      srcv_c2n(id_vsno0_ng)%clgrid  = 'T'      
+      srcv_c2n(id_vsno0_ng)%nsgn    = 1.      
+      srcv_c2n(id_vsno0_ng)%clname = 'vsno0_ng'
+      srcv_c2n(id_vsno0_ng)%nct = 1
+      srcv_c2n(id_vsno0_ng)%ncplmodel = 1
+
+      srcv_c2n(id_vice0_ng)%laction = .TRUE.   
+      srcv_c2n(id_vice0_ng)%clgrid  = 'T'      
+      srcv_c2n(id_vice0_ng)%nsgn    = 1.      
+      srcv_c2n(id_vice0_ng)%clname = 'vice0_ng'
+      srcv_c2n(id_vice0_ng)%nct = 1
+      srcv_c2n(id_vice0_ng)%ncplmodel = 1
+!time stepping
+      srcv_c2n(id_strocnx_ng)%laction = .TRUE.   
+      srcv_c2n(id_strocnx_ng)%clgrid  = 'F'      
+      srcv_c2n(id_strocnx_ng)%nsgn    = 1.      
+      srcv_c2n(id_strocnx_ng)%clname = 'strocnx_ng'
+      srcv_c2n(id_strocnx_ng)%nct = 1
+      srcv_c2n(id_strocnx_ng)%ncplmodel = 1
+
+      srcv_c2n(id_strocny_ng)%laction = .TRUE.   
+      srcv_c2n(id_strocny_ng)%clgrid  = 'F'      
+      srcv_c2n(id_strocny_ng)%nsgn    = 1.      
+      srcv_c2n(id_strocny_ng)%clname = 'strocny_ng'
+      srcv_c2n(id_strocny_ng)%nct = 1
+      srcv_c2n(id_strocny_ng)%ncplmodel = 1
+
+      srcv_c2n(id_strocnxT_ng)%laction = .TRUE.   
+      srcv_c2n(id_strocnxT_ng)%clgrid  = 'T'      
+      srcv_c2n(id_strocnxT_ng)%nsgn    = 1.      
+      srcv_c2n(id_strocnxT_ng)%clname = 'strocnxT_ng'
+      srcv_c2n(id_strocnxT_ng)%nct = 1
+      srcv_c2n(id_strocnxT_ng)%ncplmodel = 1
+
+      srcv_c2n(id_strocnyT_ng)%laction = .TRUE.   
+      srcv_c2n(id_strocnyT_ng)%clgrid  = 'T'      
+      srcv_c2n(id_strocnyT_ng)%nsgn    = 1.      
+      srcv_c2n(id_strocnyT_ng)%clname = 'strocnyT_ng'
+      srcv_c2n(id_strocnyT_ng)%nct = 1
+      srcv_c2n(id_strocnyT_ng)%ncplmodel = 1
+
+      srcv_c2n(id_fresh_ai_ng)%laction = .TRUE.   
+      srcv_c2n(id_fresh_ai_ng)%clgrid  = 'T'      
+      srcv_c2n(id_fresh_ai_ng)%nsgn    = 1.      
+      srcv_c2n(id_fresh_ai_ng)%clname = 'fresh_ai_ng'
+      srcv_c2n(id_fresh_ai_ng)%nct = 1
+      srcv_c2n(id_fresh_ai_ng)%ncplmodel = 1
+
+      srcv_c2n(id_fsalt_ai_ng)%laction = .TRUE.   
+      srcv_c2n(id_fsalt_ai_ng)%clgrid  = 'T'      
+      srcv_c2n(id_fsalt_ai_ng)%nsgn    = 1.      
+      srcv_c2n(id_fsalt_ai_ng)%clname = 'fsalt_ai_ng'
+      srcv_c2n(id_fsalt_ai_ng)%nct = 1
+      srcv_c2n(id_fsalt_ai_ng)%ncplmodel = 1
+
+      srcv_c2n(id_fswthru_ai_ng)%laction = .TRUE.   
+      srcv_c2n(id_fswthru_ai_ng)%clgrid  = 'T'      
+      srcv_c2n(id_fswthru_ai_ng)%nsgn    = 1.      
+      srcv_c2n(id_fswthru_ai_ng)%clname = 'fswthru_ai_ng'
+      srcv_c2n(id_fswthru_ai_ng)%nct = 1
+      srcv_c2n(id_fswthru_ai_ng)%ncplmodel = 1
+
+      srcv_c2n(id_fhocn_ai_ng)%laction = .TRUE.   
+      srcv_c2n(id_fhocn_ai_ng)%clgrid  = 'T'      
+      srcv_c2n(id_fhocn_ai_ng)%nsgn    = 1.      
+      srcv_c2n(id_fhocn_ai_ng)%clname = 'fhocn_ai_ng'
+      srcv_c2n(id_fhocn_ai_ng)%nct = 1
+      srcv_c2n(id_fhocn_ai_ng)%ncplmodel = 1
+
+      srcv_c2n(id_fr_i_ng)%laction = .TRUE.   
+      srcv_c2n(id_fr_i_ng)%clgrid  = 'T'      
+      srcv_c2n(id_fr_i_ng)%nsgn    = 1.      
+      srcv_c2n(id_fr_i_ng)%clname = 'fr_i_ng'
+      srcv_c2n(id_fr_i_ng)%nct = 1
+      srcv_c2n(id_fr_i_ng)%ncplmodel = 1
+
+      srcv_c2n(id_a_i_ng)%laction = .TRUE.   
+      srcv_c2n(id_a_i_ng)%clgrid  = 'F'      
+      srcv_c2n(id_a_i_ng)%nsgn    = 1.      
+      srcv_c2n(id_a_i_ng)%clname = 'a_i_ng'
+      srcv_c2n(id_a_i_ng)%nct = 5
+      srcv_c2n(id_a_i_ng)%ncplmodel = 1
+
+      srcv_c2n(id_vsno_ng)%laction = .TRUE.   
+      srcv_c2n(id_vsno_ng)%clgrid  = 'F'      
+      srcv_c2n(id_vsno_ng)%nsgn    = 1.      
+      srcv_c2n(id_vsno_ng)%clname = 'vsno_ng'
+      srcv_c2n(id_vsno_ng)%nct = 1
+      srcv_c2n(id_vsno_ng)%ncplmodel = 1
+
+      srcv_c2n(id_vice_ng)%laction = .TRUE.   
+      srcv_c2n(id_vice_ng)%clgrid  = 'F'      
+      srcv_c2n(id_vice_ng)%nsgn    = 1.      
+      srcv_c2n(id_vice_ng)%clname = 'vice_ng'
+      srcv_c2n(id_vice_ng)%nct = 1
+      srcv_c2n(id_vice_ng)%ncplmodel = 1
+#endif
       ! ================================ !
       !     Define the send interface    !
@@ -722,5 +916,5 @@
          ssnd(jps_fice)%laction = .TRUE.                  ! if ice treated in the ocean (even in climato case)
          ssnd(jps_fice1)%laction = .TRUE.                 ! First-order regridded ice concentration, to be used
-	                                                  ! in producing atmos-to-ice fluxes
+                                                          ! in producing atmos-to-ice fluxes
 ! Currently no namelist entry to determine sending of multi-category ice fraction so use the thickness entry for now
          IF ( TRIM( sn_snd_thick%clcat ) == 'yes' ) ssnd(jps_fice)%nct = jpl
@@ -924,6 +1118,239 @@
          ENDIF
       ENDIF
-
-      !
+      
+      ssnd(:)%laction = .FALSE.
+      ! NEMO cice send interface
+      ssnd_n2c(:)%laction = .FALSE.
+!     ssnd_n2c(1)%laction = .TRUE.   
+!     ssnd_n2c(1)%clgrid  = 'T'       
+!     ssnd_n2c(1)%nsgn    = 1.        
+!     ssnd_n2c(1)%clname = 'OCN_O1P'
+!     ssnd_n2c(1)%nct = 1
+!     ssnd_n2c(1)%ncplmodel = 1
+#if ! defined key_nemocice_decomp
+      ssnd_n2c(id_sst0_np)%laction = .TRUE.   
+      ssnd_n2c(id_sst0_np)%clgrid  = 'T'       
+      ssnd_n2c(id_sst0_np)%nsgn    = 1.        
+      ssnd_n2c(id_sst0_np)%clname = 'sst_np'
+      ssnd_n2c(id_sst0_np)%nct = 1
+      ssnd_n2c(id_sst0_np)%ncplmodel = 1
+
+      ssnd_n2c(id_sstfrz0_np)%laction = .TRUE.   
+      ssnd_n2c(id_sstfrz0_np)%clgrid  = 'T'       
+      ssnd_n2c(id_sstfrz0_np)%nsgn    = 1.        
+      ssnd_n2c(id_sstfrz0_np)%clname = 'sstfrz0_np'
+      ssnd_n2c(id_sstfrz0_np)%nct = 1
+      ssnd_n2c(id_sstfrz0_np)%ncplmodel = 1
+
+      ssnd_n2c(id_strax_np)%laction = .TRUE.   
+      ssnd_n2c(id_strax_np)%clgrid  = 'T'       
+      ssnd_n2c(id_strax_np)%nsgn    = 1.        
+      ssnd_n2c(id_strax_np)%clname = 'strax_np'
+      ssnd_n2c(id_strax_np)%nct = 1
+      ssnd_n2c(id_strax_np)%ncplmodel = 1
+
+      ssnd_n2c(id_stray_np)%laction = .TRUE.   
+      ssnd_n2c(id_stray_np)%clgrid  = 'T'       
+      ssnd_n2c(id_stray_np)%nsgn    = 1.        
+      ssnd_n2c(id_stray_np)%clname = 'stray_np'
+      ssnd_n2c(id_stray_np)%nct = 1
+      ssnd_n2c(id_stray_np)%ncplmodel = 1
+
+      ssnd_n2c(id_flatn_f_np)%laction = .TRUE.   
+      ssnd_n2c(id_flatn_f_np)%clgrid  = 'T'       
+      ssnd_n2c(id_flatn_f_np)%nsgn    = 1.        
+      ssnd_n2c(id_flatn_f_np)%clname = 'flatn_f_np'
+      ssnd_n2c(id_flatn_f_np)%nct = 5
+      ssnd_n2c(id_flatn_f_np)%ncplmodel = 1
+
+      ssnd_n2c(id_fcondtopn_f_np)%laction = .FALSE.   
+      ssnd_n2c(id_fcondtopn_f_np)%clgrid  = 'T'       
+      ssnd_n2c(id_fcondtopn_f_np)%nsgn    = 1.        
+      ssnd_n2c(id_fcondtopn_f_np)%clname = 'fcondtopn_f_np'
+      ssnd_n2c(id_fcondtopn_f_np)%nct = 5
+      ssnd_n2c(id_fcondtopn_f_np)%ncplmodel = 1
+
+      ssnd_n2c(id_fsurfn_f_np)%laction = .TRUE.   
+      ssnd_n2c(id_fsurfn_f_np)%clgrid  = 'T'       
+      ssnd_n2c(id_fsurfn_f_np)%nsgn    = 1.        
+      ssnd_n2c(id_fsurfn_f_np)%clname = 'fsurfn_f_np'
+      ssnd_n2c(id_fsurfn_f_np)%nct = 5
+      ssnd_n2c(id_fsurfn_f_np)%ncplmodel = 1
+
+      ssnd_n2c(id_uatm_np)%laction = .TRUE.   
+      ssnd_n2c(id_uatm_np)%clgrid  = 'T'       
+      ssnd_n2c(id_uatm_np)%nsgn    = 1.        
+      ssnd_n2c(id_uatm_np)%clname = 'uatm_np'
+      ssnd_n2c(id_uatm_np)%nct = 1
+      ssnd_n2c(id_uatm_np)%ncplmodel = 1
+
+      ssnd_n2c(id_vatm_np)%laction = .TRUE.   
+      ssnd_n2c(id_vatm_np)%clgrid  = 'T'       
+      ssnd_n2c(id_vatm_np)%nsgn    = 1.        
+      ssnd_n2c(id_vatm_np)%clname = 'vatm_np'
+      ssnd_n2c(id_vatm_np)%nct = 1
+      ssnd_n2c(id_vatm_np)%ncplmodel = 1
+
+      ssnd_n2c(id_wind_np)%laction = .TRUE.   
+      ssnd_n2c(id_wind_np)%clgrid  = 'T'       
+      ssnd_n2c(id_wind_np)%nsgn    = 1.        
+      ssnd_n2c(id_wind_np)%clname = 'wind_np'
+      ssnd_n2c(id_wind_np)%nct = 1
+      ssnd_n2c(id_wind_np)%ncplmodel = 1
+
+      ssnd_n2c(id_fsw_np)%laction = .TRUE.   
+      ssnd_n2c(id_fsw_np)%clgrid  = 'T'       
+      ssnd_n2c(id_fsw_np)%nsgn    = 1.        
+      ssnd_n2c(id_fsw_np)%clname = 'fsw_np'
+      ssnd_n2c(id_fsw_np)%nct = 1
+      ssnd_n2c(id_fsw_np)%ncplmodel = 1
+
+      ssnd_n2c(id_flw_np)%laction = .TRUE.   
+      ssnd_n2c(id_flw_np)%clgrid  = 'T'       
+      ssnd_n2c(id_flw_np)%nsgn    = 1.        
+      ssnd_n2c(id_flw_np)%clname = 'flw_np'
+      ssnd_n2c(id_flw_np)%nct = 1
+      ssnd_n2c(id_flw_np)%ncplmodel = 1
+
+      ssnd_n2c(id_Tair_np)%laction = .TRUE.   
+      ssnd_n2c(id_Tair_np)%clgrid  = 'T'       
+      ssnd_n2c(id_Tair_np)%nsgn    = 1.        
+      ssnd_n2c(id_Tair_np)%clname = 'Tair_np'
+      ssnd_n2c(id_Tair_np)%nct = 1
+      ssnd_n2c(id_Tair_np)%ncplmodel = 1
+
+      ssnd_n2c(id_potT_np)%laction = .TRUE.   
+      ssnd_n2c(id_potT_np)%clgrid  = 'T'       
+      ssnd_n2c(id_potT_np)%nsgn    = 1.        
+      ssnd_n2c(id_potT_np)%clname = 'potT_np'
+      ssnd_n2c(id_potT_np)%nct = 1
+      ssnd_n2c(id_potT_np)%ncplmodel = 1
+
+      ssnd_n2c(id_rhoa_np)%laction = .TRUE.   
+      ssnd_n2c(id_rhoa_np)%clgrid  = 'T'       
+      ssnd_n2c(id_rhoa_np)%nsgn    = 1.        
+      ssnd_n2c(id_rhoa_np)%clname = 'rhoa_np'
+      ssnd_n2c(id_rhoa_np)%nct = 1
+      ssnd_n2c(id_rhoa_np)%ncplmodel = 1
+
+      ssnd_n2c(id_Qa_np)%laction = .TRUE.   
+      ssnd_n2c(id_Qa_np)%clgrid  = 'T'       
+      ssnd_n2c(id_Qa_np)%nsgn    = 1.        
+      ssnd_n2c(id_Qa_np)%clname = 'Qa_np'
+      ssnd_n2c(id_Qa_np)%nct = 1
+      ssnd_n2c(id_Qa_np)%ncplmodel = 1
+
+      ssnd_n2c(id_zlvl_np)%laction = .TRUE.   
+      ssnd_n2c(id_zlvl_np)%clgrid  = 'T'       
+      ssnd_n2c(id_zlvl_np)%nsgn    = 1.        
+      ssnd_n2c(id_zlvl_np)%clname = 'zlvl_np'
+      ssnd_n2c(id_zlvl_np)%nct = 1
+      ssnd_n2c(id_zlvl_np)%ncplmodel = 1
+
+      ssnd_n2c(id_swvdr_np)%laction = .TRUE.   
+      ssnd_n2c(id_swvdr_np)%clgrid  = 'T'       
+      ssnd_n2c(id_swvdr_np)%nsgn    = 1.        
+      ssnd_n2c(id_swvdr_np)%clname = 'swvdr_np'
+      ssnd_n2c(id_swvdr_np)%nct = 1
+      ssnd_n2c(id_swvdr_np)%ncplmodel = 1
+
+      ssnd_n2c(id_swvdf_np)%laction = .TRUE.   
+      ssnd_n2c(id_swvdf_np)%clgrid  = 'T'       
+      ssnd_n2c(id_swvdf_np)%nsgn    = 1.        
+      ssnd_n2c(id_swvdf_np)%clname = 'swvdf_np'
+      ssnd_n2c(id_swvdf_np)%nct = 1
+      ssnd_n2c(id_swvdf_np)%ncplmodel = 1
+
+      ssnd_n2c(id_swidr_np)%laction = .TRUE.   
+      ssnd_n2c(id_swidr_np)%clgrid  = 'T'       
+      ssnd_n2c(id_swidr_np)%nsgn    = 1.        
+      ssnd_n2c(id_swidr_np)%clname = 'swidr_np'
+      ssnd_n2c(id_swidr_np)%nct = 1
+      ssnd_n2c(id_swidr_np)%ncplmodel = 1
+
+      ssnd_n2c(id_swidf_np)%laction = .TRUE.   
+      ssnd_n2c(id_swidf_np)%clgrid  = 'T'       
+      ssnd_n2c(id_swidf_np)%nsgn    = 1.        
+      ssnd_n2c(id_swidf_np)%clname = 'swidf_np'
+      ssnd_n2c(id_swidf_np)%nct = 1
+      ssnd_n2c(id_swidf_np)%ncplmodel = 1
+
+      ssnd_n2c(id_fsnow_np)%laction = .TRUE.   
+      ssnd_n2c(id_fsnow_np)%clgrid  = 'T'       
+      ssnd_n2c(id_fsnow_np)%nsgn    = 1.        
+      ssnd_n2c(id_fsnow_np)%clname = 'fsnow_np'
+      ssnd_n2c(id_fsnow_np)%nct = 1
+      ssnd_n2c(id_fsnow_np)%ncplmodel = 1
+
+      ssnd_n2c(id_frain_np)%laction = .TRUE.   
+      ssnd_n2c(id_frain_np)%clgrid  = 'T'       
+      ssnd_n2c(id_frain_np)%nsgn    = 1.        
+      ssnd_n2c(id_frain_np)%clname = 'frain_np'
+      ssnd_n2c(id_frain_np)%nct = 1
+      ssnd_n2c(id_frain_np)%ncplmodel = 1
+
+      ssnd_n2c(id_sstfrz_np)%laction = .TRUE.   
+      ssnd_n2c(id_sstfrz_np)%clgrid  = 'T'       
+      ssnd_n2c(id_sstfrz_np)%nsgn    = 1.        
+      ssnd_n2c(id_sstfrz_np)%clname = 'sstfrz_np'
+      ssnd_n2c(id_sstfrz_np)%nct = 1
+      ssnd_n2c(id_sstfrz_np)%ncplmodel = 1
+
+      ssnd_n2c(id_nfrzmlt_np)%laction = .TRUE.   
+      ssnd_n2c(id_nfrzmlt_np)%clgrid  = 'T'       
+      ssnd_n2c(id_nfrzmlt_np)%nsgn    = 1.        
+      ssnd_n2c(id_nfrzmlt_np)%clname = 'nfrzmlt_np'
+      ssnd_n2c(id_nfrzmlt_np)%nct = 1
+      ssnd_n2c(id_nfrzmlt_np)%ncplmodel = 1
+
+      ssnd_n2c(id_sst_m_np)%laction = .TRUE.   
+      ssnd_n2c(id_sst_m_np)%clgrid  = 'T'       
+      ssnd_n2c(id_sst_m_np)%nsgn    = 1.        
+      ssnd_n2c(id_sst_m_np)%clname = 'sst_m_np'
+      ssnd_n2c(id_sst_m_np)%nct = 1
+      ssnd_n2c(id_sst_m_np)%ncplmodel = 1
+
+      ssnd_n2c(id_sss_m_np)%laction = .TRUE.   
+      ssnd_n2c(id_sss_m_np)%clgrid  = 'T'       
+      ssnd_n2c(id_sss_m_np)%nsgn    = 1.        
+      ssnd_n2c(id_sss_m_np)%clname = 'sss_m_np'
+      ssnd_n2c(id_sss_m_np)%nct = 1
+      ssnd_n2c(id_sss_m_np)%ncplmodel = 1
+
+      ssnd_n2c(id_tsfc_ice_np)%laction = .FALSE.   
+      ssnd_n2c(id_tsfc_ice_np)%clgrid  = 'F'       
+      ssnd_n2c(id_tsfc_ice_np)%nsgn    = 1.        
+      ssnd_n2c(id_tsfc_ice_np)%clname = 'tsfc_ice_np'
+      ssnd_n2c(id_tsfc_ice_np)%nct = 5
+      ssnd_n2c(id_tsfc_ice_np)%ncplmodel = 1
+
+      ssnd_n2c(id_uocn_np)%laction = .TRUE.   
+      ssnd_n2c(id_uocn_np)%clgrid  = 'T'       
+      ssnd_n2c(id_uocn_np)%nsgn    = 1.        
+      ssnd_n2c(id_uocn_np)%clname = 'uocn_np'
+      ssnd_n2c(id_uocn_np)%nct = 1
+      ssnd_n2c(id_uocn_np)%ncplmodel = 1
+
+      ssnd_n2c(id_vocn_np)%laction = .TRUE.   
+      ssnd_n2c(id_vocn_np)%clgrid  = 'F'       
+      ssnd_n2c(id_vocn_np)%nsgn    = 1.        
+      ssnd_n2c(id_vocn_np)%clname = 'vocn_np'
+      ssnd_n2c(id_vocn_np)%nct = 1
+      ssnd_n2c(id_vocn_np)%ncplmodel = 1
+
+      ssnd_n2c(id_ss_tltx_np)%laction = .TRUE.   
+      ssnd_n2c(id_ss_tltx_np)%clgrid  = 'F'       
+      ssnd_n2c(id_ss_tltx_np)%nsgn    = 1.        
+      ssnd_n2c(id_ss_tltx_np)%clname = 'ss_tltx_np'
+      ssnd_n2c(id_ss_tltx_np)%nct = 1
+      ssnd_n2c(id_ss_tltx_np)%ncplmodel = 1
+
+      ssnd_n2c(id_ss_tlty_np)%laction = .TRUE.   
+      ssnd_n2c(id_ss_tlty_np)%clgrid  = 'F'       
+      ssnd_n2c(id_ss_tlty_np)%nsgn    = 1.        
+      ssnd_n2c(id_ss_tlty_np)%clname = 'ss_tlty_np'
+      ssnd_n2c(id_ss_tlty_np)%nct = 1
+      ssnd_n2c(id_ss_tlty_np)%ncplmodel = 1
+#endif
       ! ================================ !
       !   initialisation of the coupler  !
@@ -931,5 +1358,5 @@
 
       CALL cpl_define(jprcv, jpsnd, nn_cplmodel)
-      
+
       IF (ln_usecplmask) THEN 
          xcplmask(:,:,:) = 0.
@@ -946,4 +1373,5 @@
       IF( ln_dm2dc .AND. ln_cpl .AND. ncpl_qsr_freq /= 86400 )   &
          &   CALL ctl_stop( 'sbc_cpl_init: diurnal cycle reconstruction (ln_dm2dc) needs daily couping for solar radiation' )
+      if(ncpl_qsr_freq.LT.1) ncpl_qsr_freq = 1 ! cpl_freq("OCN_O1P") 
       ncpl_qsr_freq = 86400 / ncpl_qsr_freq
 
@@ -1091,5 +1519,5 @@
                IF( srcv(jpr_otx2)%laction ) THEN
                   CALL rot_rep( frcv(jpr_otx2)%z3(:,:,1), frcv(jpr_oty2)%z3(:,:,1), srcv(jpr_otx2)%clgrid, 'en->j', zty )   
-               ELSE	
+               ELSE
                   CALL rot_rep( frcv(jpr_otx1)%z3(:,:,1), frcv(jpr_oty1)%z3(:,:,1), srcv(jpr_otx1)%clgrid, 'en->j', zty )  
                ENDIF
@@ -1319,5 +1747,5 @@
          ELSE                                       ;   zqsr(:,:) = 0._wp
          ENDIF
-         IF( ln_dm2dc .AND. ln_cpl )   zqsr(:,:) = sbc_dcy( zqsr )   ! modify qsr to include the diurnal cycle
+         IF( ln_dm2dc .AND. ln_cpl .AND. .NOT.LOASIS_NEMO_CICE )   zqsr(:,:) = sbc_dcy( zqsr )   ! modify qsr to include the diurnal cycle
          IF( ln_mixcpl ) THEN   ;   qsr(:,:) = qsr(:,:) * xcplmask(:,:,0) + zqsr(:,:) * zmsk(:,:)
          ELSE                   ;   qsr(:,:) =                              zqsr(:,:)
@@ -1984,5 +2412,5 @@
             &                     + palbi         (:,:,1) * zicefr(:,:) ) )
       END SELECT
-      IF( ln_dm2dc .AND. ln_cpl ) THEN   ! modify qsr to include the diurnal cycle
+      IF( ln_dm2dc .AND. ln_cpl .AND. .NOT.LOASIS_NEMO_CICE) THEN   ! modify qsr to include the diurnal cycle
          zqsr_tot(:,:  ) = sbc_dcy( zqsr_tot(:,:  ) )
          DO jl=1,jpl
@@ -2126,10 +2554,10 @@
                SELECT CASE( sn_snd_temp%clcat )
                CASE( 'yes' )   
-        	  ztmp3(:,:,1:jpl) = tn_ice(:,:,1:jpl) * a_i(:,:,1:jpl)
+                ztmp3(:,:,1:jpl) = tn_ice(:,:,1:jpl) * a_i(:,:,1:jpl)
                CASE( 'no' )
-        	  ztmp3(:,:,:) = 0.0
-        	  DO jl=1,jpl
+                ztmp3(:,:,:) = 0.0
+                   DO jl=1,jpl
                      ztmp3(:,:,1) = ztmp3(:,:,1) + tn_ice(:,:,jl) * a_i(:,:,jl)
-        	  ENDDO
+                   ENDDO
                CASE default                  ;   CALL ctl_stop( 'sbc_cpl_snd: wrong definition of sn_snd_temp%clcat' )
                END SELECT
@@ -2212,5 +2640,5 @@
          CASE( 'no' )    ;   ztmp3(:,:,1) = fr_i(:,:)
          CASE default    ;   CALL ctl_stop( 'sbc_cpl_snd: wrong definition of sn_snd_thick1%clcat' )
-	 END SELECT
+         END SELECT
          CALL cpl_snd (jps_fice1, isec, ztmp3, info)
       ENDIF
Index: /branches/UKMO/dev_r6912_GO6_package/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_cice.F90
===================================================================
--- /branches/UKMO/dev_r6912_GO6_package/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_cice.F90	(revision 9131)
+++ /branches/UKMO/dev_r6912_GO6_package/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_cice.F90	(revision 9132)
@@ -58,8 +58,8 @@
                 uatm,vatm,wind,fsw,flw,Tair,potT,Qa,rhoa,zlvl,   &
                 swvdr,swvdf,swidr,swidf,Tf,                      &
-		!! When using NEMO with CICE, this change requires use of 
-		!! one of the following two CICE branches:
-		!! - at CICE5.0,   hadax/r1015_GSI8_with_GSI7
-		!! - at CICE5.1.2, hadax/vn5.1.2_GSI8
+!! When using NEMO with CICE, this change requires use of 
+!! one of the following two CICE branches:
+!! - at CICE5.0,   hadax/r1015_GSI8_with_GSI7
+!! - at CICE5.1.2, hadax/vn5.1.2_GSI8
                 keffn_top,Tn_top
 
@@ -73,4 +73,7 @@
    USE CICE_RunMod
    USE CICE_FinalMod
+   USE cpl_oasis3
+   USE mod_oasis
+   USE OASIS_NEMO_CICE
 
    IMPLICIT NONE
@@ -173,4 +176,5 @@
       REAL(wp), DIMENSION(:,:,:), POINTER :: ztfrz3d
       INTEGER  ::   ji, jj, jl, jk                    ! dummy loop indices
+      INTEGER, PARAMETER :: zkt = 1
       !!---------------------------------------------------------------------
 
@@ -186,5 +190,4 @@
       ! Initialize CICE
       CALL CICE_Initialize
-
       ! Do some CICE consistency checks
       IF ( (ksbc == jp_flx) .OR. (ksbc == jp_purecpl) ) THEN
@@ -202,5 +205,7 @@
       IF( sbc_ice_alloc()      /= 0 )   CALL ctl_stop( 'STOP', 'sbc_ice_alloc : unable to allocate arrays' )
       IF( sbc_ice_cice_alloc() /= 0 )   CALL ctl_stop( 'STOP', 'sbc_ice_cice_alloc : unable to allocate cice arrays' )
-
+#if ! defined key_nemocice_decomp
+     call nemo_cice_cpl_define()
+#endif
       ! Ensure that no temperature points are below freezing if not a NEMO restart
       IF( .NOT. ln_rstart ) THEN
@@ -214,21 +219,21 @@
          CALL wrk_dealloc( jpi,jpj,jpk, ztfrz3d ) 
 
-#if defined key_nemocice_decomp
          ! Pass initial SST from NEMO to CICE so ice is initialised correctly if
          ! there is no restart file.
          ! Values from a CICE restart file would overwrite this
-         CALL nemo2cice( tsn(:,:,1,jp_tem) , sst , 'T' , 1.) 
-#endif
+         CALL nemo2cice( tsn(:,:,1,jp_tem) , sst , 'T' , 1., zkt, ssnd_n2c(id_sst0_np)%nid(1,1), srcv_n2c(id_sst_ig)%nid(1,1)) 
 
       ENDIF  
 
       ! calculate surface freezing temperature and send to CICE
-      CALL  eos_fzp(sss_m(:,:), sstfrz(:,:), fsdept_n(:,:,1)) 
-      CALL nemo2cice(sstfrz,Tf, 'T', 1. )
-
-      CALL cice2nemo(aice,fr_i, 'T', 1. )
+      CALL eos_fzp(sss_m(:,:), sstfrz(:,:), fsdept_n(:,:,1)) 
+      CALL nemo2cice(sstfrz,Tf, 'T', 1., zkt, ssnd_n2c(id_sstfrz0_np)%nid(1,1), srcv_n2c(id_Tf0_ig)%nid(1,1) )
+
+      CALL cice2nemo(aice,fr_i, 'T', 1., zkt, ssnd_c2n(id_aice0_ip)%nid(1,1), srcv_c2n(id_fr_i0_ng)%nid(1,1))
       IF ( (ksbc == jp_flx) .OR. (ksbc == jp_purecpl) ) THEN
+        if(lwp) write(numout,*) 'jp_flx OR jp_purecpl'
+        if(lwp) call flush(numout)
          DO jl=1,ncat
-            CALL cice2nemo(aicen(:,:,jl,:),a_i(:,:,jl), 'T', 1. )
+            CALL cice2nemo(aicen(:,:,jl,:),a_i(:,:,jl), 'T', 1., zkt, ssnd_c2n(id_aicen0_ip)%nid(1,jl), srcv_c2n(id_a_i0_ng)%nid(1,1) )
          ENDDO
       ENDIF
@@ -250,6 +255,8 @@
       !                                      ! embedded sea ice
       IF( nn_ice_embd /= 0 ) THEN            ! mass exchanges between ice and ocean (case 1 or 2) set the snow+ice mass
-         CALL cice2nemo(vsno(:,:,:),ztmp1,'T', 1. )
-         CALL cice2nemo(vice(:,:,:),ztmp2,'T', 1. )
+         if(lwp) write(numout,*) 'nn_ice_embd'
+         if(lwp) call flush(numout)
+         CALL cice2nemo(vsno(:,:,:),ztmp1,'T', 1., zkt, ssnd_c2n(id_vsno0_ip)%nid(1,1), srcv_c2n(id_vsno0_ng)%nid(1,1) )
+         CALL cice2nemo(vice(:,:,:),ztmp2,'T', 1., zkt, ssnd_c2n(id_vice0_ip)%nid(1,1), srcv_c2n(id_vice0_ng)%nid(1,1) )
          snwice_mass  (:,:) = ( rhosn * ztmp1(:,:) + rhoic * ztmp2(:,:)  )
          snwice_mass_b(:,:) = snwice_mass(:,:)
@@ -299,5 +306,6 @@
          ENDIF
       ENDIF
- 
+         if(lwp) write(numout,*) 'END cice_sbc_init'
+         if(lwp) call flush(numout)
       CALL wrk_dealloc( jpi,jpj, ztmp1, ztmp2 )
       !
@@ -319,4 +327,5 @@
       REAL(wp), DIMENSION(:,:,:), POINTER :: ztmpn
       REAL(wp) ::   zintb, zintn  ! dummy argument
+      INTEGER :: kinfo, isec
       !!---------------------------------------------------------------------
 
@@ -330,11 +339,8 @@
       ENDIF
 
-      ztmp(:,:)=0.0
-
 ! Aggregate ice concentration already set in cice_sbc_out (or cice_sbc_init on 
 ! the first time-step)
 
-! forced and coupled case 
-
+      ztmp(:,:)=0.0
       IF ( (ksbc == jp_flx).OR.(ksbc == jp_purecpl) ) THEN
 
@@ -349,5 +355,5 @@
             ENDDO
          ENDDO
-         CALL nemo2cice(ztmp,strax,'F', -1. )
+         CALL nemo2cice(ztmp,strax,'F', -1., kt, ssnd_n2c(id_strax_np)%nid(1,1), srcv_n2c(id_strax_ig)%nid(1,1) )
 
 ! y comp of wind stress (CI_2)
@@ -359,5 +365,5 @@
             ENDDO
          ENDDO
-         CALL nemo2cice(ztmp,stray,'F', -1. )
+         CALL nemo2cice(ztmp,stray,'F', -1., kt, ssnd_n2c(id_stray_np)%nid(1,1), srcv_n2c(id_stray_ig)%nid(1,1))
 
 
@@ -382,5 +388,5 @@
                ztmpn(:,:,jl)=qla_ice(:,:,jl)*a_i(:,:,jl)
             ENDDO
-	 ELSE
+         ELSE
            !In coupled mode - qla_ice calculated in sbc_cpl for each category
            ztmpn(:,:,1:ncat)=qla_ice(:,:,1:ncat)
@@ -388,5 +394,5 @@
 
          DO jl=1,ncat
-            CALL nemo2cice(ztmpn(:,:,jl),flatn_f(:,:,jl,:),'T', 1. )
+            CALL nemo2cice(ztmpn(:,:,jl),flatn_f(:,:,jl,:),'T', 1., kt, ssnd_n2c(id_flatn_f_np)%nid(1,jl), srcv_n2c(id_flatn_f_ig)%nid(1,jl))
 
 ! GBM conductive flux through ice (CI_6)
@@ -397,5 +403,5 @@
                ztmp(:,:) = botmelt(:,:,jl)
             ENDIF
-            CALL nemo2cice(ztmp,fcondtopn_f(:,:,jl,:),'T', 1. )
+            CALL nemo2cice(ztmp,fcondtopn_f(:,:,jl,:),'T', 1., kt, ssnd_n2c(id_fcondtopn_f_np)%nid(1,jl), srcv_n2c(id_fcondtopn_f_ig)%nid(1,jl))
 
 ! GBM surface heat flux (CI_7)
@@ -406,5 +412,5 @@
                ztmp(:,:) = (topmelt(:,:,jl)+botmelt(:,:,jl))
             ENDIF
-            CALL nemo2cice(ztmp,fsurfn_f(:,:,jl,:),'T', 1. )
+            CALL nemo2cice(ztmp,fsurfn_f(:,:,jl,:),'T', 1., kt,  ssnd_n2c(id_fsurfn_f_np)%nid(1,jl), srcv_n2c(id_fsurfn_f_ig)%nid(1,jl))
          ENDDO
 
@@ -414,24 +420,24 @@
 ! x comp and y comp of atmosphere surface wind (CICE expects on T points)
          ztmp(:,:) = wndi_ice(:,:)
-         CALL nemo2cice(ztmp,uatm,'T', -1. )
+         CALL nemo2cice(ztmp,uatm,'T', -1., kt, ssnd_n2c(id_uatm_np)%nid(1,1), srcv_n2c(id_uatm_ig)%nid(1,1) )
          ztmp(:,:) = wndj_ice(:,:)
-         CALL nemo2cice(ztmp,vatm,'T', -1. )
+         CALL nemo2cice(ztmp,vatm,'T', -1., kt, ssnd_n2c(id_vatm_np)%nid(1,1), srcv_n2c(id_vatm_ig)%nid(1,1) )
          ztmp(:,:) = SQRT ( wndi_ice(:,:)**2 + wndj_ice(:,:)**2 )
-         CALL nemo2cice(ztmp,wind,'T', 1. )    ! Wind speed (m/s)
+         CALL nemo2cice(ztmp,wind,'T', 1., kt, ssnd_n2c(id_wind_np)%nid(1,1), srcv_n2c(id_wind_ig)%nid(1,1) )    ! Wind speed (m/s)
          ztmp(:,:) = qsr_ice(:,:,1)
-         CALL nemo2cice(ztmp,fsw,'T', 1. )     ! Incoming short-wave (W/m^2)
+         CALL nemo2cice(ztmp,fsw,'T', 1., kt, ssnd_n2c(id_fsw_np)%nid(1,1), srcv_n2c(id_fsw_ig)%nid(1,1) )     ! Incoming short-wave (W/m^2)
          ztmp(:,:) = qlw_ice(:,:,1)
-         CALL nemo2cice(ztmp,flw,'T', 1. )     ! Incoming long-wave (W/m^2)
+         CALL nemo2cice(ztmp,flw,'T', 1., kt, ssnd_n2c(id_flw_np)%nid(1,1), srcv_n2c(id_flw_ig)%nid(1,1) )     ! Incoming long-wave (W/m^2)
          ztmp(:,:) = tatm_ice(:,:)
-         CALL nemo2cice(ztmp,Tair,'T', 1. )    ! Air temperature (K)
-         CALL nemo2cice(ztmp,potT,'T', 1. )    ! Potential temp (K)
+         CALL nemo2cice(ztmp,Tair,'T', 1., kt, ssnd_n2c(id_Tair_np)%nid(1,1), srcv_n2c(id_Tair_ig)%nid(1,1) )    ! Air temperature (K)
+         CALL nemo2cice(ztmp,potT,'T', 1., kt, ssnd_n2c(id_potT_np)%nid(1,1), srcv_n2c(id_potT_ig)%nid(1,1) )    ! Potential temp (K)
 ! Following line uses MAX(....) to avoid problems if tatm_ice has unset halo rows  
          ztmp(:,:) = 101000. / ( 287.04 * MAX(1.0,tatm_ice(:,:)) )    
                                                ! Constant (101000.) atm pressure assumed
-         CALL nemo2cice(ztmp,rhoa,'T', 1. )    ! Air density (kg/m^3)
+         CALL nemo2cice(ztmp,rhoa,'T', 1., kt, ssnd_n2c(id_rhoa_np)%nid(1,1), srcv_n2c(id_rhoa_ig)%nid(1,1) )    ! Air density (kg/m^3)
          ztmp(:,:) = qatm_ice(:,:)
-         CALL nemo2cice(ztmp,Qa,'T', 1. )      ! Specific humidity (kg/kg)
+         CALL nemo2cice(ztmp,Qa,'T', 1., kt, ssnd_n2c(id_Qa_np)%nid(1,1), srcv_n2c(id_Qa_ig)%nid(1,1) )      ! Specific humidity (kg/kg)
          ztmp(:,:)=10.0
-         CALL nemo2cice(ztmp,zlvl,'T', 1. )    ! Atmos level height (m)
+         CALL nemo2cice(ztmp,zlvl,'T', 1., kt, ssnd_n2c(id_zlvl_np)%nid(1,1), srcv_n2c(id_zlvl_ig)%nid(1,1) )    ! Atmos level height (m)
 
 ! May want to check all values are physically realistic (as in CICE routine 
@@ -440,11 +446,11 @@
 ! Divide shortwave into spectral bands (as in prepare_forcing)
          ztmp(:,:)=qsr_ice(:,:,1)*frcvdr       ! visible direct
-         CALL nemo2cice(ztmp,swvdr,'T', 1. )             
+         CALL nemo2cice(ztmp,swvdr,'T', 1., kt, ssnd_n2c(id_swvdr_np)%nid(1,1), srcv_n2c(id_swvdr_ig)%nid(1,1) )             
          ztmp(:,:)=qsr_ice(:,:,1)*frcvdf       ! visible diffuse
-         CALL nemo2cice(ztmp,swvdf,'T', 1. )              
+         CALL nemo2cice(ztmp,swvdf,'T', 1., kt, ssnd_n2c(id_swvdf_np)%nid(1,1), srcv_n2c(id_swvdf_ig)%nid(1,1) )              
          ztmp(:,:)=qsr_ice(:,:,1)*frcidr       ! near IR direct
-         CALL nemo2cice(ztmp,swidr,'T', 1. )
+         CALL nemo2cice(ztmp,swidr,'T', 1., kt, ssnd_n2c(id_swidr_np)%nid(1,1), srcv_n2c(id_swidr_ig)%nid(1,1) )
          ztmp(:,:)=qsr_ice(:,:,1)*frcidf       ! near IR diffuse
-         CALL nemo2cice(ztmp,swidf,'T', 1. )
+         CALL nemo2cice(ztmp,swidf,'T', 1., kt, ssnd_n2c(id_swidf_np)%nid(1,1), srcv_n2c(id_swidf_ig)%nid(1,1) )
 
       ENDIF
@@ -454,29 +460,29 @@
       IF( iom_use('snowpre') )   CALL iom_put('snowpre',MAX( (1.0-fr_i(:,:))*sprecip(:,:) ,0.0)) !!Joakim edit  
       ztmp(:,:)=MAX(fr_i(:,:)*sprecip(:,:),0.0)  
-      CALL nemo2cice(ztmp,fsnow,'T', 1. ) 
+      CALL nemo2cice(ztmp,fsnow,'T', 1., kt, ssnd_n2c(id_fsnow_np)%nid(1,1), srcv_n2c(id_fsnow_ig)%nid(1,1) ) 
 
 ! Rainfall
       IF( iom_use('precip') )   CALL iom_put('precip', (1.0-fr_i(:,:))*(tprecip(:,:)-sprecip(:,:)) ) !!Joakim edit
       ztmp(:,:)=fr_i(:,:)*(tprecip(:,:)-sprecip(:,:))
-      CALL nemo2cice(ztmp,frain,'T', 1. ) 
+      CALL nemo2cice(ztmp,frain,'T', 1., kt, ssnd_n2c(id_frain_np)%nid(1,1), srcv_n2c(id_frain_ig)%nid(1,1) ) 
 
 ! Recalculate freezing temperature and send to CICE 
       CALL eos_fzp(sss_m(:,:), sstfrz(:,:), fsdept_n(:,:,1)) 
-      CALL nemo2cice(sstfrz,Tf,'T', 1. )
+      CALL nemo2cice(sstfrz,Tf,'T', 1., kt, ssnd_n2c(id_sstfrz_np)%nid(1,1), srcv_n2c(id_Tf_ig)%nid(1,1) )
 
 ! Freezing/melting potential
 ! Calculated over NEMO leapfrog timestep (hence 2*dt)
       nfrzmlt(:,:)=rau0*rcp*fse3t_m(:,:)*(sstfrz(:,:)-sst_m(:,:))/(2.0*dt) 
-      CALL nemo2cice(nfrzmlt,frzmlt,'T', 1. )
+      CALL nemo2cice(nfrzmlt,frzmlt,'T', 1., kt, ssnd_n2c(id_nfrzmlt_np)%nid(1,1), srcv_n2c(id_frzmlt_ig)%nid(1,1) )
 
 ! SST  and SSS
 
-      CALL nemo2cice(sst_m,sst,'T', 1. )
-      CALL nemo2cice(sss_m,sss,'T', 1. )
+      CALL nemo2cice(sst_m,sst,'T', 1., kt, ssnd_n2c(id_sst_m_np)%nid(1,1), srcv_n2c(id_sst_m_ig)%nid(1,1) )
+      CALL nemo2cice(sss_m,sss,'T', 1., kt, ssnd_n2c(id_sss_m_np)%nid(1,1), srcv_n2c(id_sss_m_ig)%nid(1,1) )
 
       IF( ksbc == jp_purecpl ) THEN
 ! Sea ice surface skin temperature
          DO jl=1,ncat
-           CALL nemo2cice(tsfc_ice(:,:,jl), trcrn(:,:,nt_tsfc,jl,:),'T',1.)
+           CALL nemo2cice(tsfc_ice(:,:,jl), trcrn(:,:,nt_tsfc,jl,:),'T',1., kt, ssnd_n2c(id_tsfc_ice_np)%nid(1,jl), srcv_n2c(id_trcrn_ig)%nid(1,jl))
          ENDDO 
       ENDIF
@@ -489,5 +495,5 @@
          ENDDO
       ENDDO
-      CALL nemo2cice(ztmp,uocn,'F', -1. )
+      CALL nemo2cice(ztmp,uocn,'F', -1., kt, ssnd_n2c(id_uocn_np)%nid(1,1), srcv_n2c(id_uocn_ig)%nid(1,1) )
 
 ! V point to F point
@@ -497,5 +503,5 @@
          ENDDO
       ENDDO
-      CALL nemo2cice(ztmp,vocn,'F', -1. )
+      CALL nemo2cice(ztmp,vocn,'F', -1., kt, ssnd_n2c(id_vocn_np)%nid(1,1), srcv_n2c(id_vocn_ig)%nid(1,1) )
 
       IF( nn_ice_embd == 2 ) THEN             !== embedded sea ice: compute representative ice top surface ==!
@@ -525,5 +531,5 @@
          ENDDO
       ENDDO
-      CALL nemo2cice(ztmp,ss_tltx,'F', -1. )
+      CALL nemo2cice(ztmp,ss_tltx,'F', -1., kt, ssnd_n2c(id_ss_tltx_np)%nid(1,1), srcv_n2c(id_ss_tltx_ig)%nid(1,1) )
 
 ! T point to F point
@@ -535,5 +541,5 @@
          ENDDO
       ENDDO
-      CALL nemo2cice(ztmp,ss_tlty,'F', -1. )
+      CALL nemo2cice(ztmp,ss_tlty,'F', -1., kt, ssnd_n2c(id_ss_tlty_np)%nid(1,1), srcv_n2c(id_ss_tlty_ig)%nid(1,1) )
 
       CALL wrk_dealloc( jpi,jpj, ztmp, zpice )
@@ -555,4 +561,6 @@
       INTEGER  ::   ji, jj, jl                 ! dummy loop indices
       REAL(wp), DIMENSION(:,:), POINTER :: ztmp1, ztmp2
+      INTEGER :: kinfo, isec
+      REAL(wp) :: amaxv, aminv
       !!---------------------------------------------------------------------
 
@@ -564,7 +572,16 @@
          IF(lwp) WRITE(numout,*)'cice_sbc_out'
       ENDIF
-      
+!     isec = (kt-1)*rdt
+!     ztmp1 = 2. 
+!     CALL oasis_get ( srcv_n2c(1)%nid(1,1), isec, ztmp1(nldi:nlei, nldj:nlej), kinfo ) 
+!     amaxv = maxval(ztmp1(nldi:nlei, nldj:nlej))
+!     aminv = minval(ztmp1(nldi:nlei, nldj:nlej))
+!     vcice = ztmp1
+!     call mpp_max(amaxv)
+!     call mpp_min(aminv)
+!     if(lwp) write(numout,*) 'MAX/MIN OASIS: ', amaxv, aminv, kinfo
+!     write(*,*) amaxv, aminv, 'NEMO from CICE ',narea
 ! x comp of ocean-ice stress 
-      CALL cice2nemo(strocnx,ztmp1,'F', -1. )
+      CALL cice2nemo(strocnx,ztmp1,'F', -1., kt, ssnd_c2n(id_strocnx_ip)%nid(1,1), srcv_c2n(id_strocnx_ng)%nid(1,1))
       ss_iou(:,:)=0.0
 ! F point to U point
@@ -577,5 +594,5 @@
 
 ! y comp of ocean-ice stress 
-      CALL cice2nemo(strocny,ztmp1,'F', -1. )
+      CALL cice2nemo(strocny,ztmp1,'F', -1., kt, ssnd_c2n(id_strocny_ip)%nid(1,1), srcv_c2n(id_strocny_ng)%nid(1,1) )
       ss_iov(:,:)=0.0
 ! F point to V point
@@ -598,6 +615,6 @@
 ! Also need ice/ocean stress on T points so that taum can be updated 
 ! This interpolation is already done in CICE so best to use those values 
-      CALL cice2nemo(strocnxT,ztmp1,'T',-1.) 
-      CALL cice2nemo(strocnyT,ztmp2,'T',-1.) 
+      CALL cice2nemo(strocnxT,ztmp1,'T',-1., kt, ssnd_c2n(id_strocnxT_ip)%nid(1,1), srcv_c2n(id_strocnxT_ng)%nid(1,1)) 
+      CALL cice2nemo(strocnyT,ztmp2,'T',-1., kt, ssnd_c2n(id_strocnyT_ip)%nid(1,1), srcv_c2n(id_strocnyT_ng)%nid(1,1)) 
  
 ! Update taum with modulus of ice-ocean stress 
@@ -622,9 +639,9 @@
 
 #if defined key_cice4
-      CALL cice2nemo(fresh_gbm,ztmp1,'T', 1. )
-      CALL cice2nemo(fsalt_gbm,ztmp2,'T', 1. )
+      CALL cice2nemo(fresh_gbm,ztmp1,'T', 1., kt, ssnd_c2n(id_fresh_ai_ip)%nid(1,1), srcv_c2n(id_fresh_ai_ng)%nid(1,1))
+      CALL cice2nemo(fsalt_gbm,ztmp2,'T', 1., kt, ssnd_c2n(id_fsalt_ai_ip)%nid(1,1), srcv_c2n(id_fsalt_ai_ng)%nid(1,1) )
 #else
-      CALL cice2nemo(fresh_ai,ztmp1,'T', 1. )
-      CALL cice2nemo(fsalt_ai,ztmp2,'T', 1. )
+      CALL cice2nemo(fresh_ai,ztmp1,'T', 1., kt, ssnd_c2n(id_fresh_ai_ip)%nid(1,1), srcv_c2n(id_fresh_ai_ng)%nid(1,1) )
+      CALL cice2nemo(fsalt_ai,ztmp2,'T', 1., kt, ssnd_c2n(id_fsalt_ai_ip)%nid(1,1), srcv_c2n(id_fsalt_ai_ng)%nid(1,1) )
 #endif
 
@@ -661,7 +678,7 @@
 ! [fswthru will be zero unless running with calc_Tsfc=T in CICE]
 #if defined key_cice4
-      CALL cice2nemo(fswthru_gbm,ztmp1,'T', 1. )
+      CALL cice2nemo(fswthru_gbm,ztmp1,'T', 1., kt, ssnd_c2n(id_fswthru_ai_ip)%nid(1,1), srcv_c2n(id_fswthru_ai_ng)%nid(1,1) )
 #else
-      CALL cice2nemo(fswthru_ai,ztmp1,'T', 1. )
+      CALL cice2nemo(fswthru_ai,ztmp1,'T', 1., kt, ssnd_c2n(id_fswthru_ai_ip)%nid(1,1), srcv_c2n(id_fswthru_ai_ng)%nid(1,1) )
 #endif
       qsr(:,:)=qsr(:,:)+ztmp1(:,:)
@@ -675,7 +692,7 @@
 
 #if defined key_cice4
-      CALL cice2nemo(fhocn_gbm,ztmp1,'T', 1. )
+      CALL cice2nemo(fhocn_gbm,ztmp1,'T', 1., kt, ssnd_c2n(id_fhocn_ai_ip)%nid(1,1), srcv_c2n(id_fhocn_ai_ng)%nid(1,1) )
 #else
-      CALL cice2nemo(fhocn_ai,ztmp1,'T', 1. )
+      CALL cice2nemo(fhocn_ai,ztmp1,'T', 1., kt, ssnd_c2n(id_fhocn_ai_ip)%nid(1,1), srcv_c2n(id_fhocn_ai_ng)%nid(1,1) )
 #endif
       qns(:,:)=qns(:,:)+nfrzmlt(:,:)+ztmp1(:,:)
@@ -685,8 +702,8 @@
 ! Prepare for the following CICE time-step
 
-      CALL cice2nemo(aice,fr_i,'T', 1. )
+      CALL cice2nemo(aice,fr_i,'T', 1., kt, ssnd_c2n(id_aice_ip)%nid(1,1), srcv_c2n(id_fr_i_ng)%nid(1,1) )
       IF ( (ksbc == jp_flx).OR.(ksbc == jp_purecpl) ) THEN
          DO jl=1,ncat
-            CALL cice2nemo(aicen(:,:,jl,:),a_i(:,:,jl), 'T', 1. )
+            CALL cice2nemo(aicen(:,:,jl,:),a_i(:,:,jl), 'T', 1., kt, ssnd_c2n(id_aicen_ip)%nid(1,jl), srcv_c2n(id_a_i_ng)%nid(1,jl) )
          ENDDO
       ENDIF
@@ -706,6 +723,6 @@
       !                                      ! embedded sea ice
       IF( nn_ice_embd /= 0 ) THEN            ! mass exchanges between ice and ocean (case 1 or 2) set the snow+ice mass
-         CALL cice2nemo(vsno(:,:,:),ztmp1,'T', 1. )
-         CALL cice2nemo(vice(:,:,:),ztmp2,'T', 1. )
+         CALL cice2nemo(vsno(:,:,:),ztmp1,'T', 1., kt, ssnd_c2n(id_vsno_ip)%nid(1,1), srcv_c2n(id_vsno_ng)%nid(1,1) )
+         CALL cice2nemo(vice(:,:,:),ztmp2,'T', 1., kt, ssnd_c2n(id_vice_ip)%nid(1,1), srcv_c2n(id_vice_ng)%nid(1,1) )
          snwice_mass  (:,:) = ( rhosn * ztmp1(:,:) + rhoic * ztmp2(:,:)  )
          snwice_mass_b(:,:) = snwice_mass(:,:)
@@ -747,6 +764,6 @@
 ! x and y comp of ice velocity
 
-      CALL cice2nemo(uvel,u_ice,'F', -1. )
-      CALL cice2nemo(vvel,v_ice,'F', -1. )
+      CALL cice2nemo(uvel,u_ice,'F', -1., kt, ssnd_c2n(id_uvel_ip)%nid(1,1) , srcv_c2n(id_u_ice_ng)%nid(1,1) )
+      CALL cice2nemo(vvel,v_ice,'F', -1., kt, ssnd_c2n(id_vvel_ip)%nid(1,1), srcv_c2n(id_v_ice_ng)%nid(1,1) )
 
 ! Ice concentration (CO_1) = a_i calculated at end of cice_sbc_out  
@@ -755,6 +772,6 @@
 
       DO jl = 1,ncat
-         CALL cice2nemo(vsnon(:,:,jl,:),ht_s(:,:,jl),'T', 1. )
-         CALL cice2nemo(vicen(:,:,jl,:),ht_i(:,:,jl),'T', 1. )
+         CALL cice2nemo(vsnon(:,:,jl,:),ht_s(:,:,jl),'T', 1., kt, ssnd_c2n(id_vsnon_ip)%nid(1,jl), srcv_c2n(id_ht_s_ng)%nid(1,jl))
+         CALL cice2nemo(vicen(:,:,jl,:),ht_i(:,:,jl),'T', 1., kt, ssnd_c2n(id_vicen_ip)%nid(1,jl), srcv_c2n(id_ht_i_ng)%nid(1,jl))
       ENDDO
 
@@ -762,6 +779,6 @@
 ! Meltpond fraction and depth
       DO jl = 1,ncat
-         CALL cice2nemo(apeffn(:,:,jl,:),a_p(:,:,jl),'T', 1. )
-         CALL cice2nemo(trcrn(:,:,nt_hpnd,jl,:),ht_p(:,:,jl),'T', 1. )
+         CALL cice2nemo(apeffn(:,:,jl,:),a_p(:,:,jl),'T', 1., kt, ssnd_c2n(id_apeffn_ip)%nid(1,jl), srcv_c2n(id_a_p_ng)%nid(1,jl) )
+         CALL cice2nemo(trcrn(:,:,nt_hpnd,jl,:),ht_p(:,:,jl),'T', 1., kt, ssnd_c2n(id_trcrn_ip)%nid(1,jl), srcv_c2n(id_ht_p_ng)%nid(1,jl) )
       ENDDO
 #endif
@@ -776,6 +793,6 @@
       IF (heat_capacity) THEN
          DO jl = 1,ncat
-            CALL cice2nemo(Tn_top(:,:,jl,:),tn_ice(:,:,jl),'T', 1. )
-            CALL cice2nemo(keffn_top(:,:,jl,:),kn_ice(:,:,jl),'T', 1. )
+            CALL cice2nemo(Tn_top(:,:,jl,:),tn_ice(:,:,jl),'T', 1., kt, ssnd_c2n(id_Tn_top_ip)%nid(1,jl), srcv_c2n(id_tn_ice_ng)%nid(1,jl) )
+            CALL cice2nemo(keffn_top(:,:,jl,:),kn_ice(:,:,jl),'T', 1., kt, ssnd_c2n(id_keffn_top_ip)%nid(1,jl), srcv_c2n(id_kn_ice_ng)%nid(1,jl) )
          ENDDO
 ! Convert surface temperature to Kelvin
@@ -926,5 +943,5 @@
    END SUBROUTINE cice_sbc_force
 
-   SUBROUTINE nemo2cice( pn, pc, cd_type, psgn)
+   SUBROUTINE nemo2cice( pn, pc, cd_type, psgn, kt, idn, idc)
       !!---------------------------------------------------------------------
       !!                    ***  ROUTINE nemo2cice  ***
@@ -944,5 +961,5 @@
 #endif
       !!---------------------------------------------------------------------
-
+      INTEGER, INTENT( in ) :: idn, idc
       CHARACTER(len=1), INTENT( in ) ::   &
           cd_type       ! nature of pn grid-point
@@ -952,9 +969,6 @@
           !             !   =-1 , the sign is modified following the type of b.c. used
           !             !   = 1 , no sign change
+      INTEGER, INTENT(IN) :: kt
       REAL(wp), DIMENSION(jpi,jpj) :: pn
-#if !defined key_nemocice_decomp
-      REAL(wp), DIMENSION(jpiglo,jpjglo) :: png2
-      REAL (kind=dbl_kind), dimension(nx_global,ny_global) :: pcg
-#endif
       REAL (kind=dbl_kind), dimension(nx_block,ny_block,max_blocks) :: pc
       INTEGER (int_kind) :: &
@@ -964,4 +978,6 @@
 
       INTEGER  ::   ji, jj, jn                      ! dummy loop indices
+      INTEGER  ::  isec, kinfo, iblk
+      type (block) :: bk
 
 !     A. Ensure all haloes are filled in NEMO field (pn)
@@ -980,36 +996,42 @@
 
 #else
-
-!     B. Gather pn into global array (png)
-
-      IF ( jpnij > 1) THEN
-         CALL mppsync
-         CALL mppgather (pn,0,png) 
-         CALL mppsync
-      ELSE
-         png(:,:,1)=pn(:,:)
-      ENDIF
-
-!     C. Map png into CICE global array (pcg)
-
-! Need to make sure this is robust to changes in NEMO halo rows....
-! (may be OK but not 100% sure)
-
-      IF (nproc==0) THEN     
-!        pcg(:,:)=0.0
-         DO jn=1,jpnij
-            DO jj=nldjt(jn),nlejt(jn)
-               DO ji=nldit(jn),nleit(jn)
-                  png2(ji+nimppt(jn)-1,jj+njmppt(jn)-1)=png(ji,jj,jn)
-               ENDDO
-            ENDDO
-         ENDDO
-         DO jj=1,ny_global
-            DO ji=1,nx_global
-               pcg(ji,jj)=png2(ji+ji_off,jj+jj_off)
-            ENDDO
-         ENDDO
-      ENDIF
-
+!MA
+!MA!     B. Gather pn into global array (png)
+!MA
+!MA      IF ( jpnij > 1) THEN
+!MA         CALL mppsync
+!MA         CALL mppgather (pn,0,png) 
+!MA         CALL mppsync
+!MA      ELSE
+!MA         png(:,:,1)=pn(:,:)
+!MA      ENDIF
+
+!MA!     C. Map png into CICE global array (pcg)
+
+!MA! Need to make sure this is robust to changes in NEMO halo rows....
+!MA! (may be OK but not 100% sure)
+
+!MA      IF (nproc==0) THEN     
+!MA!        pcg(:,:)=0.0
+!MA         DO jn=1,jpnij
+!MA            DO jj=nldjt(jn),nlejt(jn)
+!MA               DO ji=nldit(jn),nleit(jn)
+!MA                  png2(ji+nimppt(jn)-1,jj+njmppt(jn)-1)=png(ji,jj,jn)
+!MA               ENDDO
+!MA            ENDDO
+!MA         ENDDO
+!MA         DO jj=1,ny_global
+!MA            DO ji=1,nx_global
+!MA               pcg(ji,jj)=png2(ji+ji_off,jj+jj_off)
+!MA            ENDDO
+!MA         ENDDO
+!MA      ENDIF
+
+! forced and coupled case 
+      isec = (kt-1)*rdt
+      iblk = 1
+      bk = get_block(blocks_ice(iblk), iblk)
+      CALL oasis_put ( idn, isec, pn(nldi:nlei, nldj:nlej), kinfo )
+      CALL oasis_get ( idc, isec, pc(bk%ilo:bk%ihi,bk%jlo:bk%jhi,1), kinfo )
 #endif
 
@@ -1033,10 +1055,12 @@
 #else
 !     D. Scatter pcg to CICE blocks (pc) + update halos
-      CALL scatter_global(pc, pcg, 0, distrb_info, grid_loc, field_type)
+!MA     CALL scatter_global(pc, pcg, 0, distrb_info, grid_loc, field_type)
+      ! Ensure CICE halos are up to date
+      CALL ice_HaloUpdate (pc, halo_info, grid_loc, field_type)
 #endif
 
    END SUBROUTINE nemo2cice
 
-   SUBROUTINE cice2nemo ( pc, pn, cd_type, psgn )
+   SUBROUTINE cice2nemo ( pc, pn, cd_type, psgn, kt, idc, idn )
       !!---------------------------------------------------------------------
       !!                    ***  ROUTINE cice2nemo  ***
@@ -1065,20 +1089,21 @@
           !             !   = 1 , no sign change
       REAL(wp), DIMENSION(jpi,jpj) :: pn
-
-#if defined key_nemocice_decomp
+      INTEGER, INTENT( in ) :: idc, idn
+      INTEGER, INTENT(IN) :: kt
+
+!#if defined key_nemocice_decomp
       INTEGER (int_kind) :: &
          field_type,        & ! id for type of field (scalar, vector, angle)
          grid_loc             ! id for location on horizontal grid
                               ! (center, NEcorner, Nface, Eface)
-#else
-      REAL (kind=dbl_kind), dimension(nx_global,ny_global) :: pcg
-#endif
+!#else
+!MA     REAL (kind=dbl_kind), dimension(nx_global,ny_global) :: pcg
+!#endif
+      type(block) :: bk
 
       REAL (kind=dbl_kind), dimension(nx_block,ny_block,max_blocks) :: pc
 
       INTEGER  ::   ji, jj, jn                      ! dummy loop indices
-
-
-#if defined key_nemocice_decomp
+      INTEGER :: kinfo, isec, iblk
 
       SELECT CASE ( cd_type )
@@ -1098,5 +1123,5 @@
       CALL ice_HaloUpdate (pc, halo_info, grid_loc, field_type)
 
-
+#if defined key_nemocice_decomp
       pn(:,:)=0.0
       DO jj=1,jpjm1
@@ -1108,36 +1133,40 @@
 #else
 
-!      A. Gather CICE blocks (pc) into global array (pcg) 
-
-      CALL gather_global(pcg, pc, 0, distrb_info)
-
-!     B. Map pcg into NEMO global array (png)
-
-! Need to make sure this is robust to changes in NEMO halo rows....
-! (may be OK but not spent much time thinking about it)
-! Note that non-existent pcg elements may be used below, but
-! the lbclnk call on pn will replace these with sensible values
-
-      IF (nproc==0) THEN
-         png(:,:,:)=0.0
-         DO jn=1,jpnij
-            DO jj=nldjt(jn),nlejt(jn)
-               DO ji=nldit(jn),nleit(jn)
-                  png(ji,jj,jn)=pcg(ji+nimppt(jn)-1-ji_off,jj+njmppt(jn)-1-jj_off)
-               ENDDO
-            ENDDO
-         ENDDO
-      ENDIF
+!MA!      A. Gather CICE blocks (pc) into global array (pcg) 
+
+!MA      CALL gather_global(pcg, pc, 0, distrb_info)
+
+!MA!     B. Map pcg into NEMO global array (png)
+
+!MA! Need to make sure this is robust to changes in NEMO halo rows....
+!MA! (may be OK but not spent much time thinking about it)
+!MA! Note that non-existent pcg elements may be used below, but
+!MA! the lbclnk call on pn will replace these with sensible values
+
+!MA      IF (nproc==0) THEN
+!MA         png(:,:,:)=0.0
+!MA         DO jn=1,jpnij
+!MA            DO jj=nldjt(jn),nlejt(jn)
+!MA               DO ji=nldit(jn),nleit(jn)
+!MA                  png(ji,jj,jn)=pcg(ji+nimppt(jn)-1-ji_off,jj+njmppt(jn)-1-jj_off)
+!MA               ENDDO
+!MA            ENDDO
+!MA         ENDDO
+!MA      ENDIF
 
 !     C. Scatter png into NEMO field (pn) for each processor
 
-      IF ( jpnij > 1) THEN
-         CALL mppsync
-         CALL mppscatter (png,0,pn) 
-         CALL mppsync
-      ELSE
-         pn(:,:)=png(:,:,1)
-      ENDIF
-
+!MA      IF ( jpnij > 1) THEN
+!MA         CALL mppsync
+!MA         CALL mppscatter (png,0,pn) 
+!MA         CALL mppsync
+!MA      ELSE
+!MA         pn(:,:)=png(:,:,1)
+!MA      ENDIF
+      isec = (kt-1)*rdt
+      iblk = 1
+      bk = get_block(blocks_ice(iblk), iblk)
+      CALL oasis_put ( idc, isec, pc(bk%ilo:bk%ihi,bk%jlo:bk%jhi,1), kinfo )
+      CALL oasis_get ( idn, isec, pn(nldi:nlei, nldj:nlej), kinfo )
 #endif
 
@@ -1156,8 +1185,10 @@
 
    SUBROUTINE sbc_ice_cice ( kt, ksbc )     ! Dummy routine
+      INTEGER, INTENT(IN) :: kt, ksbc
       WRITE(*,*) 'sbc_ice_cice: You should not have seen this print! error?', kt
    END SUBROUTINE sbc_ice_cice
 
-   SUBROUTINE cice_sbc_init (ksbc)    ! Dummy routine
+   SUBROUTINE cice_sbc_init (kt, ksbc)    ! Dummy routine
+      INTEGER, INTENT(IN) :: kt, ksbc
       WRITE(*,*) 'cice_sbc_init: You should not have seen this print! error?'
    END SUBROUTINE cice_sbc_init
Index: /branches/UKMO/dev_r6912_GO6_package/NEMOGCM/NEMO/OPA_SRC/SBC/sbcmod.F90
===================================================================
--- /branches/UKMO/dev_r6912_GO6_package/NEMOGCM/NEMO/OPA_SRC/SBC/sbcmod.F90	(revision 9131)
+++ /branches/UKMO/dev_r6912_GO6_package/NEMOGCM/NEMO/OPA_SRC/SBC/sbcmod.F90	(revision 9132)
@@ -267,6 +267,7 @@
       !
       IF( lk_oasis )   CALL sbc_cpl_init (nn_ice)   ! OASIS initialisation. must be done before: (1) first time step
-      !                                                     !                                            (2) the use of nn_fsbc
-
+      IF( nn_ice == 4      )   CALL cice_sbc_init( nsbc )      ! CICE initialisation
+      call flush(numout)
+                                                     !                                            (2) the use of nn_fsbc
 !     nn_fsbc initialization if OPA-SAS coupling via OASIS
 !     sas model time step has to be declared in OASIS (mandatory) -> nn_fsbc has to be modified accordingly
@@ -304,6 +305,4 @@
       IF( nn_ice == 3      )   CALL sbc_lim_init               ! LIM3 initialisation
 
-      IF( nn_ice == 4      )   CALL cice_sbc_init( nsbc )      ! CICE initialisation
-      
    END SUBROUTINE sbc_init
 
Index: /branches/UKMO/dev_r6912_GO6_package/NEMOGCM/NEMO/OPA_SRC/nemogcm.F90
===================================================================
--- /branches/UKMO/dev_r6912_GO6_package/NEMOGCM/NEMO/OPA_SRC/nemogcm.F90	(revision 9131)
+++ /branches/UKMO/dev_r6912_GO6_package/NEMOGCM/NEMO/OPA_SRC/nemogcm.F90	(revision 9132)
@@ -370,4 +370,5 @@
          END DO
          WRITE(numout,cform_aaa)                                         ! Flag AAAAAAA
+         call flush(numout)
          !
       ENDIF
@@ -475,4 +476,5 @@
       IF( lk_asminc     )   CALL asm_inc_init   ! Initialize assimilation increments
       IF(lwp) WRITE(numout,*) 'Euler time step switch is ', neuler
+      call flush(numout)
       !
    END SUBROUTINE nemo_init
Index: /branches/UKMO/dev_r6912_GO6_package/NEMOGCM/NEMO/OPA_SRC/oce.F90
===================================================================
--- /branches/UKMO/dev_r6912_GO6_package/NEMOGCM/NEMO/OPA_SRC/oce.F90	(revision 9131)
+++ /branches/UKMO/dev_r6912_GO6_package/NEMOGCM/NEMO/OPA_SRC/oce.F90	(revision 9132)
@@ -32,4 +32,5 @@
    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   rhd    !: in situ density anomalie rhd=(rho-rau0)/rau0  [no units]
    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   rhop   !: potential volumic mass                           [kg/m3]
+   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   vcice
 
    !! free surface                                      !  before  ! now    ! after  !
@@ -97,5 +98,5 @@
       !!                   ***  FUNCTION oce_alloc  ***
       !!----------------------------------------------------------------------
-      INTEGER :: ierr(4)
+      INTEGER :: ierr(5)
       !!----------------------------------------------------------------------
       !
@@ -129,4 +130,5 @@
          &     riceload(jpi,jpj),                             STAT=ierr(2) )
          !
+      ALLOCATE(vcice (jpi,jpj))
       ALLOCATE( snwice_mass(jpi,jpj) , snwice_mass_b(jpi,jpj), snwice_fmass(jpi,jpj) , STAT=ierr(3) )
          !
