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 10755)
+++ /NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OFF/nemogcm.F90	(revision 10756)
@@ -39,4 +39,5 @@
    USE daymod         ! calendar                            (day     routine)
    USE trcstp         ! passive tracer time-stepping        (trc_stp routine)
+   USE step , ONLY : update_pointers           ! RK3 development only.              (stp     routine)
    USE dtadyn         ! Lecture and interpolation of the dynamical fields
    !              ! Passive tracers needs
@@ -286,4 +287,11 @@
       ! Now we know the dimensions of the grid and numout has been set: we can allocate arrays
       CALL nemo_alloc()
+
+      ! Initialise time level indices
+      Nm1 = 1; Nnn = 2; Np1 = 3; Nrhs = Np1
+      Nm1_2lev = 1; Nnn_2lev = 2
+
+      ! Initialisation of temporary pointers (to be deleted after development finished)
+      CALL update_pointers()
 
       !                             !-------------------------------!
Index: /NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/SAO/nemogcm.F90
===================================================================
--- /NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/SAO/nemogcm.F90	(revision 10755)
+++ /NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/SAO/nemogcm.F90	(revision 10756)
@@ -234,4 +234,11 @@
       CALL nemo_alloc()
 
+      ! Initialise time level indices
+      Nm1 = 1; Nnn = 2; Np1 = 3; Nrhs = Np1
+      Nm1_2lev = 1; Nnn_2lev = 2
+
+      ! Initialisation of temporary pointers (to be deleted after development finished)
+      CALL update_pointers()
+
       !                             !-------------------------------!
       !                             !  NEMO general initialization  !
Index: /NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/SAS/nemogcm.F90
===================================================================
--- /NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/SAS/nemogcm.F90	(revision 10755)
+++ /NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/SAS/nemogcm.F90	(revision 10756)
@@ -335,4 +335,11 @@
       CALL nemo_alloc()
 
+      ! Initialise time level indices
+      Nm1 = 1; Nnn = 2; Np1 = 3; Nrhs = Np1
+      Nm1_2lev = 1; Nnn_2lev = 2
+
+      ! Initialisation of temporary pointers (to be deleted after development finished)
+      CALL update_pointers()
+
       !                             !-------------------------------!
       !                             !  NEMO general initialization  !
Index: /NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/SAS/step.F90
===================================================================
--- /NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/SAS/step.F90	(revision 10755)
+++ /NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/SAS/step.F90	(revision 10756)
@@ -47,4 +47,5 @@
 
    PUBLIC   stp   ! called by nemogcm.F90
+   PUBLIC   update_pointers ! called by nemo_init
 
    !!----------------------------------------------------------------------
@@ -114,5 +115,14 @@
       ENDIF
 #endif
-                             
+      ! Swap time levels
+      IF( .NOT. (neuler == 0 .AND. kstp == nit000)  ) THEN
+         Nrhs = Nm1
+         Nm1 = Nnn
+         Nnn = Np1
+         Np1 = Nrhs
+      ENDIF
+      !
+      ! Update temporary pointers
+      CALL update_pointers()
       !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
       ! Control
@@ -147,4 +157,29 @@
       !
    END SUBROUTINE stp
+   
+   SUBROUTINE update_pointers
+      !!----------------------------------------------------------------------
+      !!                     ***  ROUTINE update_pointers  ***
+      !!
+      !! ** Purpose :   Associate temporary pointer arrays.
+      !!                For IMMERSE development phase only - to be deleted
+      !!
+      !! ** Method  :
+      !!----------------------------------------------------------------------
+
+      ub => uu(:,:,:,Nm1); un => uu(:,:,:,Nnn); ua => uu(:,:,:,Np1)
+      vb => vv(:,:,:,Nm1); vn => vv(:,:,:,Nnn); va => vv(:,:,:,Np1)
+
+      e3t_b => e3t(:,:,:,Nm1); e3t_n => e3t(:,:,:,Nnn); e3t_a => e3t(:,:,:,Np1)
+      e3u_b => e3u(:,:,:,Nm1); e3u_n => e3u(:,:,:,Nnn); e3u_a => e3u(:,:,:,Np1)
+      e3v_b => e3v(:,:,:,Nm1); e3v_n => e3v(:,:,:,Nnn); e3v_a => e3v(:,:,:,Np1)
+
+      e3f_n => e3f(:,:,:)
+
+      e3w_b  => e3w (:,:,:,Nm1_2lev); e3w_n  => e3w (:,:,:,Nnn_2lev)
+      e3uw_b => e3uw(:,:,:,Nm1_2lev); e3uw_n => e3uw(:,:,:,Nnn_2lev)
+      e3vw_b => e3vw(:,:,:,Nm1_2lev); e3vw_n => e3vw(:,:,:,Nnn_2lev)
+
+   END SUBROUTINE update_pointers
 
    !!======================================================================
