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 10904)
+++ NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/nemogcm.F90	(revision 10905)
@@ -405,5 +405,5 @@
 
       ! Initialisation of temporary pointers (to be deleted after development finished)
-      CALL update_pointers()
+      CALL update_pointers( Nbb, Nnn, Naa )
       !                             !-------------------------------!
       !                             !  NEMO general initialization  !
@@ -473,5 +473,5 @@
 #if defined key_top
       !                                      ! Passive tracers
-                           CALL     trc_init
+                           CALL     trc_init( Nbb, Nnn, Naa )
 #endif
       IF( l_ldfslp     )   CALL ldf_slp_init    ! slope of lateral mixing
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 10904)
+++ NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/step.F90	(revision 10905)
@@ -232,5 +232,5 @@
       ! Passive Tracer Model
       !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
-                         CALL trc_stp       ( kstp )  ! time-stepping
+                         CALL trc_stp       ( kstp, Nbb, Nnn, Nrhs, Naa )  ! time-stepping
 #endif
 
@@ -335,5 +335,5 @@
    END SUBROUTINE stp
    
-   SUBROUTINE update_pointers
+   SUBROUTINE update_pointers( Kbb, Kmm, Kaa )
       !!----------------------------------------------------------------------
       !!                     ***  ROUTINE update_pointers  ***
@@ -344,24 +344,25 @@
       !! ** Method  :
       !!----------------------------------------------------------------------
-
-      ub => uu(:,:,:,Nbb); un => uu(:,:,:,Nnn); ua => uu(:,:,:,Naa)
-      vb => vv(:,:,:,Nbb); vn => vv(:,:,:,Nnn); va => vv(:,:,:,Naa)
+      INTEGER, INTENT( in ) :: Kbb, Kmm, Kaa ! time level indices
+
+      ub => uu(:,:,:,Kbb); un => uu(:,:,:,Kmm); ua => uu(:,:,:,Kaa)
+      vb => vv(:,:,:,Kbb); vn => vv(:,:,:,Kmm); va => vv(:,:,:,Kaa)
       wn => ww(:,:,:)
       hdivn => hdiv(:,:,:)
 
-      tsb => ts(:,:,:,:,Nbb); tsn => ts(:,:,:,:,Nnn); tsa => ts(:,:,:,:,Naa)
-
-      e3t_b => e3t(:,:,:,Nbb); e3t_n => e3t(:,:,:,Nnn); e3t_a => e3t(:,:,:,Naa)
-      e3u_b => e3u(:,:,:,Nbb); e3u_n => e3u(:,:,:,Nnn); e3u_a => e3u(:,:,:,Naa)
-      e3v_b => e3v(:,:,:,Nbb); e3v_n => e3v(:,:,:,Nnn); e3v_a => e3v(:,:,:,Naa)
+      tsb => ts(:,:,:,:,Kbb); tsn => ts(:,:,:,:,Kmm); tsa => ts(:,:,:,:,Kaa)
+
+      e3t_b => e3t(:,:,:,Kbb); e3t_n => e3t(:,:,:,Kmm); e3t_a => e3t(:,:,:,Kaa)
+      e3u_b => e3u(:,:,:,Kbb); e3u_n => e3u(:,:,:,Kmm); e3u_a => e3u(:,:,:,Kaa)
+      e3v_b => e3v(:,:,:,Kbb); e3v_n => e3v(:,:,:,Kmm); e3v_a => e3v(:,:,:,Kaa)
 
       e3f_n => e3f(:,:,:)
 
-      e3w_b  => e3w (:,:,:,Nbb); e3w_n  => e3w (:,:,:,Nnn)
-      e3uw_b => e3uw(:,:,:,Nbb); e3uw_n => e3uw(:,:,:,Nnn)
-      e3vw_b => e3vw(:,:,:,Nbb); e3vw_n => e3vw(:,:,:,Nnn)
-
-      gdept_b => gdept(:,:,:,Nbb); gdept_n => gdept(:,:,:,Nnn) 
-      gdepw_b => gdepw(:,:,:,Nbb); gdepw_n => gdepw(:,:,:,Nnn) 
+      e3w_b  => e3w (:,:,:,Kbb); e3w_n  => e3w (:,:,:,Kmm)
+      e3uw_b => e3uw(:,:,:,Kbb); e3uw_n => e3uw(:,:,:,Kmm)
+      e3vw_b => e3vw(:,:,:,Kbb); e3vw_n => e3vw(:,:,:,Kmm)
+
+      gdept_b => gdept(:,:,:,Kbb); gdept_n => gdept(:,:,:,Kmm) 
+      gdepw_b => gdepw(:,:,:,Kbb); gdepw_n => gdepw(:,:,:,Kmm) 
       gde3w_n => gde3w(:,:,:)
 
Index: NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OFF/nemogcm.F90
===================================================================
--- NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OFF/nemogcm.F90	(revision 10904)
+++ NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OFF/nemogcm.F90	(revision 10905)
@@ -59,4 +59,5 @@
    USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)
    USE lbcnfd  , ONLY : isendto, nsndto, nfsloop, nfeloop   ! Setup of north fold exchanges
+   USE step, ONLY : update_pointers 
 
    IMPLICIT NONE
@@ -66,4 +67,9 @@
 
    CHARACTER (len=64) ::   cform_aaa="( /, 'AAAAAAAA', / ) "   ! flag for output listing
+
+   !!----------------------------------------------------------------------
+   !! time level indices
+   !!----------------------------------------------------------------------
+   INTEGER :: Nbb, Nnn, Naa, Nrhs       
 
    !!----------------------------------------------------------------------
@@ -116,5 +122,5 @@
          IF( .NOT.ln_linssh )   CALL dta_dyn_swp( istp )         ! swap of sea  surface height and vertical scale factors
 #endif
-                                CALL trc_stp    ( istp )         ! time-stepping
+                                CALL trc_stp    ( istp, Nbb, Nnn, Nrhs, Naa )         ! time-stepping
                                 CALL stp_ctl    ( istp, indic )  ! Time loop: control and print
          istp = istp + 1
@@ -287,4 +293,10 @@
       CALL nemo_alloc()
 
+      ! Initialise time level indices
+      Nbb = 1; Nnn = 2; Naa = 3; Nrhs = Naa
+	
+      ! Initialisation of temporary pointers (to be deleted after development finished)
+      CALL update_pointers( Nbb, Nnn, Naa )
+
       !                             !-------------------------------!
       !                             !  NEMO general initialization  !
@@ -324,5 +336,5 @@
 #endif
 
-                           CALL     trc_init   ! Passive tracers initialization
+                           CALL     trc_init( Nbb, Nnn, Naa )   ! Passive tracers initialization
                            CALL dia_ptr_init   ! Poleward TRansports initialization
                            
Index: NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/TOP/trcini.F90
===================================================================
--- NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/TOP/trcini.F90	(revision 10904)
+++ NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/TOP/trcini.F90	(revision 10905)
@@ -40,5 +40,5 @@
 CONTAINS
    
-   SUBROUTINE trc_init
+   SUBROUTINE trc_init( Kbb, Kmm, Kaa )
       !!---------------------------------------------------------------------
       !!                     ***  ROUTINE trc_init  ***
@@ -52,4 +52,7 @@
       !!                or read data or analytical formulation
       !!---------------------------------------------------------------------
+      !! Time level indices only required for call to update_pointers_trc
+      !! To be removed after IMMERSE development finished. 
+      INTEGER, INTENT( in ) :: Kbb, Kmm, Kaa ! time level indices
       !
       IF( ln_timing )   CALL timing_start('trc_init')
@@ -63,9 +66,6 @@
       CALL top_alloc()   ! allocate TOP arrays
 
-      ! Initialise time level indices
-      Nbb = 1; Nnn = 2; Naa = 3; Nrhs = Naa
-
       ! Initialisation of temporary pointers (to be deleted after development finished)
-      CALL update_pointers_trc()
+      CALL update_pointers_trc( Kbb, Kmm, Kaa )
       !
       IF(.NOT.ln_trcdta )   ln_trc_ini(:) = .FALSE.
Index: NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/TOP/trcstp.F90
===================================================================
--- NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/TOP/trcstp.F90	(revision 10904)
+++ NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/TOP/trcstp.F90	(revision 10905)
@@ -32,9 +32,4 @@
    PUBLIC   update_pointers_trc ! called in initialisation
 
-   !!----------------------------------------------------------------------
-   !! time level indices
-   !!----------------------------------------------------------------------
-   INTEGER, PUBLIC :: Nbb, Nnn, Naa, Nrhs               !! used by trc_init
-
    LOGICAL  ::   llnew                   ! ???
    REAL(wp) ::   rdt_sampl               ! ???
@@ -50,5 +45,5 @@
 CONTAINS
 
-   SUBROUTINE trc_stp( kt )
+   SUBROUTINE trc_stp( kt, Kbb, Kmm, Krhs, Kaa )
       !!-------------------------------------------------------------------
       !!                     ***  ROUTINE trc_stp  ***
@@ -59,5 +54,6 @@
       !!                Update the passive tracers
       !!-------------------------------------------------------------------
-      INTEGER, INTENT( in ) ::   kt   ! ocean time-step index
+      INTEGER, INTENT( in ) :: kt                  ! ocean time-step index
+      INTEGER, INTENT( in ) :: Kbb, Kmm, Krhs, Kaa ! time level indices
       !
       INTEGER ::   jk, jn   ! dummy loop indices
@@ -106,5 +102,5 @@
                                    CALL trc_wri      ( kt )       ! output of passive tracers with iom I/O manager
                                    CALL trc_sms      ( kt )       ! tracers: sinks and sources
-                                   CALL trc_trp      ( kt, Nbb, Nnn, Nrhs, Naa )       ! transport of passive tracers
+                                   CALL trc_trp      ( kt, Kbb, Kmm, Krhs, Kaa )       ! transport of passive tracers
          IF( kt == nittrc000 ) THEN
             CALL iom_close( numrtr )       ! close input tracer restart file
@@ -131,5 +127,5 @@
    END SUBROUTINE trc_stp
 
-   SUBROUTINE update_pointers_trc
+   SUBROUTINE update_pointers_trc( Kbb, Kmm, Kaa )
       !!----------------------------------------------------------------------
       !!                     ***  ROUTINE update_pointers_trc  ***
@@ -140,6 +136,7 @@
       !! ** Method  :
       !!----------------------------------------------------------------------
-
-      trb => tr(:,:,:,:,Nbb); trn => tr(:,:,:,:,Nnn); tra => tr(:,:,:,:,Naa)
+      INTEGER, INTENT( in ) :: Kbb, Kmm, Kaa ! time level indices
+
+      trb => tr(:,:,:,:,Kbb); trn => tr(:,:,:,:,Kmm); tra => tr(:,:,:,:,Kaa)
 
    END SUBROUTINE update_pointers_trc
