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/tests – 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/tests
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • 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.