Ignore:
Timestamp:
2020-02-28T16:55:11+01:00 (11 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/src/OCE/TRD
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • NEMO/trunk/src/OCE/TRD/trddyn.F90

    r12377 r12489  
    140140                              !                                    ! wind stress trends 
    141141                              ALLOCATE( z2dx(jpi,jpj) , z2dy(jpi,jpj) ) 
    142                               z2dx(:,:) = ( utau_b(:,:) + utau(:,:) ) / ( e3u(:,:,1,Kmm) * rau0 ) 
    143                               z2dy(:,:) = ( vtau_b(:,:) + vtau(:,:) ) / ( e3v(:,:,1,Kmm) * rau0 ) 
     142                              z2dx(:,:) = ( utau_b(:,:) + utau(:,:) ) / ( e3u(:,:,1,Kmm) * rho0 ) 
     143                              z2dy(:,:) = ( vtau_b(:,:) + vtau(:,:) ) / ( e3v(:,:,1,Kmm) * rho0 ) 
    144144                              CALL iom_put( "utrd_tau", z2dx ) 
    145145                              CALL iom_put( "vtrd_tau", z2dy ) 
  • NEMO/trunk/src/OCE/TRD/trdglo.F90

    r12377 r12489  
    7676      INTEGER ::   ji, jj, jk      ! dummy loop indices 
    7777      INTEGER ::   ikbu, ikbv      ! local integers 
    78       REAL(wp)::   zvm, zvt, zvs, z1_2rau0   ! local scalars 
     78      REAL(wp)::   zvm, zvt, zvs, z1_2rho0   ! local scalars 
    7979      REAL(wp), DIMENSION(jpi,jpj)  :: ztswu, ztswv, z2dx, z2dy   ! 2D workspace  
    8080      !!---------------------------------------------------------------------- 
     
    125125            !                  
    126126            IF( ktrd == jpdyn_zdf ) THEN      ! zdf trend: compute separately the surface forcing trend 
    127                z1_2rau0 = 0.5_wp / rau0 
     127               z1_2rho0 = 0.5_wp / rho0 
    128128               DO_2D_10_10 
    129129                  zvt = ( utau_b(ji,jj) + utau(ji,jj) ) * tmask_i(ji+1,jj) * tmask_i(ji,jj) * umask(ji,jj,jk)   & 
    130                      &                                                     * z1_2rau0       * e1e2u(ji,jj) 
     130                     &                                                     * z1_2rho0       * e1e2u(ji,jj) 
    131131                  zvs = ( vtau_b(ji,jj) + vtau(ji,jj) ) * tmask_i(ji,jj+1) * tmask_i(ji,jj) * vmask(ji,jj,jk)   & 
    132                      &                                                     * z1_2rau0       * e1e2v(ji,jj) 
     132                     &                                                     * z1_2rho0       * e1e2v(ji,jj) 
    133133                  umo(jpdyn_tau) = umo(jpdyn_tau) + zvt 
    134134                  vmo(jpdyn_tau) = vmo(jpdyn_tau) + zvs 
     
    141141!               ! 
    142142!               IF( ln_drgimp ) THEN                   ! implicit drag case: compute separately the bottom friction  
    143 !                  z1_2rau0 = 0.5_wp / rau0 
     143!                  z1_2rho0 = 0.5_wp / rho0 
    144144!                  DO jj = 1, jpjm1 
    145145!                     DO ji = 1, jpim1 
     
    203203         CALL eos( ts(:,:,:,:,Kmm), rhd, rhop )       ! now potential density 
    204204 
    205          zcof = 0.5_wp / rau0             ! Density flux at w-point 
     205         zcof = 0.5_wp / rho0             ! Density flux at w-point 
    206206         zkz(:,:,1) = 0._wp 
    207207         DO jk = 2, jpk 
     
    209209         END DO 
    210210          
    211          zcof   = 0.5_wp / rau0           ! Density flux at u and v-points 
     211         zcof   = 0.5_wp / rho0           ! Density flux at u and v-points 
    212212         DO_3D_10_10( 1, jpkm1 ) 
    213213            zkx(ji,jj,jk) = zcof * e2u(ji,jj) * e3u(ji,jj,jk,Kmm) * uu(ji,jj,jk,Kmm) * ( rhop(ji,jj,jk) + rhop(ji+1,jj,jk) ) 
     
    347347 9546    FORMAT(' 0 < horizontal diffusion                                  : ', e20.13) 
    348348 9547    FORMAT(' 0 < vertical diffusion                                    : ', e20.13) 
    349  9548    FORMAT(' pressure gradient u2 = - 1/rau0 u.dz(rhop)                : ', e20.13, '  u.dz(rhop) =', e20.13) 
     349 9548    FORMAT(' pressure gradient u2 = - 1/rho0 u.dz(rhop)                : ', e20.13, '  u.dz(rhop) =', e20.13) 
    350350         ! 
    351351         ! Save potential to kinetic energy conversion for next time step 
  • NEMO/trunk/src/OCE/TRD/trdken.F90

    r12377 r12489  
    102102      zke(:,1, : ) = 0._wp 
    103103      DO_3D_01_01( 1, jpkm1 ) 
    104          zke(ji,jj,jk) = 0.5_wp * rau0 *( uu(ji  ,jj,jk,Kmm) * putrd(ji  ,jj,jk) * bu(ji  ,jj,jk)  & 
     104         zke(ji,jj,jk) = 0.5_wp * rho0 *( uu(ji  ,jj,jk,Kmm) * putrd(ji  ,jj,jk) * bu(ji  ,jj,jk)  & 
    105105            &                           + uu(ji-1,jj,jk,Kmm) * putrd(ji-1,jj,jk) * bu(ji-1,jj,jk)  & 
    106106            &                           + vv(ji,jj  ,jk,Kmm) * pvtrd(ji,jj  ,jk) * bv(ji,jj  ,jk)  & 
     
    123123                           zke2d(1,:) = 0._wp   ;   zke2d(:,1) = 0._wp 
    124124                           DO_2D_01_01 
    125                               zke2d(ji,jj) = r1_rau0 * 0.5_wp * (   z2dx(ji,jj) + z2dx(ji-1,jj)   & 
     125                              zke2d(ji,jj) = r1_rho0 * 0.5_wp * (   z2dx(ji,jj) + z2dx(ji-1,jj)   & 
    126126                              &                                   + z2dy(ji,jj) + z2dy(ji,jj-1)   ) * r1_bt(ji,jj,1) 
    127127                           END_2D 
     
    207207      ! 
    208208      ! Local constant initialization  
    209       zcoef = - rau0 * grav * 0.5_wp       
     209      zcoef = - rho0 * grav * 0.5_wp       
    210210       
    211211      !  Surface value (also valid in partial step case) 
  • NEMO/trunk/src/OCE/TRD/trdtra.F90

    r12377 r12489  
    237237      !!---------------------------------------------------------------------- 
    238238 
    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 
    242  
    243239      !                   ! 3D output of tracers trends using IOM interface 
    244240      IF( ln_tra_trd )   CALL trd_tra_iom ( ptrdx, ptrdy, ktrd, kt, Kmm ) 
     
    248244 
    249245      !                   ! Potential ENergy trends 
    250       IF( ln_PE_trd  )   CALL trd_pen( ptrdx, ptrdy, ktrd, kt, r2dt, Kmm ) 
     246      IF( ln_PE_trd  )   CALL trd_pen( ptrdx, ptrdy, ktrd, kt, rDt, Kmm ) 
    251247 
    252248      !                   ! Mixed layer trends for active tracers 
     
    281277         CASE ( jptra_atf )        ;   CALL trd_mxl_zint( ptrdx, ptrdy, jpmxl_atf, '3D' )   ! asselin time filter (last trend) 
    282278                                   ! 
    283                                        CALL trd_mxl( kt, r2dt )                             ! trends: Mixed-layer (output) 
     279                                       CALL trd_mxl( kt, rDt )                             ! trends: Mixed-layer (output) 
    284280         END SELECT 
    285281         ! 
  • NEMO/trunk/src/OCE/TRD/trdvor.F90

    r12377 r12489  
    105105         ztswu(:,:) = 0.e0   ;   ztswv(:,:) = 0.e0 
    106106         DO_2D_00_00 
    107             ztswu(ji,jj) = 0.5 * ( utau_b(ji,jj) + utau(ji,jj) ) / ( e3u(ji,jj,1,Kmm) * rau0 ) 
    108             ztswv(ji,jj) = 0.5 * ( vtau_b(ji,jj) + vtau(ji,jj) ) / ( e3v(ji,jj,1,Kmm) * rau0 ) 
     107            ztswu(ji,jj) = 0.5 * ( utau_b(ji,jj) + utau(ji,jj) ) / ( e3u(ji,jj,1,Kmm) * rho0 ) 
     108            ztswv(ji,jj) = 0.5 * ( vtau_b(ji,jj) + vtau(ji,jj) ) / ( e3v(ji,jj,1,Kmm) * rho0 ) 
    109109         END_2D 
    110110         ! 
     
    385385         ! III.1 compute total trend 
    386386         ! ------------------------ 
    387          zmean = 1._wp / (  REAL( nmoydpvor, wp ) * 2._wp * rdt  ) 
     387         zmean = 1._wp / (  REAL( nmoydpvor, wp ) * 2._wp * rn_Dt  ) 
    388388         vor_avrtot(:,:) = (  vor_avr(:,:) - vor_avrbn(:,:) + vor_avrb(:,:) - vor_avrbb(:,:) ) * zmean 
    389389 
     
    504504      ENDIF 
    505505#if defined key_diainstant 
    506       zsto = nn_write*rdt 
     506      zsto = nn_write*rn_Dt 
    507507      clop = "inst("//TRIM(clop)//")" 
    508508#else 
    509       zsto = rdt 
     509      zsto = rn_Dt 
    510510      clop = "ave("//TRIM(clop)//")" 
    511511#endif 
    512       zout = nn_trd*rdt 
     512      zout = nn_trd*rn_Dt 
    513513 
    514514      IF(lwp) WRITE(numout,*) '               netCDF initialization' 
     
    516516      ! II.2 Compute julian date from starting date of the run 
    517517      ! ------------------------ 
    518       CALL ymds2ju( nyear, nmonth, nday, rdt, zjulian ) 
     518      CALL ymds2ju( nyear, nmonth, nday, rn_Dt, zjulian ) 
    519519      zjulian = zjulian - adatrj   !   set calendar origin to the beginning of the experiment 
    520520      IF(lwp) WRITE(numout,*)' '   
     
    528528      IF(lwp) WRITE(numout,*) ' Name of NETCDF file ', clhstnam 
    529529      CALL histbeg( clhstnam, jpi, glamf, jpj, gphif,1, jpi,   &  ! Horizontal grid : glamt and gphit 
    530          &          1, jpj, nit000-1, zjulian, rdt, nh_t, nidvor, domain_id=nidom, snc4chunks=snc4set ) 
     530         &          1, jpj, nit000-1, zjulian, rn_Dt, nh_t, nidvor, domain_id=nidom, snc4chunks=snc4set ) 
    531531      CALL wheneq( jpi*jpj, fmask, 1, 1., ndexvor1, ndimvor1 )    ! surface 
    532532 
Note: See TracChangeset for help on using the changeset viewer.