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/CANAL/MY_SRC/domvvl.F90 – 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).

File:
1 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            !                             ! ----------- ! 
Note: See TracChangeset for help on using the changeset viewer.