Index: NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/CRS/crsfld.F90
===================================================================
--- NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/CRS/crsfld.F90	(revision 10969)
+++ NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/CRS/crsfld.F90	(revision 10970)
@@ -40,5 +40,5 @@
 CONTAINS
 
-   SUBROUTINE crs_fld( kt )
+   SUBROUTINE crs_fld( kt, Kmm )
       !!---------------------------------------------------------------------
       !!                  ***  ROUTINE crs_fld  ***
@@ -54,4 +54,5 @@
       !!----------------------------------------------------------------------
       INTEGER, INTENT(in) ::   kt   ! ocean time-step index
+      INTEGER, INTENT(in) ::   Kmm  ! time level index
       !
       INTEGER  ::   ji, jj, jk        ! dummy loop indices
@@ -67,8 +68,8 @@
 
       ! Depth work arrrays
-      ze3t(:,:,:) = e3t_n(:,:,:)
-      ze3u(:,:,:) = e3u_n(:,:,:)
-      ze3v(:,:,:) = e3v_n(:,:,:)
-      ze3w(:,:,:) = e3w_n(:,:,:)
+      ze3t(:,:,:) = e3t(:,:,:,Kmm)
+      ze3u(:,:,:) = e3u(:,:,:,Kmm)
+      ze3v(:,:,:) = e3v(:,:,:,Kmm)
+      ze3w(:,:,:) = e3w(:,:,:,Kmm)
 
       IF( kt == nit000  ) THEN
@@ -96,5 +97,5 @@
 
       !  Temperature
-      zt(:,:,:) = tsn(:,:,:,jp_tem)  ;      zt_crs(:,:,:) = 0._wp
+      zt(:,:,:) = ts(:,:,:,jp_tem,Kmm)  ;      zt_crs(:,:,:) = 0._wp
       CALL crs_dom_ope( zt, 'VOL', 'T', tmask, zt_crs, p_e12=e1e2t, p_e3=ze3t, psgn=1.0 )
       tsn_crs(:,:,:,jp_tem) = zt_crs(:,:,:)
@@ -105,5 +106,5 @@
       
       !  Salinity
-      zs(:,:,:) = tsn(:,:,:,jp_sal)  ;      zs_crs(:,:,:) = 0._wp
+      zs(:,:,:) = ts(:,:,:,jp_sal,Kmm)  ;      zs_crs(:,:,:) = 0._wp
       CALL crs_dom_ope( zs, 'VOL', 'T', tmask, zs_crs, p_e12=e1e2t, p_e3=ze3t, psgn=1.0 )
       tsn_crs(:,:,:,jp_sal) = zt_crs(:,:,:)
@@ -113,5 +114,5 @@
 
       !  U-velocity
-      CALL crs_dom_ope( un, 'SUM', 'U', umask, un_crs, p_e12=e2u, p_e3=ze3u, p_surf_crs=e2e3u_msk, psgn=-1.0 )
+      CALL crs_dom_ope( uu(:,:,:,Kmm), 'SUM', 'U', umask, un_crs, p_e12=e2u, p_e3=ze3u, p_surf_crs=e2e3u_msk, psgn=-1.0 )
       !
       zt(:,:,:) = 0._wp     ;    zs(:,:,:) = 0._wp  ;   zt_crs(:,:,:) = 0._wp   ;    zs_crs(:,:,:) = 0._wp
@@ -119,6 +120,6 @@
          DO jj = 2, jpjm1
             DO ji = 2, jpim1   
-               zt(ji,jj,jk)  = un(ji,jj,jk) * 0.5 * ( tsn(ji,jj,jk,jp_tem) + tsn(ji+1,jj,jk,jp_tem) ) 
-               zs(ji,jj,jk)  = un(ji,jj,jk) * 0.5 * ( tsn(ji,jj,jk,jp_sal) + tsn(ji+1,jj,jk,jp_sal) ) 
+               zt(ji,jj,jk)  = uu(ji,jj,jk,Kmm) * 0.5 * ( ts(ji,jj,jk,jp_tem,Kmm) + ts(ji+1,jj,jk,jp_tem,Kmm) ) 
+               zs(ji,jj,jk)  = uu(ji,jj,jk,Kmm) * 0.5 * ( ts(ji,jj,jk,jp_sal,Kmm) + ts(ji+1,jj,jk,jp_sal,Kmm) ) 
             END DO
          END DO
@@ -132,5 +133,5 @@
 
       !  V-velocity
-      CALL crs_dom_ope( vn, 'SUM', 'V', vmask, vn_crs, p_e12=e1v, p_e3=ze3v, p_surf_crs=e1e3v_msk, psgn=-1.0 )
+      CALL crs_dom_ope( vv(:,:,:,Kmm), 'SUM', 'V', vmask, vn_crs, p_e12=e1v, p_e3=ze3v, p_surf_crs=e1e3v_msk, psgn=-1.0 )
       !                                                                                 
       zt(:,:,:) = 0._wp     ;    zs(:,:,:) = 0._wp  ;   zt_crs(:,:,:) = 0._wp   ;    zs_crs(:,:,:) = 0._wp
@@ -138,6 +139,6 @@
          DO jj = 2, jpjm1
             DO ji = 2, jpim1   
-               zt(ji,jj,jk)  = vn(ji,jj,jk) * 0.5 * ( tsn(ji,jj,jk,jp_tem) + tsn(ji,jj+1,jk,jp_tem) ) 
-               zs(ji,jj,jk)  = vn(ji,jj,jk) * 0.5 * ( tsn(ji,jj,jk,jp_sal) + tsn(ji,jj+1,jk,jp_sal) ) 
+               zt(ji,jj,jk)  = vv(ji,jj,jk,Kmm) * 0.5 * ( ts(ji,jj,jk,jp_tem,Kmm) + ts(ji,jj+1,jk,jp_tem,Kmm) ) 
+               zs(ji,jj,jk)  = vv(ji,jj,jk,Kmm) * 0.5 * ( ts(ji,jj,jk,jp_sal,Kmm) + ts(ji,jj+1,jk,jp_sal,Kmm) ) 
             END DO
          END DO
@@ -155,10 +156,10 @@
             DO jj = 2, jpjm1
                DO ji = fs_2, fs_jpim1   ! vector opt.
-                  zztmp  = r1_e1e2t(ji,jj) / e3t_n(ji,jj,jk)
+                  zztmp  = r1_e1e2t(ji,jj) / e3t(ji,jj,jk,Kmm)
                   z3d(ji,jj,jk) = 0.25_wp * zztmp * (                                    &
-                     &            un(ji-1,jj,jk)**2 * e2u(ji-1,jj) * e3u_n(ji-1,jj,jk)   &
-                     &          + un(ji  ,jj,jk)**2 * e2u(ji  ,jj) * e3u_n(ji  ,jj,jk)   &
-                     &          + vn(ji,jj-1,jk)**2 * e1v(ji,jj-1) * e3v_n(ji,jj-1,jk)   &
-                     &          + vn(ji,jj  ,jk)**2 * e1v(ji,jj  ) * e3v_n(ji,jj  ,jk)   )
+                     &            uu(ji-1,jj,jk,Kmm)**2 * e2u(ji-1,jj) * e3u(ji-1,jj,jk,Kmm)   &
+                     &          + uu(ji  ,jj,jk,Kmm)**2 * e2u(ji  ,jj) * e3u(ji  ,jj,jk,Kmm)   &
+                     &          + vv(ji,jj-1,jk,Kmm)**2 * e1v(ji,jj-1) * e3v(ji,jj-1,jk,Kmm)   &
+                     &          + vv(ji,jj  ,jk,Kmm)**2 * e1v(ji,jj  ) * e3v(ji,jj  ,jk,Kmm)   )
                END DO
             END DO
@@ -191,6 +192,6 @@
       !  W-velocity
       IF( ln_crs_wn ) THEN
-         CALL crs_dom_ope( wn, 'SUM', 'W', tmask, wn_crs, p_e12=e1e2t, p_surf_crs=e1e2w_msk, psgn=1.0 )
-       !  CALL crs_dom_ope( wn, 'VOL', 'W', tmask, wn_crs, p_e12=e1e2t, p_e3=ze3w )
+         CALL crs_dom_ope( ww, 'SUM', 'W', tmask, wn_crs, p_e12=e1e2t, p_surf_crs=e1e2w_msk, psgn=1.0 )
+       !  CALL crs_dom_ope( ww, 'VOL', 'W', tmask, wn_crs, p_e12=e1e2t, p_e3=ze3w )
       ELSE
         wn_crs(:,:,jpk) = 0._wp
@@ -219,5 +220,5 @@
       
       !  sbc fields  
-      CALL crs_dom_ope( sshn , 'VOL', 'T', tmask, sshn_crs , p_e12=e1e2t, p_e3=ze3t           , psgn=1.0 )  
+      CALL crs_dom_ope( ssh(:,:,Kmm) , 'VOL', 'T', tmask, sshn_crs , p_e12=e1e2t, p_e3=ze3t           , psgn=1.0 )  
       CALL crs_dom_ope( utau , 'SUM', 'U', umask, utau_crs , p_e12=e2u  , p_surf_crs=e2u_crs  , psgn=1.0 )
       CALL crs_dom_ope( vtau , 'SUM', 'V', vmask, vtau_crs , p_e12=e1v  , p_surf_crs=e1v_crs  , psgn=1.0 )
Index: NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/CRS/crsini.F90
===================================================================
--- NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/CRS/crsini.F90	(revision 10969)
+++ NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/CRS/crsini.F90	(revision 10970)
@@ -35,5 +35,5 @@
 CONTAINS
    
-   SUBROUTINE crs_init 
+   SUBROUTINE crs_init( Kmm )
       !!-------------------------------------------------------------------
       !!                     *** SUBROUTINE crs_init
@@ -68,4 +68,6 @@
       !!               - Read in pertinent data ?
       !!-------------------------------------------------------------------
+      INTEGER, INTENT(in) :: Kmm   ! time level index
+      !
       INTEGER  :: ji,jj,jk      ! dummy indices
       INTEGER  :: ierr                                ! allocation error status
@@ -98,5 +100,5 @@
         WRITE(numout,*) '      create a mesh file (=T)               ln_msh_crs = ', ln_msh_crs
         WRITE(numout,*) '      type of Kz coarsening (0,1,2)         nn_crs_kz  = ', nn_crs_kz
-        WRITE(numout,*) '      wn coarsened or computed using hdivn  ln_crs_wn  = ', ln_crs_wn
+        WRITE(numout,*) '      ww coarsened or computed using hdiv  ln_crs_wn  = ', ln_crs_wn
      ENDIF
               
@@ -174,8 +176,8 @@
      
      !
-     ze3t(:,:,:) = e3t_n(:,:,:)
-     ze3u(:,:,:) = e3u_n(:,:,:)
-     ze3v(:,:,:) = e3v_n(:,:,:)
-     ze3w(:,:,:) = e3w_n(:,:,:)
+     ze3t(:,:,:) = e3t(:,:,:,Kmm)
+     ze3u(:,:,:) = e3u(:,:,:,Kmm)
+     ze3v(:,:,:) = e3v(:,:,:,Kmm)
+     ze3w(:,:,:) = e3w(:,:,:,Kmm)
 
      !    3.d.2   Surfaces 
Index: NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/FLO/flo4rk.F90
===================================================================
--- NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/FLO/flo4rk.F90	(revision 10969)
+++ NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/FLO/flo4rk.F90	(revision 10970)
@@ -35,5 +35,5 @@
 CONTAINS
 
-   SUBROUTINE flo_4rk( kt )
+   SUBROUTINE flo_4rk( kt, Kbb, Kmm )
       !!----------------------------------------------------------------------
       !!                  ***  ROUTINE flo_4rk  ***
@@ -47,5 +47,6 @@
       !!       floats and the grid defined on the domain.
       !!----------------------------------------------------------------------
-      INTEGER, INTENT(in) ::   kt   ! ocean time-step index
+      INTEGER, INTENT(in) ::   kt         ! ocean time-step index
+      INTEGER, INTENT(in) ::   Kbb, Kmm   ! ocean time level indices
       !!
       INTEGER ::  jfl, jind           ! dummy loop indices
@@ -127,5 +128,5 @@
       
          ! for each step we compute the compute the velocity with Lagrange interpolation
-         CALL flo_interp( zgifl, zgjfl, zgkfl, zufl, zvfl, zwfl, jind )
+         CALL flo_interp( Kbb, Kmm, zgifl, zgjfl, zgkfl, zufl, zvfl, zwfl, jind )
          
          ! computation of Runge-Kutta factor
@@ -155,5 +156,6 @@
 
 
-   SUBROUTINE flo_interp( pxt , pyt , pzt ,      &
+   SUBROUTINE flo_interp( Kbb, Kmm,              &
+      &                   pxt , pyt , pzt ,      &
       &                   pufl, pvfl, pwfl, ki )
       !!----------------------------------------------------------------------
@@ -167,4 +169,5 @@
       !!      integrated with RK method.
       !!----------------------------------------------------------------------
+      INTEGER                    , INTENT(in   ) ::   Kbb, Kmm           ! ocean time level indices
       REAL(wp) , DIMENSION(jpnfl), INTENT(in   ) ::   pxt , pyt , pzt    ! position of the float
       REAL(wp) , DIMENSION(jpnfl), INTENT(  out) ::   pufl, pvfl, pwfl   ! velocity at this position
@@ -248,6 +251,6 @@
                DO jind3 = 1, 4
                   ztufl(jfl,jind1,jind2,jind3) =   &
-                     &   (  tcoef1(ki) * ub(iidu(jfl,jind1),ijdu(jfl,jind2),ikdu(jfl,jind3)) +   &
-                     &      tcoef2(ki) * un(iidu(jfl,jind1),ijdu(jfl,jind2),ikdu(jfl,jind3)) )   &
+                     &   (  tcoef1(ki) * uu(iidu(jfl,jind1),ijdu(jfl,jind2),ikdu(jfl,jind3),Kbb) +   &
+                     &      tcoef2(ki) * uu(iidu(jfl,jind1),ijdu(jfl,jind2),ikdu(jfl,jind3),Kmm) )   &
                      &      / e1u(iidu(jfl,jind1),ijdu(jfl,jind2)) 
                END DO
@@ -332,6 +335,6 @@
                DO jind3 = 1 ,4
                   ztvfl(jfl,jind1,jind2,jind3)=   &
-                     &   ( tcoef1(ki) * vb(iidv(jfl,jind1),ijdv(jfl,jind2),ikdv(jfl,jind3))  +   &
-                     &     tcoef2(ki) * vn(iidv(jfl,jind1),ijdv(jfl,jind2),ikdv(jfl,jind3)) )    & 
+                     &   ( tcoef1(ki) * vv(iidv(jfl,jind1),ijdv(jfl,jind2),ikdv(jfl,jind3),Kbb)  +   &
+                     &     tcoef2(ki) * vv(iidv(jfl,jind1),ijdv(jfl,jind2),ikdv(jfl,jind3),Kmm) )    & 
                      &     / e2v(iidv(jfl,jind1),ijdv(jfl,jind2))
                END DO
@@ -424,6 +427,6 @@
                   ztwfl(jfl,jind1,jind2,jind3)=   &
                      &   ( tcoef1(ki) * wb(iidw(jfl,jind1),ijdw(jfl,jind2),ikdw(jfl,jind3))+   &
-                     &     tcoef2(ki) * wn(iidw(jfl,jind1),ijdw(jfl,jind2),ikdw(jfl,jind3)) )  &
-                     &   / e3w_n(iidw(jfl,jind1),ijdw(jfl,jind2),ikdw(jfl,jind3))
+                     &     tcoef2(ki) * ww(iidw(jfl,jind1),ijdw(jfl,jind2),ikdw(jfl,jind3)) )  &
+                     &   / e3w(iidw(jfl,jind1),ijdw(jfl,jind2),ikdw(jfl,jind3),Kmm)
                END DO
             END DO
Index: NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/FLO/floats.F90
===================================================================
--- NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/FLO/floats.F90	(revision 10969)
+++ NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/FLO/floats.F90	(revision 10970)
@@ -39,5 +39,5 @@
 CONTAINS
 
-   SUBROUTINE flo_stp( kt )
+   SUBROUTINE flo_stp( kt, Kbb, Kmm )
       !!----------------------------------------------------------------------
       !!                   ***  ROUTINE flo_stp  ***
@@ -50,20 +50,21 @@
       !!        if ln_flork4 =T
       !!----------------------------------------------------------------------
-      INTEGER, INTENT( in  ) ::   kt   ! ocean time step
+      INTEGER, INTENT( in  ) ::   kt        ! ocean time step
+      INTEGER, INTENT( in  ) ::   Kbb, Kmm  ! ocean time level indices 
       !!----------------------------------------------------------------------
       !
       IF( ln_timing )   CALL timing_start('flo_stp')
       !
-      IF( ln_flork4 ) THEN   ;   CALL flo_4rk( kt )        ! Trajectories using a 4th order Runge Kutta scheme
-      ELSE                   ;   CALL flo_blk( kt )        ! Trajectories using Blanke' algorithme
+      IF( ln_flork4 ) THEN   ;   CALL flo_4rk( kt, Kbb, Kmm )  ! Trajectories using a 4th order Runge Kutta scheme
+      ELSE                   ;   CALL flo_blk( kt, Kbb, Kmm )  ! Trajectories using Blanke' algorithme
       ENDIF
       !
       IF( lk_mpp )   CALL mppsync   ! synchronization of all the processor
       !
-      CALL flo_wri( kt )      ! trajectories ouput 
+      CALL flo_wri( kt, Kmm ) ! trajectories ouput 
       !
       CALL flo_rst( kt )      ! trajectories restart
       !
-      wb(:,:,:) = wn(:,:,:)         ! Save the old vertical velocity field
+      wb(:,:,:) = ww(:,:,:)         ! Save the old vertical velocity field
       !
       IF( ln_timing )   CALL timing_stop('flo_stp')
@@ -72,5 +73,5 @@
 
 
-   SUBROUTINE flo_init
+   SUBROUTINE flo_init( Kmm )
       !!----------------------------------------------------------------
       !!                 ***  ROUTINE flo_init  ***
@@ -78,4 +79,6 @@
       !! ** Purpose :   Read the namelist of floats
       !!----------------------------------------------------------------------
+      INTEGER, INTENT(in) :: Kmm       ! ocean time level index
+      !
       INTEGER ::   jfl
       INTEGER ::   ios                 ! Local integer output status for namelist read
@@ -130,7 +133,7 @@
       END DO
       !
-      CALL flo_dom                  ! compute/read initial position of floats
+      CALL flo_dom( Kmm )           ! compute/read initial position of floats
       !
-      wb(:,:,:) = wn(:,:,:)         ! set wb for computation of floats trajectories at the first time step
+      wb(:,:,:) = ww(:,:,:)         ! set wb for computation of floats trajectories at the first time step
       !
    END SUBROUTINE flo_init
@@ -141,11 +144,13 @@
    !!----------------------------------------------------------------------
 CONTAINS
-   SUBROUTINE flo_stp( kt )          ! Empty routine
+   SUBROUTINE flo_stp( kt, Kbb, Kmm )  ! Empty routine
       IMPLICIT NONE
       INTEGER, INTENT( in ) :: kt
+      INTEGER, INTENT( in ) :: Kbb, Kmm
       WRITE(*,*) 'flo_stp: You should not have seen this print! error?', kt
    END SUBROUTINE flo_stp
-   SUBROUTINE flo_init          ! Empty routine
+   SUBROUTINE flo_init( Kmm )          ! Empty routine
       IMPLICIT NONE
+      INTEGER, INTENT( in ) :: Kmm
    END SUBROUTINE flo_init
 #endif
Index: NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/FLO/floblk.F90
===================================================================
--- NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/FLO/floblk.F90	(revision 10969)
+++ NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/FLO/floblk.F90	(revision 10970)
@@ -29,5 +29,5 @@
 CONTAINS
 
-   SUBROUTINE flo_blk( kt )
+   SUBROUTINE flo_blk( kt, Kbb, Kmm )
       !!---------------------------------------------------------------------
       !!                  ***  ROUTINE flo_blk  ***
@@ -40,5 +40,6 @@
       !!      of the floats and the grid defined on the domain.
       !!----------------------------------------------------------------------
-      INTEGER, INTENT( in  ) ::   kt ! ocean time step
+      INTEGER, INTENT( in  ) ::   kt       ! ocean time step
+      INTEGER, INTENT( in  ) ::   Kbb, Kmm ! ocean time level indices
       !!
       INTEGER :: jfl              ! dummy loop arguments
@@ -112,22 +113,22 @@
             ! compute the transport across the mesh where the float is.            
 !!bug (gm) change e3t into e3. but never checked 
-            zsurfx(1) = e2u(iiloc(jfl)-1,ijloc(jfl)  ) * e3u_n(iiloc(jfl)-1,ijloc(jfl)  ,-ikl(jfl))
-            zsurfx(2) = e2u(iiloc(jfl)  ,ijloc(jfl)  ) * e3u_n(iiloc(jfl)  ,ijloc(jfl)  ,-ikl(jfl))
-            zsurfy(1) = e1v(iiloc(jfl)  ,ijloc(jfl)-1) * e3v_n(iiloc(jfl)  ,ijloc(jfl)-1,-ikl(jfl))
-            zsurfy(2) = e1v(iiloc(jfl)  ,ijloc(jfl)  ) * e3v_n(iiloc(jfl)  ,ijloc(jfl)  ,-ikl(jfl))
+            zsurfx(1) = e2u(iiloc(jfl)-1,ijloc(jfl)  ) * e3u(iiloc(jfl)-1,ijloc(jfl)  ,-ikl(jfl),Kmm)
+            zsurfx(2) = e2u(iiloc(jfl)  ,ijloc(jfl)  ) * e3u(iiloc(jfl)  ,ijloc(jfl)  ,-ikl(jfl),Kmm)
+            zsurfy(1) = e1v(iiloc(jfl)  ,ijloc(jfl)-1) * e3v(iiloc(jfl)  ,ijloc(jfl)-1,-ikl(jfl),Kmm)
+            zsurfy(2) = e1v(iiloc(jfl)  ,ijloc(jfl)  ) * e3v(iiloc(jfl)  ,ijloc(jfl)  ,-ikl(jfl),Kmm)
 
             ! for a isobar float zsurfz is put to zero. The vertical velocity will be zero too.
             zsurfz =          e1e2t(iiloc(jfl),ijloc(jfl))
-            zvol   = zsurfz * e3t_n(iiloc(jfl),ijloc(jfl),-ikl(jfl))
+            zvol   = zsurfz * e3t(iiloc(jfl),ijloc(jfl),-ikl(jfl),Kmm)
 
             !
-            zuinfl =( ub(iiloc(jfl)-1,ijloc(jfl),-ikl(jfl)) + un(iiloc(jfl)-1,ijloc(jfl),-ikl(jfl)) )/2.*zsurfx(1)
-            zuoutfl=( ub(iiloc(jfl)  ,ijloc(jfl),-ikl(jfl)) + un(iiloc(jfl)  ,ijloc(jfl),-ikl(jfl)) )/2.*zsurfx(2)
-            zvinfl =( vb(iiloc(jfl),ijloc(jfl)-1,-ikl(jfl)) + vn(iiloc(jfl),ijloc(jfl)-1,-ikl(jfl)) )/2.*zsurfy(1)
-            zvoutfl=( vb(iiloc(jfl),ijloc(jfl)  ,-ikl(jfl)) + vn(iiloc(jfl),ijloc(jfl)  ,-ikl(jfl)) )/2.*zsurfy(2)
+            zuinfl =( uu(iiloc(jfl)-1,ijloc(jfl),-ikl(jfl),Kbb) + uu(iiloc(jfl)-1,ijloc(jfl),-ikl(jfl),Kmm) )/2.*zsurfx(1)
+            zuoutfl=( uu(iiloc(jfl)  ,ijloc(jfl),-ikl(jfl),Kbb) + uu(iiloc(jfl)  ,ijloc(jfl),-ikl(jfl),Kmm) )/2.*zsurfx(2)
+            zvinfl =( vv(iiloc(jfl),ijloc(jfl)-1,-ikl(jfl),Kbb) + vv(iiloc(jfl),ijloc(jfl)-1,-ikl(jfl),Kmm) )/2.*zsurfy(1)
+            zvoutfl=( vv(iiloc(jfl),ijloc(jfl)  ,-ikl(jfl),Kbb) + vv(iiloc(jfl),ijloc(jfl)  ,-ikl(jfl),Kmm) )/2.*zsurfy(2)
             zwinfl =-(wb(iiloc(jfl),ijloc(jfl),-(ikl(jfl)-1))    &
-               &   +  wn(iiloc(jfl),ijloc(jfl),-(ikl(jfl)-1)) )/2. *  zsurfz*nisobfl(jfl)
+               &   +  ww(iiloc(jfl),ijloc(jfl),-(ikl(jfl)-1)) )/2. *  zsurfz*nisobfl(jfl)
             zwoutfl=-(wb(iiloc(jfl),ijloc(jfl),- ikl(jfl)   )   &
-               &   +  wn(iiloc(jfl),ijloc(jfl),- ikl(jfl)   ) )/2. *  zsurfz*nisobfl(jfl)
+               &   +  ww(iiloc(jfl),ijloc(jfl),- ikl(jfl)   ) )/2. *  zsurfz*nisobfl(jfl)
             
             ! interpolation of velocity field on the float initial position            
Index: NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/FLO/flodom.F90
===================================================================
--- NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/FLO/flodom.F90	(revision 10969)
+++ NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/FLO/flodom.F90	(revision 10970)
@@ -44,5 +44,5 @@
 CONTAINS
 
-   SUBROUTINE flo_dom
+   SUBROUTINE flo_dom( Kmm )
       !! ---------------------------------------------------------------------
       !!                  ***  ROUTINE flo_dom  ***
@@ -53,4 +53,6 @@
       !!               the longitude (degree) and the depth (m).
       !!----------------------------------------------------------------------      
+      INTEGER, INTENT(in) ::  Kmm    ! ocean time level index
+      !
       INTEGER            ::   jfl    ! dummy loop  
       INTEGER            ::   inum   ! logical unit for file read
@@ -94,5 +96,5 @@
                 CALL flo_add_new_ariane_floats(jpnrstflo+1,jpnfl) 
             ELSE                 !Add new floats with long/lat convention
-                CALL flo_add_new_floats(jpnrstflo+1,jpnfl)
+                CALL flo_add_new_floats(Kmm,jpnrstflo+1,jpnfl)
             ENDIF
          ENDIF
@@ -106,5 +108,5 @@
             CALL flo_add_new_ariane_floats(1,jpnfl)
          ELSE                      !Add new floats with long/lat convention
-            CALL flo_add_new_floats(1,jpnfl)
+            CALL flo_add_new_floats(Kmm,1,jpnfl)
          ENDIF
 
@@ -113,5 +115,5 @@
    END SUBROUTINE flo_dom
 
-   SUBROUTINE flo_add_new_floats(kfl_start, kfl_end)
+   SUBROUTINE flo_add_new_floats(Kmm, kfl_start, kfl_end)
       !! -------------------------------------------------------------
       !!                 ***  SUBROUTINE add_new_arianefloats  ***
@@ -128,4 +130,5 @@
       !! ** Method  : 
       !!----------------------------------------------------------------------
+      INTEGER, INTENT(in) :: Kmm
       INTEGER, INTENT(in) :: kfl_start, kfl_end
       !!
@@ -174,5 +177,5 @@
                   ihtest(jfl) = ihtest(jfl)+1
                   DO jk = 1, jpk-1
-                     IF( (gdepw_n(ji,jj,jk) <= flzz(jfl)) .AND. (gdepw_n(ji,jj,jk+1) > flzz(jfl)) ) THEN
+                     IF( (gdepw(ji,jj,jk,Kmm) <= flzz(jfl)) .AND. (gdepw(ji,jj,jk+1,Kmm) > flzz(jfl)) ) THEN
                         ikmfl(jfl) = jk
                         ivtest(jfl) = ivtest(jfl) + 1
@@ -236,10 +239,10 @@
             zgifl(jfl)= (iimfl(jfl)-0.5) + zdxab/e1u(iimfl(jfl)-1,ijmfl(jfl)) + (mig(1)-1)
             zgjfl(jfl)= (ijmfl(jfl)-0.5) + zdyad/e2v(iimfl(jfl),ijmfl(jfl)-1) + (mjg(1)-1)
-            zgkfl(jfl) = (( gdepw_n(iimfl(jfl),ijmfl(jfl),ikmfl(jfl)+1) - flzz(jfl) )* ikmfl(jfl))   &
-               &                 / (  gdepw_n(iimfl(jfl),ijmfl(jfl),ikmfl(jfl)+1)                              &
-               &                    - gdepw_n(iimfl(jfl),ijmfl(jfl),ikmfl(jfl) ) )                             &
-               &                 + (( flzz(jfl)-gdepw_n(iimfl(jfl),ijmfl(jfl),ikmfl(jfl)) ) *(ikmfl(jfl)+1))   &
-               &                 / (  gdepw_n(iimfl(jfl),ijmfl(jfl),ikmfl(jfl)+1)                              &
-               &                    - gdepw_n(iimfl(jfl),ijmfl(jfl),ikmfl(jfl)) )
+            zgkfl(jfl) = (( gdepw(iimfl(jfl),ijmfl(jfl),ikmfl(jfl)+1,Kmm) - flzz(jfl) )* ikmfl(jfl))   &
+               &                 / (  gdepw(iimfl(jfl),ijmfl(jfl),ikmfl(jfl)+1,Kmm)                              &
+               &                    - gdepw(iimfl(jfl),ijmfl(jfl),ikmfl(jfl) ,Kmm) )                             &
+               &                 + (( flzz(jfl)-gdepw(iimfl(jfl),ijmfl(jfl),ikmfl(jfl),Kmm) ) *(ikmfl(jfl)+1))   &
+               &                 / (  gdepw(iimfl(jfl),ijmfl(jfl),ikmfl(jfl)+1,Kmm)                              &
+               &                    - gdepw(iimfl(jfl),ijmfl(jfl),ikmfl(jfl),Kmm) )
          ELSE
             zgifl(jfl) = 0.e0
Index: NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/FLO/flowri.F90
===================================================================
--- NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/FLO/flowri.F90	(revision 10969)
+++ NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/FLO/flowri.F90	(revision 10970)
@@ -55,5 +55,5 @@
    END FUNCTION flo_wri_alloc
 
-   SUBROUTINE flo_wri( kt )
+   SUBROUTINE flo_wri( kt, Kmm )
       !!---------------------------------------------------------------------
       !!                  ***  ROUTINE flo_wri ***
@@ -68,5 +68,6 @@
       !!----------------------------------------------------------------------
       !! * Arguments
-      INTEGER  :: kt                               ! time step
+      INTEGER, INTENT(in)  :: kt                 ! time step
+      INTEGER, INTENT(in)  :: Kmm                ! time level index
 
       !! * Local declarations
@@ -120,9 +121,9 @@
                zlon(jfl) = (1.-zafl)*(1.-zbfl)*glamt(iafloc ,ibfloc ) + (1.-zafl) * zbfl * glamt(iafloc ,ib1floc)   &
                      +     zafl *(1.-zbfl)*glamt(ia1floc,ibfloc ) +     zafl  * zbfl * glamt(ia1floc,ib1floc)
-               zdep(jfl) = (1.-zcfl)*gdepw_n(iafloc,ibfloc,icfl ) + zcfl * gdepw_n(iafloc,ibfloc,ic1fl)     
+               zdep(jfl) = (1.-zcfl)*gdepw(iafloc,ibfloc,icfl ,Kmm) + zcfl * gdepw(iafloc,ibfloc,ic1fl,Kmm)     
 
                !save temperature, salinity and density at this position
-               ztem(jfl) = tsn(iafloc,ibfloc,icfl,jp_tem)
-               zsal (jfl) = tsn(iafloc,ibfloc,icfl,jp_sal)
+               ztem(jfl) = ts(iafloc,ibfloc,icfl,jp_tem,Kmm)
+               zsal (jfl) = ts(iafloc,ibfloc,icfl,jp_sal,Kmm)
                zrho (jfl) = (rhd(iafloc,ibfloc,icfl)+1)*rau0
 
@@ -141,8 +142,8 @@
             zlon(jfl) = (1.-zafl)*(1.-zbfl)*glamt(iafloc ,ibfloc ) + (1.-zafl) * zbfl * glamt(iafloc ,ib1floc)   &
                       +     zafl *(1.-zbfl)*glamt(ia1floc,ibfloc ) +     zafl  * zbfl * glamt(ia1floc,ib1floc)
-            zdep(jfl) = (1.-zcfl)*gdepw_n(iafloc,ibfloc,icfl ) + zcfl * gdepw_n(iafloc,ibfloc,ic1fl)
-
-            ztem(jfl) = tsn(iafloc,ibfloc,icfl,jp_tem)
-            zsal(jfl) = tsn(iafloc,ibfloc,icfl,jp_sal)
+            zdep(jfl) = (1.-zcfl)*gdepw(iafloc,ibfloc,icfl ,Kmm) + zcfl * gdepw(iafloc,ibfloc,ic1fl,Kmm)
+
+            ztem(jfl) = ts(iafloc,ibfloc,icfl,jp_tem,Kmm)
+            zsal(jfl) = ts(iafloc,ibfloc,icfl,jp_sal,Kmm)
             zrho(jfl) = (rhd(iafloc,ibfloc,icfl)+1)*rau0
           
Index: NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/nemogcm.F90
===================================================================
--- NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/nemogcm.F90	(revision 10969)
+++ NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/nemogcm.F90	(revision 10970)
@@ -421,5 +421,5 @@
                            CALL     wad_init        ! Wetting and drying options
                            CALL     dom_init("OPA") ! Domain
-      IF( ln_crs       )   CALL     crs_init        ! coarsened grid: domain initialization 
+      IF( ln_crs       )   CALL     crs_init( Nnn ) ! coarsened grid: domain initialization 
       IF( ln_ctl       )   CALL prt_ctl_init        ! Print control
       
@@ -485,5 +485,5 @@
      
       !                                      ! Diagnostics
-      IF( lk_floats    )   CALL     flo_init    ! drifting Floats
+      IF( lk_floats    )   CALL     flo_init( Nnn )    ! drifting Floats
       IF( ln_diacfl    )   CALL dia_cfl_init    ! Initialise CFL diagnostics
                            CALL dia_ptr_init    ! Poleward TRansports initialization
Index: NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/step.F90
===================================================================
--- NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/step.F90	(revision 10969)
+++ NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/step.F90	(revision 10970)
@@ -218,13 +218,13 @@
       ! diagnostics and outputs
       !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
-      IF( lk_floats  )   CALL flo_stp ( kstp )        ! drifting Floats
-      IF( ln_diacfl  )   CALL dia_cfl ( kstp, Nnn )   ! Courant number diagnostics
-      IF( lk_diahth  )   CALL dia_hth ( kstp, Nnn )   ! Thermocline depth (20 degres isotherm depth)
-      IF( lk_diadct  )   CALL dia_dct ( kstp, Nnn )   ! Transports
-                         CALL dia_ar5 ( kstp, Nnn )   ! ar5 diag
-      IF( lk_diaharm )   CALL dia_harm( kstp, Nnn )   ! Tidal harmonic analysis
-                         CALL dia_wri ( kstp, Nnn )   ! ocean model: outputs
-      !
-      IF( ln_crs     )   CALL crs_fld       ( kstp )  ! ocean model: online field coarsening & output
+      IF( lk_floats  )   CALL flo_stp ( kstp, Nbb, Nnn )   ! drifting Floats
+      IF( ln_diacfl  )   CALL dia_cfl ( kstp,      Nnn )   ! Courant number diagnostics
+      IF( lk_diahth  )   CALL dia_hth ( kstp,      Nnn )   ! Thermocline depth (20 degres isotherm depth)
+      IF( lk_diadct  )   CALL dia_dct ( kstp,      Nnn )   ! Transports
+                         CALL dia_ar5 ( kstp,      Nnn )   ! ar5 diag
+      IF( lk_diaharm )   CALL dia_harm( kstp,      Nnn )   ! Tidal harmonic analysis
+                         CALL dia_wri ( kstp,      Nnn )   ! ocean model: outputs
+      !
+      IF( ln_crs     )   CALL crs_fld ( kstp,      Nnn )   ! ocean model: online field coarsening & output
       
 #if defined key_top
