- Timestamp:
- 2020-09-15T12:56:56+02:00 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2020/temporary_r4_trunk/src/OCE/DYN/dynzdf.F90
r13469 r13470 131 131 va(:,:,jk) = ( va(:,:,jk) - va_b(:,:) ) * vmask(:,:,jk) 132 132 END DO 133 DO_2D _00_00133 DO_2D( 0, 0, 0, 0 ) 134 134 iku = mbku(ji,jj) ! ocean bottom level at u- and v-points 135 135 ikv = mbkv(ji,jj) ! (deepest ocean u- and v-points) … … 140 140 END_2D 141 141 IF( ln_isfcav.OR.ln_drgice_imp ) THEN ! Ocean cavities (ISF) 142 DO_2D _00_00142 DO_2D( 0, 0, 0, 0 ) 143 143 iku = miku(ji,jj) ! top ocean level at u- and v-points 144 144 ikv = mikv(ji,jj) ! (first wet ocean u- and v-points) … … 158 158 SELECT CASE( nldf_dyn ) 159 159 CASE( np_lap_i ) ! rotated lateral mixing: add its vertical mixing (akzu) 160 DO_3D _00_00(1, jpkm1 )160 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 161 161 ze3ua = ( 1._wp - r_vvl ) * e3u_n(ji,jj,jk) + r_vvl * e3u_a(ji,jj,jk) ! after scale factor at U-point 162 162 zzwi = - zdt * ( avm(ji+1,jj,jk ) + avm(ji,jj,jk ) + akzu(ji,jj,jk ) ) & … … 171 171 END_3D 172 172 CASE DEFAULT ! iso-level lateral mixing 173 DO_3D _00_00(1, jpkm1 )173 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 174 174 ze3ua = ( 1._wp - r_vvl ) * e3u_n(ji,jj,jk) + r_vvl * e3u_a(ji,jj,jk) ! after scale factor at U-point 175 175 zzwi = - zdt * ( avm(ji+1,jj,jk ) + avm(ji,jj,jk ) ) / ( ze3ua * e3uw_n(ji,jj,jk ) ) * wumask(ji,jj,jk ) … … 182 182 END_3D 183 183 END SELECT 184 DO_2D _00_00184 DO_2D( 0, 0, 0, 0 ) 185 185 zwi(ji,jj,1) = 0._wp 186 186 ze3ua = ( 1._wp - r_vvl ) * e3u_n(ji,jj,1) + r_vvl * e3u_a(ji,jj,1) … … 193 193 SELECT CASE( nldf_dyn ) 194 194 CASE( np_lap_i ) ! rotated lateral mixing: add its vertical mixing (akzu) 195 DO_3D _00_00(1, jpkm1 )195 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 196 196 ze3ua = ( 1._wp - r_vvl ) * e3u_n(ji,jj,jk) + r_vvl * e3u_a(ji,jj,jk) ! after scale factor at U-point 197 197 zzwi = - zdt * ( avm(ji+1,jj,jk ) + avm(ji,jj,jk ) + akzu(ji,jj,jk ) ) & … … 204 204 END_3D 205 205 CASE DEFAULT ! iso-level lateral mixing 206 DO_3D _00_00(1, jpkm1 )206 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 207 207 ze3ua = ( 1._wp - r_vvl ) * e3u_n(ji,jj,jk) + r_vvl * e3u_a(ji,jj,jk) ! after scale factor at U-point 208 208 zzwi = - zdt * ( avm(ji+1,jj,jk ) + avm(ji,jj,jk ) ) / ( ze3ua * e3uw_n(ji,jj,jk ) ) * wumask(ji,jj,jk ) … … 213 213 END_3D 214 214 END SELECT 215 DO_2D _00_00215 DO_2D( 0, 0, 0, 0 ) 216 216 zwi(ji,jj,1) = 0._wp 217 217 zwd(ji,jj,1) = 1._wp - zws(ji,jj,1) … … 227 227 ! 228 228 IF ( ln_drgimp ) THEN ! implicit bottom friction 229 DO_2D _00_00229 DO_2D( 0, 0, 0, 0 ) 230 230 iku = mbku(ji,jj) ! ocean bottom level at u- and v-points 231 231 ze3ua = ( 1._wp - r_vvl ) * e3u_n(ji,jj,iku) + r_vvl * e3u_a(ji,jj,iku) ! after scale factor at T-point … … 233 233 END_2D 234 234 IF ( ln_isfcav.OR.ln_drgice_imp ) THEN ! top friction (always implicit) 235 DO_2D _00_00235 DO_2D( 0, 0, 0, 0 ) 236 236 !!gm top Cd is masked (=0 outside cavities) no need of test on mik>=2 ==>> it has been suppressed 237 237 iku = miku(ji,jj) ! ocean top level at u- and v-points … … 257 257 !----------------------------------------------------------------------- 258 258 ! 259 DO_3D _00_00(2, jpkm1 )259 DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 260 260 zwd(ji,jj,jk) = zwd(ji,jj,jk) - zwi(ji,jj,jk) * zws(ji,jj,jk-1) / zwd(ji,jj,jk-1) 261 261 END_3D 262 262 ! 263 DO_2D _00_00263 DO_2D( 0, 0, 0, 0 ) 264 264 ze3ua = ( 1._wp - r_vvl ) * e3u_n(ji,jj,1) + r_vvl * e3u_a(ji,jj,1) 265 265 ua(ji,jj,1) = ua(ji,jj,1) + r2dt * 0.5_wp * ( utau_b(ji,jj) + utau(ji,jj) ) & 266 266 & / ( ze3ua * rau0 ) * umask(ji,jj,1) 267 267 END_2D 268 DO_3D _00_00(2, jpkm1 )268 DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 269 269 ua(ji,jj,jk) = ua(ji,jj,jk) - zwi(ji,jj,jk) / zwd(ji,jj,jk-1) * ua(ji,jj,jk-1) 270 270 END_3D 271 271 ! 272 DO_2D _00_00272 DO_2D( 0, 0, 0, 0 ) 273 273 ua(ji,jj,jpkm1) = ua(ji,jj,jpkm1) / zwd(ji,jj,jpkm1) 274 274 END_2D 275 DO_3D _00_00(jpk-2, 1, -1 )275 DO_3D( 0, 0, 0, 0, jpk-2, 1, -1 ) 276 276 ua(ji,jj,jk) = ( ua(ji,jj,jk) - zws(ji,jj,jk) * ua(ji,jj,jk+1) ) / zwd(ji,jj,jk) 277 277 END_3D … … 284 284 SELECT CASE( nldf_dyn ) 285 285 CASE( np_lap_i ) ! rotated lateral mixing: add its vertical mixing (akzv) 286 DO_3D _00_00(1, jpkm1 )286 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 287 287 ze3va = ( 1._wp - r_vvl ) * e3v_n(ji,jj,jk) + r_vvl * e3v_a(ji,jj,jk) ! after scale factor at V-point 288 288 zzwi = - zdt * ( avm(ji,jj+1,jk ) + avm(ji,jj,jk ) + akzv(ji,jj,jk ) ) & … … 297 297 END_3D 298 298 CASE DEFAULT ! iso-level lateral mixing 299 DO_3D _00_00(1, jpkm1 )299 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 300 300 ze3va = ( 1._wp - r_vvl ) * e3v_n(ji,jj,jk) + r_vvl * e3v_a(ji,jj,jk) ! after scale factor at V-point 301 301 zzwi = - zdt * ( avm(ji,jj+1,jk ) + avm(ji,jj,jk ) ) / ( ze3va * e3vw_n(ji,jj,jk ) ) * wvmask(ji,jj,jk ) … … 308 308 END_3D 309 309 END SELECT 310 DO_2D _00_00310 DO_2D( 0, 0, 0, 0 ) 311 311 zwi(ji,jj,1) = 0._wp 312 312 ze3va = ( 1._wp - r_vvl ) * e3v_n(ji,jj,1) + r_vvl * e3v_a(ji,jj,1) … … 319 319 SELECT CASE( nldf_dyn ) 320 320 CASE( np_lap_i ) ! rotated lateral mixing: add its vertical mixing (akzu) 321 DO_3D _00_00(1, jpkm1 )321 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 322 322 ze3va = ( 1._wp - r_vvl ) * e3v_n(ji,jj,jk) + r_vvl * e3v_a(ji,jj,jk) ! after scale factor at V-point 323 323 zzwi = - zdt * ( avm(ji,jj+1,jk ) + avm(ji,jj,jk ) + akzv(ji,jj,jk ) ) & … … 330 330 END_3D 331 331 CASE DEFAULT ! iso-level lateral mixing 332 DO_3D _00_00(1, jpkm1 )332 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 333 333 ze3va = ( 1._wp - r_vvl ) * e3v_n(ji,jj,jk) + r_vvl * e3v_a(ji,jj,jk) ! after scale factor at V-point 334 334 zzwi = - zdt * ( avm(ji,jj+1,jk ) + avm(ji,jj,jk ) ) / ( ze3va * e3vw_n(ji,jj,jk ) ) * wvmask(ji,jj,jk ) … … 339 339 END_3D 340 340 END SELECT 341 DO_2D _00_00341 DO_2D( 0, 0, 0, 0 ) 342 342 zwi(ji,jj,1) = 0._wp 343 343 zwd(ji,jj,1) = 1._wp - zws(ji,jj,1) … … 352 352 ! 353 353 IF( ln_drgimp ) THEN 354 DO_2D _00_00354 DO_2D( 0, 0, 0, 0 ) 355 355 ikv = mbkv(ji,jj) ! (deepest ocean u- and v-points) 356 356 ze3va = ( 1._wp - r_vvl ) * e3v_n(ji,jj,ikv) + r_vvl * e3v_a(ji,jj,ikv) ! after scale factor at T-point … … 358 358 END_2D 359 359 IF ( ln_isfcav.OR.ln_drgice_imp ) THEN 360 DO_2D _00_00360 DO_2D( 0, 0, 0, 0 ) 361 361 ikv = mikv(ji,jj) ! (first wet ocean u- and v-points) 362 362 ze3va = ( 1._wp - r_vvl ) * e3v_n(ji,jj,ikv) + r_vvl * e3v_a(ji,jj,ikv) ! after scale factor at T-point … … 381 381 !----------------------------------------------------------------------- 382 382 ! 383 DO_3D _00_00(2, jpkm1 )383 DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 384 384 zwd(ji,jj,jk) = zwd(ji,jj,jk) - zwi(ji,jj,jk) * zws(ji,jj,jk-1) / zwd(ji,jj,jk-1) 385 385 END_3D 386 386 ! 387 DO_2D _00_00387 DO_2D( 0, 0, 0, 0 ) 388 388 ze3va = ( 1._wp - r_vvl ) * e3v_n(ji,jj,1) + r_vvl * e3v_a(ji,jj,1) 389 389 va(ji,jj,1) = va(ji,jj,1) + r2dt * 0.5_wp * ( vtau_b(ji,jj) + vtau(ji,jj) ) & 390 390 & / ( ze3va * rau0 ) * vmask(ji,jj,1) 391 391 END_2D 392 DO_3D _00_00(2, jpkm1 )392 DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 393 393 va(ji,jj,jk) = va(ji,jj,jk) - zwi(ji,jj,jk) / zwd(ji,jj,jk-1) * va(ji,jj,jk-1) 394 394 END_3D 395 395 ! 396 DO_2D _00_00396 DO_2D( 0, 0, 0, 0 ) 397 397 va(ji,jj,jpkm1) = va(ji,jj,jpkm1) / zwd(ji,jj,jpkm1) 398 398 END_2D 399 DO_3D _00_00(jpk-2, 1, -1 )399 DO_3D( 0, 0, 0, 0, jpk-2, 1, -1 ) 400 400 va(ji,jj,jk) = ( va(ji,jj,jk) - zws(ji,jj,jk) * va(ji,jj,jk+1) ) / zwd(ji,jj,jk) 401 401 END_3D
Note: See TracChangeset
for help on using the changeset viewer.