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 12724 for NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/DYN/sshwzv.F90 – NEMO

Ignore:
Timestamp:
2020-04-08T21:37:59+02:00 (4 years ago)
Author:
techene
Message:

branch KERNEL-06 : merge with trunk@12698 #2385 - in duplcated files : changes to comply to the new trunk variables and some loop bug fixes

Location:
NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3

    • Property svn:externals
      •  

        old new  
        33^/utils/build/mk@HEAD         mk 
        44^/utils/tools@HEAD            tools 
        5 ^/vendors/AGRIF/dev_r11615_ENHANCE-04_namelists_as_internalfiles_agrif@HEAD      ext/AGRIF 
         5^/vendors/AGRIF/dev@HEAD      ext/AGRIF 
        66^/vendors/FCM@HEAD            ext/FCM 
        77^/vendors/IOIPSL@HEAD         ext/IOIPSL 
         8 
         9# SETTE 
         10^/utils/CI/sette@HEAD         sette 
  • NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/DYN/sshwzv.F90

    r12680 r12724  
    7777      REAL(wp), DIMENSION(jpi,jpj,jpt), INTENT(inout) ::   pssh           ! sea-surface height 
    7878      ! 
    79       INTEGER  ::   jk            ! dummy loop indice 
    80       REAL(wp) ::   z2dt, zcoef   ! local scalars 
     79      INTEGER  ::   jk      ! dummy loop index 
     80      REAL(wp) ::   zcoef   ! local scalar 
    8181      REAL(wp), DIMENSION(jpi,jpj) ::   zhdiv   ! 2D workspace 
    8282      !!---------------------------------------------------------------------- 
     
    9090      ENDIF 
    9191      ! 
    92       z2dt = 2._wp * rdt                          ! set time step size (Euler/Leapfrog) 
    93       IF( neuler == 0 .AND. kt == nit000 )   z2dt = rdt 
    94       zcoef = 0.5_wp * r1_rau0 
     92      zcoef = 0.5_wp * r1_rho0 
    9593 
    9694      !                                           !------------------------------! 
     
    9896      !                                           !------------------------------! 
    9997      IF(ln_wd_il) THEN 
    100          CALL wad_lmt(pssh(:,:,Kbb), zcoef * (emp_b(:,:) + emp(:,:)), z2dt, Kmm, uu, vv ) 
     98         CALL wad_lmt(pssh(:,:,Kbb), zcoef * (emp_b(:,:) + emp(:,:)), rDt, Kmm, uu, vv ) 
    10199      ENDIF 
    102100 
     
    111109      ! compute the vertical velocity which can be used to compute the non-linear terms of the momentum equations. 
    112110      ! 
    113       pssh(:,:,Kaa) = (  pssh(:,:,Kbb) - z2dt * ( zcoef * ( emp_b(:,:) + emp(:,:) ) + zhdiv(:,:) )  ) * ssmask(:,:) 
     111      pssh(:,:,Kaa) = (  pssh(:,:,Kbb) - rDt * ( zcoef * ( emp_b(:,:) + emp(:,:) ) + zhdiv(:,:) )  ) * ssmask(:,:) 
    114112      ! 
    115113#if defined key_agrif 
     
    155153      ! 
    156154      INTEGER  ::   ji, jj, jk   ! dummy loop indices 
    157       REAL(wp) ::   z1_2dt       ! local scalars 
    158155      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) ::   zhdiv 
    159156      !!---------------------------------------------------------------------- 
     
    168165         pww(:,:,jpk) = 0._wp           ! bottom boundary condition: w=0 (set once for all) 
    169166      ENDIF 
    170       ! 
    171       z1_2dt = 1. / ( 2. * rdt )        ! set time step size (Euler/Leapfrog) 
    172       IF( neuler == 0 .AND. kt == nit000 )   z1_2dt = 1. / rdt 
     167      !                                           !------------------------------! 
     168      !                                           !     Now Vertical Velocity    ! 
     169      !                                           !------------------------------! 
    173170      ! 
    174171      !                                               !===============================! 
     
    191188            pww(:,:,jk) = pww(:,:,jk+1) - (   e3t(:,:,jk,Kmm) * hdiv(:,:,jk)   & 
    192189               &                            +                  zhdiv(:,:,jk)   & 
    193                &                            + z1_2dt * ( e3t(:,:,jk,Kaa)       & 
     190               &                            + r1_Dt * ( e3t(:,:,jk,Kaa)       & 
    194191               &                                       - e3t(:,:,jk,Kbb) )   ) * tmask(:,:,jk) 
    195192         END DO 
     
    206203         !                                            !==========================================! 
    207204         DO jk = jpkm1, 1, -1                               ! integrate from the bottom the hor. divergence 
    208             pww(:,:,jk) = pww(:,:,jk+1) - (  e3t(:,:,jk,Kmm) * hdiv(:,:,jk)    & 
    209                &                         + z1_2dt * ( e3t(:,:,jk,Kaa)          & 
    210                &                                    - e3t(:,:,jk,Kbb) )  ) * tmask(:,:,jk) 
     205            pww(:,:,jk) = pww(:,:,jk+1) - (   e3t(:,:,jk,Kmm) * hdiv(:,:,jk)    & 
     206               &                            + r1_Dt * (  e3t(:,:,jk,Kaa)        & 
     207               &                                       - e3t(:,:,jk,Kbb)  )   ) * tmask(:,:,jk) 
    211208         END DO 
    212209      ENDIF 
     
    240237      !! ** Method  : - apply Asselin time fiter to now ssh (excluding the forcing 
    241238      !!              from the filter, see Leclair and Madec 2010) and swap : 
    242       !!                pssh(:,:,Kmm) = pssh(:,:,Kaa) + atfp * ( pssh(:,:,Kbb) -2 pssh(:,:,Kmm) + pssh(:,:,Kaa) ) 
    243       !!                            - atfp * rdt * ( emp_b - emp ) / rau0 
     239      !!                pssh(:,:,Kmm) = pssh(:,:,Kaa) + rn_atfp * ( pssh(:,:,Kbb) -2 pssh(:,:,Kmm) + pssh(:,:,Kaa) ) 
     240      !!                            - rn_atfp * rn_Dt * ( emp_b - emp ) / rho0 
    244241      !! 
    245242      !! ** action  : - pssh(:,:,Kmm) time filtered 
     
    262259      ENDIF 
    263260      !              !==  Euler time-stepping: no filter, just swap  ==! 
    264       IF ( .NOT.( neuler == 0 .AND. kt == nit000 ) ) THEN   ! Only do time filtering for leapfrog timesteps 
     261      IF ( .NOT.( l_1st_euler ) ) THEN   ! Only do time filtering for leapfrog timesteps 
    265262         !                                                  ! filtered "now" field 
    266          pssh(:,:,Kmm) = pssh(:,:,Kmm) + atfp * ( pssh(:,:,Kbb) - 2 * pssh(:,:,Kmm) + pssh(:,:,Kaa) ) 
     263         pssh(:,:,Kmm) = pssh(:,:,Kmm) + rn_atfp * ( pssh(:,:,Kbb) - 2 * pssh(:,:,Kmm) + pssh(:,:,Kaa) ) 
    267264         IF( .NOT.ln_linssh ) THEN                          ! "now" <-- with forcing removed 
    268             zcoef = atfp * rdt * r1_rau0 
     265            zcoef = rn_atfp * rn_Dt * r1_rho0 
    269266            pssh(:,:,Kmm) = pssh(:,:,Kmm) - zcoef * (     emp_b(:,:) - emp   (:,:)   & 
    270267               &                             - rnf_b(:,:)        + rnf   (:,:)       & 
     
    273270 
    274271            ! ice sheet coupling 
    275             IF ( ln_isf .AND. ln_isfcpl .AND. kt == nit000+1) pssh(:,:,Kbb) = pssh(:,:,Kbb) - atfp * rdt * ( risfcpl_ssh(:,:) - 0.0 ) * ssmask(:,:) 
     272            IF ( ln_isf .AND. ln_isfcpl .AND. kt == nit000+1) pssh(:,:,Kbb) = pssh(:,:,Kbb) - rn_atfp * rn_Dt * ( risfcpl_ssh(:,:) - 0.0 ) * ssmask(:,:) 
    276273 
    277274         ENDIF 
     
    325322            z1_e3t = 1._wp / e3t(ji,jj,jk,Kmm) 
    326323            ! 2*rdt and not r2dt (for restartability) 
    327             Cu_adv(ji,jj,jk) =  2._wp * rdt *   & 
     324            Cu_adv(ji,jj,jk) =  2._wp * rDt *   & 
    328325               &  ( ( MAX( ww(ji,jj,jk) , 0._wp ) - MIN( ww(ji,jj,jk+1) , 0._wp ) )            & 
    329326               &  + ( MAX( e2u(ji  ,jj) * e3u(ji  ,jj,jk,Kmm)                                  & 
     
    343340            z1_e3t = 1._wp / e3t(ji,jj,jk,Kmm) 
    344341            ! 2*rdt and not r2dt (for restartability) 
    345             Cu_adv(ji,jj,jk) =   2._wp * rdt *   & 
     342            Cu_adv(ji,jj,jk) =   2._wp * rDt *   & 
    346343               &  ( ( MAX( ww(ji,jj,jk) , 0._wp ) - MIN( ww(ji,jj,jk+1) , 0._wp ) )         & 
    347344               &  + ( MAX( e2u(ji  ,jj)*e3u(ji  ,jj,jk,Kmm)*uu(ji  ,jj,jk,Kmm), 0._wp ) -   & 
Note: See TracChangeset for help on using the changeset viewer.