Changeset 7753 for trunk/NEMOGCM/NEMO/LIM_SRC_3/limadv_umx.F90
- Timestamp:
- 2017-03-03T12:46:59+01:00 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMOGCM/NEMO/LIM_SRC_3/limadv_umx.F90
r7698 r7753 75 75 ! upstream advection with initial mass fluxes & intermediate update 76 76 ! -------------------------------------------------------------------- 77 !$OMP PARALLEL78 !$OMP DO schedule(static) private(jj,ji,zfp_ui,zfm_ui,zfp_vj,zfm_vj)79 77 DO jj = 1, jpjm1 ! upstream tracer flux in the i and j direction 80 78 DO ji = 1, fs_jpim1 ! vector opt. … … 88 86 END DO 89 87 90 !$OMP DO schedule(static) private(jj,ji,ztra)91 88 DO jj = 2, jpjm1 ! total intermediate advective trends 92 89 DO ji = fs_2, fs_jpim1 ! vector opt. … … 98 95 END DO 99 96 END DO 100 !$OMP END PARALLEL101 97 CALL lbc_lnk( zt_ups, 'T', 1. ) ! Lateral boundary conditions (unchanged sign) 102 98 … … 105 101 SELECT CASE( nn_limadv_ord ) 106 102 CASE ( 20 ) ! centered second order 107 !$OMP PARALLEL DO schedule(static) private(jj,ji)108 103 DO jj = 2, jpjm1 109 104 DO ji = fs_2, fs_jpim1 ! vector opt. … … 116 111 CALL macho( kt, nn_limadv_ord, pdt, ptc, puc, pvc, pubox, pvbox, zt_u, zt_v ) 117 112 ! 118 !$OMP PARALLEL DO schedule(static) private(jj,ji)119 113 DO jj = 2, jpjm1 120 114 DO ji = fs_2, fs_jpim1 ! vector opt. … … 128 122 ! antidiffusive flux : high order minus low order 129 123 ! -------------------------------------------------- 130 !$OMP PARALLEL DO schedule(static) private(jj,ji)131 124 DO jj = 2, jpjm1 132 125 DO ji = fs_2, fs_jpim1 ! vector opt. … … 143 136 ! final trend with corrected fluxes 144 137 ! ------------------------------------ 145 !$OMP PARALLEL DO schedule(static) private(jj,ji,ztra)146 138 DO jj = 2, jpjm1 147 139 DO ji = fs_2, fs_jpim1 ! vector opt. … … 195 187 ! 196 188 ! !-- advective form update in zzt --! 197 !$OMP PARALLEL DO schedule(static) private(jj,ji)198 189 DO jj = 2, jpjm1 199 190 DO ji = fs_2, fs_jpim1 ! vector opt. … … 214 205 ! 215 206 ! !-- advective form update in zzt --! 216 !$OMP PARALLEL DO schedule(static) private(jj,ji)217 207 DO jj = 2, jpjm1 218 208 DO ji = fs_2, fs_jpim1 … … 263 253 ! 264 254 ! !-- Laplacian in i-direction --! 265 !$OMP PARALLEL DO schedule(static) private(jj,ji)266 255 DO jj = 2, jpjm1 ! First derivative (gradient) 267 256 DO ji = 1, fs_jpim1 … … 276 265 ! 277 266 ! !-- BiLaplacian in i-direction --! 278 !$OMP PARALLEL DO schedule(static) private(jj,ji)279 267 DO jj = 2, jpjm1 ! Third derivative 280 268 DO ji = 1, fs_jpim1 … … 293 281 CASE( 1 ) !== 1st order central TIM ==! (Eq. 21) 294 282 ! 295 !$OMP PARALLEL DO schedule(static) private(jj,ji)296 283 DO jj = 1, jpj 297 284 DO ji = 1, fs_jpim1 ! vector opt. … … 303 290 CASE( 2 ) !== 2nd order central TIM ==! (Eq. 23) 304 291 ! 305 !$OMP PARALLEL DO schedule(static) private(jj,ji,zcu)306 292 DO jj = 1, jpj 307 293 DO ji = 1, fs_jpim1 ! vector opt. … … 315 301 CASE( 3 ) !== 3rd order central TIM ==! (Eq. 24) 316 302 ! 317 !$OMP PARALLEL DO schedule(static) private(jj,ji,zcu,zdx2)318 303 DO jj = 1, jpj 319 304 DO ji = 1, fs_jpim1 ! vector opt. … … 330 315 CASE( 4 ) !== 4th order central TIM ==! (Eq. 27) 331 316 ! 332 !$OMP PARALLEL DO schedule(static) private(jj,ji,zcu,zdx2)333 317 DO jj = 1, jpj 334 318 DO ji = 1, fs_jpim1 ! vector opt. … … 345 329 CASE( 5 ) !== 5th order central TIM ==! (Eq. 29) 346 330 ! 347 !$OMP PARALLEL DO schedule(static) private(jj,ji,zcu,zdx2,zdx4)348 331 DO jj = 1, jpj 349 332 DO ji = 1, fs_jpim1 ! vector opt. … … 397 380 ! 398 381 ! !-- Laplacian in j-direction --! 399 !$OMP PARALLEL400 !$OMP DO schedule(static) private(jj,ji)401 382 DO jj = 1, jpjm1 ! First derivative (gradient) 402 383 DO ji = fs_2, fs_jpim1 … … 404 385 END DO 405 386 END DO 406 !$OMP DO schedule(static) private(jj,ji)407 387 DO jj = 2, jpjm1 ! Second derivative (Laplacian) 408 388 DO ji = fs_2, fs_jpim1 … … 410 390 END DO 411 391 END DO 412 !$OMP END PARALLEL413 392 CALL lbc_lnk( ztv2, 'T', 1. ) 414 393 ! 415 394 ! !-- BiLaplacian in j-direction --! 416 !$OMP PARALLEL417 !$OMP DO schedule(static) private(jj,ji)418 395 DO jj = 1, jpjm1 ! First derivative 419 396 DO ji = fs_2, fs_jpim1 … … 421 398 END DO 422 399 END DO 423 !$OMP DO schedule(static) private(jj,ji)424 400 DO jj = 2, jpjm1 ! Second derivative 425 401 DO ji = fs_2, fs_jpim1 … … 427 403 END DO 428 404 END DO 429 !$OMP END PARALLEL430 405 CALL lbc_lnk( ztv4, 'T', 1. ) 431 406 ! … … 435 410 CASE( 1 ) !== 1st order central TIM ==! (Eq. 21) 436 411 ! 437 !$OMP PARALLEL DO schedule(static) private(jj,ji)438 412 DO jj = 1, jpjm1 439 413 DO ji = 1, jpi … … 444 418 ! 445 419 CASE( 2 ) !== 2nd order central TIM ==! (Eq. 23) 446 !$OMP PARALLEL DO schedule(static) private(jj,ji,zcv)447 420 DO jj = 1, jpjm1 448 421 DO ji = 1, jpi … … 456 429 CASE( 3 ) !== 3rd order central TIM ==! (Eq. 24) 457 430 ! 458 !$OMP PARALLEL DO schedule(static) private(jj,ji,zcv,zdy2)459 431 DO jj = 1, jpjm1 460 432 DO ji = 1, jpi … … 471 443 CASE( 4 ) !== 4th order central TIM ==! (Eq. 27) 472 444 ! 473 !$OMP PARALLEL DO schedule(static) private(jj,ji,zcv,zdy2)474 445 DO jj = 1, jpjm1 475 446 DO ji = 1, jpi … … 486 457 CASE( 5 ) !== 5th order central TIM ==! (Eq. 29) 487 458 ! 488 !$OMP PARALLEL DO schedule(static) private(jj,ji,zcv,zdy2,zdy4)489 459 DO jj = 1, jpjm1 490 460 DO ji = 1, jpi … … 543 513 544 514 ! clem test 545 !$OMP PARALLEL DO schedule(static) private(jj,ji)546 515 DO jj = 2, jpjm1 547 516 DO ji = fs_2, fs_jpim1 ! vector opt. … … 553 522 554 523 ! Determine ice masks for before and after tracers 555 !$OMP PARALLEL DO schedule(static) private(jj,ji) 556 DO jj = 1, jpj 557 DO ji = 1, jpi 558 IF( pbef(ji,jj) == 0._wp .AND. paft(ji,jj) == 0._wp .AND. zdiv(ji,jj) == 0._wp ) THEN 559 zmsk(ji,jj) = 0._wp 560 ELSE 561 zmsk(ji,jj) = 1._wp * tmask(ji,jj,1) 562 END IF 563 END DO 564 END DO 524 WHERE( pbef(:,:) == 0._wp .AND. paft(:,:) == 0._wp .AND. zdiv(:,:) == 0._wp ) ; zmsk(:,:) = 0._wp 525 ELSEWHERE ; zmsk(:,:) = 1._wp * tmask(:,:,1) 526 END WHERE 565 527 566 528 ! Search local extrema … … 571 533 ! zbdo(:,:) = MIN( pbef(:,:) * tmask(:,:,1) + zbig * ( 1.e0 - tmask(:,:,1) ), & 572 534 ! & paft(:,:) * tmask(:,:,1) + zbig * ( 1.e0 - tmask(:,:,1) ) ) 535 zbup(:,:) = MAX( pbef(:,:) * zmsk(:,:) - zbig * ( 1.e0 - zmsk(:,:) ), & 536 & paft(:,:) * zmsk(:,:) - zbig * ( 1.e0 - zmsk(:,:) ) ) 537 zbdo(:,:) = MIN( pbef(:,:) * zmsk(:,:) + zbig * ( 1.e0 - zmsk(:,:) ), & 538 & paft(:,:) * zmsk(:,:) + zbig * ( 1.e0 - zmsk(:,:) ) ) 573 539 574 540 z1_dt = 1._wp / pdt 575 576 !$OMP PARALLEL577 !$OMP DO schedule(static) private(jj,ji)578 DO jj = 1, jpj579 DO ji = 1, jpi580 zbup(ji,jj) = MAX( pbef(ji,jj) * zmsk(ji,jj) - zbig * ( 1.e0 - zmsk(ji,jj) ), &581 & paft(ji,jj) * zmsk(ji,jj) - zbig * ( 1.e0 - zmsk(ji,jj) ) )582 zbdo(ji,jj) = MIN( pbef(ji,jj) * zmsk(ji,jj) + zbig * ( 1.e0 - zmsk(ji,jj) ), &583 & paft(ji,jj) * zmsk(ji,jj) + zbig * ( 1.e0 - zmsk(ji,jj) ) )584 END DO585 END DO586 587 !$OMP DO schedule(static) private(jj,ji,zup,zdo,zpos,zneg,zbt)588 541 DO jj = 2, jpjm1 589 542 DO ji = fs_2, fs_jpim1 ! vector opt. … … 604 557 END DO 605 558 END DO 606 !$OMP END PARALLEL607 559 CALL lbc_lnk_multi( zbetup, 'T', 1., zbetdo, 'T', 1. ) ! lateral boundary cond. (unchanged sign) 608 560 609 561 ! monotonic flux in the i & j direction (paa & pbb) 610 562 ! ------------------------------------- 611 !$OMP PARALLEL DO schedule(static) private(jj,ji,zau,zbu,zcu,zav,zbv,zcv)612 563 DO jj = 2, jpjm1 613 564 DO ji = fs_2, fs_jpim1 ! vector opt.
Note: See TracChangeset
for help on using the changeset viewer.