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 11949 for NEMO/branches/2019/dev_r11943_MERGE_2019/src/OCE/ZDF/zdfdrg.F90 – NEMO

Ignore:
Timestamp:
2019-11-22T15:29:17+01:00 (4 years ago)
Author:
acc
Message:

Merge in changes from 2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps. This just creates a fresh copy of this branch to use as the merge base. See ticket #2341

Location:
NEMO/branches/2019/dev_r11943_MERGE_2019/src
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2019/dev_r11943_MERGE_2019/src

    • Property svn:mergeinfo deleted
  • NEMO/branches/2019/dev_r11943_MERGE_2019/src/OCE/ZDF/zdfdrg.F90

    r11536 r11949  
    8181CONTAINS 
    8282 
    83    SUBROUTINE zdf_drg( kt, k_mk, pCdmin, pCdmax, pz0, pke0, pCd0,   &   ! <<== in  
     83   SUBROUTINE zdf_drg( kt, Kmm, k_mk, pCdmin, pCdmax, pz0, pke0, pCd0,   &   ! <<== in  
    8484      &                                                     pCdU )      ! ==>> out : bottom drag [m/s] 
    8585      !!---------------------------------------------------------------------- 
     
    9999      !!---------------------------------------------------------------------- 
    100100      INTEGER                 , INTENT(in   ) ::   kt       ! ocean time-step index 
     101      INTEGER                 , INTENT(in   ) ::   Kmm      ! ocean time level index 
    101102      !                       !               !!         !==  top or bottom variables  ==! 
    102103      INTEGER , DIMENSION(:,:), INTENT(in   ) ::   k_mk     ! wet level (1st or last) 
     
    117118            DO ji = 2, jpim1 
    118119               imk = k_mk(ji,jj)          ! ocean bottom level at t-points 
    119                zut = un(ji,jj,imk) + un(ji-1,jj,imk)     ! 2 x velocity at t-point 
    120                zvt = vn(ji,jj,imk) + vn(ji,jj-1,imk) 
    121                zzz = 0.5_wp * e3t_n(ji,jj,imk)           ! altitude below/above (top/bottom) the boundary 
     120               zut = uu(ji,jj,imk,Kmm) + uu(ji-1,jj,imk,Kmm)     ! 2 x velocity at t-point 
     121               zvt = vv(ji,jj,imk,Kmm) + vv(ji,jj-1,imk,Kmm) 
     122               zzz = 0.5_wp * e3t(ji,jj,imk,Kmm)           ! altitude below/above (top/bottom) the boundary 
    122123               ! 
    123124!!JC: possible WAD implementation should modify line below if layers vanish 
     
    131132            DO ji = 2, jpim1 
    132133               imk = k_mk(ji,jj)    ! ocean bottom level at t-points 
    133                zut = un(ji,jj,imk) + un(ji-1,jj,imk)     ! 2 x velocity at t-point 
    134                zvt = vn(ji,jj,imk) + vn(ji,jj-1,imk) 
     134               zut = uu(ji,jj,imk,Kmm) + uu(ji-1,jj,imk,Kmm)     ! 2 x velocity at t-point 
     135               zvt = vv(ji,jj,imk,Kmm) + vv(ji,jj-1,imk,Kmm) 
    135136               !                                                           ! here pCd0 = mask*boost * drag 
    136137               pCdU(ji,jj) = - pCd0(ji,jj) * SQRT(  0.25 * ( zut*zut + zvt*zvt ) + pke0  ) 
     
    144145 
    145146 
    146    SUBROUTINE zdf_drg_exp( kt, pub, pvb, pua, pva ) 
     147   SUBROUTINE zdf_drg_exp( kt, Kmm, pub, pvb, pua, pva ) 
    147148      !!---------------------------------------------------------------------- 
    148149      !!                  ***  ROUTINE zdf_drg_exp  *** 
     
    157158      !!--------------------------------------------------------------------- 
    158159      INTEGER                         , INTENT(in   ) ::   kt         ! ocean time-step index 
     160      INTEGER                         , INTENT(in   ) ::   Kmm        ! time level indices 
    159161      REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(inout) ::   pub, pvb   ! the two components of the before velocity 
    160162      REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(inout) ::   pua, pva   ! the two components of the velocity tendency 
     
    182184            ! 
    183185            ! Apply stability criteria on absolute value  : abs(bfr/e3) < 1/(2dt) => bfr/e3 > -1/(2dt) 
    184             zCdu = 0.5*( rCdU_bot(ji+1,jj)+rCdU_bot(ji,jj) ) / e3u_n(ji,jj,ikbu) 
    185             zCdv = 0.5*( rCdU_bot(ji,jj+1)+rCdU_bot(ji,jj) ) / e3v_n(ji,jj,ikbv) 
     186            zCdu = 0.5*( rCdU_bot(ji+1,jj)+rCdU_bot(ji,jj) ) / e3u(ji,jj,ikbu,Kmm) 
     187            zCdv = 0.5*( rCdU_bot(ji,jj+1)+rCdU_bot(ji,jj) ) / e3v(ji,jj,ikbv,Kmm) 
    186188            ! 
    187189            pua(ji,jj,ikbu) = pua(ji,jj,ikbu) + MAX(  zCdu , zm1_2dt  ) * pub(ji,jj,ikbu) 
     
    197199               ! 
    198200               ! Apply stability criteria on absolute value  : abs(bfr/e3) < 1/(2dt) => bfr/e3 > -1/(2dt) 
    199                zCdu = 0.5*( rCdU_top(ji+1,jj)+rCdU_top(ji,jj) ) / e3u_n(ji,jj,ikbu)    ! NB: Cdtop masked 
    200                zCdv = 0.5*( rCdU_top(ji,jj+1)+rCdU_top(ji,jj) ) / e3v_n(ji,jj,ikbv) 
     201               zCdu = 0.5*( rCdU_top(ji+1,jj)+rCdU_top(ji,jj) ) / e3u(ji,jj,ikbu,Kmm)    ! NB: Cdtop masked 
     202               zCdv = 0.5*( rCdU_top(ji,jj+1)+rCdU_top(ji,jj) ) / e3v(ji,jj,ikbv,Kmm) 
    201203               ! 
    202204               pua(ji,jj,ikbu) = pua(ji,jj,ikbu) + MAX(  zCdu , zm1_2dt  ) * pub(ji,jj,ikbu) 
     
    209211         ztrdu(:,:,:) = pua(:,:,:) - ztrdu(:,:,:) 
    210212         ztrdv(:,:,:) = pva(:,:,:) - ztrdv(:,:,:) 
    211          CALL trd_dyn( ztrdu(:,:,:), ztrdv(:,:,:), jpdyn_bfr, kt ) 
     213         CALL trd_dyn( ztrdu(:,:,:), ztrdv(:,:,:), jpdyn_bfr, kt, Kmm ) 
    212214         DEALLOCATE( ztrdu, ztrdv ) 
    213215      ENDIF 
Note: See TracChangeset for help on using the changeset viewer.