- Timestamp:
- 2019-11-22T15:29:17+01:00 (4 years ago)
- 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 81 81 CONTAINS 82 82 83 SUBROUTINE zdf_drg( kt, k_mk, pCdmin, pCdmax, pz0, pke0, pCd0, & ! <<== in83 SUBROUTINE zdf_drg( kt, Kmm, k_mk, pCdmin, pCdmax, pz0, pke0, pCd0, & ! <<== in 84 84 & pCdU ) ! ==>> out : bottom drag [m/s] 85 85 !!---------------------------------------------------------------------- … … 99 99 !!---------------------------------------------------------------------- 100 100 INTEGER , INTENT(in ) :: kt ! ocean time-step index 101 INTEGER , INTENT(in ) :: Kmm ! ocean time level index 101 102 ! ! !! !== top or bottom variables ==! 102 103 INTEGER , DIMENSION(:,:), INTENT(in ) :: k_mk ! wet level (1st or last) … … 117 118 DO ji = 2, jpim1 118 119 imk = k_mk(ji,jj) ! ocean bottom level at t-points 119 zut = u n(ji,jj,imk) + un(ji-1,jj,imk) ! 2 x velocity at t-point120 zvt = v n(ji,jj,imk) + vn(ji,jj-1,imk)121 zzz = 0.5_wp * e3t _n(ji,jj,imk) ! altitude below/above (top/bottom) the boundary120 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 122 123 ! 123 124 !!JC: possible WAD implementation should modify line below if layers vanish … … 131 132 DO ji = 2, jpim1 132 133 imk = k_mk(ji,jj) ! ocean bottom level at t-points 133 zut = u n(ji,jj,imk) + un(ji-1,jj,imk) ! 2 x velocity at t-point134 zvt = v n(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) 135 136 ! ! here pCd0 = mask*boost * drag 136 137 pCdU(ji,jj) = - pCd0(ji,jj) * SQRT( 0.25 * ( zut*zut + zvt*zvt ) + pke0 ) … … 144 145 145 146 146 SUBROUTINE zdf_drg_exp( kt, pub, pvb, pua, pva )147 SUBROUTINE zdf_drg_exp( kt, Kmm, pub, pvb, pua, pva ) 147 148 !!---------------------------------------------------------------------- 148 149 !! *** ROUTINE zdf_drg_exp *** … … 157 158 !!--------------------------------------------------------------------- 158 159 INTEGER , INTENT(in ) :: kt ! ocean time-step index 160 INTEGER , INTENT(in ) :: Kmm ! time level indices 159 161 REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(inout) :: pub, pvb ! the two components of the before velocity 160 162 REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(inout) :: pua, pva ! the two components of the velocity tendency … … 182 184 ! 183 185 ! 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) 186 188 ! 187 189 pua(ji,jj,ikbu) = pua(ji,jj,ikbu) + MAX( zCdu , zm1_2dt ) * pub(ji,jj,ikbu) … … 197 199 ! 198 200 ! 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 masked200 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) 201 203 ! 202 204 pua(ji,jj,ikbu) = pua(ji,jj,ikbu) + MAX( zCdu , zm1_2dt ) * pub(ji,jj,ikbu) … … 209 211 ztrdu(:,:,:) = pua(:,:,:) - ztrdu(:,:,:) 210 212 ztrdv(:,:,:) = pva(:,:,:) - ztrdv(:,:,:) 211 CALL trd_dyn( ztrdu(:,:,:), ztrdv(:,:,:), jpdyn_bfr, kt )213 CALL trd_dyn( ztrdu(:,:,:), ztrdv(:,:,:), jpdyn_bfr, kt, Kmm ) 212 214 DEALLOCATE( ztrdu, ztrdv ) 213 215 ENDIF
Note: See TracChangeset
for help on using the changeset viewer.