Ignore:
Timestamp:
2020-02-28T16:55:11+01:00 (14 months ago)
Author:
davestorkey
Message:

Preparation for new timestepping scheme #2390.
Main changes:

  1. Initial euler timestep now handled in stp and not in TRA/DYN routines.
  2. Renaming of all timestep parameters. In summary, the namelist parameter is now rn_Dt and the current timestep is rDt (and rDt_ice, rDt_trc etc).
  3. Renaming of a few miscellaneous parameters, eg. atfp → rn_atfp (namelist parameter used everywhere) and rau0 → rho0.

This version gives bit-comparable results to the previous version of the trunk.

Location:
NEMO/trunk/tests/VORTEX
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • NEMO/trunk/tests/VORTEX/EXPREF/1_namelist_cfg

    r12377 r12489  
    4040!----------------------------------------------------------------------- 
    4141   ln_linssh   =  .false.  !  =T  linear free surface  ==>>  model level are fixed in time 
    42    rn_rdt      =    480.   !  time step for the dynamics (and tracer if nn_acc=0) 
     42   rn_Dt      =    480.   !  time step for the dynamics (and tracer if nn_acc=0) 
    4343   rn_atfp     =   0.05    !  asselin time filter parameter 
    4444/ 
     
    213213      ln_bt_av      = .true.     ! Time filtering of barotropic variables 
    214214         nn_bt_flt     = 1          ! Time filter choice  = 0 None 
    215          !                          !                     = 1 Boxcar over   nn_baro sub-steps 
    216          !                          !                     = 2 Boxcar over 2*nn_baro  "    " 
     215         !                          !                     = 1 Boxcar over   nn_e sub-steps 
     216         !                          !                     = 2 Boxcar over 2*nn_e  "    " 
    217217      ln_bt_auto    = .false.    ! Number of sub-step defined from: 
    218          nn_baro      =  24         ! =F : the number of sub-step in rn_rdt seconds 
     218         nn_e      =  24         ! =F : the number of sub-step in rn_Dt seconds 
    219219/ 
    220220!----------------------------------------------------------------------- 
  • NEMO/trunk/tests/VORTEX/EXPREF/namelist_cfg

    r12377 r12489  
    4040!----------------------------------------------------------------------- 
    4141   ln_linssh   =  .false.  !  =T  linear free surface  ==>>  model level are fixed in time 
    42    rn_rdt      =   1440.   !  time step for the dynamics (and tracer if nn_acc=0) 
     42   rn_Dt      =   1440.   !  time step for the dynamics (and tracer if nn_acc=0) 
    4343   rn_atfp     =   0.05    !  asselin time filter parameter 
    4444/ 
     
    204204      ln_bt_av      = .true.     ! Time filtering of barotropic variables 
    205205         nn_bt_flt     = 1          ! Time filter choice  = 0 None 
    206          !                          !                     = 1 Boxcar over   nn_baro sub-steps 
    207          !                          !                     = 2 Boxcar over 2*nn_baro  "    " 
     206         !                          !                     = 1 Boxcar over   nn_e sub-steps 
     207         !                          !                     = 2 Boxcar over 2*nn_e  "    " 
    208208      ln_bt_auto    = .false.    ! Number of sub-step defined from: 
    209          nn_baro      =  24         ! =F : the number of sub-step in rn_rdt seconds 
     209         nn_e      =  24         ! =F : the number of sub-step in rn_Dt seconds 
    210210/ 
    211211!----------------------------------------------------------------------- 
  • NEMO/trunk/tests/VORTEX/MY_SRC/domvvl.F90

    r12377 r12489  
    237237         IF( ln_vvl_ztilde_as_zstar ) THEN   ! z-star emulation using z-tile 
    238238            frq_rst_e3t(:,:) = 0._wp               !Ignore namelist settings 
    239             frq_rst_hdv(:,:) = 1._wp / rdt 
     239            frq_rst_hdv(:,:) = 1._wp / rn_Dt 
    240240         ENDIF 
    241241         IF ( ln_vvl_zstar_at_eqtor ) THEN   ! use z-star in vicinity of the Equator 
     
    250250                     ! values inside the equatorial band (ztilde as zstar) 
    251251                     frq_rst_e3t(ji,jj) =  0.0_wp 
    252                      frq_rst_hdv(ji,jj) =  1.0_wp / rdt 
     252                     frq_rst_hdv(ji,jj) =  1.0_wp / rn_Dt 
    253253                  ELSE                                      ! transition band (2.5 to 6 degrees N/S) 
    254254                     !                                      ! (linearly transition from z-tilde to z-star) 
     
    256256                        &            * (  1.0_wp - COS( rad*(ABS(gphit(ji,jj))-2.5_wp)  & 
    257257                        &                                          * 180._wp / 3.5_wp ) ) 
    258                      frq_rst_hdv(ji,jj) = (1.0_wp / rdt)                                & 
    259                         &            + (  frq_rst_hdv(ji,jj)-(1.e0_wp / rdt) )*0.5_wp   & 
     258                     frq_rst_hdv(ji,jj) = (1.0_wp / rn_Dt)                                & 
     259                        &            + (  frq_rst_hdv(ji,jj)-(1.e0_wp / rn_Dt) )*0.5_wp   & 
    260260                        &            * (  1._wp  - COS( rad*(ABS(gphit(ji,jj))-2.5_wp)  & 
    261261                        &                                          * 180._wp / 3.5_wp ) ) 
     
    268268                  ij0 = 128   ;   ij1 = 135   ;    
    269269                  frq_rst_e3t( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) =  0.0_wp 
    270                   frq_rst_hdv( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) =  1.e0_wp / rdt 
     270                  frq_rst_hdv( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) =  1.e0_wp / rn_Dt 
    271271               ENDIF 
    272272            ENDIF 
     
    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 
     
    377377            IF( kt > nit000 ) THEN 
    378378               DO jk = 1, jpkm1 
    379                   hdiv_lf(:,:,jk) = hdiv_lf(:,:,jk) - rdt * frq_rst_hdv(:,:)   & 
     379                  hdiv_lf(:,:,jk) = hdiv_lf(:,:,jk) - rn_Dt * frq_rst_hdv(:,:)   & 
    380380                     &          * ( hdiv_lf(:,:,jk) - e3t(:,:,jk,Kmm) * ( hdiv(:,:,jk) - zhdiv(:,:) ) ) 
    381381               END DO 
     
    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(:,:,:) + rDt * 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 
    643638            tilde_e3t_b(:,:,:) = tilde_e3t_n(:,:,:) &  
    644             &         + atfp * ( tilde_e3t_b(:,:,:) - 2.0_wp * tilde_e3t_n(:,:,:) + tilde_e3t_a(:,:,:) ) 
     639            &         + rn_atfp * ( tilde_e3t_b(:,:,:) - 2.0_wp * tilde_e3t_n(:,:,:) + tilde_e3t_a(:,:,:) ) 
    645640         ENDIF 
    646641         tilde_e3t_n(:,:,:) = tilde_e3t_a(:,:,:) 
     
    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            !                             ! ----------- ! 
     
    10391034            WRITE(numout,*) '                         rn_rst_e3t     = 0.e0' 
    10401035            WRITE(numout,*) '            hard-wired : z-tilde cutoff frequency of low-pass filter (days)' 
    1041             WRITE(numout,*) '                         rn_lf_cutoff   = 1.0/rdt' 
     1036            WRITE(numout,*) '                         rn_lf_cutoff   = 1.0/rn_Dt' 
    10421037         ELSE 
    10431038            WRITE(numout,*) '      z-tilde to zstar restoration timescale (days)        rn_rst_e3t   = ', rn_rst_e3t 
  • NEMO/trunk/tests/VORTEX/MY_SRC/usrdef_istate.F90

    r10425 r12489  
    6969      zH = 0.5_wp * 5000._wp 
    7070      ! 
    71       zP0 = rau0 * zf0 * zumax * zlambda * SQRT(EXP(1._wp)/2._wp) 
     71      zP0 = rho0 * zf0 * zumax * zlambda * SQRT(EXP(1._wp)/2._wp) 
    7272      ! 
    7373      ! Sea level: 
     
    7777            zx = glamt(ji,jj) * 1.e3 
    7878            zy = gphit(ji,jj) * 1.e3 
    79             zrho1 = rau0 + za * EXP(-(zx**2+zy**2)/zlambda**2) 
     79            zrho1 = rho0 + za * EXP(-(zx**2+zy**2)/zlambda**2) 
    8080            pssh(ji,jj) = zP0 * EXP(-(zx**2+zy**2)/zlambda**2)/(zrho1*grav) * ptmask(ji,jj,1) 
    8181         END DO 
     
    8989            DO jk=1,jpk 
    9090               zdt =  pdept(ji,jj,jk)  
    91                zrho1 = rau0 * (1._wp + zn2*zdt/grav) 
     91               zrho1 = rho0 * (1._wp + zn2*zdt/grav) 
    9292               IF (zdt < zH) THEN 
    9393                  zrho1 = zrho1 - zP0 * (1._wp-EXP(zdt-zH)) & 
    9494                          & * EXP(-(zx**2+zy**2)/zlambda**2) / (grav*(zH -1._wp + exp(-zH))); 
    9595               ENDIF 
    96                pts(ji,jj,jk,jp_tem) = (20._wp + (rau0-zrho1) / 0.28_wp) * ptmask(ji,jj,jk) 
     96               pts(ji,jj,jk,jp_tem) = (20._wp + (rho0-zrho1) / 0.28_wp) * ptmask(ji,jj,jk) 
    9797            END DO 
    9898         END DO 
     
    103103      ! 
    104104      ! velocities: 
    105       za = 2._wp * zP0 / (zf0 * rau0 * zlambda**2) 
     105      za = 2._wp * zP0 / (zf0 * rho0 * zlambda**2) 
    106106      DO ji=1, jpim1 
    107107         DO jj=1, jpj 
Note: See TracChangeset for help on using the changeset viewer.