New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 12397 for NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2 – NEMO

Ignore:
Timestamp:
2020-02-18T11:58:37+01:00 (4 years ago)
Author:
davestorkey
Message:

2020/KERNEL-03_Storkey_Coward_RK3_stage2 : Consolidation of code to
handle initial Euler timestep in the context of leapfrog
timestepping. This version passes all SETTE tests but fails to bit
compare with the control for several tests (ORCA2_ICE_PISCES, AMM12,
ISOMIP, AGRIF_DEMO, SPITZ12).

Location:
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2
Files:
34 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/cfgs/SHARED/namelist_ref

    r12377 r12397  
    4242   nn_leapy    =       0   !  Leap year calendar (1) or not (0) 
    4343   ln_rstart   = .false.   !  start from rest (F) or from a restart file (T) 
    44       nn_euler    =    1      !  = 0 : start with forward time step if ln_rstart=T 
    45       nn_rstctl   =    0      !  restart control ==> activated only if ln_rstart=T 
     44      ln_1st_euler = .false.  !  =T force a start with forward time step (ln_rstart=T) 
     45      nn_rstctl    =    0     !  restart control ==> activated only if ln_rstart=T 
    4646      !                          !    = 0 nn_date0 read in namelist ; nn_it000 : read in namelist 
    4747      !                          !    = 1 nn_date0 read in namelist ; nn_it000 : check consistancy between namelist and restart 
  • NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/NST/agrif_oce_sponge.F90

    r12377 r12397  
    439439 
    440440         !* set relaxation time scale 
    441          IF( neuler == 0 .AND. lk_agrif_fstep ) THEN   ;   ztrelax =   rn_trelax_tra  / (        rdt ) 
     441         IF( l_1st_euler .AND. lk_agrif_fstep ) THEN   ;   ztrelax =   rn_trelax_tra  / (        rdt ) 
    442442         ELSE                                          ;   ztrelax =   rn_trelax_tra  / (2._wp * rdt ) 
    443443         ENDIF 
     
    596596#endif 
    597597         !* set relaxation time scale 
    598          IF( neuler == 0 .AND. lk_agrif_fstep ) THEN   ;   ztrelax =   rn_trelax_dyn  / (        rdt ) 
     598         IF( l_1st_euler .AND. lk_agrif_fstep ) THEN   ;   ztrelax =   rn_trelax_dyn  / (        rdt ) 
    599599         ELSE                                          ;   ztrelax =   rn_trelax_dyn  / (2._wp * rdt ) 
    600600         ENDIF 
     
    772772# endif 
    773773         !* set relaxation time scale 
    774          IF( neuler == 0 .AND. lk_agrif_fstep ) THEN   ;   ztrelax =   rn_trelax_dyn  / (        rdt ) 
     774         IF( l_1st_euler .AND. lk_agrif_fstep ) THEN   ;   ztrelax =   rn_trelax_dyn  / (        rdt ) 
    775775         ELSE                                          ;   ztrelax =   rn_trelax_dyn  / (2._wp * rdt ) 
    776776         ENDIF 
  • NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/NST/agrif_oce_update.F90

    r12377 r12397  
    256256      ! 2) BEFORE fields: 
    257257      !------------------ 
    258       IF (.NOT.(lk_agrif_fstep.AND.(neuler==0) )) THEN 
     258      IF (.NOT.(lk_agrif_fstep.AND.(l_1st_euler) )) THEN 
    259259         ! 
    260260         ! Vertical scale factor interpolations 
     
    351351         ENDDO 
    352352 
    353          IF (.NOT.(lk_agrif_fstep.AND.(neuler==0))) THEN 
     353         IF (.NOT.(lk_agrif_fstep.AND.(l_1st_euler))) THEN 
    354354            ! Add asselin part 
    355355            DO jn = 1,jpts 
     
    381381         END DO 
    382382         ! 
    383          IF  ((neuler==0).AND.(Agrif_Nb_Step()==0) ) THEN 
     383         IF  ((l_1st_euler).AND.(Agrif_Nb_Step()==0) ) THEN 
    384384            ts(i1:i2,j1:j2,1:jpkm1,1:jpts,Kbb_a)  = ts(i1:i2,j1:j2,1:jpkm1,1:jpts,Kmm_a) 
    385385         ENDIF 
     
    422422         ENDDO 
    423423!< jc tmp 
    424          IF (.NOT.(lk_agrif_fstep.AND.(neuler==0))) THEN 
     424         IF (.NOT.(lk_agrif_fstep.AND.(l_1st_euler))) THEN 
    425425            ! Add asselin part 
    426426            DO jn = 1,jpts 
     
    452452         END DO 
    453453         ! 
    454          IF  ((neuler==0).AND.(Agrif_Nb_Step()==0) ) THEN 
     454         IF  ((l_1st_euler).AND.(Agrif_Nb_Step()==0) ) THEN 
    455455            ts(i1:i2,j1:j2,k1:k2,1:jpts,Kbb_a)  = ts(i1:i2,j1:j2,k1:k2,1:jpts,Kmm_a) 
    456456         ENDIF 
     
    551551            DO jj=j1,j2 
    552552               DO ji=i1,i2 
    553                   IF (.NOT.(lk_agrif_fstep.AND.(neuler==0))) THEN ! Add asselin part 
     553                  IF (.NOT.(lk_agrif_fstep.AND.(l_1st_euler))) THEN ! Add asselin part 
    554554                     zub  = uu(ji,jj,jk,Kbb_a) * e3u(ji,jj,jk,Kbb_a)  ! fse3t_b prior update should be used 
    555555                     zuno = uu(ji,jj,jk,Kmm_a) * e3u(ji,jj,jk,Krhs_a) 
     
    564564         END DO 
    565565         ! 
    566          IF  ((neuler==0).AND.(Agrif_Nb_Step()==0) ) THEN 
     566         IF  ((l_1st_euler).AND.(Agrif_Nb_Step()==0) ) THEN 
    567567            uu(i1:i2,j1:j2,1:jpkm1,Kbb_a)  = uu(i1:i2,j1:j2,1:jpkm1,Kmm_a) 
    568568         ENDIF 
     
    597597                  tabres(ji,jj,jk,1) = tabres(ji,jj,jk,1) * r1_e2u(ji,jj)  
    598598                  ! 
    599                   IF (.NOT.(lk_agrif_fstep.AND.(neuler==0))) THEN ! Add asselin part 
     599                  IF (.NOT.(lk_agrif_fstep.AND.(l_1st_euler))) THEN ! Add asselin part 
    600600                     zub  = uu(ji,jj,jk,Kbb_a) * e3u(ji,jj,jk,Kbb_a)  ! fse3t_b prior update should be used 
    601601                     zuno = uu(ji,jj,jk,Kmm_a) * e3u(ji,jj,jk,Krhs_a) 
     
    610610         END DO 
    611611         ! 
    612          IF  ((neuler==0).AND.(Agrif_Nb_Step()==0) ) THEN 
     612         IF  ((l_1st_euler).AND.(Agrif_Nb_Step()==0) ) THEN 
    613613            uu(i1:i2,j1:j2,k1:k2,Kbb_a)  = uu(i1:i2,j1:j2,k1:k2,Kmm_a) 
    614614         ENDIF 
     
    751751            DO jj=j1,j2 
    752752               DO ji=i1,i2 
    753                   IF (.NOT.(lk_agrif_fstep.AND.(neuler==0))) THEN ! Add asselin part 
     753                  IF (.NOT.(lk_agrif_fstep.AND.(l_1st_euler))) THEN ! Add asselin part 
    754754                     zvb  = vv(ji,jj,jk,Kbb_a) * e3v(ji,jj,jk,Kbb_a) ! fse3t_b prior update should be used 
    755755                     zvno = vv(ji,jj,jk,Kmm_a) * e3v(ji,jj,jk,Krhs_a) 
     
    764764         END DO 
    765765         ! 
    766          IF  ((neuler==0).AND.(Agrif_Nb_Step()==0) ) THEN 
     766         IF  ((l_1st_euler).AND.(Agrif_Nb_Step()==0) ) THEN 
    767767            vv(i1:i2,j1:j2,1:jpkm1,Kbb_a)  = vv(i1:i2,j1:j2,1:jpkm1,Kmm_a) 
    768768         ENDIF 
     
    801801                  tabres(ji,jj,jk,1) = tabres(ji,jj,jk,1) * r1_e1v(ji,jj) 
    802802                  ! 
    803                   IF (.NOT.(lk_agrif_fstep.AND.(neuler==0))) THEN ! Add asselin part 
     803                  IF (.NOT.(lk_agrif_fstep.AND.(l_1st_euler))) THEN ! Add asselin part 
    804804                     zvb  = vv(ji,jj,jk,Kbb_a) * e3v(ji,jj,jk,Kbb_a) ! fse3t_b prior update should be used 
    805805                     zvno = vv(ji,jj,jk,Kmm_a) * e3v(ji,jj,jk,Krhs_a) 
     
    814814         END DO 
    815815         ! 
    816          IF  ((neuler==0).AND.(Agrif_Nb_Step()==0) ) THEN 
     816         IF  ((l_1st_euler).AND.(Agrif_Nb_Step()==0) ) THEN 
    817817            vv(i1:i2,j1:j2,k1:k2,Kbb_a)  = vv(i1:i2,j1:j2,k1:k2,Kmm_a) 
    818818         ENDIF 
     
    907907               ! Update barotropic velocities: 
    908908               IF ( .NOT.ln_dynspg_ts .OR. (ln_dynspg_ts.AND.(.NOT.ln_bt_fw)) ) THEN 
    909                   IF (.NOT.(lk_agrif_fstep.AND.(neuler==0))) THEN ! Add asselin part 
     909                  IF (.NOT.(lk_agrif_fstep.AND.(l_1st_euler))) THEN ! Add asselin part 
    910910                     zcorr = (tabres(ji,jj) - uu_b(ji,jj,Kmm_a) * hu(ji,jj,Krhs_a)) * r1_hu(ji,jj,Kbb_a) 
    911911                     uu_b(ji,jj,Kbb_a) = uu_b(ji,jj,Kbb_a) + atfp * zcorr * umask(ji,jj,1) 
     
    928928         END DO 
    929929         ! 
    930          IF  ((neuler==0).AND.(Agrif_Nb_Step()==0) ) THEN 
     930         IF  ((l_1st_euler).AND.(Agrif_Nb_Step()==0) ) THEN 
    931931            uu_b(i1:i2,j1:j2,Kbb_a)  = uu_b(i1:i2,j1:j2,Kmm_a) 
    932932         ENDIF 
     
    973973               ! Update barotropic velocities: 
    974974               IF ( .NOT.ln_dynspg_ts .OR. (ln_dynspg_ts.AND.(.NOT.ln_bt_fw)) ) THEN 
    975                   IF (.NOT.(lk_agrif_fstep.AND.(neuler==0))) THEN ! Add asselin part 
     975                  IF (.NOT.(lk_agrif_fstep.AND.(l_1st_euler))) THEN ! Add asselin part 
    976976                     zcorr = (tabres(ji,jj) - vv_b(ji,jj,Kmm_a) * hv(ji,jj,Krhs_a)) * r1_hv(ji,jj,Kbb_a) 
    977977                     vv_b(ji,jj,Kbb_a) = vv_b(ji,jj,Kbb_a) + atfp * zcorr * vmask(ji,jj,1) 
     
    994994         END DO 
    995995         ! 
    996          IF  ((neuler==0).AND.(Agrif_Nb_Step()==0) ) THEN 
     996         IF  ((l_1st_euler).AND.(Agrif_Nb_Step()==0) ) THEN 
    997997            vv_b(i1:i2,j1:j2,Kbb_a)  = vv_b(i1:i2,j1:j2,Kmm_a) 
    998998         ENDIF 
     
    10211021         END DO 
    10221022      ELSE 
    1023          IF (.NOT.(lk_agrif_fstep.AND.(neuler==0))) THEN 
     1023         IF (.NOT.(lk_agrif_fstep.AND.(l_1st_euler))) THEN 
    10241024            DO jj=j1,j2 
    10251025               DO ji=i1,i2 
     
    10361036         END DO 
    10371037         ! 
    1038          IF  ((neuler==0).AND.(Agrif_Nb_Step()==0) ) THEN 
     1038         IF  ((l_1st_euler).AND.(Agrif_Nb_Step()==0) ) THEN 
    10391039            ssh(i1:i2,j1:j2,Kbb_a)  = ssh(i1:i2,j1:j2,Kmm_a) 
    10401040         ENDIF 
     
    11191119               zcor = rdt * r1_e1e2t(i1  ,jj) * e2u(i1,jj) * (ub2_b(i1,jj)-tabres(i1,jj))  
    11201120               ssh(i1  ,jj,Kmm_a) = ssh(i1  ,jj,Kmm_a) + zcor 
    1121                IF (.NOT.(lk_agrif_fstep.AND.(neuler==0))) ssh(i1  ,jj,Kbb_a) = ssh(i1  ,jj,Kbb_a) + atfp * zcor 
     1121               IF (.NOT.(lk_agrif_fstep.AND.(l_1st_euler))) ssh(i1  ,jj,Kbb_a) = ssh(i1  ,jj,Kbb_a) + atfp * zcor 
    11221122            END DO 
    11231123         ENDIF 
     
    11261126               zcor = - rdt * r1_e1e2t(i2+1,jj) * e2u(i2,jj) * (ub2_b(i2,jj)-tabres(i2,jj)) 
    11271127               ssh(i2+1,jj,Kmm_a) = ssh(i2+1,jj,Kmm_a) + zcor 
    1128                IF (.NOT.(lk_agrif_fstep.AND.(neuler==0))) ssh(i2+1,jj,Kbb_a) = ssh(i2+1,jj,Kbb_a) + atfp * zcor 
     1128               IF (.NOT.(lk_agrif_fstep.AND.(l_1st_euler))) ssh(i2+1,jj,Kbb_a) = ssh(i2+1,jj,Kbb_a) + atfp * zcor 
    11291129            END DO 
    11301130         ENDIF 
     
    12071207               zcor = rdt * r1_e1e2t(ji,j1  ) * e1v(ji,j1  ) * (vb2_b(ji,j1)-tabres(ji,j1)) 
    12081208               ssh(ji,j1  ,Kmm_a) = ssh(ji,j1  ,Kmm_a) + zcor 
    1209                IF (.NOT.(lk_agrif_fstep.AND.(neuler==0))) ssh(ji,j1  ,Kbb_a) = ssh(ji,j1,Kbb_a) + atfp * zcor 
     1209               IF (.NOT.(lk_agrif_fstep.AND.(l_1st_euler))) ssh(ji,j1  ,Kbb_a) = ssh(ji,j1,Kbb_a) + atfp * zcor 
    12101210            END DO 
    12111211         ENDIF 
     
    12141214               zcor = - rdt * r1_e1e2t(ji,j2+1) * e1v(ji,j2  ) * (vb2_b(ji,j2)-tabres(ji,j2)) 
    12151215               ssh(ji,j2+1,Kmm_a) = ssh(ji,j2+1,Kmm_a) + zcor 
    1216                IF (.NOT.(lk_agrif_fstep.AND.(neuler==0))) ssh(ji,j2+1,Kbb_a) = ssh(ji,j2+1,Kbb_a) + atfp * zcor 
     1216               IF (.NOT.(lk_agrif_fstep.AND.(l_1st_euler))) ssh(ji,j2+1,Kbb_a) = ssh(ji,j2+1,Kbb_a) + atfp * zcor 
    12171217            END DO 
    12181218         ENDIF 
     
    13591359!         hdiv(i1:i2,j1:j2,1:jpkm1)   = e3t(i1:i2,j1:j2,1:jpkm1,Kbb_a) 
    13601360 
    1361          IF (.NOT.(lk_agrif_fstep.AND.(neuler==0) )) THEN 
     1361         IF (.NOT.(lk_agrif_fstep.AND.(l_1st_euler) )) THEN 
    13621362            DO jk = 1, jpkm1 
    13631363               DO jj=j1,j2 
     
    14221422         END DO 
    14231423         ! 
    1424          IF  ((neuler==0).AND.(Agrif_Nb_Step()==0) ) THEN 
     1424         IF  ((l_1st_euler).AND.(Agrif_Nb_Step()==0) ) THEN 
    14251425            e3t (i1:i2,j1:j2,1:jpk,Kbb_a)  = e3t (i1:i2,j1:j2,1:jpk,Kmm_a) 
    14261426            e3w (i1:i2,j1:j2,1:jpk,Kbb_a)  = e3w (i1:i2,j1:j2,1:jpk,Kmm_a) 
  • NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/NST/agrif_top_sponge.F90

    r12377 r12397  
    137137 
    138138         !* set relaxation time scale 
    139          IF( neuler == 0 .AND. lk_agrif_fstep ) THEN   ;   ztrelax =   rn_trelax_tra  / (        rdt ) 
     139         IF( l_1st_euler .AND. lk_agrif_fstep ) THEN   ;   ztrelax =   rn_trelax_tra  / (        rdt ) 
    140140         ELSE                                          ;   ztrelax =   rn_trelax_tra  / (2._wp * rdt ) 
    141141         ENDIF 
  • NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/NST/agrif_top_update.F90

    r12377 r12397  
    125125         ENDDO 
    126126         ! 
    127          IF (.NOT.(lk_agrif_fstep.AND.(neuler==0))) THEN 
     127         IF (.NOT.(lk_agrif_fstep.AND.(l_1st_euler))) THEN 
    128128            ! Add asselin part 
    129129            DO jn = 1,jptra 
     
    155155         END DO 
    156156         ! 
    157          IF  ((neuler==0).AND.(Agrif_Nb_Step()==0) ) THEN 
     157         IF  ((l_1st_euler).AND.(Agrif_Nb_Step()==0) ) THEN 
    158158            tr(i1:i2,j1:j2,1:jpkm1,1:jptra,Kbb_a)  = tr(i1:i2,j1:j2,1:jpkm1,1:jptra,Kmm_a) 
    159159         ENDIF 
     
    199199         ENDDO 
    200200!< jc tmp 
    201          IF (.NOT.(lk_agrif_fstep.AND.(neuler==0))) THEN 
     201         IF (.NOT.(lk_agrif_fstep.AND.(l_1st_euler))) THEN 
    202202            ! Add asselin part 
    203203            DO jn = n1,n2 
     
    229229         END DO 
    230230         ! 
    231          IF  ((neuler==0).AND.(Agrif_Nb_Step()==0) ) THEN 
     231         IF  ((l_1st_euler).AND.(Agrif_Nb_Step()==0) ) THEN 
    232232            tr(i1:i2,j1:j2,k1:k2,n1:n2,Kbb_a)  = tr(i1:i2,j1:j2,k1:k2,n1:n2,Kmm_a) 
    233233         ENDIF 
  • NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/ASM/asminc.F90

    r12377 r12397  
    487487      ENDIF 
    488488      ! 
    489       IF(lwp) WRITE(numout,*) '   ==>>>   Euler time step switch is ', neuler 
     489      IF(lwp) WRITE(numout,*) '   ==>>>   Euler time step switch is ', l_1st_euler 
    490490      ! 
    491491      IF( lk_asminc ) THEN                            !==  data assimilation  ==! 
     
    577577         IF ( kt == nitdin_r ) THEN 
    578578            ! 
    579             neuler = 0  ! Force Euler forward step 
     579            l_1st_euler = .TRUE.  ! Force Euler forward step 
    580580            ! 
    581581            ! Initialize the now fields with the background + increment 
     
    677677         IF ( kt == nitdin_r ) THEN 
    678678            ! 
    679             neuler = 0                    ! Force Euler forward step 
     679            l_1st_euler = .TRUE.                    ! Force Euler forward step 
    680680            ! 
    681681            ! Initialize the now fields with the background + increment 
     
    753753         IF ( kt == nitdin_r ) THEN 
    754754            ! 
    755             neuler = 0                                   ! Force Euler forward step 
     755            l_1st_euler = .TRUE.                            ! Force Euler forward step 
    756756            ! 
    757757            ssh(:,:,Kmm) = ssh_bkg(:,:) + ssh_bkginc(:,:)   ! Initialize the now fields the background + increment 
     
    896896         IF ( kt == nitdin_r ) THEN 
    897897            ! 
    898             neuler = 0                    ! Force Euler forward step 
     898            l_1st_euler = 0              ! Force Euler forward step 
    899899            ! 
    900900            ! Sea-ice : SI3 case 
  • NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/DIA/diacfl.F90

    r12377 r12397  
    5252      ! 
    5353      INTEGER                          ::   ji, jj, jk                       ! dummy loop indices 
    54       REAL(wp)                         ::   z2dt, zCu_max, zCv_max, zCw_max  ! local scalars 
     54      REAL(wp)                         ::   zCu_max, zCv_max, zCw_max        ! local scalars 
    5555      INTEGER , DIMENSION(3)           ::   iloc_u , iloc_v , iloc_w , iloc  ! workspace 
    5656      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zCu_cfl, zCv_cfl, zCw_cfl        ! workspace 
     
    5959      IF( ln_timing )   CALL timing_start('dia_cfl') 
    6060      ! 
    61       !                       ! setup timestep multiplier to account for initial Eulerian timestep 
    62       IF( neuler == 0 .AND. kt == nit000 ) THEN   ;    z2dt = rdt 
    63       ELSE                                        ;    z2dt = rdt * 2._wp 
    64       ENDIF 
    65       ! 
    66       !                 
    6761      DO_3D_11_11( 1, jpk ) 
    68          zCu_cfl(ji,jj,jk) = ABS( uu(ji,jj,jk,Kmm) ) * z2dt / e1u  (ji,jj)      ! for i-direction 
    69          zCv_cfl(ji,jj,jk) = ABS( vv(ji,jj,jk,Kmm) ) * z2dt / e2v  (ji,jj)      ! for j-direction 
    70          zCw_cfl(ji,jj,jk) = ABS( ww(ji,jj,jk) ) * z2dt / e3w(ji,jj,jk,Kmm)   ! for k-direction 
     62         zCu_cfl(ji,jj,jk) = ABS( uu(ji,jj,jk,Kmm) ) * r2dt / e1u  (ji,jj)      ! for i-direction 
     63         zCv_cfl(ji,jj,jk) = ABS( vv(ji,jj,jk,Kmm) ) * r2dt / e2v  (ji,jj)      ! for j-direction 
     64         zCw_cfl(ji,jj,jk) = ABS( ww(ji,jj,jk) ) * r2dt / e3w(ji,jj,jk,Kmm)   ! for k-direction 
    7165      END_3D 
    7266      ! 
     
    118112         WRITE(numcfl,*) '******************************************' 
    119113         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) 
    120          WRITE(numcfl,FMT='(3x,a8,11x,f15.1)') ' => dt/C', z2dt/rCu_max 
     114         WRITE(numcfl,FMT='(3x,a8,11x,f15.1)') ' => dt/C', r2dt/rCu_max 
    121115         WRITE(numcfl,*) '******************************************' 
    122116         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) 
    123          WRITE(numcfl,FMT='(3x,a8,11x,f15.1)') ' => dt/C', z2dt/rCv_max 
     117         WRITE(numcfl,FMT='(3x,a8,11x,f15.1)') ' => dt/C', r2dt/rCv_max 
    124118         WRITE(numcfl,*) '******************************************' 
    125119         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) 
    126          WRITE(numcfl,FMT='(3x,a8,11x,f15.1)') ' => dt/C', z2dt/rCw_max 
     120         WRITE(numcfl,FMT='(3x,a8,11x,f15.1)') ' => dt/C', r2dt/rCw_max 
    127121         CLOSE( numcfl )  
    128122         ! 
     
    131125         WRITE(numout,*) 'dia_cfl : Maximum Courant number information for the run ' 
    132126         WRITE(numout,*) '~~~~~~~' 
    133          WRITE(numout,*) '   Max Cu = ', rCu_max, ' at (i,j,k) = (',nCu_loc(1),nCu_loc(2),nCu_loc(3),') => dt/C = ', z2dt/rCu_max 
    134          WRITE(numout,*) '   Max Cv = ', rCv_max, ' at (i,j,k) = (',nCv_loc(1),nCv_loc(2),nCv_loc(3),') => dt/C = ', z2dt/rCv_max 
    135          WRITE(numout,*) '   Max Cw = ', rCw_max, ' at (i,j,k) = (',nCw_loc(1),nCw_loc(2),nCw_loc(3),') => dt/C = ', z2dt/rCw_max 
     127         WRITE(numout,*) '   Max Cu = ', rCu_max, ' at (i,j,k) = (',nCu_loc(1),nCu_loc(2),nCu_loc(3),') => dt/C = ', r2dt/rCu_max 
     128         WRITE(numout,*) '   Max Cv = ', rCv_max, ' at (i,j,k) = (',nCv_loc(1),nCv_loc(2),nCv_loc(3),') => dt/C = ', r2dt/rCv_max 
     129         WRITE(numout,*) '   Max Cw = ', rCw_max, ' at (i,j,k) = (',nCw_loc(1),nCw_loc(2),nCw_loc(3),') => dt/C = ', r2dt/rCw_max 
    136130      ENDIF 
    137131      ! 
  • NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/DOM/dom_oce.F90

    r12377 r12397  
    3535   REAL(wp), PUBLIC ::   rn_rdt         !: time step for the dynamics and tracer 
    3636   REAL(wp), PUBLIC ::   rn_atfp        !: asselin time filter parameter 
    37    INTEGER , PUBLIC ::   nn_euler       !: =0 start with forward time step or not (=1) 
     37   LOGICAL , PUBLIC ::   ln_1st_euler   !: =T start with forward time step or not (=F) 
    3838   LOGICAL , PUBLIC ::   ln_crs         !: Apply grid coarsening to dynamical model output or online passive tracers 
    3939 
     
    5959 
    6060   !                                   !!! associated variables 
    61    INTEGER , PUBLIC ::   neuler         !: restart euler forward option (0=Euler) 
    62    REAL(wp), PUBLIC ::   r2dt           !: = 2*rdt except at nit000 (=rdt) if neuler=0 
     61   LOGICAL , PUBLIC ::   l_1st_euler    !: Euler 1st time-step flag (=T if ln_restart=F or ln_1st_euler=T) 
     62   REAL(wp), PUBLIC ::   r2dt, r1_2dt   !: = 2*rdt and 1/(2*rdt) except at nit000 (=rdt and 1/rdt) if l_1st_euler=.true. 
    6363 
    6464   !!---------------------------------------------------------------------- 
  • NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/DOM/domain.F90

    r12377 r12397  
    287287         &             nn_no   , cn_exp   , cn_ocerst_in, cn_ocerst_out, ln_rstart , nn_rstctl ,     & 
    288288         &             nn_it000, nn_itend , nn_date0    , nn_time0     , nn_leapy  , nn_istate ,     & 
    289          &             nn_stock, nn_write , ln_mskland  , ln_clobber   , nn_chunksz, nn_euler  ,    & 
     289         &             nn_stock, nn_write , ln_mskland  , ln_clobber   , nn_chunksz, ln_1st_euler  , & 
    290290         &             ln_cfmeta, ln_xios_read, nn_wxios 
    291291      NAMELIST/namdom/ ln_linssh, rn_rdt, rn_atfp, ln_crs, ln_meshmask 
     
    317317         WRITE(numout,*) '      restart output directory        cn_ocerst_outdir= ', TRIM( cn_ocerst_outdir ) 
    318318         WRITE(numout,*) '      restart logical                 ln_rstart       = ', ln_rstart 
    319          WRITE(numout,*) '      start with forward time step    nn_euler        = ', nn_euler 
     319         WRITE(numout,*) '      start with forward time step    ln_1st_euler    = ', ln_1st_euler 
    320320         WRITE(numout,*) '      control of time step            nn_rstctl       = ', nn_rstctl 
    321321         WRITE(numout,*) '      number of the first time step   nn_it000        = ', nn_it000 
     
    353353      nleapy = nn_leapy 
    354354      ninist = nn_istate 
    355       neuler = nn_euler 
    356       IF( neuler == 1 .AND. .NOT. ln_rstart ) THEN 
     355      l_1st_euler = ln_1st_euler 
     356      IF( .NOT. l_1st_euler .AND. .NOT. ln_rstart ) THEN 
    357357         IF(lwp) WRITE(numout,*)   
    358358         IF(lwp) WRITE(numout,*)'   ==>>>   Start from rest (ln_rstart=F)' 
    359          IF(lwp) WRITE(numout,*)'           an Euler initial time step is used : nn_euler is forced to 0 '    
    360          neuler = 0 
     359         IF(lwp) WRITE(numout,*)'           an Euler initial time step is used : l_1st_euler is forced to .true. '    
     360         l_1st_euler = .true. 
    361361      ENDIF 
    362362      !                             ! control of output frequency 
  • NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/DOM/domvvl.F90

    r12377 r12397  
    319319      INTEGER                ::   ji, jj, jk            ! dummy loop indices 
    320320      INTEGER , DIMENSION(3) ::   ijk_max, ijk_min      ! temporary integers 
    321       REAL(wp)               ::   z2dt, z_tmin, z_tmax  ! local scalars 
     321      REAL(wp)               ::   z_tmin, z_tmax        ! local scalars 
    322322      LOGICAL                ::   ll_do_bclinic         ! local logical 
    323323      REAL(wp), DIMENSION(jpi,jpj)     ::   zht, z_scale, zwu, zwv, zhdiv 
     
    430430         ! 4 - Time stepping of baroclinic scale factors 
    431431         ! --------------------------------------------- 
    432          ! Leapfrog time stepping 
    433          ! ~~~~~~~~~~~~~~~~~~~~~~ 
    434          IF( neuler == 0 .AND. kt == nit000 ) THEN 
    435             z2dt =  rdt 
    436          ELSE 
    437             z2dt = 2.0_wp * rdt 
    438          ENDIF 
    439432         CALL lbc_lnk( 'domvvl', tilde_e3t_a(:,:,:), 'T', 1._wp ) 
    440          tilde_e3t_a(:,:,:) = tilde_e3t_b(:,:,:) + z2dt * tmask(:,:,:) * tilde_e3t_a(:,:,:) 
     433         tilde_e3t_a(:,:,:) = tilde_e3t_b(:,:,:) + r2dt * tmask(:,:,:) * tilde_e3t_a(:,:,:) 
    441434 
    442435         ! Maximum deformation control 
     
    624617      ! - ML - e3(t/u/v)_b are allready computed in dynnxt. 
    625618      IF( ln_vvl_ztilde .OR. ln_vvl_layer ) THEN 
    626          IF( neuler == 0 .AND. kt == nit000 ) THEN 
     619         IF( l_1st_euler ) THEN 
    627620            tilde_e3t_b(:,:,:) = tilde_e3t_n(:,:,:) 
    628621         ELSE 
     
    821814                  e3t(:,:,:,Kbb) = e3t_0(:,:,:) 
    822815               END WHERE 
    823                IF( neuler == 0 ) THEN 
     816               IF( l_1st_euler ) THEN 
    824817                  e3t(:,:,:,Kbb) = e3t(:,:,:,Kmm) 
    825818               ENDIF 
     
    827820               IF(lwp) write(numout,*) 'dom_vvl_rst WARNING : e3t(:,:,:,Kmm) not found in restart files' 
    828821               IF(lwp) write(numout,*) 'e3t_n set equal to e3t_b.' 
    829                IF(lwp) write(numout,*) 'neuler is forced to 0' 
     822               IF(lwp) write(numout,*) 'l_1st_euler is forced to true' 
    830823               CALL iom_get( numror, jpdom_autoglo, 'e3t_b', e3t(:,:,:,Kbb), ldxios = lrxios ) 
    831824               e3t(:,:,:,Kmm) = e3t(:,:,:,Kbb) 
    832                neuler = 0 
     825               l_1st_euler = .true. 
    833826            ELSE IF( id2 > 0 ) THEN 
    834827               IF(lwp) write(numout,*) 'dom_vvl_rst WARNING : e3t(:,:,:,Kbb) not found in restart files' 
    835828               IF(lwp) write(numout,*) 'e3t_b set equal to e3t_n.' 
    836                IF(lwp) write(numout,*) 'neuler is forced to 0' 
     829               IF(lwp) write(numout,*) 'l_1st_euler is forced to true' 
    837830               CALL iom_get( numror, jpdom_autoglo, 'e3t_n', e3t(:,:,:,Kmm), ldxios = lrxios ) 
    838831               e3t(:,:,:,Kbb) = e3t(:,:,:,Kmm) 
    839                neuler = 0 
     832               l_1st_euler = .true. 
    840833            ELSE 
    841834               IF(lwp) write(numout,*) 'dom_vvl_rst WARNING : e3t(:,:,:,Kmm) not found in restart file' 
    842835               IF(lwp) write(numout,*) 'Compute scale factor from sshn' 
    843                IF(lwp) write(numout,*) 'neuler is forced to 0' 
     836               IF(lwp) write(numout,*) 'l_1st_euler is forced to true' 
    844837               DO jk = 1, jpk 
    845838                  e3t(:,:,jk,Kmm) =  e3t_0(:,:,jk) * ( ht_0(:,:) + ssh(:,:,Kmm) ) & 
     
    848841               END DO 
    849842               e3t(:,:,:,Kbb) = e3t(:,:,:,Kmm) 
    850                neuler = 0 
     843               l_1st_euler = .true. 
    851844            ENDIF 
    852845            !                             ! ----------- ! 
  • NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/DOM/istate.F90

    r12377 r12397  
    9292         !                                    ! --------------- 
    9393         numror = 0                           ! define numror = 0 -> no restart file to read 
    94          neuler = 0                           ! Set time-step indicator at nit000 (euler forward) 
     94         l_1st_euler = .true.                 ! Set time-step indicator at nit000 (euler forward) 
    9595         CALL day_init                        ! model calendar (using both namelist and restart infos) 
    9696         !                                    ! Initialization of ocean to zero 
  • NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/DYN/dynatf.F90

    r12377 r12397  
    157157      ! 
    158158      IF( l_trddyn ) THEN             ! prepare the atf trend computation + some diagnostics 
    159          z1_2dt = 1._wp / (2. * rdt)        ! Euler or leap-frog time step  
    160          IF( neuler == 0 .AND. kt == nit000 )   z1_2dt = 1._wp / rdt 
    161159         ! 
    162160         !                                  ! Kinetic energy and Conversion 
     
    164162         ! 
    165163         IF( ln_dyn_trd ) THEN              ! 3D output: total momentum trends 
    166             zua(:,:,:) = ( puu(:,:,:,Kaa) - puu(:,:,:,Kbb) ) * z1_2dt 
    167             zva(:,:,:) = ( pvv(:,:,:,Kaa) - pvv(:,:,:,Kbb) ) * z1_2dt 
     164            zua(:,:,:) = ( puu(:,:,:,Kaa) - puu(:,:,:,Kbb) ) * r1_2dt 
     165            zva(:,:,:) = ( pvv(:,:,:,Kaa) - pvv(:,:,:,Kbb) ) * r1_2dt 
    168166            CALL iom_put( "utrd_tot", zua )        ! total momentum trends, except the asselin time filter 
    169167            CALL iom_put( "vtrd_tot", zva ) 
     
    178176      ! ------------------------------------------ 
    179177          
    180       IF( .NOT.( neuler == 0 .AND. kt == nit000 ) ) THEN    !* Leap-Frog : Asselin time filter  
     178      IF( .NOT. l_1st_euler ) THEN    !* Leap-Frog : Asselin time filter  
    181179         !                                ! =============! 
    182180         IF( ln_linssh ) THEN             ! Fixed volume ! 
     
    263261         ENDIF 
    264262         ! 
    265       ENDIF ! neuler /= 0 
     263      ENDIF ! .NOT. l_1st_euler 
    266264      ! 
    267265      ! Set "now" and "before" barotropic velocities for next time step: 
  • NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/DYN/dynspg_ts.F90

    r12377 r12397  
    180180!     zwdramp = 1._wp / (rn_wdmin2 - rn_wdmin1) ! more general ramp 
    181181      !                                         ! inverse of baroclinic time step  
    182       IF( kt == nit000 .AND. neuler == 0 ) THEN   ;   r1_2dt_b = 1._wp / (         rdt ) 
    183       ELSE                                        ;   r1_2dt_b = 1._wp / ( 2._wp * rdt ) 
    184       ENDIF 
     182      r1_2dt_b = 1._wp / r2dt  
    185183      ! 
    186184      ll_init     = ln_bt_av                    ! if no time averaging, then no specific restart  
     
    198196         IF(lwp) WRITE(numout,*) 
    199197         ! 
    200          IF( neuler == 0 )   ll_init=.TRUE. 
    201          ! 
    202          IF( ln_bt_fw .OR. neuler == 0 ) THEN 
     198         IF( l_1st_euler )   ll_init=.TRUE. 
     199         ! 
     200         IF( ln_bt_fw .OR. l_1st_euler ) THEN 
    203201            ll_fw_start =.TRUE. 
    204202            noffset     = 0 
     
    209207         CALL ts_wgt( ln_bt_av, ll_fw_start, icycle, wgtbtp1, wgtbtp2 ) 
    210208         ! 
    211       ENDIF 
    212       ! 
    213       ! If forward start at previous time step, and centered integration,  
    214       ! then update averaging weights: 
    215       IF (.NOT.ln_bt_fw .AND.( neuler==0 .AND. kt==nit000+1 ) ) THEN 
    216          ll_fw_start=.FALSE. 
    217          CALL ts_wgt( ln_bt_av, ll_fw_start, icycle, wgtbtp1, wgtbtp2 ) 
    218       ENDIF 
    219       ! 
    220                            
     209      ELSEIF( kt == nit000 + 1 ) THEN           !* initialisation 2nd time-step 
     210         ! 
     211         IF( .NOT.ln_bt_fw ) THEN 
     212            ! If we did an Euler timestep on the first timestep we need to reset ll_fw_start 
     213            ! and the averaging weights. We don't have an easy way of telling whether we did 
     214            ! an Euler timestep on the first timestep (because l_1st_euler is reset to .false. 
     215            ! at the end of the first timestep) so just do this in all cases.  
     216            ll_fw_start = .FALSE. 
     217            CALL ts_wgt( ln_bt_av, ll_fw_start, icycle, wgtbtp1, wgtbtp2 ) 
     218         ENDIF 
     219         ! 
     220      ENDIF 
     221      ! 
    221222      ! ----------------------------------------------------------------------------- 
    222223      !  Phase 1 : Coupling between general trend and barotropic estimates (1st step) 
     
    701702      ! Set advection velocity correction: 
    702703      IF (ln_bt_fw) THEN 
    703          IF( .NOT.( kt == nit000 .AND. neuler==0 ) ) THEN 
     704         IF( .NOT.( kt == nit000 .AND. l_1st_euler ) ) THEN 
    704705            DO_2D_11_11 
    705706               zun_save = un_adv(ji,jj) 
     
    889890      IF( TRIM(cdrw) == 'READ' ) THEN        ! Read/initialise  
    890891         !                                   ! --------------- 
    891          IF( ln_rstart .AND. ln_bt_fw .AND. (neuler/=0) ) THEN    !* Read the restart file 
     892         IF( ln_rstart .AND. ln_bt_fw .AND. (.NOT.l_1st_euler) ) THEN    !* Read the restart file 
    892893            CALL iom_get( numror, jpdom_autoglo, 'ub2_b'  , ub2_b  (:,:), ldxios = lrxios )    
    893894            CALL iom_get( numror, jpdom_autoglo, 'vb2_b'  , vb2_b  (:,:), ldxios = lrxios )  
  • NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/DYN/dynzdf.F90

    r12377 r12397  
    9292         ENDIF 
    9393      ENDIF 
    94       !                             !* set time step 
    95       IF( neuler == 0 .AND. kt == nit000     ) THEN   ;   r2dt =      rdt   ! = rdt (restart with Euler time stepping) 
    96       ELSEIF(               kt <= nit000 + 1 ) THEN   ;   r2dt = 2. * rdt   ! = 2 rdt (leapfrog) 
    97       ENDIF 
    98       ! 
    9994      !                             !* explicit top/bottom drag case 
    10095      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)) 
  • NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/DYN/sshwzv.F90

    r12377 r12397  
    7575      REAL(wp), DIMENSION(jpi,jpj,jpt), INTENT(inout) ::   pssh           ! sea-surface height 
    7676      !  
    77       INTEGER  ::   jk            ! dummy loop indice 
    78       REAL(wp) ::   z2dt, zcoef   ! local scalars 
     77      INTEGER  ::   jk      ! dummy loop index 
     78      REAL(wp) ::   zcoef   ! local scalar 
    7979      REAL(wp), DIMENSION(jpi,jpj) ::   zhdiv   ! 2D workspace 
    8080      !!---------------------------------------------------------------------- 
     
    8888      ENDIF 
    8989      ! 
    90       z2dt = 2._wp * rdt                          ! set time step size (Euler/Leapfrog) 
    91       IF( neuler == 0 .AND. kt == nit000 )   z2dt = rdt 
    9290      zcoef = 0.5_wp * r1_rau0 
    9391 
     
    9694      !                                           !------------------------------! 
    9795      IF(ln_wd_il) THEN 
    98          CALL wad_lmt(pssh(:,:,Kbb), zcoef * (emp_b(:,:) + emp(:,:)), z2dt, Kmm, uu, vv ) 
     96         CALL wad_lmt(pssh(:,:,Kbb), zcoef * (emp_b(:,:) + emp(:,:)), r2dt, Kmm, uu, vv ) 
    9997      ENDIF 
    10098 
     
    109107      ! compute the vertical velocity which can be used to compute the non-linear terms of the momentum equations. 
    110108      !  
    111       pssh(:,:,Kaa) = (  pssh(:,:,Kbb) - z2dt * ( zcoef * ( emp_b(:,:) + emp(:,:) ) + zhdiv(:,:) )  ) * ssmask(:,:) 
     109      pssh(:,:,Kaa) = (  pssh(:,:,Kbb) - r2dt * ( zcoef * ( emp_b(:,:) + emp(:,:) ) + zhdiv(:,:) )  ) * ssmask(:,:) 
    112110      ! 
    113111#if defined key_agrif 
     
    152150      ! 
    153151      INTEGER  ::   ji, jj, jk   ! dummy loop indices 
    154       REAL(wp) ::   z1_2dt       ! local scalars 
    155152      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) ::   zhdiv 
    156153      !!---------------------------------------------------------------------- 
     
    168165      !                                           !     Now Vertical Velocity    ! 
    169166      !                                           !------------------------------! 
    170       z1_2dt = 1. / ( 2. * rdt )                         ! set time step size (Euler/Leapfrog) 
    171       IF( neuler == 0 .AND. kt == nit000 )   z1_2dt = 1. / rdt 
    172167      ! 
    173168      IF( ln_vvl_ztilde .OR. ln_vvl_layer ) THEN      ! z_tilde and layer cases 
     
    187182            ! computation of w 
    188183            pww(:,:,jk) = pww(:,:,jk+1) - (  e3t(:,:,jk,Kmm) * hdiv(:,:,jk) + zhdiv(:,:,jk)    & 
    189                &                         + z1_2dt * ( e3t(:,:,jk,Kaa) - e3t(:,:,jk,Kbb) )     ) * tmask(:,:,jk) 
     184               &                         + r1_2dt * ( e3t(:,:,jk,Kaa) - e3t(:,:,jk,Kbb) )     ) * tmask(:,:,jk) 
    190185         END DO 
    191186         !          IF( ln_vvl_layer ) pww(:,:,:) = 0.e0 
     
    195190            ! computation of w 
    196191            pww(:,:,jk) = pww(:,:,jk+1) - (  e3t(:,:,jk,Kmm) * hdiv(:,:,jk)                 & 
    197                &                         + z1_2dt * ( e3t(:,:,jk,Kaa) - e3t(:,:,jk,Kbb) )  ) * tmask(:,:,jk) 
     192               &                         + r1_2dt * ( e3t(:,:,jk,Kaa) - e3t(:,:,jk,Kbb) )  ) * tmask(:,:,jk) 
    198193         END DO 
    199194      ENDIF 
     
    249244      ENDIF 
    250245      !              !==  Euler time-stepping: no filter, just swap  ==! 
    251       IF ( .NOT.( neuler == 0 .AND. kt == nit000 ) ) THEN   ! Only do time filtering for leapfrog timesteps 
     246      IF ( .NOT.( l_1st_euler ) ) THEN   ! Only do time filtering for leapfrog timesteps 
    252247         !                                                  ! filtered "now" field 
    253248         pssh(:,:,Kmm) = pssh(:,:,Kmm) + atfp * ( pssh(:,:,Kbb) - 2 * pssh(:,:,Kmm) + pssh(:,:,Kaa) ) 
  • NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/IOM/restart.F90

    r12377 r12397  
    247247      IF( iom_varid( numror, 'rdt', ldstop = .FALSE. ) > 0 )   THEN 
    248248         CALL iom_get( numror, 'rdt', zrdt, ldxios = lrxios ) 
    249          IF( zrdt /= rdt )   neuler = 0 
     249         IF( zrdt /= rn_rdt ) THEN 
     250            IF(lwp) WRITE( numout,*) 
     251            IF(lwp) WRITE( numout,*) 'rst_read:  rdt not equal to the read one' 
     252            IF(lwp) WRITE( numout,*) 
     253            IF(lwp) WRITE( numout,*) '      ==>>>   forced euler first time-step' 
     254            l_1st_euler =  .TRUE. 
     255         ENDIF 
    250256      ENDIF 
    251257 
     
    270276         CALL iom_get( numror, jpdom_autoglo, 'sshb'   ,ssh(:,:         ,Kbb), ldxios = lrxios ) 
    271277      ELSE 
    272          neuler = 0 
     278         l_1st_euler =  .TRUE.      ! before field not found, forced euler 1st time-step 
    273279      ENDIF 
    274280      ! 
     
    284290      ENDIF 
    285291      ! 
    286       IF( neuler == 0 ) THEN                                  ! Euler restart (neuler=0) 
     292      IF( l_1st_euler ) THEN                                  ! Euler restart  
    287293         ts   (:,:,:,:,Kbb) = ts   (:,:,:,:,Kmm)              ! all before fields set to now values 
    288294         uu   (:,:,:  ,Kbb) = uu   (:,:,:  ,Kmm) 
  • NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/ISF/isfcpl.F90

    r12353 r12397  
    6868      ! 
    6969      ! start on an euler time step 
    70       neuler = 0 
     70      l_1st_euler = .TRUE. 
    7171      !  
    7272      ! allocation and initialisation to 0 
  • NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/TRA/traadv.F90

    r12377 r12397  
    9292      IF( ln_timing )   CALL timing_start('tra_adv') 
    9393      ! 
    94       !                                          ! set time step 
    95       IF( neuler == 0 .AND. kt == nit000 ) THEN   ;   r2dt =         rdt   ! at nit000             (Euler) 
    96       ELSEIF( kt <= nit000 + 1 )           THEN   ;   r2dt = 2._wp * rdt   ! at nit000 or nit000+1 (Leapfrog) 
    97       ENDIF 
    98       ! 
    9994      !                                         !==  effective transport  ==! 
    10095      zuu(:,:,jpk) = 0._wp 
  • NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/TRA/traatf.F90

    r12377 r12397  
    113113      IF( ln_bdy )   CALL bdy_tra( kt, Kbb, pts, Kaa )  ! BDY open boundaries 
    114114  
    115       ! set time step size (Euler/Leapfrog) 
    116       IF( neuler == 0 .AND. kt == nit000 ) THEN   ;   r2dt =        rdt   ! at nit000             (Euler) 
    117       ELSEIF( kt <= nit000 + 1 )           THEN   ;   r2dt = 2._wp* rdt   ! at nit000 or nit000+1 (Leapfrog) 
    118       ENDIF 
    119  
    120115      ! trends computation initialisation 
    121116      IF( l_trdtra )   THEN                     
     
    144139      ENDIF 
    145140 
    146       IF( neuler == 0 .AND. kt == nit000 ) THEN       ! Euler time-stepping  
     141      IF( l_1st_euler ) THEN       ! Euler time-stepping  
    147142         ! 
    148143         IF (l_trdtra .AND. .NOT. ln_linssh ) THEN   ! Zero Asselin filter contribution must be explicitly written out since for vvl 
  • NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/TRA/traldf_iso.F90

    r12377 r12397  
    109109      REAL(wp) ::  zmsku, zahu_w, zabe1, zcof1, zcoef3   ! local scalars 
    110110      REAL(wp) ::  zmskv, zahv_w, zabe2, zcof2, zcoef4   !   -      - 
    111       REAL(wp) ::  zcoef0, ze3w_2, zsign, z2dt, z1_2dt   !   -      - 
     111      REAL(wp) ::  zcoef0, ze3w_2, zsign                 !   -      - 
    112112      REAL(wp), DIMENSION(jpi,jpj)     ::   zdkt, zdk1t, z2d 
    113113      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zdit, zdjt, zftu, zftv, ztfw  
     
    129129         &                        iom_use("uadv_salttr") .OR. iom_use("vadv_salttr")  ) )   l_hst = .TRUE. 
    130130      ! 
    131       !                                            ! set time step size (Euler/Leapfrog) 
    132       IF( neuler == 0 .AND. kt == nit000 ) THEN   ;   z2dt =     rdt      ! at nit000   (Euler) 
    133       ELSE                                        ;   z2dt = 2.* rdt      !             (Leapfrog) 
    134       ENDIF 
    135       z1_2dt = 1._wp / z2dt 
    136131      ! 
    137132      IF( kpass == 1 ) THEN   ;   zsign =  1._wp      ! bilaplacian operator require a minus sign (eddy diffusivity >0) 
     
    178173               DO_3D_10_10( 2, jpkm1 ) 
    179174                  ze3w_2 = e3w(ji,jj,jk,Kmm) * e3w(ji,jj,jk,Kmm) 
    180                   zcoef0 = z2dt * (  akz(ji,jj,jk) + ah_wslp2(ji,jj,jk) / ze3w_2  ) 
    181                   akz(ji,jj,jk) = MAX( zcoef0 - 0.5_wp , 0._wp ) * ze3w_2 * z1_2dt 
     175                  zcoef0 = r2dt * (  akz(ji,jj,jk) + ah_wslp2(ji,jj,jk) / ze3w_2  ) 
     176                  akz(ji,jj,jk) = MAX( zcoef0 - 0.5_wp , 0._wp ) * ze3w_2 * r1_2dt 
    182177               END_3D 
    183178           ENDIF 
  • NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/TRA/traldf_triad.F90

    r12377 r12397  
    8686      INTEGER  ::  ip,jp,kp         ! dummy loop indices 
    8787      INTEGER  ::  ierr            ! local integer 
    88       REAL(wp) ::  zmsku, zabe1, zcof1, zcoef3          ! local scalars 
    89       REAL(wp) ::  zmskv, zabe2, zcof2, zcoef4          !   -      - 
    90       REAL(wp) ::  zcoef0, ze3w_2, zsign, z2dt, z1_2dt  !   -      - 
     88      REAL(wp) ::  zmsku, zabe1, zcof1, zcoef3    ! local scalars 
     89      REAL(wp) ::  zmskv, zabe2, zcof2, zcoef4    !   -      - 
     90      REAL(wp) ::  zcoef0, ze3w_2, zsign          !   -      - 
    9191      ! 
    9292      REAL(wp) ::   zslope_skew, zslope_iso, zslope2, zbu, zbv 
     
    111111      l_hst = .FALSE. 
    112112      l_ptr = .FALSE. 
    113       IF( cdtype == 'TRA' .AND. ( iom_use( 'sophtldf' ) .OR. iom_use( 'sopstldf' ) ) )      l_ptr = .TRUE.  
    114       IF( cdtype == 'TRA' .AND. ( iom_use("uadv_heattr") .OR. iom_use("vadv_heattr") .OR. & 
    115          &                        iom_use("uadv_salttr") .OR. iom_use("vadv_salttr")  ) )   l_hst = .TRUE. 
    116       ! 
    117       !                                                        ! set time step size (Euler/Leapfrog) 
    118       IF( neuler == 0 .AND. kt == kit000 ) THEN   ;   z2dt =     rdt      ! at nit000   (Euler) 
    119       ELSE                                        ;   z2dt = 2.* rdt      !             (Leapfrog) 
     113      IF( cdtype == 'TRA' ) THEN 
     114         IF( iom_use( 'sophtldf' ) .OR. iom_use( 'sopstldf') )      l_ptr = .TRUE.  
     115         IF( iom_use("uadv_heattr") .OR. iom_use("vadv_heattr") .OR.                   & 
     116         &   iom_use("uadv_salttr") .OR. iom_use("vadv_salttr")  )   l_hst = .TRUE. 
    120117      ENDIF 
    121       z1_2dt = 1._wp / z2dt 
    122118      ! 
    123119      IF( kpass == 1 ) THEN   ;   zsign =  1._wp      ! bilaplacian operator require a minus sign (eddy diffusivity >0) 
     
    189185               DO_3D_10_10( 2, jpkm1 ) 
    190186                  ze3w_2 = e3w(ji,jj,jk,Kmm) * e3w(ji,jj,jk,Kmm) 
    191                   zcoef0 = z2dt * (  akz(ji,jj,jk) + ah_wslp2(ji,jj,jk) / ze3w_2  ) 
    192                   akz(ji,jj,jk) = MAX( zcoef0 - 0.5_wp , 0._wp ) * ze3w_2 * z1_2dt 
     187                  zcoef0 = r2dt * (  akz(ji,jj,jk) + ah_wslp2(ji,jj,jk) / ze3w_2  ) 
     188                  akz(ji,jj,jk) = MAX( zcoef0 - 0.5_wp , 0._wp ) * ze3w_2 * r1_2dt 
    193189               END_3D 
    194190           ENDIF 
  • NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/TRA/traqsr.F90

    r12377 r12397  
    135135      !                         !-----------------------------------! 
    136136      IF( kt == nit000 ) THEN          !==  1st time step  ==! 
    137 !!gm case neuler  not taken into account.... 
    138          IF( ln_rstart .AND. iom_varid( numror, 'qsr_hc_b', ldstop = .FALSE. ) > 0 ) THEN    ! read in restart 
     137         IF( ln_rstart .AND. iom_varid( numror, 'qsr_hc_b', ldstop = .FALSE. ) > 0  .AND. .NOT.l_1st_euler ) THEN    ! read in restart 
    139138            IF(lwp) WRITE(numout,*) '          nit000-1 qsr tracer content forcing field read in the restart file' 
    140139            z1_2 = 0.5_wp 
  • NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/TRA/trazdf.F90

    r12377 r12397  
    6464         IF(lwp)WRITE(numout,*) 'tra_zdf : implicit vertical mixing on T & S' 
    6565         IF(lwp)WRITE(numout,*) '~~~~~~~ ' 
    66       ENDIF 
    67       ! 
    68       IF( neuler == 0 .AND. kt == nit000 ) THEN   ;   r2dt =      rdt   ! at nit000, =   rdt (restarting with Euler time stepping) 
    69       ELSEIF( kt <= nit000 + 1           ) THEN   ;   r2dt = 2. * rdt   ! otherwise, = 2 rdt (leapfrog) 
    7066      ENDIF 
    7167      ! 
  • NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/TRD/trdtra.F90

    r12377 r12397  
    236236      INTEGER                   , INTENT(in   ) ::   Kmm     ! time level index 
    237237      !!---------------------------------------------------------------------- 
    238  
    239       IF( neuler == 0 .AND. kt == nit000    ) THEN   ;   r2dt =      rdt      ! = rdt (restart with Euler time stepping) 
    240       ELSEIF(               kt <= nit000 + 1) THEN   ;   r2dt = 2. * rdt      ! = 2 rdt (leapfrog) 
    241       ENDIF 
    242238 
    243239      !                   ! 3D output of tracers trends using IOM interface 
  • NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/nemogcm.F90

    r12377 r12397  
    160160      !                            !==   time stepping   ==! 
    161161      !                            !-----------------------! 
     162      ! 
     163      !                                               !== set the model time-step  ==! 
     164      ! 
    162165      istp = nit000 
    163166      ! 
  • NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/step.F90

    r12377 r12397  
    102102      ! 
    103103      !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
     104      ! model timestep 
     105      !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
     106      ! 
     107      IF( l_1st_euler ) THEN   ;   r2dt =         rn_rdt   ! start or restart with Euler 1st time-step 
     108      ELSE                     ;   r2dt = 2._wp * rn_rdt   ! restart with leapfrog 
     109      ENDIF 
     110      r1_2dt = 1._wp / r2dt 
     111      ! 
     112      !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
    104113      ! update I/O and calendar  
    105114      !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
     
    335344#endif 
    336345      ! 
     346      IF( l_1st_euler ) l_1st_euler = .FALSE.      ! recover Leap-frog timestep 
     347      ! 
    337348      IF( ln_timing )   CALL timing_stop('stp') 
    338349      ! 
  • NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/TOP/PISCES/P2Z/p2zexp.F90

    r12377 r12397  
    114114      ! Time filter and swap of arrays 
    115115      ! ------------------------------ 
    116       IF( neuler == 0 .AND. kt == nittrc000 ) THEN        ! Euler time-stepping at first time-step 
    117         !                                             ! (only swap) 
     116      IF( l_1st_euler ) THEN        ! Euler time-stepping at first time-step 
     117        !                           ! (only swap) 
    118118        sedpocn(:,:) = zsedpoca(:,:) 
    119119        !                                               
  • NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/TOP/PISCES/P4Z/p4zsms.F90

    r12377 r12397  
    111111      ENDIF 
    112112 
    113       IF( ( neuler == 0 .AND. kt == nittrc000 ) .OR. ln_top_euler ) THEN 
     113      IF( l_1st_euler .OR. ln_top_euler ) THEN 
    114114         DO jn = jp_pcs0, jp_pcs1              !   SMS on tracer without Asselin time-filter 
    115115            tr(:,:,:,jn,Kbb) = tr(:,:,:,jn,Kmm) 
  • NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/TOP/TRP/trcatf.F90

    r12377 r12397  
    139139      ENDIF 
    140140      !                                ! Leap-Frog + Asselin filter time stepping 
    141       IF( (neuler == 0 .AND. kt == nittrc000) .OR. ln_top_euler ) THEN    ! Euler time-stepping  
     141      IF( l_1st_euler .OR. ln_top_euler ) THEN    ! Euler time-stepping  
    142142         ! 
    143143         IF (l_trdtrc .AND. .NOT. ln_linssh ) THEN   ! Zero Asselin filter contribution must be explicitly written out since for vvl 
  • NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/TOP/trc.F90

    r12377 r12397  
    6262   CHARACTER(len = 256), PUBLIC ::   cn_trcrst_outdir   !: restart output directory 
    6363   REAL(wp)            , PUBLIC ::   rdttrc             !: passive tracer time step 
    64    REAL(wp)            , PUBLIC ::   r2dttrc            !: = 2*rdttrc except at nit000 (=rdttrc) if neuler=0 
     64   REAL(wp)            , PUBLIC ::   r2dttrc            !: = 2*rdttrc except at nit000 (=rdttrc) if l_1st_euler=.true. 
    6565   LOGICAL             , PUBLIC ::   ln_top_euler       !: boolean term for euler integration  
    6666   LOGICAL             , PUBLIC ::   ln_trcdta          !: Read inputs data from files 
  • NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/TOP/trcrst.F90

    r12377 r12397  
    276276            ENDIF 
    277277            ! 
    278             IF( ln_rsttr )  THEN   ;    neuler = 1 
    279             ELSE                   ;    neuler = 0 
     278            IF( ln_rsttr )  THEN   ;    l_1st_euler = .false. 
     279            ELSE                   ;    l_1st_euler = .true. 
    280280            ENDIF 
    281281            ! 
  • NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/TOP/trcstp.F90

    r12377 r12397  
    6464      IF( ln_timing )   CALL timing_start('trc_stp') 
    6565      ! 
    66       IF( ( neuler == 0 .AND. kt == nittrc000 ) .OR. ln_top_euler ) THEN     ! at nittrc000 
     66      IF( l_1st_euler .OR. ln_top_euler ) THEN     ! at nittrc000 
    6767         r2dttrc =  rdttrc           ! = rdttrc (use or restarting with Euler time stepping) 
    6868      ELSEIF( kt <= nittrc000 + 1 ) THEN                                     ! at nittrc000 or nittrc000+1  
  • NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/tests/CANAL/MY_SRC/domvvl.F90

    r12377 r12397  
    295295      INTEGER                ::   ji, jj, jk            ! dummy loop indices 
    296296      INTEGER , DIMENSION(3) ::   ijk_max, ijk_min      ! temporary integers 
    297       REAL(wp)               ::   z2dt, z_tmin, z_tmax  ! local scalars 
     297      REAL(wp)               ::   z_tmin, z_tmax        ! local scalars 
    298298      LOGICAL                ::   ll_do_bclinic         ! local logical 
    299299      REAL(wp), DIMENSION(jpi,jpj)     ::   zht, z_scale, zwu, zwv, zhdiv 
     
    418418         ! Leapfrog time stepping 
    419419         ! ~~~~~~~~~~~~~~~~~~~~~~ 
    420          IF( neuler == 0 .AND. kt == nit000 ) THEN 
    421             z2dt =  rdt 
    422          ELSE 
    423             z2dt = 2.0_wp * rdt 
    424          ENDIF 
    425420         CALL lbc_lnk( 'domvvl', tilde_e3t_a(:,:,:), 'T', 1._wp ) 
    426          tilde_e3t_a(:,:,:) = tilde_e3t_b(:,:,:) + z2dt * tmask(:,:,:) * tilde_e3t_a(:,:,:) 
     421         tilde_e3t_a(:,:,:) = tilde_e3t_b(:,:,:) + r2dt * tmask(:,:,:) * tilde_e3t_a(:,:,:) 
    427422 
    428423         ! Maximum deformation control 
     
    610605      ! - ML - e3(t/u/v)_b are allready computed in dynnxt. 
    611606      IF( ln_vvl_ztilde .OR. ln_vvl_layer ) THEN 
    612          IF( neuler == 0 .AND. kt == nit000 ) THEN 
     607         IF( l_1st_euler ) THEN 
    613608            tilde_e3t_b(:,:,:) = tilde_e3t_n(:,:,:) 
    614609         ELSE 
     
    827822                  e3t(:,:,:,Kbb) = e3t_0(:,:,:) 
    828823               END WHERE 
    829                IF( neuler == 0 ) THEN 
     824               IF( l_1st_euler ) THEN 
    830825                  e3t(:,:,:,Kbb) = e3t(:,:,:,Kmm) 
    831826               ENDIF 
     
    833828               IF(lwp) write(numout,*) 'dom_vvl_rst WARNING : e3t(:,:,:,Kmm) not found in restart files' 
    834829               IF(lwp) write(numout,*) 'e3t_n set equal to e3t_b.' 
    835                IF(lwp) write(numout,*) 'neuler is forced to 0' 
     830               IF(lwp) write(numout,*) 'l_1st_euler is forced to .true.' 
    836831               CALL iom_get( numror, jpdom_autoglo, 'e3t_b', e3t(:,:,:,Kbb), ldxios = lrxios ) 
    837832               e3t(:,:,:,Kmm) = e3t(:,:,:,Kbb) 
    838                neuler = 0 
     833               l_1st_euler = .true. 
    839834            ELSE IF( id2 > 0 ) THEN 
    840835               IF(lwp) write(numout,*) 'dom_vvl_rst WARNING : e3t(:,:,:,Kbb) not found in restart files' 
    841836               IF(lwp) write(numout,*) 'e3t_b set equal to e3t_n.' 
    842                IF(lwp) write(numout,*) 'neuler is forced to 0' 
     837               IF(lwp) write(numout,*) 'l_1st_euler is forced to .true.' 
    843838               CALL iom_get( numror, jpdom_autoglo, 'e3t_n', e3t(:,:,:,Kmm), ldxios = lrxios ) 
    844839               e3t(:,:,:,Kbb) = e3t(:,:,:,Kmm) 
    845                neuler = 0 
     840               l_1st_euler = .true. 
    846841            ELSE 
    847842               IF(lwp) write(numout,*) 'dom_vvl_rst WARNING : e3t(:,:,:,Kmm) not found in restart file' 
    848843               IF(lwp) write(numout,*) 'Compute scale factor from sshn' 
    849                IF(lwp) write(numout,*) 'neuler is forced to 0' 
     844               IF(lwp) write(numout,*) 'l_1st_euler is forced to .true.' 
    850845               DO jk = 1, jpk 
    851846                  e3t(:,:,jk,Kmm) =  e3t_0(:,:,jk) * ( ht_0(:,:) + ssh(:,:,Kmm) ) & 
     
    854849               END DO 
    855850               e3t(:,:,:,Kbb) = e3t(:,:,:,Kmm) 
    856                neuler = 0 
     851               l_1st_euler = .true. 
    857852            ENDIF 
    858853            !                             ! ----------- ! 
  • NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/tests/VORTEX/MY_SRC/domvvl.F90

    r12377 r12397  
    323323      INTEGER                ::   ji, jj, jk            ! dummy loop indices 
    324324      INTEGER , DIMENSION(3) ::   ijk_max, ijk_min      ! temporary integers 
    325       REAL(wp)               ::   z2dt, z_tmin, z_tmax  ! local scalars 
     325      REAL(wp)               ::   z_tmin, z_tmax        ! local scalars 
    326326      LOGICAL                ::   ll_do_bclinic         ! local logical 
    327327      REAL(wp), DIMENSION(jpi,jpj)     ::   zht, z_scale, zwu, zwv, zhdiv 
     
    446446         ! Leapfrog time stepping 
    447447         ! ~~~~~~~~~~~~~~~~~~~~~~ 
    448          IF( neuler == 0 .AND. kt == nit000 ) THEN 
    449             z2dt =  rdt 
    450          ELSE 
    451             z2dt = 2.0_wp * rdt 
    452          ENDIF 
    453448         CALL lbc_lnk( 'domvvl', tilde_e3t_a(:,:,:), 'T', 1._wp ) 
    454          tilde_e3t_a(:,:,:) = tilde_e3t_b(:,:,:) + z2dt * tmask(:,:,:) * tilde_e3t_a(:,:,:) 
     449         tilde_e3t_a(:,:,:) = tilde_e3t_b(:,:,:) + r2dt * tmask(:,:,:) * tilde_e3t_a(:,:,:) 
    455450 
    456451         ! Maximum deformation control 
     
    638633      ! - ML - e3(t/u/v)_b are allready computed in dynnxt. 
    639634      IF( ln_vvl_ztilde .OR. ln_vvl_layer ) THEN 
    640          IF( neuler == 0 .AND. kt == nit000 ) THEN 
     635         IF( l_1st_euler ) THEN 
    641636            tilde_e3t_b(:,:,:) = tilde_e3t_n(:,:,:) 
    642637         ELSE 
     
    849844                  e3t(:,:,:,Kbb) = e3t_0(:,:,:) 
    850845               END WHERE 
    851                IF( neuler == 0 ) THEN 
     846               IF( l_1st_euler ) THEN 
    852847                  e3t(:,:,:,Kbb) = e3t(:,:,:,Kmm) 
    853848               ENDIF 
     
    855850               IF(lwp) write(numout,*) 'dom_vvl_rst WARNING : e3t(:,:,:,Kmm) not found in restart files' 
    856851               IF(lwp) write(numout,*) 'e3t_n set equal to e3t_b.' 
    857                IF(lwp) write(numout,*) 'neuler is forced to 0' 
     852               IF(lwp) write(numout,*) 'l_1st_euler is forced to .true.' 
    858853               CALL iom_get( numror, jpdom_autoglo, 'e3t_b', e3t(:,:,:,Kbb), ldxios = lrxios ) 
    859854               e3t(:,:,:,Kmm) = e3t(:,:,:,Kbb) 
    860                neuler = 0 
     855               l_1st_euler = .true. 
    861856            ELSE IF( id2 > 0 ) THEN 
    862857               IF(lwp) write(numout,*) 'dom_vvl_rst WARNING : e3t(:,:,:,Kbb) not found in restart files' 
    863858               IF(lwp) write(numout,*) 'e3t_b set equal to e3t_n.' 
    864                IF(lwp) write(numout,*) 'neuler is forced to 0' 
     859               IF(lwp) write(numout,*) 'l_1st_euler is forced to .true.' 
    865860               CALL iom_get( numror, jpdom_autoglo, 'e3t_n', e3t(:,:,:,Kmm), ldxios = lrxios ) 
    866861               e3t(:,:,:,Kbb) = e3t(:,:,:,Kmm) 
    867                neuler = 0 
     862               l_1st_euler = .true. 
    868863            ELSE 
    869864               IF(lwp) write(numout,*) 'dom_vvl_rst WARNING : e3t(:,:,:,Kmm) not found in restart file' 
    870865               IF(lwp) write(numout,*) 'Compute scale factor from sshn' 
    871                IF(lwp) write(numout,*) 'neuler is forced to 0' 
     866               IF(lwp) write(numout,*) 'l_1st_euler is forced to .true.' 
    872867               DO jk = 1, jpk 
    873868                  e3t(:,:,jk,Kmm) =  e3t_0(:,:,jk) * ( ht_0(:,:) + ssh(:,:,Kmm) ) & 
     
    876871               END DO 
    877872               e3t(:,:,:,Kbb) = e3t(:,:,:,Kmm) 
    878                neuler = 0 
     873               l_1st_euler = .true. 
    879874            ENDIF 
    880875            !                             ! ----------- ! 
Note: See TracChangeset for help on using the changeset viewer.