Index: /NEMO/branches/2020/dev_r13327_KERNEL-06_2_techene_e3/src/OCE/DOM/domain.F90
===================================================================
--- /NEMO/branches/2020/dev_r13327_KERNEL-06_2_techene_e3/src/OCE/DOM/domain.F90	(revision 13894)
+++ /NEMO/branches/2020/dev_r13327_KERNEL-06_2_techene_e3/src/OCE/DOM/domain.F90	(revision 13895)
@@ -50,4 +50,5 @@
    USE lbclnk         ! ocean lateral boundary condition (or mpp link)
    USE lib_mpp        ! distributed memory computing library
+   USE restart        ! only for lrst_oce
 
    IMPLICIT NONE
@@ -86,4 +87,5 @@
       INTEGER ::   ji, jj, jk, jt   ! dummy loop indices
       INTEGER ::   iconf = 0    ! local integers
+      REAL(wp)::   zrdt
       CHARACTER (len=64) ::   cform = "(A12, 3(A13, I7))" 
       INTEGER , DIMENSION(jpi,jpj) ::   ik_top , ik_bot       ! top and bottom ocean level
@@ -144,4 +146,32 @@
       ENDIF
       !
+      !
+      IF( ln_rstart ) THEN             ! check consistency between ln_rstart and ln_1st_euler
+         !
+         IF(lwp) WRITE(numout,*) 'dom_nam : open the restart file'
+         CALL rst_read_open                                                !- open the restart file
+         !
+         IF( iom_varid( numror, 'rdt', ldstop = .FALSE. ) > 0 )   THEN     !- check time-step consistency and force Euler restart if changed
+            CALL iom_get( numror, 'rdt', zrdt, ldxios = lrxios )
+            IF( zrdt /= rn_Dt ) THEN
+               IF(lwp) WRITE( numout,*)
+               IF(lwp) WRITE( numout,*) 'ssh_init_rst:  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
+         !
+         IF( iom_varid( numror, 'sshb', ldstop = .FALSE. ) <= 0 ) THEN   !- check absence of one of the Kbb field (here sshb)
+            !                                                            !  (any Kbb field is missing ==> all Kbb fields are missing)
+            IF( .NOT.l_1st_euler ) THEN
+               CALL ctl_warn ('ssh_init_rst: ssh at Kbb not found in restart files ',   &
+                  &                         'l_1st_euler forced to .true. and ',        &
+                  &                         'ssh(Kbb) = ssh(Kmm) '                    )
+               l_1st_euler = .TRUE.
+            ENDIF
+         ENDIF
+      ENDIF
+      !
       CALL dom_hgr                      ! Horizontal mesh
 
@@ -577,5 +607,5 @@
    SUBROUTINE domain_cfg( cd_cfg, kk_cfg, kpi, kpj, kpk, kperio )
       !!----------------------------------------------------------------------
-      !!                     ***  ROUTINE dom_nam  ***
+      !!                     ***  ROUTINE domain_cfg  ***
       !!                    
       !! ** Purpose :   read the domain size in domain configuration file
Index: /NEMO/branches/2020/dev_r13327_KERNEL-06_2_techene_e3/src/OCE/DOM/domvvl.F90
===================================================================
--- /NEMO/branches/2020/dev_r13327_KERNEL-06_2_techene_e3/src/OCE/DOM/domvvl.F90	(revision 13894)
+++ /NEMO/branches/2020/dev_r13327_KERNEL-06_2_techene_e3/src/OCE/DOM/domvvl.F90	(revision 13895)
@@ -787,9 +787,18 @@
       !! ** Purpose :   Read or write VVL file in restart file
       !!
-      !! ** Method  :   use of IOM library
-      !!                if the restart does not contain vertical scale factors,
-      !!                they are set to the _0 values
-      !!                if the restart does not contain vertical scale factors increments (z_tilde),
-      !!                they are set to 0.
+      !! ** Method  : * restart comes from a linear ssh simulation :
+      !!                   an attempt to read e3t_n stops simulation
+      !!              * restart comes from a z-star, z-tilde, or layer :
+      !!                   read e3t_n and e3t_b
+      !!              * restart comes from a z-star :
+      !!                   set tilde_e3t_n, tilde_e3t_n, and hdiv_lf to 0
+      !!              * restart comes from layer :
+      !!                   read tilde_e3t_n and tilde_e3t_b
+      !!                   set hdiv_lf to 0
+      !!              * restart comes from a z-tilde:
+      !!                   read tilde_e3t_n, tilde_e3t_b, and hdiv_lf
+      !!
+      !!              NB: if l_1st_euler = T (ln_1st_euler or ssh_b not found)
+      !!                   Kbb fields set to Kmm ones
       !!----------------------------------------------------------------------
       INTEGER         , INTENT(in) ::   kt        ! ocean time-step
@@ -797,92 +806,78 @@
       CHARACTER(len=*), INTENT(in) ::   cdrw      ! "READ"/"WRITE" flag
       !
-      INTEGER ::   ji, jj, jk
-      INTEGER ::   id1, id2, id3, id4, id5     ! local integers
-      !!----------------------------------------------------------------------
-      !
-      IF( TRIM(cdrw) == 'READ' ) THEN        ! Read/initialise 
-         !                                   ! ===============
-         IF( ln_rstart ) THEN                   !* Read the restart file
-            CALL rst_read_open                  !  open the restart file if necessary
+      INTEGER ::   ji, jj, jk      ! dummy loop indices
+      INTEGER ::   id3, id4, id5   ! local integers
+      !!----------------------------------------------------------------------
+      !
+      !                                      !=====================!
+      IF( TRIM(cdrw) == 'READ' ) THEN        !  Read / initialise  !
+         !                                   !=====================!
+         !
+         IF( ln_rstart ) THEN                   !==  Read the restart file  ==!
             !
-            id1 = iom_varid( numror, 'e3t_b', ldstop = .FALSE. )
-            id2 = iom_varid( numror, 'e3t_n', ldstop = .FALSE. )
-            id3 = iom_varid( numror, 'tilde_e3t_b', ldstop = .FALSE. )
+            CALL rst_read_open                                          !*  open the restart file if necessary
+            !                                         ! --------- !
+            !                                         ! all cases !
+            !                                         ! --------- !
+            !
+            id3 = iom_varid( numror, 'tilde_e3t_b', ldstop = .FALSE. )  !*  check presence
             id4 = iom_varid( numror, 'tilde_e3t_n', ldstop = .FALSE. )
-            id5 = iom_varid( numror, 'hdiv_lf', ldstop = .FALSE. )
+            id5 = iom_varid( numror, 'hdiv_lf'    , ldstop = .FALSE. )
             !
-            !                             ! --------- !
-            !                             ! all cases !
-            !                             ! --------- !
-            !
-            IF( MIN( id1, id2 ) > 0 ) THEN       ! all required arrays exist
+            !                                                           !*  scale factors
+            IF(lwp) WRITE(numout,*)    '          Kmm scale factor read in the restart file'
+            CALL iom_get( numror, jpdom_auto, 'e3t_n', e3t(:,:,:,Kmm), ldxios = lrxios )
+            WHERE ( tmask(:,:,:) == 0.0_wp ) 
+               e3t(:,:,:,Kmm) = e3t_0(:,:,:)
+            END WHERE
+            IF( l_1st_euler ) THEN                       ! euler
+               IF(lwp) WRITE(numout,*) '          Euler first time step : e3t(Kbb) = e3t(Kmm)'
+               e3t(:,:,:,Kmm) = e3t(:,:,:,Kbb)
+            ELSE                                         ! leap frog
+               IF(lwp) WRITE(numout,*) '          Kbb scale factor read in the restart file'
                CALL iom_get( numror, jpdom_auto, 'e3t_b', e3t(:,:,:,Kbb), ldxios = lrxios )
-               CALL iom_get( numror, jpdom_auto, 'e3t_n', e3t(:,:,:,Kmm), ldxios = lrxios )
-               ! needed to restart if land processor not computed 
-               IF(lwp) write(numout,*) 'dom_vvl_rst : e3t(:,:,:,Kbb) and e3t(:,:,:,Kmm) found in restart files'
                WHERE ( tmask(:,:,:) == 0.0_wp ) 
-                  e3t(:,:,:,Kmm) = e3t_0(:,:,:)
                   e3t(:,:,:,Kbb) = e3t_0(:,:,:)
                END WHERE
-               IF( l_1st_euler ) THEN
-                  e3t(:,:,:,Kbb) = e3t(:,:,:,Kmm)
-               ENDIF
-            ELSE IF( id1 > 0 ) THEN
-               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,*) 'l_1st_euler is forced to true'
-               CALL iom_get( numror, jpdom_auto, 'e3t_b', e3t(:,:,:,Kbb), ldxios = lrxios )
-               e3t(:,:,:,Kmm) = e3t(:,:,:,Kbb)
-               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,*) 'l_1st_euler is forced to true'
-               CALL iom_get( numror, jpdom_auto, 'e3t_n', e3t(:,:,:,Kmm), ldxios = lrxios )
-               e3t(:,:,:,Kbb) = e3t(:,:,:,Kmm)
-               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,*) 'l_1st_euler is forced to true'
-               DO jk = 1, jpk
-                  e3t(:,:,jk,Kmm) =  e3t_0(:,:,jk) * ( ht_0(:,:) + ssh(:,:,Kmm) ) &
-                      &                          / ( ht_0(:,:) + 1._wp - ssmask(:,:) ) * tmask(:,:,jk)   &
-                      &          + e3t_0(:,:,jk)                               * (1._wp -tmask(:,:,jk))
-               END DO
-               e3t(:,:,:,Kbb) = e3t(:,:,:,Kmm)
-               l_1st_euler = .true.
             ENDIF
-            !                             ! ----------- !
-            IF( ln_vvl_zstar ) THEN       ! z_star case !
-               !                          ! ----------- !
+            !                                         ! ------------ !
+            IF( ln_vvl_zstar ) THEN                   !  z_star case !
+               !                                      ! ------------ !
                IF( MIN( id3, id4 ) > 0 ) THEN
                   CALL ctl_stop( 'dom_vvl_rst: z_star cannot restart from a z_tilde or layer run' )
                ENDIF
-               !                          ! ----------------------- !
-            ELSE                          ! z_tilde and layer cases !
-               !                          ! ----------------------- !
-               IF( MIN( id3, id4 ) > 0 ) THEN  ! all required arrays exist
-                  CALL iom_get( numror, jpdom_auto, 'tilde_e3t_b', tilde_e3t_b(:,:,:), ldxios = lrxios )
+               !                                      ! ------------------------ !
+            ELSE                                      !  z_tilde and layer cases !
+               !                                      ! ------------------------ !
+               !
+               IF( id4 > 0 ) THEN                                       !*  scale factor increments
+                  IF(lwp) WRITE(numout,*)    '          Kmm scale factor increments read in the restart file'
                   CALL iom_get( numror, jpdom_auto, 'tilde_e3t_n', tilde_e3t_n(:,:,:), ldxios = lrxios )
-               ELSE                            ! one at least array is missing
+                  IF( l_1st_euler ) THEN                 ! euler
+                     IF(lwp) WRITE(numout,*) '          Euler first time step : tilde_e3t(Kbb) = tilde_e3t(Kmm)'
+                     tilde_e3t_b(:,:,:) = tilde_e3t_n(:,:,:)
+                  ELSE                                   ! leap frog
+                     IF(lwp) WRITE(numout,*) '          Kbb scale factor increments read in the restart file'
+                     CALL iom_get( numror, jpdom_auto, 'tilde_e3t_b', tilde_e3t_b(:,:,:), ldxios = lrxios )
+                  ENDIF
+               ELSE 
                   tilde_e3t_b(:,:,:) = 0.0_wp
                   tilde_e3t_n(:,:,:) = 0.0_wp
                ENDIF
-               !                          ! ------------ !
-               IF( ln_vvl_ztilde ) THEN   ! z_tilde case !
-                  !                       ! ------------ !
+               !                                      ! ------------ !
+               IF( ln_vvl_ztilde ) THEN               ! z_tilde case !
+                  !                                   ! ------------ !
                   IF( id5 > 0 ) THEN  ! required array exists
                      CALL iom_get( numror, jpdom_auto, 'hdiv_lf', hdiv_lf(:,:,:), ldxios = lrxios )
                   ELSE                ! array is missing
-                     hdiv_lf(:,:,:) = 0.0_wp
+                     hdiv_lf(:,:,:) = 0.0_wp 
                   ENDIF
                ENDIF
             ENDIF
             !
-         ELSE                                   !* Initialize at "rest" with ssh
+         ELSE                                   !==  Initialize at "rest" with ssh  ==!
             !
             DO jk = 1, jpk
-               e3t(:,:,jk,Kmm) =  e3t_0(:,:,jk) * ( 1._wp + ssh(:,:,Kmm)  / ( ht_0(:,:) + 1._wp - ssmask(:,:) ) * tmask(:,:,jk) )
+               e3t(:,:,jk,Kmm) =  e3t_0(:,:,jk) * ( 1._wp + ssh(:,:,Kmm) * r1_ht_0(:,:) * tmask(:,:,jk) )
             END DO
             e3t(:,:,:,Kbb) = e3t(:,:,:,Kmm)
@@ -892,9 +887,10 @@
                tilde_e3t_n(:,:,:) = 0._wp
                IF( ln_vvl_ztilde ) hdiv_lf(:,:,:) = 0._wp
-            END IF
-         ENDIF
-         !
-      ELSEIF( TRIM(cdrw) == 'WRITE' ) THEN   ! Create restart file
-         !                                   ! ===================
+            ENDIF
+         ENDIF
+         !                                       !=======================!
+      ELSEIF( TRIM(cdrw) == 'WRITE' ) THEN       !  Create restart file  !
+         !                                       !=======================!
+         !
          IF(lwp) WRITE(numout,*) '---- dom_vvl_rst ----'
          IF( lwxios ) CALL iom_swap(      cwxios_context          )
Index: /NEMO/branches/2020/dev_r13327_KERNEL-06_2_techene_e3/src/OCE/DYN/dynspg_ts.F90
===================================================================
--- /NEMO/branches/2020/dev_r13327_KERNEL-06_2_techene_e3/src/OCE/DYN/dynspg_ts.F90	(revision 13894)
+++ /NEMO/branches/2020/dev_r13327_KERNEL-06_2_techene_e3/src/OCE/DYN/dynspg_ts.F90	(revision 13895)
@@ -932,5 +932,5 @@
       IF( TRIM(cdrw) == 'READ' ) THEN        ! Read/initialise 
          !                                   ! ---------------
-         IF( ln_rstart .AND. ln_bt_fw .AND. (.NOT.l_1st_euler) ) 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_auto, 'ub2_b'  , ub2_b  (:,:), cd_type = 'U', psgn = -1._wp, ldxios = lrxios )   
             CALL iom_get( numror, jpdom_auto, 'vb2_b'  , vb2_b  (:,:), cd_type = 'V', psgn = -1._wp, ldxios = lrxios ) 
Index: /NEMO/branches/2020/dev_r13327_KERNEL-06_2_techene_e3/src/OCE/DYN/sshwzv.F90
===================================================================
--- /NEMO/branches/2020/dev_r13327_KERNEL-06_2_techene_e3/src/OCE/DYN/sshwzv.F90	(revision 13894)
+++ /NEMO/branches/2020/dev_r13327_KERNEL-06_2_techene_e3/src/OCE/DYN/sshwzv.F90	(revision 13895)
@@ -448,5 +448,5 @@
       !!                   USE of IOM library to read ssh in the restart file
       !!                   Leap-Frog: Kbb and Kmm are read except for l_1st_euler=T
-      !!                              or Kbb not found 
+      !!
       !!              * otherwise 
       !!                   call user defined ssh or
@@ -458,5 +458,4 @@
       !
       INTEGER ::   ji, jj, jk
-      INTEGER ::   id_sshb, id_sshn     ! local integers
       !!----------------------------------------------------------------------
       !
@@ -465,28 +464,15 @@
          !                         !=============================!
          !
-         CALL rst_read_open                    !*  open the restart file
-         !
-         id_sshb = iom_varid( numror, 'sshb', ldstop = .FALSE. )
-         id_sshn = iom_varid( numror, 'sshn', ldstop = .FALSE. )
-         !
-         IF( id_sshb <= 0 .AND. .NOT.l_1st_euler ) THEN
-            CALL ctl_warn ('ssh_init_rst: ssh at Kbb not found in restart files ',   &
-               &                         'l_1st_euler forced to .true. and ',        &
-               &                         'ssh(Kbb) = ssh(Kmm) '                    )
-            l_1st_euler = .TRUE.
-         ENDIF
-         !
-         IF( id_sshn <= 0 ) THEN       ! A restart require sshn present in the restart file
-            CALL ctl_stop('STOP', 'ssh_init_rst: ssh at Kmm not found in the restart file')
-            !
-         ELSE                          ! read ssh at Kmm
-            CALL iom_get( numror, jpdom_auto, 'sshn'   , ssh(:,:,Kmm), ldxios = lrxios    )
-            !
-            IF( l_1st_euler ) THEN     ! Euler at first time-step: ssh_Kbb = ssh_Kmm
-               ssh(:,:,Kbb) = ssh(:,:,Kmm)
-               !
-            ELSE                       ! read ssh at Kbb
-               CALL iom_get( numror, jpdom_auto, 'sshb', ssh(:,:,Kbb), ldxios = lrxios )
-            ENDIF
+         !                                     !*  Read ssh at Kmm
+         IF(lwp) WRITE(numout,*)    '          Kmm sea surface height read in the restart file'
+         CALL iom_get( numror, jpdom_auto, 'sshn'   , ssh(:,:,Kmm), ldxios = lrxios )
+         !
+         IF( l_1st_euler ) THEN                !* Euler at first time-step
+            IF(lwp) WRITE(numout,*) '          Euler first time step : ssh(Kbb) = ssh(Kmm)'
+            ssh(:,:,Kbb) = ssh(:,:,Kmm)
+            !
+         ELSE                                  !* read ssh at Kbb
+            IF(lwp) WRITE(numout,*) '          Kbb sea surface height read in the restart file'
+            CALL iom_get( numror, jpdom_auto, 'sshb', ssh(:,:,Kbb), ldxios = lrxios )
          ENDIF
          !                         !============================!
Index: /NEMO/branches/2020/dev_r13327_KERNEL-06_2_techene_e3/src/OCE/IOM/restart.F90
===================================================================
--- /NEMO/branches/2020/dev_r13327_KERNEL-06_2_techene_e3/src/OCE/IOM/restart.F90	(revision 13894)
+++ /NEMO/branches/2020/dev_r13327_KERNEL-06_2_techene_e3/src/OCE/IOM/restart.F90	(revision 13895)
@@ -240,30 +240,19 @@
       !! ** Method  :   Read in restart.nc fields which are necessary for restart
       !!
+      !!                NB: restart file openned           in DOM/domain.F90:dom_init
+      !!                    before field in restart tested in DOM/domain.F90:dom_init
+      !!                    (sshb)
+      !!
       !!                NB: ssh is read or set in DYN/sshwzv:shh_init_rst
       !!                    but is written     in IOM/restart:rst_write
       !!----------------------------------------------------------------------
       INTEGER, INTENT(in) ::   Kbb, Kmm   ! ocean time level indices
-      REAL(wp) ::   zrdt
       INTEGER  ::   jk
       REAL(wp), DIMENSION(jpi, jpj, jpk) :: w3d
       !!----------------------------------------------------------------------
-
-      CALL rst_read_open            ! open restart for reading (if not already opened)
-
-      !                             ! Check time-step consistency and force Euler restart if changed
-      IF( iom_varid( numror, 'rdt', ldstop = .FALSE. ) > 0 )   THEN
-         CALL iom_get( numror, 'rdt', zrdt, ldxios = lrxios )
-         IF( zrdt /= rn_Dt ) 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
-
+      !
       CALL iom_delay_rst( 'READ', 'OCE', numror )   ! read only ocean delayed global communication variables
-      
-      !                             ! Diurnal DSST 
+      !
+      !                             !*  Diurnal DSST 
       IF( ln_diurnal )   CALL iom_get( numror, jpdom_auto, 'Dsst' , x_dsst, ldxios = lrxios ) 
       IF ( ln_diurnal_only ) THEN 
@@ -275,20 +264,24 @@
          RETURN 
       ENDIF  
-      
-      IF( iom_varid( numror, 'ub', ldstop = .FALSE. ) > 0 ) THEN
-         ! before fields
+      !
+      !                             !*  Read Kmm fields
+      IF(lwp) WRITE(numout,*)    '           Kmm u, v and T-S fields read in the restart file'
+      CALL iom_get( numror, jpdom_auto, 'un'     , uu(:,:,:       ,Kmm), ldxios = lrxios, cd_type = 'U', psgn = -1._wp )
+      CALL iom_get( numror, jpdom_auto, 'vn'     , vv(:,:,:       ,Kmm), ldxios = lrxios, cd_type = 'V', psgn = -1._wp )
+      CALL iom_get( numror, jpdom_auto, 'tn'     , ts(:,:,:,jp_tem,Kmm), ldxios = lrxios )
+      CALL iom_get( numror, jpdom_auto, 'sn'     , ts(:,:,:,jp_sal,Kmm), ldxios = lrxios )
+      !
+      IF( l_1st_euler ) THEN        !*  Euler restart
+         IF(lwp) WRITE(numout,*) '           Kbb u, v and T-S fields set to Kmm values'
+         ts(:,:,:,:,Kbb) = ts(:,:,:,:,Kmm)         ! all before fields set to now values
+         uu(:,:,:  ,Kbb) = uu(:,:,:  ,Kmm)
+         vv(:,:,:  ,Kbb) = vv(:,:,:  ,Kmm)
+      ELSE                          !* Leap frog restart
+         IF(lwp) WRITE(numout,*) '           Kbb u, v and T-S fields read in the restart file'
          CALL iom_get( numror, jpdom_auto, 'ub'     , uu(:,:,:       ,Kbb), ldxios = lrxios, cd_type = 'U', psgn = -1._wp )
          CALL iom_get( numror, jpdom_auto, 'vb'     , vv(:,:,:       ,Kbb), ldxios = lrxios, cd_type = 'V', psgn = -1._wp )
          CALL iom_get( numror, jpdom_auto, 'tb'     , ts(:,:,:,jp_tem,Kbb), ldxios = lrxios )
          CALL iom_get( numror, jpdom_auto, 'sb'     , ts(:,:,:,jp_sal,Kbb), ldxios = lrxios )
-      ELSE
-         l_1st_euler =  .TRUE.      ! before field not found, forced euler 1st time-step
-      ENDIF
-      !
-      ! now fields
-      CALL iom_get( numror, jpdom_auto, 'un'     , uu(:,:,:       ,Kmm), ldxios = lrxios, cd_type = 'U', psgn = -1._wp )
-      CALL iom_get( numror, jpdom_auto, 'vn'     , vv(:,:,:       ,Kmm), ldxios = lrxios, cd_type = 'V', psgn = -1._wp )
-      CALL iom_get( numror, jpdom_auto, 'tn'     , ts(:,:,:,jp_tem,Kmm), ldxios = lrxios )
-      CALL iom_get( numror, jpdom_auto, 'sn'     , ts(:,:,:,jp_sal,Kmm), ldxios = lrxios )
+      ENDIF
       !
       IF( iom_varid( numror, 'rhop', ldstop = .FALSE. ) > 0 ) THEN
@@ -298,10 +291,4 @@
       ENDIF
       !
-      IF( l_1st_euler ) THEN                 ! Euler restart 
-         ts(:,:,:,:,Kbb) = ts(:,:,:,:,Kmm)         ! all before fields set to now values
-         uu(:,:,:  ,Kbb) = uu(:,:,:  ,Kmm)
-         vv(:,:,:  ,Kbb) = vv(:,:,:  ,Kmm)
-      ENDIF
-      !
    END SUBROUTINE rst_read
 
Index: /NEMO/branches/2020/dev_r13327_KERNEL-06_2_techene_e3/src/OCE/ISF/isfcpl.F90
===================================================================
--- /NEMO/branches/2020/dev_r13327_KERNEL-06_2_techene_e3/src/OCE/ISF/isfcpl.F90	(revision 13894)
+++ /NEMO/branches/2020/dev_r13327_KERNEL-06_2_techene_e3/src/OCE/ISF/isfcpl.F90	(revision 13895)
@@ -10,19 +10,19 @@
 
    !!----------------------------------------------------------------------
-   !!   isfrst : read/write iceshelf variables in/from restart
+   !!   isfrst        : read/write iceshelf variables in/from restart
    !!----------------------------------------------------------------------
-   USE isf_oce                          ! ice shelf variable
+   USE oce            ! ocean dynamics and tracers
+#if defined key_qco
+   USE domqco  , ONLY : dom_qco_zgr      ! vertical scale factor interpolation
+#else
+   USE domvvl  , ONLY : dom_vvl_zgr      ! vertical scale factor interpolation
+#endif
+   USE domutl  , ONLY : dom_ngb          ! find the closest grid point from a given lon/lat position
+   USE isf_oce        ! ice shelf variable
    USE isfutils, ONLY : debug
-   USE lib_mpp , ONLY: mpp_sum, mpp_max ! mpp routine
-#if ! defined key_qco
-   USE domvvl  , ONLY: dom_vvl_zgr      ! vertical scale factor interpolation
-#else
-   USE domqco   , ONLY: dom_qco_zgr      ! vertical scale factor interpolation
-#endif
-   USE domutl  , ONLY: dom_ngb          ! find the closest grid point from a given lon/lat position
    !
-   USE oce            ! ocean dynamics and tracers
    USE in_out_manager ! I/O manager
    USE iom            ! I/O library
+   USE lib_mpp , ONLY : mpp_sum, mpp_max ! mpp routine
    !
    IMPLICIT NONE
@@ -34,13 +34,13 @@
 
    TYPE isfcons
-      INTEGER :: ii     ! i global
-      INTEGER :: jj     ! j global
-      INTEGER :: kk     ! k level
-      REAL(wp):: dvol   ! volume increment
-      REAL(wp):: dsal   ! salt increment
-      REAL(wp):: dtem   ! heat increment
-      REAL(wp):: lon    ! lon
-      REAL(wp):: lat    ! lat
-      INTEGER :: ngb    ! 0/1 (valid location or not (ie on halo or no neigbourg))
+      INTEGER ::   ii     ! i global
+      INTEGER ::   jj     ! j global
+      INTEGER ::   kk     ! k level
+      REAL(wp)::   dvol   ! volume increment
+      REAL(wp)::   dsal   ! salt increment
+      REAL(wp)::   dtem   ! heat increment
+      REAL(wp)::   lon    ! lon
+      REAL(wp)::   lat    ! lat
+      INTEGER ::   ngb    ! 0/1 (valid location or not (ie on halo or no neigbourg))
    END TYPE
    !
@@ -130,6 +130,7 @@
       !
    END SUBROUTINE isfcpl_init
-   ! 
-   SUBROUTINE isfcpl_rst_write(kt, Kmm)
+
+   
+   SUBROUTINE isfcpl_rst_write( kt, Kmm )
       !!---------------------------------------------------------------------
       !!                   ***  ROUTINE iscpl_rst_write  ***
@@ -164,4 +165,5 @@
    END SUBROUTINE isfcpl_rst_write
 
+   
    SUBROUTINE isfcpl_ssh(Kbb, Kmm, Kaa)
       !!---------------------------------------------------------------------- 
@@ -195,6 +197,6 @@
          zdssmask(:,:) = ssmask(:,:) - zssmask0(:,:)
          DO_2D( 0, 0, 0, 0 )
-            jip1=ji+1; jim1=ji-1;
-            jjp1=jj+1; jjm1=jj-1;
+            jip1=ji+1   ;   jim1=ji-1
+            jjp1=jj+1   ;   jjm1=jj-1
             !
             zsummsk = zssmask0(jip1,jj) + zssmask0(jim1,jj) + zssmask0(ji,jjp1) + zssmask0(ji,jjm1)
@@ -202,7 +204,7 @@
             IF (zdssmask(ji,jj) == 1._wp .AND. zsummsk /= 0._wp) THEN
                ssh(ji,jj,Kmm)=( zssh(jip1,jj)*zssmask0(jip1,jj)     &
-               &           + zssh(jim1,jj)*zssmask0(jim1,jj)     &
-               &           + zssh(ji,jjp1)*zssmask0(ji,jjp1)     &
-               &           + zssh(ji,jjm1)*zssmask0(ji,jjm1)) / zsummsk
+                  &           + zssh(jim1,jj)*zssmask0(jim1,jj)     &
+                  &           + zssh(ji,jjp1)*zssmask0(ji,jjp1)     &
+                  &           + zssh(ji,jjm1)*zssmask0(ji,jjm1)) / zsummsk
                zssmask_b(ji,jj) = 1._wp
             ENDIF
@@ -238,4 +240,5 @@
    END SUBROUTINE isfcpl_ssh
 
+   
    SUBROUTINE isfcpl_tra(Kmm)
       !!---------------------------------------------------------------------- 
@@ -386,4 +389,5 @@
       ! 
    END SUBROUTINE isfcpl_tra
+   
 
    SUBROUTINE isfcpl_vol(Kmm)
@@ -477,7 +481,8 @@
          risfcpl_ssh(:,:) = risfcpl_ssh(:,:) + risfcpl_vol(:,:,jk) * r1_e1e2t(:,:)
       END DO
-
+      !
    END SUBROUTINE isfcpl_vol
 
+   
    SUBROUTINE isfcpl_cons(Kmm)
       !!---------------------------------------------------------------------- 
Index: /NEMO/branches/2020/dev_r13327_KERNEL-06_2_techene_e3/src/OCE/ISF/isfrst.F90
===================================================================
--- /NEMO/branches/2020/dev_r13327_KERNEL-06_2_techene_e3/src/OCE/ISF/isfrst.F90	(revision 13894)
+++ /NEMO/branches/2020/dev_r13327_KERNEL-06_2_techene_e3/src/OCE/ISF/isfrst.F90	(revision 13895)
@@ -28,6 +28,6 @@
    !!----------------------------------------------------------------------
 CONTAINS
-   ! 
-   SUBROUTINE isfrst_read(cdisf, ptsc, pfwf, ptsc_b, pfwf_b )
+   
+   SUBROUTINE isfrst_read( cdisf, ptsc, pfwf, ptsc_b, pfwf_b )
       !!---------------------------------------------------------------------
       !!
@@ -51,5 +51,5 @@
       !
       ! read restart
-      IF( iom_varid( numror, cfwf_b, ldstop = .FALSE. ) > 0 ) THEN
+      IF( .NOT.l_1st_euler ) THEN
          IF(lwp) WRITE(numout,*) '          nit000-1 isf tracer content forcing fields read in the restart file'
          CALL iom_get( numror, jpdom_auto, cfwf_b, pfwf_b(:,:)        , ldxios = lrxios )   ! before ice shelf melt
@@ -62,12 +62,13 @@
       !
       IF( lwxios ) THEN
-         CALL iom_set_rstw_var_active(TRIM(chc_b ))
-         CALL iom_set_rstw_var_active(TRIM(csc_b ))
-         CALL iom_set_rstw_var_active(TRIM(cfwf_b))
+         CALL iom_set_rstw_var_active( TRIM(chc_b ) )
+         CALL iom_set_rstw_var_active( TRIM(csc_b ) )
+         CALL iom_set_rstw_var_active( TRIM(cfwf_b) )
       ENDIF
+      !
+   END SUBROUTINE isfrst_read
 
-   END SUBROUTINE isfrst_read
-   ! 
-   SUBROUTINE isfrst_write(kt, cdisf, ptsc, pfwf )
+   
+   SUBROUTINE isfrst_write( kt, cdisf, ptsc, pfwf )
       !!---------------------------------------------------------------------
       !!
@@ -102,4 +103,5 @@
       !
    END SUBROUTINE isfrst_write
-   !
+   
+   !!======================================================================
 END MODULE isfrst
Index: /NEMO/branches/2020/dev_r13327_KERNEL-06_2_techene_e3/src/OCE/SBC/sbcapr.F90
===================================================================
--- /NEMO/branches/2020/dev_r13327_KERNEL-06_2_techene_e3/src/OCE/SBC/sbcapr.F90	(revision 13894)
+++ /NEMO/branches/2020/dev_r13327_KERNEL-06_2_techene_e3/src/OCE/SBC/sbcapr.F90	(revision 13895)
@@ -152,5 +152,5 @@
          !                                      ! ---------------------------------------- !
          !                                            !* Restart: read in restart file
-         IF( ln_rstart .AND. iom_varid( numror, 'ssh_ibb', ldstop = .FALSE. ) > 0 ) THEN 
+         IF( ln_rstart .AND. .NOT.l_1st_euler ) THEN 
             IF(lwp) WRITE(numout,*) 'sbc_apr:   ssh_ibb read in the restart file'
             CALL iom_get( numror, jpdom_auto, 'ssh_ibb', ssh_ibb, ldxios = lrxios )   ! before inv. barometer ssh
Index: /NEMO/branches/2020/dev_r13327_KERNEL-06_2_techene_e3/src/OCE/SBC/sbcmod.F90
===================================================================
--- /NEMO/branches/2020/dev_r13327_KERNEL-06_2_techene_e3/src/OCE/SBC/sbcmod.F90	(revision 13894)
+++ /NEMO/branches/2020/dev_r13327_KERNEL-06_2_techene_e3/src/OCE/SBC/sbcmod.F90	(revision 13895)
@@ -504,13 +504,11 @@
       IF( kt == nit000 ) THEN                          !   set the forcing field at nit000 - 1    !
          !                                             ! ---------------------------------------- !
-         IF( ln_rstart .AND.    &                               !* Restart: read in restart file
-            & iom_varid( numror, 'utau_b', ldstop = .FALSE. ) > 0 ) THEN
-            IF(lwp) WRITE(numout,*) '          nit000-1 surface forcing fields red in the restart file'
-            CALL iom_get( numror, jpdom_auto, 'utau_b', utau_b, ldxios = lrxios, cd_type = 'U', psgn = -1._wp )   ! before i-stress  (U-point)
-            CALL iom_get( numror, jpdom_auto, 'vtau_b', vtau_b, ldxios = lrxios, cd_type = 'V', psgn = -1._wp )   ! before j-stress  (V-point)
-            CALL iom_get( numror, jpdom_auto,  'qns_b',  qns_b, ldxios = lrxios )   ! before non solar heat flux (T-point)
-            ! The 3D heat content due to qsr forcing is treated in traqsr
-            ! CALL iom_get( numror, jpdom_auto, 'qsr_b' , qsr_b, ldxios = lrxios  ) ! before     solar heat flux (T-point)
-            CALL iom_get( numror, jpdom_auto, 'emp_b', emp_b, ldxios = lrxios  )    ! before     freshwater flux (T-point)
+         IF( ln_rstart .AND. .NOT.l_1st_euler ) THEN            !* Restart: read in restart file
+            IF(lwp) WRITE(numout,*) '          nit000-1 surface forcing fields read in the restart file'
+            CALL iom_get( numror, jpdom_auto, 'utau_b', utau_b, ldxios = lrxios, cd_type = 'U', psgn = -1._wp )   ! i-stress
+            CALL iom_get( numror, jpdom_auto, 'vtau_b', vtau_b, ldxios = lrxios, cd_type = 'V', psgn = -1._wp )   ! j-stress
+            CALL iom_get( numror, jpdom_auto,  'qns_b',  qns_b, ldxios = lrxios                               )   ! non solar heat flux
+            CALL iom_get( numror, jpdom_auto,  'emp_b',  emp_b, ldxios = lrxios                               )   ! freshwater flux
+            ! NB: The 3D heat content due to qsr forcing (qsr_hc_b) is treated in traqsr
             ! To ensure restart capability with 3.3x/3.4 restart files    !! to be removed in v3.6
             IF( iom_varid( numror, 'sfx_b', ldstop = .FALSE. ) > 0 ) THEN
@@ -549,16 +547,16 @@
       !                                                ! ---------------------------------------- !
       IF( MOD( kt-1, nn_fsbc ) == 0 ) THEN
-         CALL iom_put( "empmr"  , emp    - rnf )                ! upward water flux
-         CALL iom_put( "empbmr" , emp_b  - rnf )                ! before upward water flux ( needed to recalculate the time evolution of ssh in offline )
-         CALL iom_put( "saltflx", sfx  )                        ! downward salt flux (includes virtual salt flux beneath ice in linear free surface case)
-         CALL iom_put( "fmmflx", fmmflx  )                      ! Freezing-melting water flux
-         CALL iom_put( "qt"    , qns  + qsr )                   ! total heat flux
-         CALL iom_put( "qns"   , qns        )                   ! solar heat flux
-         CALL iom_put( "qsr"   ,       qsr  )                   ! solar heat flux
+         CALL iom_put( "empmr"  , emp   - rnf )                ! upward water flux
+         CALL iom_put( "empbmr" , emp_b - rnf )                ! before upward water flux ( needed to recalculate the time evolution of ssh in offline )
+         CALL iom_put( "saltflx", sfx         )                ! downward salt flux (includes virtual salt flux beneath ice in linear free surface case)
+         CALL iom_put( "fmmflx" , fmmflx      )                ! Freezing-melting water flux
+         CALL iom_put( "qt"     , qns + qsr   )                ! total heat flux
+         CALL iom_put( "qns"    , qns         )                ! solar heat flux
+         CALL iom_put( "qsr"    ,       qsr   )                ! solar heat flux
          IF( nn_ice > 0 .OR. ll_opa )   CALL iom_put( "ice_cover", fr_i )   ! ice fraction
-         CALL iom_put( "taum"  , taum       )                   ! wind stress module
-         CALL iom_put( "wspd"  , wndm       )                   ! wind speed  module over free ocean or leads in presence of sea-ice
-         CALL iom_put( "qrp", qrp )                             ! heat flux damping
-         CALL iom_put( "erp", erp )                             ! freshwater flux damping
+         CALL iom_put( "taum"   , taum        )                ! wind stress module
+         CALL iom_put( "wspd"   , wndm        )                ! wind speed  module over free ocean or leads in presence of sea-ice
+         CALL iom_put( "qrp"    , qrp         )                ! heat flux damping
+         CALL iom_put( "erp"    , erp         )                ! freshwater flux damping
       ENDIF
       !
@@ -567,10 +565,10 @@
       !
       IF(sn_cfctl%l_prtctl) THEN     ! print mean trends (used for debugging)
-         CALL prt_ctl(tab2d_1=fr_i             , clinfo1=' fr_i     - : ', mask1=tmask )
-         CALL prt_ctl(tab2d_1=(emp-rnf)        , clinfo1=' emp-rnf  - : ', mask1=tmask )
-         CALL prt_ctl(tab2d_1=(sfx-rnf)        , clinfo1=' sfx-rnf  - : ', mask1=tmask )
-         CALL prt_ctl(tab2d_1=qns              , clinfo1=' qns      - : ', mask1=tmask )
-         CALL prt_ctl(tab2d_1=qsr              , clinfo1=' qsr      - : ', mask1=tmask )
-         CALL prt_ctl(tab3d_1=tmask            , clinfo1=' tmask    - : ', mask1=tmask, kdim=jpk )
+         CALL prt_ctl(tab2d_1=fr_i                , clinfo1=' fr_i     - : ', mask1=tmask )
+         CALL prt_ctl(tab2d_1=(emp-rnf)           , clinfo1=' emp-rnf  - : ', mask1=tmask )
+         CALL prt_ctl(tab2d_1=(sfx-rnf)           , clinfo1=' sfx-rnf  - : ', mask1=tmask )
+         CALL prt_ctl(tab2d_1=qns                 , clinfo1=' qns      - : ', mask1=tmask )
+         CALL prt_ctl(tab2d_1=qsr                 , clinfo1=' qsr      - : ', mask1=tmask )
+         CALL prt_ctl(tab3d_1=tmask               , clinfo1=' tmask    - : ', mask1=tmask, kdim=jpk )
          CALL prt_ctl(tab3d_1=ts(:,:,:,jp_tem,Kmm), clinfo1=' sst      - : ', mask1=tmask, kdim=1   )
          CALL prt_ctl(tab3d_1=ts(:,:,:,jp_sal,Kmm), clinfo1=' sss      - : ', mask1=tmask, kdim=1   )
Index: /NEMO/branches/2020/dev_r13327_KERNEL-06_2_techene_e3/src/OCE/SBC/sbcrnf.F90
===================================================================
--- /NEMO/branches/2020/dev_r13327_KERNEL-06_2_techene_e3/src/OCE/SBC/sbcrnf.F90	(revision 13894)
+++ /NEMO/branches/2020/dev_r13327_KERNEL-06_2_techene_e3/src/OCE/SBC/sbcrnf.F90	(revision 13895)
@@ -157,11 +157,10 @@
       IF( kt == nit000 ) THEN                          !   set the forcing field at nit000 - 1    !
          !                                             ! ---------------------------------------- !
-         IF( ln_rstart .AND.    &                               !* Restart: read in restart file
-            & iom_varid( numror, 'rnf_b', ldstop = .FALSE. ) > 0 ) THEN
+         IF( ln_rstart .AND. .NOT.l_1st_euler ) THEN         !* Restart: read in restart file
             IF(lwp) WRITE(numout,*) '          nit000-1 runoff forcing fields red in the restart file', lrxios
-            CALL iom_get( numror, jpdom_auto, 'rnf_b', rnf_b, ldxios = lrxios )     ! before runoff
+            CALL iom_get( numror, jpdom_auto, 'rnf_b'   , rnf_b                , ldxios = lrxios )   ! before runoff
             CALL iom_get( numror, jpdom_auto, 'rnf_hc_b', rnf_tsc_b(:,:,jp_tem), ldxios = lrxios )   ! before heat content of runoff
             CALL iom_get( numror, jpdom_auto, 'rnf_sc_b', rnf_tsc_b(:,:,jp_sal), ldxios = lrxios )   ! before salinity content of runoff
-         ELSE                                                   !* no restart: set from nit000 values
+         ELSE                                                !* no restart: set from nit000 values
             IF(lwp) WRITE(numout,*) '          nit000-1 runoff forcing fields set to nit000'
             rnf_b    (:,:  ) = rnf    (:,:  )
@@ -176,6 +175,6 @@
             &                    'at it= ', kt,' date= ', ndastp
          IF(lwp) WRITE(numout,*) '~~~~'
-         IF( lwxios ) CALL iom_swap(      cwxios_context          )
-         CALL iom_rstput( kt, nitrst, numrow, 'rnf_b' , rnf, ldxios = lwxios )
+         IF( lwxios ) CALL iom_swap(      cwxios_context         )
+         CALL iom_rstput( kt, nitrst, numrow, 'rnf_b'   , rnf                , ldxios = lwxios )
          CALL iom_rstput( kt, nitrst, numrow, 'rnf_hc_b', rnf_tsc(:,:,jp_tem), ldxios = lwxios )
          CALL iom_rstput( kt, nitrst, numrow, 'rnf_sc_b', rnf_tsc(:,:,jp_sal), ldxios = lwxios )
Index: /NEMO/branches/2020/dev_r13327_KERNEL-06_2_techene_e3/src/OCE/TRA/traqsr.F90
===================================================================
--- /NEMO/branches/2020/dev_r13327_KERNEL-06_2_techene_e3/src/OCE/TRA/traqsr.F90	(revision 13894)
+++ /NEMO/branches/2020/dev_r13327_KERNEL-06_2_techene_e3/src/OCE/TRA/traqsr.F90	(revision 13895)
@@ -135,9 +135,9 @@
       !                         !-----------------------------------!
       IF( kt == nit000 ) THEN          !==  1st time step  ==!
-         IF( ln_rstart .AND. iom_varid( numror, 'qsr_hc_b', ldstop = .FALSE. ) > 0  .AND. .NOT.l_1st_euler ) THEN    ! read in restart
+         IF( ln_rstart .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
             CALL iom_get( numror, jpdom_auto, 'qsr_hc_b', qsr_hc_b, ldxios = lrxios )   ! before heat content trend due to Qsr flux
-         ELSE                                           ! No restart or restart not found: Euler forward time stepping
+         ELSE                                           ! No restart or Euler forward at 1st time step
             z1_2 = 1._wp
             qsr_hc_b(:,:,:) = 0._wp
Index: /NEMO/branches/2020/dev_r13327_KERNEL-06_2_techene_e3/src/OCE/TRA/trasbc.F90
===================================================================
--- /NEMO/branches/2020/dev_r13327_KERNEL-06_2_techene_e3/src/OCE/TRA/trasbc.F90	(revision 13894)
+++ /NEMO/branches/2020/dev_r13327_KERNEL-06_2_techene_e3/src/OCE/TRA/trasbc.F90	(revision 13895)
@@ -72,7 +72,7 @@
       !!              - send trends to trdtra module for further diagnostics(l_trdtra=T)
       !!----------------------------------------------------------------------
-      INTEGER,                                   INTENT(in   ) :: kt         ! ocean time-step index
-      INTEGER,                                   INTENT(in   ) :: Kmm, Krhs  ! time level indices
-      REAL(wp), DIMENSION(jpi,jpj,jpk,jpts,jpt), INTENT(inout) :: pts        ! active tracers and RHS of tracer equation
+      INTEGER,                                   INTENT(in   ) ::   kt         ! ocean time-step index
+      INTEGER,                                   INTENT(in   ) ::   Kmm, Krhs  ! time level indices
+      REAL(wp), DIMENSION(jpi,jpj,jpk,jpts,jpt), INTENT(inout) ::   pts        ! active tracers and RHS of tracer Eq.
       !
       INTEGER  ::   ji, jj, jk, jn              ! dummy loop indices  
@@ -107,14 +107,13 @@
       !                             !==  Set before sbc tracer content fields  ==!
       IF( kt == nit000 ) THEN             !* 1st time-step
-         IF( ln_rstart .AND.    &               ! Restart: read in restart file
-              & iom_varid( numror, 'sbc_hc_b', ldstop = .FALSE. ) > 0 ) THEN
+         IF( ln_rstart .AND. .NOT.l_1st_euler ) THEN      ! Restart: read in restart file
             IF(lwp) WRITE(numout,*) '          nit000-1 sbc tracer content field read in the restart file'
             zfact = 0.5_wp
-            sbc_tsc(:,:,:) = 0._wp
+            sbc_tsc(:,:,:) = 0._wp            ! CAUTION: here only the halos should be set to 0 due to rst_put
             CALL iom_get( numror, jpdom_auto, 'sbc_hc_b', sbc_tsc_b(:,:,jp_tem), ldxios = lrxios )   ! before heat content sbc trend
             CALL iom_get( numror, jpdom_auto, 'sbc_sc_b', sbc_tsc_b(:,:,jp_sal), ldxios = lrxios )   ! before salt content sbc trend
-         ELSE                                   ! No restart or restart not found: Euler forward time stepping
+         ELSE                                             ! No restart or restart not found: Euler forward time stepping
             zfact = 1._wp
-            sbc_tsc(:,:,:) = 0._wp
+            sbc_tsc  (:,:,:) = 0._wp          ! CAUTION: here only the halos of sbc_tsc should be set to 0
             sbc_tsc_b(:,:,:) = 0._wp
          ENDIF
@@ -124,10 +123,10 @@
       ENDIF
       !                             !==  Now sbc tracer content fields  ==!
-      DO_2D( 0, 1, 0, 0 )
+      DO_2D( 0, 0, 0, 0 )
          sbc_tsc(ji,jj,jp_tem) = r1_rho0_rcp * qns(ji,jj)   ! non solar heat flux
          sbc_tsc(ji,jj,jp_sal) = r1_rho0     * sfx(ji,jj)   ! salt flux due to freezing/melting
       END_2D
       IF( ln_linssh ) THEN                !* linear free surface  
-         DO_2D( 0, 1, 0, 0 )
+         DO_2D( 0, 0, 0, 0 )
             sbc_tsc(ji,jj,jp_tem) = sbc_tsc(ji,jj,jp_tem) + r1_rho0 * emp(ji,jj) * pts(ji,jj,1,jp_tem,Kmm)
             sbc_tsc(ji,jj,jp_sal) = sbc_tsc(ji,jj,jp_sal) + r1_rho0 * emp(ji,jj) * pts(ji,jj,1,jp_sal,Kmm)
@@ -138,5 +137,5 @@
       !
       DO jn = 1, jpts               !==  update tracer trend  ==!
-         DO_2D( 0, 1, 0, 0 )
+         DO_2D( 0, 0, 0, 0 )
             pts(ji,jj,1,jn,Krhs) = pts(ji,jj,1,jn,Krhs) + zfact * ( sbc_tsc_b(ji,jj,jn) + sbc_tsc(ji,jj,jn) )    &
                &                                                / e3t(ji,jj,1,Kmm)
@@ -157,5 +156,5 @@
       IF( ln_rnf ) THEN         ! input of heat and salt due to river runoff 
          zfact = 0.5_wp
-         DO_2D( 0, 1, 0, 0 )
+         DO_2D( 0, 0, 0, 0 )
             IF( rnf(ji,jj) /= 0._wp ) THEN
                zdep = zfact / h_rnf(ji,jj)
@@ -182,5 +181,5 @@
       	 !
          IF( ln_linssh ) THEN 
-            DO_2D( 0, 1, 0, 0 )
+            DO_2D( 0, 0, 0, 0 )
                ztim = ssh_iau(ji,jj) / e3t(ji,jj,1,Kmm)
                pts(ji,jj,1,jp_tem,Krhs) = pts(ji,jj,1,jp_tem,Krhs) + pts(ji,jj,1,jp_tem,Kmm) * ztim
@@ -188,5 +187,5 @@
             END_2D
          ELSE
-            DO_2D( 0, 1, 0, 0 )
+            DO_2D( 0, 0, 0, 0 )
                ztim = ssh_iau(ji,jj) / ( ht(ji,jj) + 1. - ssmask(ji, jj) )
                pts(ji,jj,:,jp_tem,Krhs) = pts(ji,jj,:,jp_tem,Krhs) + pts(ji,jj,:,jp_tem,Kmm) * ztim
Index: /NEMO/branches/2020/dev_r13327_KERNEL-06_2_techene_e3/src/OCE/nemogcm.F90
===================================================================
--- /NEMO/branches/2020/dev_r13327_KERNEL-06_2_techene_e3/src/OCE/nemogcm.F90	(revision 13894)
+++ /NEMO/branches/2020/dev_r13327_KERNEL-06_2_techene_e3/src/OCE/nemogcm.F90	(revision 13895)
@@ -415,5 +415,5 @@
      CALL Agrif_Declare_Var_ini   !  "      "   "   "      "  DOM
 #endif
-                           CALL     dom_init( Nbb, Nnn, Naa, "OPA") ! Domain
+                           CALL     dom_init( Nbb, Nnn, Naa, "OCE") ! Domain
       IF( ln_crs       )   CALL     crs_init(      Nnn )       ! coarsened grid: domain initialization 
       IF( sn_cfctl%l_prtctl )   &
@@ -500,4 +500,13 @@
       IF( lk_asminc    )   CALL asm_inc_init( Nbb, Nnn, Nrhs )   ! Initialize assimilation increments
       !
+!!st move iom_close(numror) at the end of nemo_init ==> KO
+!!st      !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
+!!st      ! File manipulation at the end of the first time step
+!!st      !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<                         
+!!st                                        CALL iom_close( numror )   ! close input  ocean restart file
+!!st         IF(lwm)                        CALL FLUSH    ( numond )   ! flush output namelist oce
+!!st         IF(lwm .AND. numoni /= -1 )    CALL FLUSH    ( numoni )   ! flush output namelist ice (if exist)
+!!st end
+
       IF(lwp) WRITE(numout,cform_aaa)           ! Flag AAAAAAA
       !
Index: /NEMO/branches/2020/dev_r13327_KERNEL-06_2_techene_e3/src/OCE/step.F90
===================================================================
--- /NEMO/branches/2020/dev_r13327_KERNEL-06_2_techene_e3/src/OCE/step.F90	(revision 13894)
+++ /NEMO/branches/2020/dev_r13327_KERNEL-06_2_techene_e3/src/OCE/step.F90	(revision 13895)
@@ -331,4 +331,5 @@
       IF( ln_diaobs .AND. nstop == 0 )  CALL dia_obs( kstp, Nnn )  ! obs-minus-model (assimilation) diags (after dynamics update)
 
+!!st move iom_close(numror) at the end of nemo_init ==> KO
       !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
       ! File manipulation at the end of the first time step
@@ -339,4 +340,5 @@
          IF(lwm .AND. numoni /= -1 )    CALL FLUSH    ( numoni )   ! flush output namelist ice (if exist)
       ENDIF
+!!st end
 
       !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
