Changeset 11411
- Timestamp:
- 2019-08-06T17:08:55+02:00 (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/trunk/src/OCE/TRA/traadv_fct.F90
r11407 r11411 195 195 CALL tridia_solver( zwdia, zwsup, zwinf, zwi, zwi , 0 ) 196 196 ! 197 zt u(:,:,1) = 0._wp; ztu(:,:,jpk) = 0._wp197 ztw(:,:,1) = 0._wp ; ztw(:,:,jpk) = 0._wp ; 198 198 DO jk = 2, jpkm1 ! Interior value ( multiplied by wmask) 199 DO jj = 1, jpj200 DO ji = 1, jpi199 DO jj = 2, jpjm1 200 DO ji = fs_2, fs_jpim1 ! vector opt. 201 201 zfp_wk = wi(ji,jj,jk) + ABS( wi(ji,jj,jk) ) 202 202 zfm_wk = wi(ji,jj,jk) - ABS( wi(ji,jj,jk) ) 203 ztu(ji,jj,jk) = 0.5 * e1e2t(ji,jj) * ( zfp_wk * zwi(ji,jj,jk) + zfm_wk * zwi(ji,jj,jk-1) ) * wmask(ji,jj,jk) 203 ztw(ji,jj,jk) = 0.5 * e1e2t(ji,jj) * ( zfp_wk * zwi(ji,jj,jk) + zfm_wk * zwi(ji,jj,jk-1) ) * wmask(ji,jj,jk) 204 zwz(ji,jj,jk) = zwz(ji,jj,jk) + ztw(ji,jj,jk) ! update vertical fluxes 204 205 END DO 205 206 END DO … … 208 209 DO jj = 2, jpjm1 209 210 DO ji = fs_2, fs_jpim1 ! vector opt. 210 pta(ji,jj,jk,jn) = pta(ji,jj,jk,jn) - ( zt u(ji,jj,jk) - ztu(ji ,jj ,jk+1) ) &211 pta(ji,jj,jk,jn) = pta(ji,jj,jk,jn) - ( ztw(ji,jj,jk) - ztw(ji ,jj ,jk+1) ) & 211 212 & * r1_e1e2t(ji,jj) / e3t_n(ji,jj,jk) 212 213 END DO 213 214 END DO 214 215 END DO 215 zwz(:,:,:) = zwz(:,:,:) + ztu(:,:,:)216 216 ! 217 217 END IF … … 324 324 zwz(:,:,1) = 0._wp ! only ocean surface as interior zwz values have been w-masked 325 325 ENDIF 326 !327 CALL lbc_lnk_multi( 'traadv_fct', zwi, 'T', 1., zwx, 'U', -1. , zwy, 'V', -1., zwz, 'W', 1. )328 !329 326 ! 330 327 IF ( ll_zAimp ) THEN … … 336 333 & + zwy(ji,jj,jk) - zwy(ji ,jj-1,jk ) & 337 334 & + zwz(ji,jj,jk) - zwz(ji ,jj ,jk+1) ) * r1_e1e2t(ji,jj) 338 ztu(ji,jj,jk) = zwi(ji,jj,jk) + p2dt * ztra / e3t_a(ji,jj,jk) * tmask(ji,jj,jk) 339 END DO 340 END DO 341 END DO 342 ! 343 CALL tridia_solver( zwdia, zwsup, zwinf, ztu, ztu , 0 ) 344 ! 345 ztu(:,:,1) = 0._wp 335 ztw(ji,jj,jk) = zwi(ji,jj,jk) + p2dt * ztra / e3t_a(ji,jj,jk) * tmask(ji,jj,jk) 336 END DO 337 END DO 338 END DO 339 ! 340 CALL tridia_solver( zwdia, zwsup, zwinf, ztw, ztw , 0 ) 341 ! 346 342 DO jk = 2, jpkm1 ! Interior value ( multiplied by wmask) 347 343 DO jj = 2, jpjm1 … … 349 345 zfp_wk = wi(ji,jj,jk) + ABS( wi(ji,jj,jk) ) 350 346 zfm_wk = wi(ji,jj,jk) - ABS( wi(ji,jj,jk) ) 351 zwz(ji,jj,jk) = zwz(ji,jj,jk) + 0.5 * e1e2t(ji,jj) * ( zfp_wk * zt u(ji,jj,jk) + zfm_wk * ztu(ji,jj,jk-1) ) * wmask(ji,jj,jk)347 zwz(ji,jj,jk) = zwz(ji,jj,jk) + 0.5 * e1e2t(ji,jj) * ( zfp_wk * ztw(ji,jj,jk) + zfm_wk * ztw(ji,jj,jk-1) ) * wmask(ji,jj,jk) 352 348 END DO 353 349 END DO 354 350 END DO 355 351 END IF 352 ! 353 CALL lbc_lnk_multi( 'traadv_fct', zwi, 'T', 1., zwx, 'U', -1. , zwy, 'V', -1., zwz, 'W', 1. ) 354 ! 356 355 ! !== monotonicity algorithm ==! 357 356 ! … … 374 373 IF ( ll_zAimp ) THEN 375 374 ! 375 ztw(:,:,1) = 0._wp ; ztw(:,:,jpk) = 0._wp 376 376 DO jk = 2, jpkm1 ! Interior value ( multiplied by wmask) 377 377 DO jj = 2, jpjm1 … … 379 379 zfp_wk = wi(ji,jj,jk) + ABS( wi(ji,jj,jk) ) 380 380 zfm_wk = wi(ji,jj,jk) - ABS( wi(ji,jj,jk) ) 381 zwz(ji,jj,jk) = - 0.5 * e1e2t(ji,jj) * ( zfp_wk * zwi(ji,jj,jk) + zfm_wk * zwi(ji,jj,jk-1) ) * wmask(ji,jj,jk) 381 ztw(ji,jj,jk) = - 0.5 * e1e2t(ji,jj) * ( zfp_wk * zwi(ji,jj,jk) + zfm_wk * zwi(ji,jj,jk-1) ) * wmask(ji,jj,jk) 382 zwz(ji,jj,jk) = zwz(ji,jj,jk) + ztw(ji,jj,jk) ! Update vertical fluxes for trend diagnostic 382 383 END DO 383 384 END DO … … 386 387 DO jj = 2, jpjm1 387 388 DO ji = fs_2, fs_jpim1 ! vector opt. 388 pta(ji,jj,jk,jn) = pta(ji,jj,jk,jn) - ( z wz(ji,jj,jk) - zwz(ji ,jj ,jk+1) ) &389 pta(ji,jj,jk,jn) = pta(ji,jj,jk,jn) - ( ztw(ji,jj,jk) - ztw(ji ,jj ,jk+1) ) & 389 390 & * r1_e1e2t(ji,jj) / e3t_n(ji,jj,jk) 390 391 END DO
Note: See TracChangeset
for help on using the changeset viewer.