Index: NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/cfgs/SHARED/namelist_ref
===================================================================
--- NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/cfgs/SHARED/namelist_ref	(revision 12391)
+++ NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/cfgs/SHARED/namelist_ref	(revision 12397)
@@ -42,6 +42,6 @@
    nn_leapy    =       0   !  Leap year calendar (1) or not (0)
    ln_rstart   = .false.   !  start from rest (F) or from a restart file (T)
-      nn_euler    =    1      !  = 0 : start with forward time step if ln_rstart=T
-      nn_rstctl   =    0      !  restart control ==> activated only if ln_rstart=T
+      ln_1st_euler = .false.  !  =T force a start with forward time step (ln_rstart=T)
+      nn_rstctl    =    0     !  restart control ==> activated only if ln_rstart=T
       !                          !    = 0 nn_date0 read in namelist ; nn_it000 : read in namelist
       !                          !    = 1 nn_date0 read in namelist ; nn_it000 : check consistancy between namelist and restart
Index: NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/NST/agrif_oce_sponge.F90
===================================================================
--- NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/NST/agrif_oce_sponge.F90	(revision 12391)
+++ NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/NST/agrif_oce_sponge.F90	(revision 12397)
@@ -439,5 +439,5 @@
 
          !* set relaxation time scale
-         IF( neuler == 0 .AND. lk_agrif_fstep ) THEN   ;   ztrelax =   rn_trelax_tra  / (        rdt )
+         IF( l_1st_euler .AND. lk_agrif_fstep ) THEN   ;   ztrelax =   rn_trelax_tra  / (        rdt )
          ELSE                                          ;   ztrelax =   rn_trelax_tra  / (2._wp * rdt )
          ENDIF
@@ -596,5 +596,5 @@
 #endif
          !* set relaxation time scale
-         IF( neuler == 0 .AND. lk_agrif_fstep ) THEN   ;   ztrelax =   rn_trelax_dyn  / (        rdt )
+         IF( l_1st_euler .AND. lk_agrif_fstep ) THEN   ;   ztrelax =   rn_trelax_dyn  / (        rdt )
          ELSE                                          ;   ztrelax =   rn_trelax_dyn  / (2._wp * rdt )
          ENDIF
@@ -772,5 +772,5 @@
 # endif
          !* set relaxation time scale
-         IF( neuler == 0 .AND. lk_agrif_fstep ) THEN   ;   ztrelax =   rn_trelax_dyn  / (        rdt )
+         IF( l_1st_euler .AND. lk_agrif_fstep ) THEN   ;   ztrelax =   rn_trelax_dyn  / (        rdt )
          ELSE                                          ;   ztrelax =   rn_trelax_dyn  / (2._wp * rdt )
          ENDIF
Index: NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/NST/agrif_oce_update.F90
===================================================================
--- NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/NST/agrif_oce_update.F90	(revision 12391)
+++ NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/NST/agrif_oce_update.F90	(revision 12397)
@@ -256,5 +256,5 @@
       ! 2) BEFORE fields:
       !------------------
-      IF (.NOT.(lk_agrif_fstep.AND.(neuler==0) )) THEN
+      IF (.NOT.(lk_agrif_fstep.AND.(l_1st_euler) )) THEN
          !
          ! Vertical scale factor interpolations
@@ -351,5 +351,5 @@
          ENDDO
 
-         IF (.NOT.(lk_agrif_fstep.AND.(neuler==0))) THEN
+         IF (.NOT.(lk_agrif_fstep.AND.(l_1st_euler))) THEN
             ! Add asselin part
             DO jn = 1,jpts
@@ -381,5 +381,5 @@
          END DO
          !
-         IF  ((neuler==0).AND.(Agrif_Nb_Step()==0) ) THEN
+         IF  ((l_1st_euler).AND.(Agrif_Nb_Step()==0) ) THEN
             ts(i1:i2,j1:j2,1:jpkm1,1:jpts,Kbb_a)  = ts(i1:i2,j1:j2,1:jpkm1,1:jpts,Kmm_a)
          ENDIF
@@ -422,5 +422,5 @@
          ENDDO
 !< jc tmp
-         IF (.NOT.(lk_agrif_fstep.AND.(neuler==0))) THEN
+         IF (.NOT.(lk_agrif_fstep.AND.(l_1st_euler))) THEN
             ! Add asselin part
             DO jn = 1,jpts
@@ -452,5 +452,5 @@
          END DO
          !
-         IF  ((neuler==0).AND.(Agrif_Nb_Step()==0) ) THEN
+         IF  ((l_1st_euler).AND.(Agrif_Nb_Step()==0) ) THEN
             ts(i1:i2,j1:j2,k1:k2,1:jpts,Kbb_a)  = ts(i1:i2,j1:j2,k1:k2,1:jpts,Kmm_a)
          ENDIF
@@ -551,5 +551,5 @@
             DO jj=j1,j2
                DO ji=i1,i2
-                  IF (.NOT.(lk_agrif_fstep.AND.(neuler==0))) THEN ! Add asselin part
+                  IF (.NOT.(lk_agrif_fstep.AND.(l_1st_euler))) THEN ! Add asselin part
                      zub  = uu(ji,jj,jk,Kbb_a) * e3u(ji,jj,jk,Kbb_a)  ! fse3t_b prior update should be used
                      zuno = uu(ji,jj,jk,Kmm_a) * e3u(ji,jj,jk,Krhs_a)
@@ -564,5 +564,5 @@
          END DO
          !
-         IF  ((neuler==0).AND.(Agrif_Nb_Step()==0) ) THEN
+         IF  ((l_1st_euler).AND.(Agrif_Nb_Step()==0) ) THEN
             uu(i1:i2,j1:j2,1:jpkm1,Kbb_a)  = uu(i1:i2,j1:j2,1:jpkm1,Kmm_a)
          ENDIF
@@ -597,5 +597,5 @@
                   tabres(ji,jj,jk,1) = tabres(ji,jj,jk,1) * r1_e2u(ji,jj) 
                   !
-                  IF (.NOT.(lk_agrif_fstep.AND.(neuler==0))) THEN ! Add asselin part
+                  IF (.NOT.(lk_agrif_fstep.AND.(l_1st_euler))) THEN ! Add asselin part
                      zub  = uu(ji,jj,jk,Kbb_a) * e3u(ji,jj,jk,Kbb_a)  ! fse3t_b prior update should be used
                      zuno = uu(ji,jj,jk,Kmm_a) * e3u(ji,jj,jk,Krhs_a)
@@ -610,5 +610,5 @@
          END DO
          !
-         IF  ((neuler==0).AND.(Agrif_Nb_Step()==0) ) THEN
+         IF  ((l_1st_euler).AND.(Agrif_Nb_Step()==0) ) THEN
             uu(i1:i2,j1:j2,k1:k2,Kbb_a)  = uu(i1:i2,j1:j2,k1:k2,Kmm_a)
          ENDIF
@@ -751,5 +751,5 @@
             DO jj=j1,j2
                DO ji=i1,i2
-                  IF (.NOT.(lk_agrif_fstep.AND.(neuler==0))) THEN ! Add asselin part
+                  IF (.NOT.(lk_agrif_fstep.AND.(l_1st_euler))) THEN ! Add asselin part
                      zvb  = vv(ji,jj,jk,Kbb_a) * e3v(ji,jj,jk,Kbb_a) ! fse3t_b prior update should be used
                      zvno = vv(ji,jj,jk,Kmm_a) * e3v(ji,jj,jk,Krhs_a)
@@ -764,5 +764,5 @@
          END DO
          !
-         IF  ((neuler==0).AND.(Agrif_Nb_Step()==0) ) THEN
+         IF  ((l_1st_euler).AND.(Agrif_Nb_Step()==0) ) THEN
             vv(i1:i2,j1:j2,1:jpkm1,Kbb_a)  = vv(i1:i2,j1:j2,1:jpkm1,Kmm_a)
          ENDIF
@@ -801,5 +801,5 @@
                   tabres(ji,jj,jk,1) = tabres(ji,jj,jk,1) * r1_e1v(ji,jj)
                   !
-                  IF (.NOT.(lk_agrif_fstep.AND.(neuler==0))) THEN ! Add asselin part
+                  IF (.NOT.(lk_agrif_fstep.AND.(l_1st_euler))) THEN ! Add asselin part
                      zvb  = vv(ji,jj,jk,Kbb_a) * e3v(ji,jj,jk,Kbb_a) ! fse3t_b prior update should be used
                      zvno = vv(ji,jj,jk,Kmm_a) * e3v(ji,jj,jk,Krhs_a)
@@ -814,5 +814,5 @@
          END DO
          !
-         IF  ((neuler==0).AND.(Agrif_Nb_Step()==0) ) THEN
+         IF  ((l_1st_euler).AND.(Agrif_Nb_Step()==0) ) THEN
             vv(i1:i2,j1:j2,k1:k2,Kbb_a)  = vv(i1:i2,j1:j2,k1:k2,Kmm_a)
          ENDIF
@@ -907,5 +907,5 @@
                ! Update barotropic velocities:
                IF ( .NOT.ln_dynspg_ts .OR. (ln_dynspg_ts.AND.(.NOT.ln_bt_fw)) ) THEN
-                  IF (.NOT.(lk_agrif_fstep.AND.(neuler==0))) THEN ! Add asselin part
+                  IF (.NOT.(lk_agrif_fstep.AND.(l_1st_euler))) THEN ! Add asselin part
                      zcorr = (tabres(ji,jj) - uu_b(ji,jj,Kmm_a) * hu(ji,jj,Krhs_a)) * r1_hu(ji,jj,Kbb_a)
                      uu_b(ji,jj,Kbb_a) = uu_b(ji,jj,Kbb_a) + atfp * zcorr * umask(ji,jj,1)
@@ -928,5 +928,5 @@
          END DO
          !
-         IF  ((neuler==0).AND.(Agrif_Nb_Step()==0) ) THEN
+         IF  ((l_1st_euler).AND.(Agrif_Nb_Step()==0) ) THEN
             uu_b(i1:i2,j1:j2,Kbb_a)  = uu_b(i1:i2,j1:j2,Kmm_a)
          ENDIF
@@ -973,5 +973,5 @@
                ! Update barotropic velocities:
                IF ( .NOT.ln_dynspg_ts .OR. (ln_dynspg_ts.AND.(.NOT.ln_bt_fw)) ) THEN
-                  IF (.NOT.(lk_agrif_fstep.AND.(neuler==0))) THEN ! Add asselin part
+                  IF (.NOT.(lk_agrif_fstep.AND.(l_1st_euler))) THEN ! Add asselin part
                      zcorr = (tabres(ji,jj) - vv_b(ji,jj,Kmm_a) * hv(ji,jj,Krhs_a)) * r1_hv(ji,jj,Kbb_a)
                      vv_b(ji,jj,Kbb_a) = vv_b(ji,jj,Kbb_a) + atfp * zcorr * vmask(ji,jj,1)
@@ -994,5 +994,5 @@
          END DO
          !
-         IF  ((neuler==0).AND.(Agrif_Nb_Step()==0) ) THEN
+         IF  ((l_1st_euler).AND.(Agrif_Nb_Step()==0) ) THEN
             vv_b(i1:i2,j1:j2,Kbb_a)  = vv_b(i1:i2,j1:j2,Kmm_a)
          ENDIF
@@ -1021,5 +1021,5 @@
          END DO
       ELSE
-         IF (.NOT.(lk_agrif_fstep.AND.(neuler==0))) THEN
+         IF (.NOT.(lk_agrif_fstep.AND.(l_1st_euler))) THEN
             DO jj=j1,j2
                DO ji=i1,i2
@@ -1036,5 +1036,5 @@
          END DO
          !
-         IF  ((neuler==0).AND.(Agrif_Nb_Step()==0) ) THEN
+         IF  ((l_1st_euler).AND.(Agrif_Nb_Step()==0) ) THEN
             ssh(i1:i2,j1:j2,Kbb_a)  = ssh(i1:i2,j1:j2,Kmm_a)
          ENDIF
@@ -1119,5 +1119,5 @@
                zcor = rdt * r1_e1e2t(i1  ,jj) * e2u(i1,jj) * (ub2_b(i1,jj)-tabres(i1,jj)) 
                ssh(i1  ,jj,Kmm_a) = ssh(i1  ,jj,Kmm_a) + zcor
-               IF (.NOT.(lk_agrif_fstep.AND.(neuler==0))) ssh(i1  ,jj,Kbb_a) = ssh(i1  ,jj,Kbb_a) + atfp * zcor
+               IF (.NOT.(lk_agrif_fstep.AND.(l_1st_euler))) ssh(i1  ,jj,Kbb_a) = ssh(i1  ,jj,Kbb_a) + atfp * zcor
             END DO
          ENDIF
@@ -1126,5 +1126,5 @@
                zcor = - rdt * r1_e1e2t(i2+1,jj) * e2u(i2,jj) * (ub2_b(i2,jj)-tabres(i2,jj))
                ssh(i2+1,jj,Kmm_a) = ssh(i2+1,jj,Kmm_a) + zcor
-               IF (.NOT.(lk_agrif_fstep.AND.(neuler==0))) ssh(i2+1,jj,Kbb_a) = ssh(i2+1,jj,Kbb_a) + atfp * zcor
+               IF (.NOT.(lk_agrif_fstep.AND.(l_1st_euler))) ssh(i2+1,jj,Kbb_a) = ssh(i2+1,jj,Kbb_a) + atfp * zcor
             END DO
          ENDIF
@@ -1207,5 +1207,5 @@
                zcor = rdt * r1_e1e2t(ji,j1  ) * e1v(ji,j1  ) * (vb2_b(ji,j1)-tabres(ji,j1))
                ssh(ji,j1  ,Kmm_a) = ssh(ji,j1  ,Kmm_a) + zcor
-               IF (.NOT.(lk_agrif_fstep.AND.(neuler==0))) ssh(ji,j1  ,Kbb_a) = ssh(ji,j1,Kbb_a) + atfp * zcor
+               IF (.NOT.(lk_agrif_fstep.AND.(l_1st_euler))) ssh(ji,j1  ,Kbb_a) = ssh(ji,j1,Kbb_a) + atfp * zcor
             END DO
          ENDIF
@@ -1214,5 +1214,5 @@
                zcor = - rdt * r1_e1e2t(ji,j2+1) * e1v(ji,j2  ) * (vb2_b(ji,j2)-tabres(ji,j2))
                ssh(ji,j2+1,Kmm_a) = ssh(ji,j2+1,Kmm_a) + zcor
-               IF (.NOT.(lk_agrif_fstep.AND.(neuler==0))) ssh(ji,j2+1,Kbb_a) = ssh(ji,j2+1,Kbb_a) + atfp * zcor
+               IF (.NOT.(lk_agrif_fstep.AND.(l_1st_euler))) ssh(ji,j2+1,Kbb_a) = ssh(ji,j2+1,Kbb_a) + atfp * zcor
             END DO
          ENDIF
@@ -1359,5 +1359,5 @@
 !         hdiv(i1:i2,j1:j2,1:jpkm1)   = e3t(i1:i2,j1:j2,1:jpkm1,Kbb_a)
 
-         IF (.NOT.(lk_agrif_fstep.AND.(neuler==0) )) THEN
+         IF (.NOT.(lk_agrif_fstep.AND.(l_1st_euler) )) THEN
             DO jk = 1, jpkm1
                DO jj=j1,j2
@@ -1422,5 +1422,5 @@
          END DO
          !
-         IF  ((neuler==0).AND.(Agrif_Nb_Step()==0) ) THEN
+         IF  ((l_1st_euler).AND.(Agrif_Nb_Step()==0) ) THEN
             e3t (i1:i2,j1:j2,1:jpk,Kbb_a)  = e3t (i1:i2,j1:j2,1:jpk,Kmm_a)
             e3w (i1:i2,j1:j2,1:jpk,Kbb_a)  = e3w (i1:i2,j1:j2,1:jpk,Kmm_a)
Index: NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/NST/agrif_top_sponge.F90
===================================================================
--- NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/NST/agrif_top_sponge.F90	(revision 12391)
+++ NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/NST/agrif_top_sponge.F90	(revision 12397)
@@ -137,5 +137,5 @@
 
          !* set relaxation time scale
-         IF( neuler == 0 .AND. lk_agrif_fstep ) THEN   ;   ztrelax =   rn_trelax_tra  / (        rdt )
+         IF( l_1st_euler .AND. lk_agrif_fstep ) THEN   ;   ztrelax =   rn_trelax_tra  / (        rdt )
          ELSE                                          ;   ztrelax =   rn_trelax_tra  / (2._wp * rdt )
          ENDIF
Index: NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/NST/agrif_top_update.F90
===================================================================
--- NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/NST/agrif_top_update.F90	(revision 12391)
+++ NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/NST/agrif_top_update.F90	(revision 12397)
@@ -125,5 +125,5 @@
          ENDDO
          !
-         IF (.NOT.(lk_agrif_fstep.AND.(neuler==0))) THEN
+         IF (.NOT.(lk_agrif_fstep.AND.(l_1st_euler))) THEN
             ! Add asselin part
             DO jn = 1,jptra
@@ -155,5 +155,5 @@
          END DO
          !
-         IF  ((neuler==0).AND.(Agrif_Nb_Step()==0) ) THEN
+         IF  ((l_1st_euler).AND.(Agrif_Nb_Step()==0) ) THEN
             tr(i1:i2,j1:j2,1:jpkm1,1:jptra,Kbb_a)  = tr(i1:i2,j1:j2,1:jpkm1,1:jptra,Kmm_a)
          ENDIF
@@ -199,5 +199,5 @@
          ENDDO
 !< jc tmp
-         IF (.NOT.(lk_agrif_fstep.AND.(neuler==0))) THEN
+         IF (.NOT.(lk_agrif_fstep.AND.(l_1st_euler))) THEN
             ! Add asselin part
             DO jn = n1,n2
@@ -229,5 +229,5 @@
          END DO
          !
-         IF  ((neuler==0).AND.(Agrif_Nb_Step()==0) ) THEN
+         IF  ((l_1st_euler).AND.(Agrif_Nb_Step()==0) ) THEN
             tr(i1:i2,j1:j2,k1:k2,n1:n2,Kbb_a)  = tr(i1:i2,j1:j2,k1:k2,n1:n2,Kmm_a)
          ENDIF
Index: NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/ASM/asminc.F90
===================================================================
--- NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/ASM/asminc.F90	(revision 12391)
+++ NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/ASM/asminc.F90	(revision 12397)
@@ -487,5 +487,5 @@
       ENDIF
       !
-      IF(lwp) WRITE(numout,*) '   ==>>>   Euler time step switch is ', neuler
+      IF(lwp) WRITE(numout,*) '   ==>>>   Euler time step switch is ', l_1st_euler
       !
       IF( lk_asminc ) THEN                            !==  data assimilation  ==!
@@ -577,5 +577,5 @@
          IF ( kt == nitdin_r ) THEN
             !
-            neuler = 0  ! Force Euler forward step
+            l_1st_euler = .TRUE.  ! Force Euler forward step
             !
             ! Initialize the now fields with the background + increment
@@ -677,5 +677,5 @@
          IF ( kt == nitdin_r ) THEN
             !
-            neuler = 0                    ! Force Euler forward step
+            l_1st_euler = .TRUE.                    ! Force Euler forward step
             !
             ! Initialize the now fields with the background + increment
@@ -753,5 +753,5 @@
          IF ( kt == nitdin_r ) THEN
             !
-            neuler = 0                                   ! Force Euler forward step
+            l_1st_euler = .TRUE.                            ! Force Euler forward step
             !
             ssh(:,:,Kmm) = ssh_bkg(:,:) + ssh_bkginc(:,:)   ! Initialize the now fields the background + increment
@@ -896,5 +896,5 @@
          IF ( kt == nitdin_r ) THEN
             !
-            neuler = 0                    ! Force Euler forward step
+            l_1st_euler = 0              ! Force Euler forward step
             !
             ! Sea-ice : SI3 case
Index: NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/DIA/diacfl.F90
===================================================================
--- NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/DIA/diacfl.F90	(revision 12391)
+++ NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/DIA/diacfl.F90	(revision 12397)
@@ -52,5 +52,5 @@
       !
       INTEGER                          ::   ji, jj, jk                       ! dummy loop indices
-      REAL(wp)                         ::   z2dt, zCu_max, zCv_max, zCw_max  ! local scalars
+      REAL(wp)                         ::   zCu_max, zCv_max, zCw_max        ! local scalars
       INTEGER , DIMENSION(3)           ::   iloc_u , iloc_v , iloc_w , iloc  ! workspace
       REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zCu_cfl, zCv_cfl, zCw_cfl        ! workspace
@@ -59,14 +59,8 @@
       IF( ln_timing )   CALL timing_start('dia_cfl')
       !
-      !                       ! setup timestep multiplier to account for initial Eulerian timestep
-      IF( neuler == 0 .AND. kt == nit000 ) THEN   ;    z2dt = rdt
-      ELSE                                        ;    z2dt = rdt * 2._wp
-      ENDIF
-      !
-      !                
       DO_3D_11_11( 1, jpk )
-         zCu_cfl(ji,jj,jk) = ABS( uu(ji,jj,jk,Kmm) ) * z2dt / e1u  (ji,jj)      ! for i-direction
-         zCv_cfl(ji,jj,jk) = ABS( vv(ji,jj,jk,Kmm) ) * z2dt / e2v  (ji,jj)      ! for j-direction
-         zCw_cfl(ji,jj,jk) = ABS( ww(ji,jj,jk) ) * z2dt / e3w(ji,jj,jk,Kmm)   ! for k-direction
+         zCu_cfl(ji,jj,jk) = ABS( uu(ji,jj,jk,Kmm) ) * r2dt / e1u  (ji,jj)      ! for i-direction
+         zCv_cfl(ji,jj,jk) = ABS( vv(ji,jj,jk,Kmm) ) * r2dt / e2v  (ji,jj)      ! for j-direction
+         zCw_cfl(ji,jj,jk) = ABS( ww(ji,jj,jk) ) * r2dt / e3w(ji,jj,jk,Kmm)   ! for k-direction
       END_3D
       !
@@ -118,11 +112,11 @@
          WRITE(numcfl,*) '******************************************'
          WRITE(numcfl,FMT='(3x,a12,6x,f7.4,1x,i4,1x,i4,1x,i4)') 'Run Max Cu', rCu_max, nCu_loc(1), nCu_loc(2), nCu_loc(3)
-         WRITE(numcfl,FMT='(3x,a8,11x,f15.1)') ' => dt/C', z2dt/rCu_max
+         WRITE(numcfl,FMT='(3x,a8,11x,f15.1)') ' => dt/C', r2dt/rCu_max
          WRITE(numcfl,*) '******************************************'
          WRITE(numcfl,FMT='(3x,a12,6x,f7.4,1x,i4,1x,i4,1x,i4)') 'Run Max Cv', rCv_max, nCv_loc(1), nCv_loc(2), nCv_loc(3)
-         WRITE(numcfl,FMT='(3x,a8,11x,f15.1)') ' => dt/C', z2dt/rCv_max
+         WRITE(numcfl,FMT='(3x,a8,11x,f15.1)') ' => dt/C', r2dt/rCv_max
          WRITE(numcfl,*) '******************************************'
          WRITE(numcfl,FMT='(3x,a12,6x,f7.4,1x,i4,1x,i4,1x,i4)') 'Run Max Cw', rCw_max, nCw_loc(1), nCw_loc(2), nCw_loc(3)
-         WRITE(numcfl,FMT='(3x,a8,11x,f15.1)') ' => dt/C', z2dt/rCw_max
+         WRITE(numcfl,FMT='(3x,a8,11x,f15.1)') ' => dt/C', r2dt/rCw_max
          CLOSE( numcfl ) 
          !
@@ -131,7 +125,7 @@
          WRITE(numout,*) 'dia_cfl : Maximum Courant number information for the run '
          WRITE(numout,*) '~~~~~~~'
-         WRITE(numout,*) '   Max Cu = ', rCu_max, ' at (i,j,k) = (',nCu_loc(1),nCu_loc(2),nCu_loc(3),') => dt/C = ', z2dt/rCu_max
-         WRITE(numout,*) '   Max Cv = ', rCv_max, ' at (i,j,k) = (',nCv_loc(1),nCv_loc(2),nCv_loc(3),') => dt/C = ', z2dt/rCv_max
-         WRITE(numout,*) '   Max Cw = ', rCw_max, ' at (i,j,k) = (',nCw_loc(1),nCw_loc(2),nCw_loc(3),') => dt/C = ', z2dt/rCw_max
+         WRITE(numout,*) '   Max Cu = ', rCu_max, ' at (i,j,k) = (',nCu_loc(1),nCu_loc(2),nCu_loc(3),') => dt/C = ', r2dt/rCu_max
+         WRITE(numout,*) '   Max Cv = ', rCv_max, ' at (i,j,k) = (',nCv_loc(1),nCv_loc(2),nCv_loc(3),') => dt/C = ', r2dt/rCv_max
+         WRITE(numout,*) '   Max Cw = ', rCw_max, ' at (i,j,k) = (',nCw_loc(1),nCw_loc(2),nCw_loc(3),') => dt/C = ', r2dt/rCw_max
       ENDIF
       !
Index: NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/DOM/dom_oce.F90
===================================================================
--- NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/DOM/dom_oce.F90	(revision 12391)
+++ NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/DOM/dom_oce.F90	(revision 12397)
@@ -35,5 +35,5 @@
    REAL(wp), PUBLIC ::   rn_rdt         !: time step for the dynamics and tracer
    REAL(wp), PUBLIC ::   rn_atfp        !: asselin time filter parameter
-   INTEGER , PUBLIC ::   nn_euler       !: =0 start with forward time step or not (=1)
+   LOGICAL , PUBLIC ::   ln_1st_euler   !: =T start with forward time step or not (=F)
    LOGICAL , PUBLIC ::   ln_crs         !: Apply grid coarsening to dynamical model output or online passive tracers
 
@@ -59,6 +59,6 @@
 
    !                                   !!! associated variables
-   INTEGER , PUBLIC ::   neuler         !: restart euler forward option (0=Euler)
-   REAL(wp), PUBLIC ::   r2dt           !: = 2*rdt except at nit000 (=rdt) if neuler=0
+   LOGICAL , PUBLIC ::   l_1st_euler    !: Euler 1st time-step flag (=T if ln_restart=F or ln_1st_euler=T)
+   REAL(wp), PUBLIC ::   r2dt, r1_2dt   !: = 2*rdt and 1/(2*rdt) except at nit000 (=rdt and 1/rdt) if l_1st_euler=.true.
 
    !!----------------------------------------------------------------------
Index: NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/DOM/domain.F90
===================================================================
--- NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/DOM/domain.F90	(revision 12391)
+++ NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/DOM/domain.F90	(revision 12397)
@@ -287,5 +287,5 @@
          &             nn_no   , cn_exp   , cn_ocerst_in, cn_ocerst_out, ln_rstart , nn_rstctl ,     &
          &             nn_it000, nn_itend , nn_date0    , nn_time0     , nn_leapy  , nn_istate ,     &
-         &             nn_stock, nn_write , ln_mskland  , ln_clobber   , nn_chunksz, nn_euler  ,     &
+         &             nn_stock, nn_write , ln_mskland  , ln_clobber   , nn_chunksz, ln_1st_euler  , &
          &             ln_cfmeta, ln_xios_read, nn_wxios
       NAMELIST/namdom/ ln_linssh, rn_rdt, rn_atfp, ln_crs, ln_meshmask
@@ -317,5 +317,5 @@
          WRITE(numout,*) '      restart output directory        cn_ocerst_outdir= ', TRIM( cn_ocerst_outdir )
          WRITE(numout,*) '      restart logical                 ln_rstart       = ', ln_rstart
-         WRITE(numout,*) '      start with forward time step    nn_euler        = ', nn_euler
+         WRITE(numout,*) '      start with forward time step    ln_1st_euler    = ', ln_1st_euler
          WRITE(numout,*) '      control of time step            nn_rstctl       = ', nn_rstctl
          WRITE(numout,*) '      number of the first time step   nn_it000        = ', nn_it000
@@ -353,10 +353,10 @@
       nleapy = nn_leapy
       ninist = nn_istate
-      neuler = nn_euler
-      IF( neuler == 1 .AND. .NOT. ln_rstart ) THEN
+      l_1st_euler = ln_1st_euler
+      IF( .NOT. l_1st_euler .AND. .NOT. ln_rstart ) THEN
          IF(lwp) WRITE(numout,*)  
          IF(lwp) WRITE(numout,*)'   ==>>>   Start from rest (ln_rstart=F)'
-         IF(lwp) WRITE(numout,*)'           an Euler initial time step is used : nn_euler is forced to 0 '   
-         neuler = 0
+         IF(lwp) WRITE(numout,*)'           an Euler initial time step is used : l_1st_euler is forced to .true. '   
+         l_1st_euler = .true.
       ENDIF
       !                             ! control of output frequency
Index: NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/DOM/domvvl.F90
===================================================================
--- NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/DOM/domvvl.F90	(revision 12391)
+++ NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/DOM/domvvl.F90	(revision 12397)
@@ -319,5 +319,5 @@
       INTEGER                ::   ji, jj, jk            ! dummy loop indices
       INTEGER , DIMENSION(3) ::   ijk_max, ijk_min      ! temporary integers
-      REAL(wp)               ::   z2dt, z_tmin, z_tmax  ! local scalars
+      REAL(wp)               ::   z_tmin, z_tmax        ! local scalars
       LOGICAL                ::   ll_do_bclinic         ! local logical
       REAL(wp), DIMENSION(jpi,jpj)     ::   zht, z_scale, zwu, zwv, zhdiv
@@ -430,13 +430,6 @@
          ! 4 - Time stepping of baroclinic scale factors
          ! ---------------------------------------------
-         ! Leapfrog time stepping
-         ! ~~~~~~~~~~~~~~~~~~~~~~
-         IF( neuler == 0 .AND. kt == nit000 ) THEN
-            z2dt =  rdt
-         ELSE
-            z2dt = 2.0_wp * rdt
-         ENDIF
          CALL lbc_lnk( 'domvvl', tilde_e3t_a(:,:,:), 'T', 1._wp )
-         tilde_e3t_a(:,:,:) = tilde_e3t_b(:,:,:) + z2dt * tmask(:,:,:) * tilde_e3t_a(:,:,:)
+         tilde_e3t_a(:,:,:) = tilde_e3t_b(:,:,:) + r2dt * tmask(:,:,:) * tilde_e3t_a(:,:,:)
 
          ! Maximum deformation control
@@ -624,5 +617,5 @@
       ! - ML - e3(t/u/v)_b are allready computed in dynnxt.
       IF( ln_vvl_ztilde .OR. ln_vvl_layer ) THEN
-         IF( neuler == 0 .AND. kt == nit000 ) THEN
+         IF( l_1st_euler ) THEN
             tilde_e3t_b(:,:,:) = tilde_e3t_n(:,:,:)
          ELSE
@@ -821,5 +814,5 @@
                   e3t(:,:,:,Kbb) = e3t_0(:,:,:)
                END WHERE
-               IF( neuler == 0 ) THEN
+               IF( l_1st_euler ) THEN
                   e3t(:,:,:,Kbb) = e3t(:,:,:,Kmm)
                ENDIF
@@ -827,19 +820,19 @@
                IF(lwp) write(numout,*) 'dom_vvl_rst WARNING : e3t(:,:,:,Kmm) not found in restart files'
                IF(lwp) write(numout,*) 'e3t_n set equal to e3t_b.'
-               IF(lwp) write(numout,*) 'neuler is forced to 0'
+               IF(lwp) write(numout,*) 'l_1st_euler is forced to true'
                CALL iom_get( numror, jpdom_autoglo, 'e3t_b', e3t(:,:,:,Kbb), ldxios = lrxios )
                e3t(:,:,:,Kmm) = e3t(:,:,:,Kbb)
-               neuler = 0
+               l_1st_euler = .true.
             ELSE IF( id2 > 0 ) THEN
                IF(lwp) write(numout,*) 'dom_vvl_rst WARNING : e3t(:,:,:,Kbb) not found in restart files'
                IF(lwp) write(numout,*) 'e3t_b set equal to e3t_n.'
-               IF(lwp) write(numout,*) 'neuler is forced to 0'
+               IF(lwp) write(numout,*) 'l_1st_euler is forced to true'
                CALL iom_get( numror, jpdom_autoglo, 'e3t_n', e3t(:,:,:,Kmm), ldxios = lrxios )
                e3t(:,:,:,Kbb) = e3t(:,:,:,Kmm)
-               neuler = 0
+               l_1st_euler = .true.
             ELSE
                IF(lwp) write(numout,*) 'dom_vvl_rst WARNING : e3t(:,:,:,Kmm) not found in restart file'
                IF(lwp) write(numout,*) 'Compute scale factor from sshn'
-               IF(lwp) write(numout,*) 'neuler is forced to 0'
+               IF(lwp) write(numout,*) 'l_1st_euler is forced to true'
                DO jk = 1, jpk
                   e3t(:,:,jk,Kmm) =  e3t_0(:,:,jk) * ( ht_0(:,:) + ssh(:,:,Kmm) ) &
@@ -848,5 +841,5 @@
                END DO
                e3t(:,:,:,Kbb) = e3t(:,:,:,Kmm)
-               neuler = 0
+               l_1st_euler = .true.
             ENDIF
             !                             ! ----------- !
Index: NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/DOM/istate.F90
===================================================================
--- NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/DOM/istate.F90	(revision 12391)
+++ NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/DOM/istate.F90	(revision 12397)
@@ -92,5 +92,5 @@
          !                                    ! ---------------
          numror = 0                           ! define numror = 0 -> no restart file to read
-         neuler = 0                           ! Set time-step indicator at nit000 (euler forward)
+         l_1st_euler = .true.                 ! Set time-step indicator at nit000 (euler forward)
          CALL day_init                        ! model calendar (using both namelist and restart infos)
          !                                    ! Initialization of ocean to zero
Index: NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/DYN/dynatf.F90
===================================================================
--- NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/DYN/dynatf.F90	(revision 12391)
+++ NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/DYN/dynatf.F90	(revision 12397)
@@ -157,6 +157,4 @@
       !
       IF( l_trddyn ) THEN             ! prepare the atf trend computation + some diagnostics
-         z1_2dt = 1._wp / (2. * rdt)        ! Euler or leap-frog time step 
-         IF( neuler == 0 .AND. kt == nit000 )   z1_2dt = 1._wp / rdt
          !
          !                                  ! Kinetic energy and Conversion
@@ -164,6 +162,6 @@
          !
          IF( ln_dyn_trd ) THEN              ! 3D output: total momentum trends
-            zua(:,:,:) = ( puu(:,:,:,Kaa) - puu(:,:,:,Kbb) ) * z1_2dt
-            zva(:,:,:) = ( pvv(:,:,:,Kaa) - pvv(:,:,:,Kbb) ) * z1_2dt
+            zua(:,:,:) = ( puu(:,:,:,Kaa) - puu(:,:,:,Kbb) ) * r1_2dt
+            zva(:,:,:) = ( pvv(:,:,:,Kaa) - pvv(:,:,:,Kbb) ) * r1_2dt
             CALL iom_put( "utrd_tot", zua )        ! total momentum trends, except the asselin time filter
             CALL iom_put( "vtrd_tot", zva )
@@ -178,5 +176,5 @@
       ! ------------------------------------------
          
-      IF( .NOT.( neuler == 0 .AND. kt == nit000 ) ) THEN    !* Leap-Frog : Asselin time filter 
+      IF( .NOT. l_1st_euler ) THEN    !* Leap-Frog : Asselin time filter 
          !                                ! =============!
          IF( ln_linssh ) THEN             ! Fixed volume !
@@ -263,5 +261,5 @@
          ENDIF
          !
-      ENDIF ! neuler /= 0
+      ENDIF ! .NOT. l_1st_euler
       !
       ! Set "now" and "before" barotropic velocities for next time step:
Index: NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/DYN/dynspg_ts.F90
===================================================================
--- NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/DYN/dynspg_ts.F90	(revision 12391)
+++ NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/DYN/dynspg_ts.F90	(revision 12397)
@@ -180,7 +180,5 @@
 !     zwdramp = 1._wp / (rn_wdmin2 - rn_wdmin1) ! more general ramp
       !                                         ! inverse of baroclinic time step 
-      IF( kt == nit000 .AND. neuler == 0 ) THEN   ;   r1_2dt_b = 1._wp / (         rdt )
-      ELSE                                        ;   r1_2dt_b = 1._wp / ( 2._wp * rdt )
-      ENDIF
+      r1_2dt_b = 1._wp / r2dt 
       !
       ll_init     = ln_bt_av                    ! if no time averaging, then no specific restart 
@@ -198,7 +196,7 @@
          IF(lwp) WRITE(numout,*)
          !
-         IF( neuler == 0 )   ll_init=.TRUE.
-         !
-         IF( ln_bt_fw .OR. neuler == 0 ) THEN
+         IF( l_1st_euler )   ll_init=.TRUE.
+         !
+         IF( ln_bt_fw .OR. l_1st_euler ) THEN
             ll_fw_start =.TRUE.
             noffset     = 0
@@ -209,14 +207,17 @@
          CALL ts_wgt( ln_bt_av, ll_fw_start, icycle, wgtbtp1, wgtbtp2 )
          !
-      ENDIF
-      !
-      ! If forward start at previous time step, and centered integration, 
-      ! then update averaging weights:
-      IF (.NOT.ln_bt_fw .AND.( neuler==0 .AND. kt==nit000+1 ) ) THEN
-         ll_fw_start=.FALSE.
-         CALL ts_wgt( ln_bt_av, ll_fw_start, icycle, wgtbtp1, wgtbtp2 )
-      ENDIF
-      !
-                          
+      ELSEIF( kt == nit000 + 1 ) THEN           !* initialisation 2nd time-step
+         !
+         IF( .NOT.ln_bt_fw ) THEN
+            ! If we did an Euler timestep on the first timestep we need to reset ll_fw_start
+            ! and the averaging weights. We don't have an easy way of telling whether we did
+            ! an Euler timestep on the first timestep (because l_1st_euler is reset to .false.
+            ! at the end of the first timestep) so just do this in all cases. 
+            ll_fw_start = .FALSE.
+            CALL ts_wgt( ln_bt_av, ll_fw_start, icycle, wgtbtp1, wgtbtp2 )
+         ENDIF
+         !
+      ENDIF
+      !
       ! -----------------------------------------------------------------------------
       !  Phase 1 : Coupling between general trend and barotropic estimates (1st step)
@@ -701,5 +702,5 @@
       ! Set advection velocity correction:
       IF (ln_bt_fw) THEN
-         IF( .NOT.( kt == nit000 .AND. neuler==0 ) ) THEN
+         IF( .NOT.( kt == nit000 .AND. l_1st_euler ) ) THEN
             DO_2D_11_11
                zun_save = un_adv(ji,jj)
@@ -889,5 +890,5 @@
       IF( TRIM(cdrw) == 'READ' ) THEN        ! Read/initialise 
          !                                   ! ---------------
-         IF( ln_rstart .AND. ln_bt_fw .AND. (neuler/=0) ) THEN    !* Read the restart file
+         IF( ln_rstart .AND. ln_bt_fw .AND. (.NOT.l_1st_euler) ) THEN    !* Read the restart file
             CALL iom_get( numror, jpdom_autoglo, 'ub2_b'  , ub2_b  (:,:), ldxios = lrxios )   
             CALL iom_get( numror, jpdom_autoglo, 'vb2_b'  , vb2_b  (:,:), ldxios = lrxios ) 
Index: NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/DYN/dynzdf.F90
===================================================================
--- NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/DYN/dynzdf.F90	(revision 12391)
+++ NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/DYN/dynzdf.F90	(revision 12397)
@@ -92,9 +92,4 @@
          ENDIF
       ENDIF
-      !                             !* set time step
-      IF( neuler == 0 .AND. kt == nit000     ) THEN   ;   r2dt =      rdt   ! = rdt (restart with Euler time stepping)
-      ELSEIF(               kt <= nit000 + 1 ) THEN   ;   r2dt = 2. * rdt   ! = 2 rdt (leapfrog)
-      ENDIF
-      !
       !                             !* explicit top/bottom drag case
       IF( .NOT.ln_drgimp )   CALL zdf_drg_exp( kt, Kmm, puu(:,:,:,Kbb), pvv(:,:,:,Kbb), puu(:,:,:,Krhs), pvv(:,:,:,Krhs) )  ! add top/bottom friction trend to (puu(Kaa),pvv(Kaa))
Index: NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/DYN/sshwzv.F90
===================================================================
--- NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/DYN/sshwzv.F90	(revision 12391)
+++ NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/DYN/sshwzv.F90	(revision 12397)
@@ -75,6 +75,6 @@
       REAL(wp), DIMENSION(jpi,jpj,jpt), INTENT(inout) ::   pssh           ! sea-surface height
       ! 
-      INTEGER  ::   jk            ! dummy loop indice
-      REAL(wp) ::   z2dt, zcoef   ! local scalars
+      INTEGER  ::   jk      ! dummy loop index
+      REAL(wp) ::   zcoef   ! local scalar
       REAL(wp), DIMENSION(jpi,jpj) ::   zhdiv   ! 2D workspace
       !!----------------------------------------------------------------------
@@ -88,6 +88,4 @@
       ENDIF
       !
-      z2dt = 2._wp * rdt                          ! set time step size (Euler/Leapfrog)
-      IF( neuler == 0 .AND. kt == nit000 )   z2dt = rdt
       zcoef = 0.5_wp * r1_rau0
 
@@ -96,5 +94,5 @@
       !                                           !------------------------------!
       IF(ln_wd_il) THEN
-         CALL wad_lmt(pssh(:,:,Kbb), zcoef * (emp_b(:,:) + emp(:,:)), z2dt, Kmm, uu, vv )
+         CALL wad_lmt(pssh(:,:,Kbb), zcoef * (emp_b(:,:) + emp(:,:)), r2dt, Kmm, uu, vv )
       ENDIF
 
@@ -109,5 +107,5 @@
       ! compute the vertical velocity which can be used to compute the non-linear terms of the momentum equations.
       ! 
-      pssh(:,:,Kaa) = (  pssh(:,:,Kbb) - z2dt * ( zcoef * ( emp_b(:,:) + emp(:,:) ) + zhdiv(:,:) )  ) * ssmask(:,:)
+      pssh(:,:,Kaa) = (  pssh(:,:,Kbb) - r2dt * ( zcoef * ( emp_b(:,:) + emp(:,:) ) + zhdiv(:,:) )  ) * ssmask(:,:)
       !
 #if defined key_agrif
@@ -152,5 +150,4 @@
       !
       INTEGER  ::   ji, jj, jk   ! dummy loop indices
-      REAL(wp) ::   z1_2dt       ! local scalars
       REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) ::   zhdiv
       !!----------------------------------------------------------------------
@@ -168,6 +165,4 @@
       !                                           !     Now Vertical Velocity    !
       !                                           !------------------------------!
-      z1_2dt = 1. / ( 2. * rdt )                         ! set time step size (Euler/Leapfrog)
-      IF( neuler == 0 .AND. kt == nit000 )   z1_2dt = 1. / rdt
       !
       IF( ln_vvl_ztilde .OR. ln_vvl_layer ) THEN      ! z_tilde and layer cases
@@ -187,5 +182,5 @@
             ! computation of w
             pww(:,:,jk) = pww(:,:,jk+1) - (  e3t(:,:,jk,Kmm) * hdiv(:,:,jk) + zhdiv(:,:,jk)    &
-               &                         + z1_2dt * ( e3t(:,:,jk,Kaa) - e3t(:,:,jk,Kbb) )     ) * tmask(:,:,jk)
+               &                         + r1_2dt * ( e3t(:,:,jk,Kaa) - e3t(:,:,jk,Kbb) )     ) * tmask(:,:,jk)
          END DO
          !          IF( ln_vvl_layer ) pww(:,:,:) = 0.e0
@@ -195,5 +190,5 @@
             ! computation of w
             pww(:,:,jk) = pww(:,:,jk+1) - (  e3t(:,:,jk,Kmm) * hdiv(:,:,jk)                 &
-               &                         + z1_2dt * ( e3t(:,:,jk,Kaa) - e3t(:,:,jk,Kbb) )  ) * tmask(:,:,jk)
+               &                         + r1_2dt * ( e3t(:,:,jk,Kaa) - e3t(:,:,jk,Kbb) )  ) * tmask(:,:,jk)
          END DO
       ENDIF
@@ -249,5 +244,5 @@
       ENDIF
       !              !==  Euler time-stepping: no filter, just swap  ==!
-      IF ( .NOT.( neuler == 0 .AND. kt == nit000 ) ) THEN   ! Only do time filtering for leapfrog timesteps
+      IF ( .NOT.( l_1st_euler ) ) THEN   ! Only do time filtering for leapfrog timesteps
          !                                                  ! filtered "now" field
          pssh(:,:,Kmm) = pssh(:,:,Kmm) + atfp * ( pssh(:,:,Kbb) - 2 * pssh(:,:,Kmm) + pssh(:,:,Kaa) )
Index: NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/IOM/restart.F90
===================================================================
--- NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/IOM/restart.F90	(revision 12391)
+++ NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/IOM/restart.F90	(revision 12397)
@@ -247,5 +247,11 @@
       IF( iom_varid( numror, 'rdt', ldstop = .FALSE. ) > 0 )   THEN
          CALL iom_get( numror, 'rdt', zrdt, ldxios = lrxios )
-         IF( zrdt /= rdt )   neuler = 0
+         IF( zrdt /= rn_rdt ) THEN
+            IF(lwp) WRITE( numout,*)
+            IF(lwp) WRITE( numout,*) 'rst_read:  rdt not equal to the read one'
+            IF(lwp) WRITE( numout,*)
+            IF(lwp) WRITE( numout,*) '      ==>>>   forced euler first time-step'
+            l_1st_euler =  .TRUE.
+         ENDIF
       ENDIF
 
@@ -270,5 +276,5 @@
          CALL iom_get( numror, jpdom_autoglo, 'sshb'   ,ssh(:,:         ,Kbb), ldxios = lrxios )
       ELSE
-         neuler = 0
+         l_1st_euler =  .TRUE.      ! before field not found, forced euler 1st time-step
       ENDIF
       !
@@ -284,5 +290,5 @@
       ENDIF
       !
-      IF( neuler == 0 ) THEN                                  ! Euler restart (neuler=0)
+      IF( l_1st_euler ) THEN                                  ! Euler restart 
          ts   (:,:,:,:,Kbb) = ts   (:,:,:,:,Kmm)              ! all before fields set to now values
          uu   (:,:,:  ,Kbb) = uu   (:,:,:  ,Kmm)
Index: NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/ISF/isfcpl.F90
===================================================================
--- NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/ISF/isfcpl.F90	(revision 12391)
+++ NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/ISF/isfcpl.F90	(revision 12397)
@@ -68,5 +68,5 @@
       !
       ! start on an euler time step
-      neuler = 0
+      l_1st_euler = .TRUE.
       ! 
       ! allocation and initialisation to 0
Index: NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/TRA/traadv.F90
===================================================================
--- NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/TRA/traadv.F90	(revision 12391)
+++ NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/TRA/traadv.F90	(revision 12397)
@@ -92,9 +92,4 @@
       IF( ln_timing )   CALL timing_start('tra_adv')
       !
-      !                                          ! set time step
-      IF( neuler == 0 .AND. kt == nit000 ) THEN   ;   r2dt =         rdt   ! at nit000             (Euler)
-      ELSEIF( kt <= nit000 + 1 )           THEN   ;   r2dt = 2._wp * rdt   ! at nit000 or nit000+1 (Leapfrog)
-      ENDIF
-      !
       !                                         !==  effective transport  ==!
       zuu(:,:,jpk) = 0._wp
Index: NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/TRA/traatf.F90
===================================================================
--- NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/TRA/traatf.F90	(revision 12391)
+++ NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/TRA/traatf.F90	(revision 12397)
@@ -113,9 +113,4 @@
       IF( ln_bdy )   CALL bdy_tra( kt, Kbb, pts, Kaa )  ! BDY open boundaries
  
-      ! set time step size (Euler/Leapfrog)
-      IF( neuler == 0 .AND. kt == nit000 ) THEN   ;   r2dt =        rdt   ! at nit000             (Euler)
-      ELSEIF( kt <= nit000 + 1 )           THEN   ;   r2dt = 2._wp* rdt   ! at nit000 or nit000+1 (Leapfrog)
-      ENDIF
-
       ! trends computation initialisation
       IF( l_trdtra )   THEN                    
@@ -144,5 +139,5 @@
       ENDIF
 
-      IF( neuler == 0 .AND. kt == nit000 ) THEN       ! Euler time-stepping 
+      IF( l_1st_euler ) THEN       ! Euler time-stepping 
          !
          IF (l_trdtra .AND. .NOT. ln_linssh ) THEN   ! Zero Asselin filter contribution must be explicitly written out since for vvl
Index: NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/TRA/traldf_iso.F90
===================================================================
--- NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/TRA/traldf_iso.F90	(revision 12391)
+++ NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/TRA/traldf_iso.F90	(revision 12397)
@@ -109,5 +109,5 @@
       REAL(wp) ::  zmsku, zahu_w, zabe1, zcof1, zcoef3   ! local scalars
       REAL(wp) ::  zmskv, zahv_w, zabe2, zcof2, zcoef4   !   -      -
-      REAL(wp) ::  zcoef0, ze3w_2, zsign, z2dt, z1_2dt   !   -      -
+      REAL(wp) ::  zcoef0, ze3w_2, zsign                 !   -      -
       REAL(wp), DIMENSION(jpi,jpj)     ::   zdkt, zdk1t, z2d
       REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zdit, zdjt, zftu, zftv, ztfw 
@@ -129,9 +129,4 @@
          &                        iom_use("uadv_salttr") .OR. iom_use("vadv_salttr")  ) )   l_hst = .TRUE.
       !
-      !                                            ! set time step size (Euler/Leapfrog)
-      IF( neuler == 0 .AND. kt == nit000 ) THEN   ;   z2dt =     rdt      ! at nit000   (Euler)
-      ELSE                                        ;   z2dt = 2.* rdt      !             (Leapfrog)
-      ENDIF
-      z1_2dt = 1._wp / z2dt
       !
       IF( kpass == 1 ) THEN   ;   zsign =  1._wp      ! bilaplacian operator require a minus sign (eddy diffusivity >0)
@@ -178,6 +173,6 @@
                DO_3D_10_10( 2, jpkm1 )
                   ze3w_2 = e3w(ji,jj,jk,Kmm) * e3w(ji,jj,jk,Kmm)
-                  zcoef0 = z2dt * (  akz(ji,jj,jk) + ah_wslp2(ji,jj,jk) / ze3w_2  )
-                  akz(ji,jj,jk) = MAX( zcoef0 - 0.5_wp , 0._wp ) * ze3w_2 * z1_2dt
+                  zcoef0 = r2dt * (  akz(ji,jj,jk) + ah_wslp2(ji,jj,jk) / ze3w_2  )
+                  akz(ji,jj,jk) = MAX( zcoef0 - 0.5_wp , 0._wp ) * ze3w_2 * r1_2dt
                END_3D
            ENDIF
Index: NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/TRA/traldf_triad.F90
===================================================================
--- NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/TRA/traldf_triad.F90	(revision 12391)
+++ NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/TRA/traldf_triad.F90	(revision 12397)
@@ -86,7 +86,7 @@
       INTEGER  ::  ip,jp,kp         ! dummy loop indices
       INTEGER  ::  ierr            ! local integer
-      REAL(wp) ::  zmsku, zabe1, zcof1, zcoef3          ! local scalars
-      REAL(wp) ::  zmskv, zabe2, zcof2, zcoef4          !   -      -
-      REAL(wp) ::  zcoef0, ze3w_2, zsign, z2dt, z1_2dt  !   -      -
+      REAL(wp) ::  zmsku, zabe1, zcof1, zcoef3    ! local scalars
+      REAL(wp) ::  zmskv, zabe2, zcof2, zcoef4    !   -      -
+      REAL(wp) ::  zcoef0, ze3w_2, zsign          !   -      -
       !
       REAL(wp) ::   zslope_skew, zslope_iso, zslope2, zbu, zbv
@@ -111,13 +111,9 @@
       l_hst = .FALSE.
       l_ptr = .FALSE.
-      IF( cdtype == 'TRA' .AND. ( iom_use( 'sophtldf' ) .OR. iom_use( 'sopstldf' ) ) )      l_ptr = .TRUE. 
-      IF( cdtype == 'TRA' .AND. ( iom_use("uadv_heattr") .OR. iom_use("vadv_heattr") .OR. &
-         &                        iom_use("uadv_salttr") .OR. iom_use("vadv_salttr")  ) )   l_hst = .TRUE.
-      !
-      !                                                        ! set time step size (Euler/Leapfrog)
-      IF( neuler == 0 .AND. kt == kit000 ) THEN   ;   z2dt =     rdt      ! at nit000   (Euler)
-      ELSE                                        ;   z2dt = 2.* rdt      !             (Leapfrog)
+      IF( cdtype == 'TRA' ) THEN
+         IF( iom_use( 'sophtldf' ) .OR. iom_use( 'sopstldf') )      l_ptr = .TRUE. 
+         IF( iom_use("uadv_heattr") .OR. iom_use("vadv_heattr") .OR.                   &
+         &   iom_use("uadv_salttr") .OR. iom_use("vadv_salttr")  )   l_hst = .TRUE.
       ENDIF
-      z1_2dt = 1._wp / z2dt
       !
       IF( kpass == 1 ) THEN   ;   zsign =  1._wp      ! bilaplacian operator require a minus sign (eddy diffusivity >0)
@@ -189,6 +185,6 @@
                DO_3D_10_10( 2, jpkm1 )
                   ze3w_2 = e3w(ji,jj,jk,Kmm) * e3w(ji,jj,jk,Kmm)
-                  zcoef0 = z2dt * (  akz(ji,jj,jk) + ah_wslp2(ji,jj,jk) / ze3w_2  )
-                  akz(ji,jj,jk) = MAX( zcoef0 - 0.5_wp , 0._wp ) * ze3w_2 * z1_2dt
+                  zcoef0 = r2dt * (  akz(ji,jj,jk) + ah_wslp2(ji,jj,jk) / ze3w_2  )
+                  akz(ji,jj,jk) = MAX( zcoef0 - 0.5_wp , 0._wp ) * ze3w_2 * r1_2dt
                END_3D
            ENDIF
Index: NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/TRA/traqsr.F90
===================================================================
--- NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/TRA/traqsr.F90	(revision 12391)
+++ NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/TRA/traqsr.F90	(revision 12397)
@@ -135,6 +135,5 @@
       !                         !-----------------------------------!
       IF( kt == nit000 ) THEN          !==  1st time step  ==!
-!!gm case neuler  not taken into account....
-         IF( ln_rstart .AND. iom_varid( numror, 'qsr_hc_b', ldstop = .FALSE. ) > 0 ) THEN    ! read in restart
+         IF( ln_rstart .AND. iom_varid( numror, 'qsr_hc_b', ldstop = .FALSE. ) > 0  .AND. .NOT.l_1st_euler ) THEN    ! read in restart
             IF(lwp) WRITE(numout,*) '          nit000-1 qsr tracer content forcing field read in the restart file'
             z1_2 = 0.5_wp
Index: NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/TRA/trazdf.F90
===================================================================
--- NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/TRA/trazdf.F90	(revision 12391)
+++ NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/TRA/trazdf.F90	(revision 12397)
@@ -64,8 +64,4 @@
          IF(lwp)WRITE(numout,*) 'tra_zdf : implicit vertical mixing on T & S'
          IF(lwp)WRITE(numout,*) '~~~~~~~ '
-      ENDIF
-      !
-      IF( neuler == 0 .AND. kt == nit000 ) THEN   ;   r2dt =      rdt   ! at nit000, =   rdt (restarting with Euler time stepping)
-      ELSEIF( kt <= nit000 + 1           ) THEN   ;   r2dt = 2. * rdt   ! otherwise, = 2 rdt (leapfrog)
       ENDIF
       !
Index: NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/TRD/trdtra.F90
===================================================================
--- NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/TRD/trdtra.F90	(revision 12391)
+++ NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/TRD/trdtra.F90	(revision 12397)
@@ -236,8 +236,4 @@
       INTEGER                   , INTENT(in   ) ::   Kmm     ! time level index
       !!----------------------------------------------------------------------
-
-      IF( neuler == 0 .AND. kt == nit000    ) THEN   ;   r2dt =      rdt      ! = rdt (restart with Euler time stepping)
-      ELSEIF(               kt <= nit000 + 1) THEN   ;   r2dt = 2. * rdt      ! = 2 rdt (leapfrog)
-      ENDIF
 
       !                   ! 3D output of tracers trends using IOM interface
Index: NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/nemogcm.F90
===================================================================
--- NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/nemogcm.F90	(revision 12391)
+++ NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/nemogcm.F90	(revision 12397)
@@ -160,4 +160,7 @@
       !                            !==   time stepping   ==!
       !                            !-----------------------!
+      !
+      !                                               !== set the model time-step  ==!
+      !
       istp = nit000
       !
Index: NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/step.F90
===================================================================
--- NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/step.F90	(revision 12391)
+++ NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/step.F90	(revision 12397)
@@ -102,4 +102,13 @@
       !
       !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
+      ! model timestep
+      !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+      !
+      IF( l_1st_euler ) THEN   ;   r2dt =         rn_rdt   ! start or restart with Euler 1st time-step
+      ELSE                     ;   r2dt = 2._wp * rn_rdt   ! restart with leapfrog
+      ENDIF
+      r1_2dt = 1._wp / r2dt
+      !
+      !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
       ! update I/O and calendar 
       !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
@@ -335,4 +344,6 @@
 #endif
       !
+      IF( l_1st_euler ) l_1st_euler = .FALSE.      ! recover Leap-frog timestep
+      !
       IF( ln_timing )   CALL timing_stop('stp')
       !
Index: NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/TOP/PISCES/P2Z/p2zexp.F90
===================================================================
--- NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/TOP/PISCES/P2Z/p2zexp.F90	(revision 12391)
+++ NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/TOP/PISCES/P2Z/p2zexp.F90	(revision 12397)
@@ -114,6 +114,6 @@
       ! Time filter and swap of arrays
       ! ------------------------------
-      IF( neuler == 0 .AND. kt == nittrc000 ) THEN        ! Euler time-stepping at first time-step
-        !                                             ! (only swap)
+      IF( l_1st_euler ) THEN        ! Euler time-stepping at first time-step
+        !                           ! (only swap)
         sedpocn(:,:) = zsedpoca(:,:)
         !                                              
Index: NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/TOP/PISCES/P4Z/p4zsms.F90
===================================================================
--- NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/TOP/PISCES/P4Z/p4zsms.F90	(revision 12391)
+++ NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/TOP/PISCES/P4Z/p4zsms.F90	(revision 12397)
@@ -111,5 +111,5 @@
       ENDIF
 
-      IF( ( neuler == 0 .AND. kt == nittrc000 ) .OR. ln_top_euler ) THEN
+      IF( l_1st_euler .OR. ln_top_euler ) THEN
          DO jn = jp_pcs0, jp_pcs1              !   SMS on tracer without Asselin time-filter
             tr(:,:,:,jn,Kbb) = tr(:,:,:,jn,Kmm)
Index: NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/TOP/TRP/trcatf.F90
===================================================================
--- NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/TOP/TRP/trcatf.F90	(revision 12391)
+++ NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/TOP/TRP/trcatf.F90	(revision 12397)
@@ -139,5 +139,5 @@
       ENDIF
       !                                ! Leap-Frog + Asselin filter time stepping
-      IF( (neuler == 0 .AND. kt == nittrc000) .OR. ln_top_euler ) THEN    ! Euler time-stepping 
+      IF( l_1st_euler .OR. ln_top_euler ) THEN    ! Euler time-stepping 
          !
          IF (l_trdtrc .AND. .NOT. ln_linssh ) THEN   ! Zero Asselin filter contribution must be explicitly written out since for vvl
Index: NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/TOP/trc.F90
===================================================================
--- NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/TOP/trc.F90	(revision 12391)
+++ NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/TOP/trc.F90	(revision 12397)
@@ -62,5 +62,5 @@
    CHARACTER(len = 256), PUBLIC ::   cn_trcrst_outdir   !: restart output directory
    REAL(wp)            , PUBLIC ::   rdttrc             !: passive tracer time step
-   REAL(wp)            , PUBLIC ::   r2dttrc            !: = 2*rdttrc except at nit000 (=rdttrc) if neuler=0
+   REAL(wp)            , PUBLIC ::   r2dttrc            !: = 2*rdttrc except at nit000 (=rdttrc) if l_1st_euler=.true.
    LOGICAL             , PUBLIC ::   ln_top_euler       !: boolean term for euler integration 
    LOGICAL             , PUBLIC ::   ln_trcdta          !: Read inputs data from files
Index: NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/TOP/trcrst.F90
===================================================================
--- NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/TOP/trcrst.F90	(revision 12391)
+++ NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/TOP/trcrst.F90	(revision 12397)
@@ -276,6 +276,6 @@
             ENDIF
             !
-            IF( ln_rsttr )  THEN   ;    neuler = 1
-            ELSE                   ;    neuler = 0
+            IF( ln_rsttr )  THEN   ;    l_1st_euler = .false.
+            ELSE                   ;    l_1st_euler = .true.
             ENDIF
             !
Index: NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/TOP/trcstp.F90
===================================================================
--- NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/TOP/trcstp.F90	(revision 12391)
+++ NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/TOP/trcstp.F90	(revision 12397)
@@ -64,5 +64,5 @@
       IF( ln_timing )   CALL timing_start('trc_stp')
       !
-      IF( ( neuler == 0 .AND. kt == nittrc000 ) .OR. ln_top_euler ) THEN     ! at nittrc000
+      IF( l_1st_euler .OR. ln_top_euler ) THEN     ! at nittrc000
          r2dttrc =  rdttrc           ! = rdttrc (use or restarting with Euler time stepping)
       ELSEIF( kt <= nittrc000 + 1 ) THEN                                     ! at nittrc000 or nittrc000+1 
Index: NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/tests/CANAL/MY_SRC/domvvl.F90
===================================================================
--- NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/tests/CANAL/MY_SRC/domvvl.F90	(revision 12391)
+++ NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/tests/CANAL/MY_SRC/domvvl.F90	(revision 12397)
@@ -295,5 +295,5 @@
       INTEGER                ::   ji, jj, jk            ! dummy loop indices
       INTEGER , DIMENSION(3) ::   ijk_max, ijk_min      ! temporary integers
-      REAL(wp)               ::   z2dt, z_tmin, z_tmax  ! local scalars
+      REAL(wp)               ::   z_tmin, z_tmax        ! local scalars
       LOGICAL                ::   ll_do_bclinic         ! local logical
       REAL(wp), DIMENSION(jpi,jpj)     ::   zht, z_scale, zwu, zwv, zhdiv
@@ -418,11 +418,6 @@
          ! Leapfrog time stepping
          ! ~~~~~~~~~~~~~~~~~~~~~~
-         IF( neuler == 0 .AND. kt == nit000 ) THEN
-            z2dt =  rdt
-         ELSE
-            z2dt = 2.0_wp * rdt
-         ENDIF
          CALL lbc_lnk( 'domvvl', tilde_e3t_a(:,:,:), 'T', 1._wp )
-         tilde_e3t_a(:,:,:) = tilde_e3t_b(:,:,:) + z2dt * tmask(:,:,:) * tilde_e3t_a(:,:,:)
+         tilde_e3t_a(:,:,:) = tilde_e3t_b(:,:,:) + r2dt * tmask(:,:,:) * tilde_e3t_a(:,:,:)
 
          ! Maximum deformation control
@@ -610,5 +605,5 @@
       ! - ML - e3(t/u/v)_b are allready computed in dynnxt.
       IF( ln_vvl_ztilde .OR. ln_vvl_layer ) THEN
-         IF( neuler == 0 .AND. kt == nit000 ) THEN
+         IF( l_1st_euler ) THEN
             tilde_e3t_b(:,:,:) = tilde_e3t_n(:,:,:)
          ELSE
@@ -827,5 +822,5 @@
                   e3t(:,:,:,Kbb) = e3t_0(:,:,:)
                END WHERE
-               IF( neuler == 0 ) THEN
+               IF( l_1st_euler ) THEN
                   e3t(:,:,:,Kbb) = e3t(:,:,:,Kmm)
                ENDIF
@@ -833,19 +828,19 @@
                IF(lwp) write(numout,*) 'dom_vvl_rst WARNING : e3t(:,:,:,Kmm) not found in restart files'
                IF(lwp) write(numout,*) 'e3t_n set equal to e3t_b.'
-               IF(lwp) write(numout,*) 'neuler is forced to 0'
+               IF(lwp) write(numout,*) 'l_1st_euler is forced to .true.'
                CALL iom_get( numror, jpdom_autoglo, 'e3t_b', e3t(:,:,:,Kbb), ldxios = lrxios )
                e3t(:,:,:,Kmm) = e3t(:,:,:,Kbb)
-               neuler = 0
+               l_1st_euler = .true.
             ELSE IF( id2 > 0 ) THEN
                IF(lwp) write(numout,*) 'dom_vvl_rst WARNING : e3t(:,:,:,Kbb) not found in restart files'
                IF(lwp) write(numout,*) 'e3t_b set equal to e3t_n.'
-               IF(lwp) write(numout,*) 'neuler is forced to 0'
+               IF(lwp) write(numout,*) 'l_1st_euler is forced to .true.'
                CALL iom_get( numror, jpdom_autoglo, 'e3t_n', e3t(:,:,:,Kmm), ldxios = lrxios )
                e3t(:,:,:,Kbb) = e3t(:,:,:,Kmm)
-               neuler = 0
+               l_1st_euler = .true.
             ELSE
                IF(lwp) write(numout,*) 'dom_vvl_rst WARNING : e3t(:,:,:,Kmm) not found in restart file'
                IF(lwp) write(numout,*) 'Compute scale factor from sshn'
-               IF(lwp) write(numout,*) 'neuler is forced to 0'
+               IF(lwp) write(numout,*) 'l_1st_euler is forced to .true.'
                DO jk = 1, jpk
                   e3t(:,:,jk,Kmm) =  e3t_0(:,:,jk) * ( ht_0(:,:) + ssh(:,:,Kmm) ) &
@@ -854,5 +849,5 @@
                END DO
                e3t(:,:,:,Kbb) = e3t(:,:,:,Kmm)
-               neuler = 0
+               l_1st_euler = .true.
             ENDIF
             !                             ! ----------- !
Index: NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/tests/VORTEX/MY_SRC/domvvl.F90
===================================================================
--- NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/tests/VORTEX/MY_SRC/domvvl.F90	(revision 12391)
+++ NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/tests/VORTEX/MY_SRC/domvvl.F90	(revision 12397)
@@ -323,5 +323,5 @@
       INTEGER                ::   ji, jj, jk            ! dummy loop indices
       INTEGER , DIMENSION(3) ::   ijk_max, ijk_min      ! temporary integers
-      REAL(wp)               ::   z2dt, z_tmin, z_tmax  ! local scalars
+      REAL(wp)               ::   z_tmin, z_tmax        ! local scalars
       LOGICAL                ::   ll_do_bclinic         ! local logical
       REAL(wp), DIMENSION(jpi,jpj)     ::   zht, z_scale, zwu, zwv, zhdiv
@@ -446,11 +446,6 @@
          ! Leapfrog time stepping
          ! ~~~~~~~~~~~~~~~~~~~~~~
-         IF( neuler == 0 .AND. kt == nit000 ) THEN
-            z2dt =  rdt
-         ELSE
-            z2dt = 2.0_wp * rdt
-         ENDIF
          CALL lbc_lnk( 'domvvl', tilde_e3t_a(:,:,:), 'T', 1._wp )
-         tilde_e3t_a(:,:,:) = tilde_e3t_b(:,:,:) + z2dt * tmask(:,:,:) * tilde_e3t_a(:,:,:)
+         tilde_e3t_a(:,:,:) = tilde_e3t_b(:,:,:) + r2dt * tmask(:,:,:) * tilde_e3t_a(:,:,:)
 
          ! Maximum deformation control
@@ -638,5 +633,5 @@
       ! - ML - e3(t/u/v)_b are allready computed in dynnxt.
       IF( ln_vvl_ztilde .OR. ln_vvl_layer ) THEN
-         IF( neuler == 0 .AND. kt == nit000 ) THEN
+         IF( l_1st_euler ) THEN
             tilde_e3t_b(:,:,:) = tilde_e3t_n(:,:,:)
          ELSE
@@ -849,5 +844,5 @@
                   e3t(:,:,:,Kbb) = e3t_0(:,:,:)
                END WHERE
-               IF( neuler == 0 ) THEN
+               IF( l_1st_euler ) THEN
                   e3t(:,:,:,Kbb) = e3t(:,:,:,Kmm)
                ENDIF
@@ -855,19 +850,19 @@
                IF(lwp) write(numout,*) 'dom_vvl_rst WARNING : e3t(:,:,:,Kmm) not found in restart files'
                IF(lwp) write(numout,*) 'e3t_n set equal to e3t_b.'
-               IF(lwp) write(numout,*) 'neuler is forced to 0'
+               IF(lwp) write(numout,*) 'l_1st_euler is forced to .true.'
                CALL iom_get( numror, jpdom_autoglo, 'e3t_b', e3t(:,:,:,Kbb), ldxios = lrxios )
                e3t(:,:,:,Kmm) = e3t(:,:,:,Kbb)
-               neuler = 0
+               l_1st_euler = .true.
             ELSE IF( id2 > 0 ) THEN
                IF(lwp) write(numout,*) 'dom_vvl_rst WARNING : e3t(:,:,:,Kbb) not found in restart files'
                IF(lwp) write(numout,*) 'e3t_b set equal to e3t_n.'
-               IF(lwp) write(numout,*) 'neuler is forced to 0'
+               IF(lwp) write(numout,*) 'l_1st_euler is forced to .true.'
                CALL iom_get( numror, jpdom_autoglo, 'e3t_n', e3t(:,:,:,Kmm), ldxios = lrxios )
                e3t(:,:,:,Kbb) = e3t(:,:,:,Kmm)
-               neuler = 0
+               l_1st_euler = .true.
             ELSE
                IF(lwp) write(numout,*) 'dom_vvl_rst WARNING : e3t(:,:,:,Kmm) not found in restart file'
                IF(lwp) write(numout,*) 'Compute scale factor from sshn'
-               IF(lwp) write(numout,*) 'neuler is forced to 0'
+               IF(lwp) write(numout,*) 'l_1st_euler is forced to .true.'
                DO jk = 1, jpk
                   e3t(:,:,jk,Kmm) =  e3t_0(:,:,jk) * ( ht_0(:,:) + ssh(:,:,Kmm) ) &
@@ -876,5 +871,5 @@
                END DO
                e3t(:,:,:,Kbb) = e3t(:,:,:,Kmm)
-               neuler = 0
+               l_1st_euler = .true.
             ENDIF
             !                             ! ----------- !
