- Timestamp:
- 2016-12-19T13:15:59+01:00 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2016/dev_r6519_HPC_4/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg_ts.F90
r7037 r7508 244 244 ! 245 245 !$OMP PARALLEL 246 !$OMP WORKSHARE247 ftne(1,:) = 0._wp ; ftnw(1,:) = 0._wp ; ftse(1,:) = 0._wp ; ftsw(1,:) = 0._wp248 !$OMP END WORKSHARE 249 246 !$OMP DO schedule(static) private(jj) 247 DO jj = 1, jpj 248 ftne(1,jj) = 0._wp ; ftnw(1,jj) = 0._wp ; ftse(1,jj) = 0._wp ; ftsw(1,jj) = 0._wp 249 END DO 250 250 !$OMP DO schedule(static) private(jj, ji) 251 251 DO jj = 2, jpj … … 261 261 ! 262 262 ELSE !== all other schemes (ENE, ENS, MIX) 263 !$OMP PARALLEL WORKSHARE 264 zwz(:,:) = 0._wp 265 zhf(:,:) = 0._wp 266 !$OMP END PARALLEL WORKSHARE 263 !$OMP PARALLEL DO schedule(static) private(jj, ji) 264 DO jj = 1, jpj 265 DO ji = 1, jpi 266 zwz(ji,jj) = 0._wp 267 zhf(ji,jj) = 0._wp 268 END DO 269 END DO 267 270 IF ( .not. ln_sco ) THEN 268 271 … … 276 279 ! zhf(:,:) = gdepw_0(:,:,jk+1) 277 280 ELSE 278 !$OMP PARALLEL WORKSHARE 279 zhf(:,:) = hbatf(:,:) 280 !$OMP END PARALLEL WORKSHARE 281 !$OMP PARALLEL DO schedule(static) private(jj, ji) 282 DO jj = 1, jpj 283 DO ji = 1, jpi 284 zhf(ji,jj) = hbatf(ji,jj) 285 END DO 286 END DO 281 287 END IF 282 288 … … 308 314 END DO 309 315 END DO 310 !$OMP WORKSHARE 311 zwz(:,:) = ff(:,:) * zwz(:,:) 312 !$OMP END WORKSHARE NOWAIT 316 !$OMP DO schedule(static) private(jj, ji) 317 DO jj = 1, jpj 318 DO ji = 1, jpi 319 zwz(ji,jj) = ff(ji,jj) * zwz(ji,jj) 320 END DO 321 END DO 313 322 !$OMP END PARALLEL 314 323 ENDIF … … 330 339 ! ! -------------------------------------------------- 331 340 !$OMP PARALLEL 332 !$OMP WORKSHARE 333 zu_frc(:,:) = 0._wp 334 zv_frc(:,:) = 0._wp 335 !$OMP END WORKSHARE 341 !$OMP DO schedule(static) private(jj, ji) 342 DO jj = 1, jpj 343 DO ji = 1, jpi 344 zu_frc(ji,jj) = 0._wp 345 zv_frc(ji,jj) = 0._wp 346 END DO 347 END DO 336 348 ! 337 349 DO jk = 1, jpkm1 … … 345 357 END DO 346 358 ! 347 !$OMP WORKSHARE 348 zu_frc(:,:) = zu_frc(:,:) * r1_hu_n(:,:) 349 zv_frc(:,:) = zv_frc(:,:) * r1_hv_n(:,:) 350 !$OMP END WORKSHARE 351 ! 359 !$OMP DO schedule(static) private(jj, ji) 360 DO jj = 1, jpj 361 DO ji = 1, jpi 362 zu_frc(ji,jj) = zu_frc(ji,jj) * r1_hu_n(ji,jj) 363 zv_frc(ji,jj) = zv_frc(ji,jj) * r1_hv_n(ji,jj) 364 END DO 365 END DO 352 366 ! 353 367 ! !* baroclinic momentum trend (remove the vertical mean trend) … … 364 378 ! !* barotropic Coriolis trends (vorticity scheme dependent) 365 379 ! ! -------------------------------------------------------- 366 !$OMP WORKSHARE 367 zwx(:,:) = un_b(:,:) * hu_n(:,:) * e2u(:,:) ! now fluxes 368 zwy(:,:) = vn_b(:,:) * hv_n(:,:) * e1v(:,:) 369 !$OMP END WORKSHARE NOWAIT 380 !$OMP DO schedule(static) private(jj, ji) 381 DO jj = 1, jpj 382 DO ji = 1, jpi 383 zwx(ji,jj) = un_b(ji,jj) * hu_n(ji,jj) * e2u(ji,jj) ! now fluxes 384 zwy(ji,jj) = vn_b(ji,jj) * hv_n(ji,jj) * e1v(ji,jj) 385 END DO 386 END DO 370 387 !$OMP END PARALLEL 371 388 ! … … 419 436 IF( ln_wd ) THEN ! Calculating and applying W/D gravity filters 420 437 !$OMP PARALLEL 421 !$OMP WORKSHARE 422 wduflt1(:,:) = 1.0_wp 423 wdvflt1(:,:) = 1.0_wp 424 !$OMP END WORKSHARE 438 !$OMP DO schedule(static) private(jj, ji) 439 DO jj = 1, jpj 440 DO ji = 1, jpi 441 wduflt1(ji,jj) = 1.0_wp 442 wdvflt1(ji,jj) = 1.0_wp 443 END DO 444 END DO 425 445 !$OMP DO schedule(static) private(jj,ji,ll_tmp1,ll_tmp2) 426 446 DO jj = 2, jpjm1 … … 529 549 END DO 530 550 ELSE 531 !$OMP PARALLEL WORKSHARE 532 zu_frc(:,:) = zu_frc(:,:) + r1_hu_n(:,:) * bfrua(:,:) * zwx(:,:) 533 zv_frc(:,:) = zv_frc(:,:) + r1_hv_n(:,:) * bfrva(:,:) * zwy(:,:) 534 !$OMP END PARALLEL WORKSHARE 551 !$OMP PARALLEL DO schedule(static) private(jj,ji) 552 DO jj = 1, jpj 553 DO ji = 1, jpi 554 zu_frc(ji,jj) = zu_frc(ji,jj) + r1_hu_n(ji,jj) * bfrua(ji,jj) * zwx(ji,jj) 555 zv_frc(ji,jj) = zv_frc(ji,jj) + r1_hv_n(ji,jj) * bfrva(ji,jj) * zwy(ji,jj) 556 END DO 557 END DO 535 558 END IF 536 559 ! … … 559 582 ! 560 583 ! Note that the "unclipped" top friction parameter is used even with explicit drag 561 !$OMP PARALLEL WORKSHARE 562 zu_frc(:,:) = zu_frc(:,:) + r1_hu_n(:,:) * tfrua(:,:) * zwx(:,:) 563 zv_frc(:,:) = zv_frc(:,:) + r1_hv_n(:,:) * tfrva(:,:) * zwy(:,:) 564 !$OMP END PARALLEL WORKSHARE 584 !$OMP PARALLEL DO schedule(static) private(jj,ji) 585 DO jj = 1, jpj 586 DO ji = 1, jpi 587 zu_frc(ji,jj) = zu_frc(ji,jj) + r1_hu_n(ji,jj) * tfrua(ji,jj) * zwx(ji,jj) 588 zv_frc(ji,jj) = zv_frc(ji,jj) + r1_hv_n(ji,jj) * tfrva(ji,jj) * zwy(ji,jj) 589 END DO 590 END DO 565 591 ! 566 592 IF (ln_bt_fw) THEN ! Add wind forcing 567 !$OMP PARALLEL WORKSHARE 568 zu_frc(:,:) = zu_frc(:,:) + zraur * utau(:,:) * r1_hu_n(:,:) 569 zv_frc(:,:) = zv_frc(:,:) + zraur * vtau(:,:) * r1_hv_n(:,:) 570 !$OMP END PARALLEL WORKSHARE 593 !$OMP PARALLEL DO schedule(static) private(jj,ji) 594 DO jj = 1, jpj 595 DO ji = 1, jpi 596 zu_frc(ji,jj) = zu_frc(ji,jj) + zraur * utau(ji,jj) * r1_hu_n(ji,jj) 597 zv_frc(ji,jj) = zv_frc(ji,jj) + zraur * vtau(ji,jj) * r1_hv_n(ji,jj) 598 END DO 599 END DO 571 600 ELSE 572 !$OMP PARALLEL WORKSHARE 573 zu_frc(:,:) = zu_frc(:,:) + zraur * z1_2 * ( utau_b(:,:) + utau(:,:) ) * r1_hu_n(:,:) 574 zv_frc(:,:) = zv_frc(:,:) + zraur * z1_2 * ( vtau_b(:,:) + vtau(:,:) ) * r1_hv_n(:,:) 575 !$OMP END PARALLEL WORKSHARE 601 !$OMP PARALLEL DO schedule(static) private(jj,ji) 602 DO jj = 1, jpj 603 DO ji = 1, jpi 604 zu_frc(ji,jj) = zu_frc(ji,jj) + zraur * z1_2 * ( utau_b(ji,jj) + utau(ji,jj) ) * r1_hu_n(ji,jj) 605 zv_frc(ji,jj) = zv_frc(ji,jj) + zraur * z1_2 * ( vtau_b(ji,jj) + vtau(ji,jj) ) * r1_hv_n(ji,jj) 606 END DO 607 END DO 576 608 ENDIF 577 609 ! … … 605 637 ! ! Surface net water flux and rivers 606 638 IF (ln_bt_fw) THEN 607 !$OMP PARALLEL WORKSHARE 608 zssh_frc(:,:) = zraur * ( emp(:,:) - rnf(:,:) + fwfisf(:,:) ) 609 !$OMP END PARALLEL WORKSHARE 639 !$OMP PARALLEL DO schedule(static) private(jj,ji) 640 DO jj = 1, jpj 641 DO ji = 1, jpi 642 zssh_frc(ji,jj) = zraur * ( emp(ji,jj) - rnf(ji,jj) + fwfisf(ji,jj) ) 643 END DO 644 END DO 610 645 ELSE 611 !$OMP PARALLEL WORKSHARE 612 zssh_frc(:,:) = zraur * z1_2 * ( emp(:,:) + emp_b(:,:) - rnf(:,:) - rnf_b(:,:) & 613 & + fwfisf(:,:) + fwfisf_b(:,:) ) 614 !$OMP END PARALLEL WORKSHARE 646 !$OMP PARALLEL DO schedule(static) private(jj,ji) 647 DO jj = 1, jpj 648 DO ji = 1, jpi 649 zssh_frc(ji,jj) = zraur * z1_2 * ( emp(ji,jj) + emp_b(ji,jj) - rnf(ji,jj) - rnf_b(ji,jj) & 650 & + fwfisf(ji,jj) + fwfisf_b(ji,jj) ) 651 END DO 652 END DO 615 653 ENDIF 616 654 #if defined key_asminc 617 655 ! ! Include the IAU weighted SSH increment 618 656 IF( lk_asminc .AND. ln_sshinc .AND. ln_asmiau ) THEN 619 !$OMP PARALLEL WORKSHARE 620 zssh_frc(:,:) = zssh_frc(:,:) - ssh_iau(:,:) 621 !$OMP END PARALLEL WORKSHARE 657 !$OMP PARALLEL DO schedule(static) private(jj,ji) 658 DO jj = 1, jpj 659 DO ji = 1, jpi 660 zssh_frc(ji,jj) = zssh_frc(ji,jj) - ssh_iau(ji,jj) 661 END DO 662 END DO 622 663 ENDIF 623 664 #endif … … 637 678 ! Initialize barotropic variables: 638 679 IF( ll_init )THEN 639 !$OMP PARALLEL WORKSHARE 640 sshbb_e(:,:) = 0._wp 641 ubb_e (:,:) = 0._wp 642 vbb_e (:,:) = 0._wp 643 sshb_e (:,:) = 0._wp 644 ub_e (:,:) = 0._wp 645 vb_e (:,:) = 0._wp 646 !$OMP END PARALLEL WORKSHARE 680 !$OMP PARALLEL DO schedule(static) private(jj,ji) 681 DO jj = 1, jpj 682 DO ji = 1, jpi 683 sshbb_e(ji,jj) = 0._wp 684 ubb_e (ji,jj) = 0._wp 685 vbb_e (ji,jj) = 0._wp 686 sshb_e (ji,jj) = 0._wp 687 ub_e (ji,jj) = 0._wp 688 vb_e (ji,jj) = 0._wp 689 END DO 690 END DO 647 691 ENDIF 648 692 … … 659 703 ! 660 704 IF (ln_bt_fw) THEN ! FORWARD integration: start from NOW fields 661 !$OMP PARALLEL WORKSHARE 662 sshn_e(:,:) = sshn(:,:) 663 un_e (:,:) = un_b(:,:) 664 vn_e (:,:) = vn_b(:,:) 665 ! 666 hu_e (:,:) = hu_n(:,:) 667 hv_e (:,:) = hv_n(:,:) 668 hur_e (:,:) = r1_hu_n(:,:) 669 hvr_e (:,:) = r1_hv_n(:,:) 670 !$OMP END PARALLEL WORKSHARE 705 !$OMP PARALLEL DO schedule(static) private(jj,ji) 706 DO jj = 1, jpj 707 DO ji = 1, jpi 708 sshn_e(ji,jj) = sshn(ji,jj) 709 un_e (ji,jj) = un_b(ji,jj) 710 vn_e (ji,jj) = vn_b(ji,jj) 711 ! 712 hu_e (ji,jj) = hu_n(ji,jj) 713 hv_e (ji,jj) = hv_n(ji,jj) 714 hur_e (ji,jj) = r1_hu_n(ji,jj) 715 hvr_e (ji,jj) = r1_hv_n(ji,jj) 716 END DO 717 END DO 671 718 ELSE ! CENTRED integration: start from BEFORE fields 672 !$OMP PARALLEL WORKSHARE 673 sshn_e(:,:) = sshb(:,:) 674 un_e (:,:) = ub_b(:,:) 675 vn_e (:,:) = vb_b(:,:) 676 ! 677 hu_e (:,:) = hu_b(:,:) 678 hv_e (:,:) = hv_b(:,:) 679 hur_e (:,:) = r1_hu_b(:,:) 680 hvr_e (:,:) = r1_hv_b(:,:) 681 !$OMP END PARALLEL WORKSHARE 719 !$OMP PARALLEL DO schedule(static) private(jj,ji) 720 DO jj = 1, jpj 721 DO ji = 1, jpi 722 sshn_e(ji,jj) = sshb(ji,jj) 723 un_e (ji,jj) = ub_b(ji,jj) 724 vn_e (ji,jj) = vb_b(ji,jj) 725 ! 726 hu_e (ji,jj) = hu_b(ji,jj) 727 hv_e (ji,jj) = hv_b(ji,jj) 728 hur_e (ji,jj) = r1_hu_b(ji,jj) 729 hvr_e (ji,jj) = r1_hv_b(ji,jj) 730 END DO 731 END DO 682 732 ENDIF 683 733 ! … … 685 735 ! 686 736 ! Initialize sums: 687 !$OMP PARALLEL WORKSHARE 688 ua_b (:,:) = 0._wp ! After barotropic velocities (or transport if flux form) 689 va_b (:,:) = 0._wp 690 ssha (:,:) = 0._wp ! Sum for after averaged sea level 691 un_adv(:,:) = 0._wp ! Sum for now transport issued from ts loop 692 vn_adv(:,:) = 0._wp 693 !$OMP END PARALLEL WORKSHARE 737 !$OMP PARALLEL DO schedule(static) private(jj,ji) 738 DO jj = 1, jpj 739 DO ji = 1, jpi 740 ua_b (ji,jj) = 0._wp ! After barotropic velocities (or transport if flux form) 741 va_b (ji,jj) = 0._wp 742 ssha (ji,jj) = 0._wp ! Sum for after averaged sea level 743 un_adv(ji,jj) = 0._wp ! Sum for now transport issued from ts loop 744 vn_adv(ji,jj) = 0._wp 745 END DO 746 END DO 694 747 ! ! ==================== ! 695 748 DO jn = 1, icycle ! sub-time-step loop ! … … 715 768 716 769 ! Extrapolate barotropic velocities at step jit+0.5: 717 !$OMP PARALLEL WORKSHARE 718 ua_e(:,:) = za1 * un_e(:,:) + za2 * ub_e(:,:) + za3 * ubb_e(:,:) 719 va_e(:,:) = za1 * vn_e(:,:) + za2 * vb_e(:,:) + za3 * vbb_e(:,:) 720 !$OMP END PARALLEL WORKSHARE 770 !$OMP PARALLEL DO schedule(static) private(jj,ji) 771 DO jj = 1, jpj 772 DO ji = 1, jpi 773 ua_e(ji,jj) = za1 * un_e(ji,jj) + za2 * ub_e(ji,jj) + za3 * ubb_e(ji,jj) 774 va_e(ji,jj) = za1 * vn_e(ji,jj) + za2 * vb_e(ji,jj) + za3 * vbb_e(ji,jj) 775 END DO 776 END DO 721 777 722 778 IF( .NOT.ln_linssh ) THEN !* Update ocean depth (variable volume case only) … … 724 780 ! Extrapolate Sea Level at step jit+0.5: 725 781 !$OMP PARALLEL 726 !$OMP WORKSHARE 727 zsshp2_e(:,:) = za1 * sshn_e(:,:) + za2 * sshb_e(:,:) + za3 * sshbb_e(:,:) 728 !$OMP END WORKSHARE 782 !$OMP DO schedule(static) private(jj,ji) 783 DO jj = 1, jpj 784 DO ji = 1, jpi 785 zsshp2_e(ji,jj) = za1 * sshn_e(ji,jj) + za2 * sshb_e(ji,jj) + za3 * sshbb_e(ji,jj) 786 END DO 787 END DO 729 788 ! 730 789 !$OMP DO schedule(static) private(jj,ji) … … 743 802 CALL lbc_lnk_multi( zwx, 'U', 1._wp, zwy, 'V', 1._wp ) 744 803 ! 745 !$OMP PARALLEL WORKSHARE 746 zhup2_e (:,:) = hu_0(:,:) + zwx(:,:) ! Ocean depth at U- and V-points 747 zhvp2_e (:,:) = hv_0(:,:) + zwy(:,:) 748 !$OMP END PARALLEL WORKSHARE 804 !$OMP PARALLEL DO schedule(static) private(jj,ji) 805 DO jj = 1, jpj 806 DO ji = 1, jpi 807 zhup2_e (ji,jj) = hu_0(ji,jj) + zwx(ji,jj) ! Ocean depth at U- and V-points 808 zhvp2_e (ji,jj) = hv_0(ji,jj) + zwy(ji,jj) 809 END DO 810 END DO 749 811 IF( ln_wd ) THEN 750 812 !$OMP PARALLEL DO schedule(static) private(jj,ji) 751 DO jj = 1, jpj752 DO ji = 1, jpi ! vector opt.753 zhup2_e(ji,jj) = MAX(zhup2_e (ji,jj), rn_wdmin1)754 zhvp2_e(ji,jj) = MAX(zhvp2_e (ji,jj), rn_wdmin1)755 END DO756 END DO813 DO jj = 1, jpj 814 DO ji = 1, jpi ! vector opt. 815 zhup2_e(ji,jj) = MAX(zhup2_e (ji,jj), rn_wdmin1) 816 zhvp2_e(ji,jj) = MAX(zhvp2_e (ji,jj), rn_wdmin1) 817 END DO 818 END DO 757 819 END IF 758 820 ELSE 759 !$OMP PARALLEL WORKSHARE 760 zhup2_e (:,:) = hu_n(:,:) 761 zhvp2_e (:,:) = hv_n(:,:) 762 !$OMP END PARALLEL WORKSHARE 821 !$OMP PARALLEL DO schedule(static) private(jj,ji) 822 DO jj = 1, jpj 823 DO ji = 1, jpi 824 zhup2_e (ji,jj) = hu_n(ji,jj) 825 zhvp2_e (ji,jj) = hv_n(ji,jj) 826 END DO 827 END DO 763 828 ENDIF 764 829 ! !* after ssh … … 767 832 ! considering fluxes below: 768 833 ! 769 !$OMP PARALLEL WORKSHARE 770 zwx(:,:) = e2u(:,:) * ua_e(:,:) * zhup2_e(:,:) ! fluxes at jn+0.5 771 zwy(:,:) = e1v(:,:) * va_e(:,:) * zhvp2_e(:,:) 772 !$OMP END PARALLEL WORKSHARE 834 !$OMP PARALLEL DO schedule(static) private(jj,ji) 835 DO jj = 1, jpj 836 DO ji = 1, jpi 837 zwx(ji,jj) = e2u(ji,jj) * ua_e(ji,jj) * zhup2_e(ji,jj) ! fluxes at jn+0.5 838 zwy(ji,jj) = e1v(ji,jj) * va_e(ji,jj) * zhvp2_e(ji,jj) 839 END DO 840 END DO 773 841 ! 774 842 #if defined key_agrif … … 802 870 za2 = wgtbtp2(jn) 803 871 !$OMP PARALLEL 804 !$OMP WORKSHARE 805 un_adv(:,:) = un_adv(:,:) + za2 * zwx(:,:) * r1_e2u(:,:) 806 vn_adv(:,:) = vn_adv(:,:) + za2 * zwy(:,:) * r1_e1v(:,:) 807 !$OMP END WORKSHARE NOWAIT 872 !$OMP DO schedule(static) private(jj,ji) 873 DO jj = 1, jpj 874 DO ji = 1, jpi 875 un_adv(ji,jj) = un_adv(ji,jj) + za2 * zwx(ji,jj) * r1_e2u(ji,jj) 876 vn_adv(ji,jj) = vn_adv(ji,jj) + za2 * zwy(ji,jj) * r1_e1v(ji,jj) 877 END DO 878 END DO 879 !$OMP END DO NOWAIT 808 880 ! 809 881 ! Set next sea level: … … 815 887 END DO 816 888 END DO 817 !$OMP WORKSHARE 818 ssha_e(:,:) = ( sshn_e(:,:) - rdtbt * ( zssh_frc(:,:) + zhdiv(:,:) ) ) * ssmask(:,:) 819 !$OMP END WORKSHARE NOWAIT 889 !$OMP DO schedule(static) private(jj,ji) 890 DO jj = 1, jpj 891 DO ji = 1, jpi 892 ssha_e(ji,jj) = ( sshn_e(ji,jj) - rdtbt * ( zssh_frc(ji,jj) + zhdiv(ji,jj) ) ) * ssmask(ji,jj) 893 END DO 894 END DO 895 !$OMP END DO NOWAIT 820 896 !$OMP END PARALLEL 821 897 IF( ln_wd ) THEN … … 872 948 ENDIF 873 949 ! 874 zsshp2_e(:,:) = za0 * ssha_e(:,:) + za1 * sshn_e (:,:) & 875 & + za2 * sshb_e(:,:) + za3 * sshbb_e(:,:) 950 !$OMP PARALLEL DO schedule(static) private(jj,ji) 951 DO jj = 1, jpj 952 DO ji = 1, jpi 953 zsshp2_e(ji,jj) = za0 * ssha_e(ji,jj) + za1 * sshn_e (ji,jj) & 954 & + za2 * sshb_e(ji,jj) + za3 * sshbb_e(ji,jj) 955 END DO 956 END DO 876 957 IF( ln_wd ) THEN ! Calculating and applying W/D gravity filters 877 958 !$OMP PARALLEL 878 !$OMP WORKSHARE 879 wduflt1(:,:) = 1._wp 880 wdvflt1(:,:) = 1._wp 881 !$OMP END WORKSHARE 959 !$OMP DO schedule(static) private(jj,ji) 960 DO jj = 1, jpj 961 DO ji = 1, jpi 962 wduflt1(ji,jj) = 1._wp 963 wdvflt1(ji,jj) = 1._wp 964 END DO 965 END DO 882 966 !$OMP DO schedule(static) private(jj,ji,ll_tmp1,ll_tmp2) 883 967 DO jj = 2, jpjm1 … … 1014 1098 ! 1015 1099 ! Add bottom stresses: 1016 !$OMP PARALLEL WORKSHARE 1017 zu_trd(:,:) = zu_trd(:,:) + bfrua(:,:) * un_e(:,:) * hur_e(:,:) 1018 zv_trd(:,:) = zv_trd(:,:) + bfrva(:,:) * vn_e(:,:) * hvr_e(:,:) 1019 ! 1020 ! Add top stresses: 1021 zu_trd(:,:) = zu_trd(:,:) + tfrua(:,:) * un_e(:,:) * hur_e(:,:) 1022 zv_trd(:,:) = zv_trd(:,:) + tfrva(:,:) * vn_e(:,:) * hvr_e(:,:) 1023 !$OMP END PARALLEL WORKSHARE 1100 !$OMP PARALLEL DO schedule(static) private(jj,ji) 1101 DO jj = 1, jpj 1102 DO ji = 1, jpi 1103 zu_trd(ji,jj) = zu_trd(ji,jj) + bfrua(ji,jj) * un_e(ji,jj) * hur_e(ji,jj) 1104 zv_trd(ji,jj) = zv_trd(ji,jj) + bfrva(ji,jj) * vn_e(ji,jj) * hvr_e(ji,jj) 1105 ! 1106 ! Add top stresses: 1107 zu_trd(ji,jj) = zu_trd(ji,jj) + tfrua(ji,jj) * un_e(ji,jj) * hur_e(ji,jj) 1108 zv_trd(ji,jj) = zv_trd(ji,jj) + tfrva(ji,jj) * vn_e(ji,jj) * hvr_e(ji,jj) 1109 END DO 1110 END DO 1024 1111 ! 1025 1112 ! Surface pressure trend: … … 1109 1196 END DO 1110 1197 ELSE 1111 !$OMP PARALLEL WORKSHARE 1112 hu_e (:,:) = hu_0(:,:) + zsshu_a(:,:) 1113 hv_e (:,:) = hv_0(:,:) + zsshv_a(:,:) 1114 !$OMP END PARALLEL WORKSHARE 1198 !$OMP PARALLEL DO schedule(static) private(jj,ji) 1199 DO jj = 1, jpj 1200 DO ji = 1, jpi 1201 hu_e (ji,jj) = hu_0(ji,jj) + zsshu_a(ji,jj) 1202 hv_e (ji,jj) = hv_0(ji,jj) + zsshv_a(ji,jj) 1203 END DO 1204 END DO 1115 1205 END IF 1116 !$OMP PARALLEL WORKSHARE 1117 hur_e(:,:) = ssumask(:,:) / ( hu_e(:,:) + 1._wp - ssumask(:,:) ) 1118 hvr_e(:,:) = ssvmask(:,:) / ( hv_e(:,:) + 1._wp - ssvmask(:,:) ) 1119 !$OMP END PARALLEL WORKSHARE 1206 !$OMP PARALLEL DO schedule(static) private(jj,ji) 1207 DO jj = 1, jpj 1208 DO ji = 1, jpi 1209 hur_e(ji,jj) = ssumask(ji,jj) / ( hu_e(ji,jj) + 1._wp - ssumask(ji,jj) ) 1210 hvr_e(ji,jj) = ssvmask(ji,jj) / ( hv_e(ji,jj) + 1._wp - ssvmask(ji,jj) ) 1211 END DO 1212 END DO 1120 1213 ! 1121 1214 ENDIF … … 1132 1225 ! !* Swap 1133 1226 ! ! ---- 1134 !$OMP PARALLEL WORKSHARE 1135 ubb_e (:,:) = ub_e (:,:) 1136 ub_e (:,:) = un_e (:,:) 1137 un_e (:,:) = ua_e (:,:) 1138 ! 1139 vbb_e (:,:) = vb_e (:,:) 1140 vb_e (:,:) = vn_e (:,:) 1141 vn_e (:,:) = va_e (:,:) 1142 ! 1143 sshbb_e(:,:) = sshb_e(:,:) 1144 sshb_e (:,:) = sshn_e(:,:) 1145 sshn_e (:,:) = ssha_e(:,:) 1146 !$OMP END PARALLEL WORKSHARE 1227 !$OMP PARALLEL DO schedule(static) private(jj,ji) 1228 DO jj = 1, jpj 1229 DO ji = 1, jpi 1230 ubb_e (ji,jj) = ub_e (ji,jj) 1231 ub_e (ji,jj) = un_e (ji,jj) 1232 un_e (ji,jj) = ua_e (ji,jj) 1233 ! 1234 vbb_e (ji,jj) = vb_e (ji,jj) 1235 vb_e (ji,jj) = vn_e (ji,jj) 1236 vn_e (ji,jj) = va_e (ji,jj) 1237 ! 1238 sshbb_e(ji,jj) = sshb_e(ji,jj) 1239 sshb_e (ji,jj) = sshn_e(ji,jj) 1240 sshn_e (ji,jj) = ssha_e(ji,jj) 1241 END DO 1242 END DO 1147 1243 1148 1244 ! !* Sum over whole bt loop … … 1150 1246 za1 = wgtbtp1(jn) 1151 1247 IF( ln_dynadv_vec .OR. ln_linssh ) THEN ! Sum velocities 1152 !$OMP PARALLEL WORKSHARE 1153 ua_b (:,:) = ua_b (:,:) + za1 * ua_e (:,:) 1154 va_b (:,:) = va_b (:,:) + za1 * va_e (:,:) 1155 !$OMP END PARALLEL WORKSHARE 1248 !$OMP PARALLEL DO schedule(static) private(jj,ji) 1249 DO jj = 1, jpj 1250 DO ji = 1, jpi 1251 ua_b (ji,jj) = ua_b (ji,jj) + za1 * ua_e (ji,jj) 1252 va_b (ji,jj) = va_b (ji,jj) + za1 * va_e (ji,jj) 1253 END DO 1254 END DO 1156 1255 ELSE ! Sum transports 1157 !$OMP PARALLEL WORKSHARE 1158 ua_b (:,:) = ua_b (:,:) + za1 * ua_e (:,:) * hu_e (:,:) 1159 va_b (:,:) = va_b (:,:) + za1 * va_e (:,:) * hv_e (:,:) 1160 !$OMP END PARALLEL WORKSHARE 1256 !$OMP PARALLEL DO schedule(static) private(jj,ji) 1257 DO jj = 1, jpj 1258 DO ji = 1, jpi 1259 ua_b (ji,jj) = ua_b (ji,jj) + za1 * ua_e (ji,jj) * hu_e (ji,jj) 1260 va_b (ji,jj) = va_b (ji,jj) + za1 * va_e (ji,jj) * hv_e (ji,jj) 1261 END DO 1262 END DO 1161 1263 ENDIF 1162 1264 ! ! Sum sea level 1163 !$OMP PARALLEL WORKSHARE 1164 ssha(:,:) = ssha(:,:) + za1 * ssha_e(:,:) 1165 !$OMP END PARALLEL WORKSHARE 1265 !$OMP PARALLEL DO schedule(static) private(jj,ji) 1266 DO jj = 1, jpj 1267 DO ji = 1, jpi 1268 ssha(ji,jj) = ssha(ji,jj) + za1 * ssha_e(ji,jj) 1269 END DO 1270 END DO 1166 1271 ! ! ==================== ! 1167 1272 END DO ! end loop ! … … 1172 1277 ! 1173 1278 ! Set advection velocity correction: 1174 !$OMP PARALLEL WORKSHARE 1175 zwx(:,:) = un_adv(:,:) 1176 zwy(:,:) = vn_adv(:,:) 1177 !$OMP END PARALLEL WORKSHARE 1279 !$OMP PARALLEL DO schedule(static) private(jj,ji) 1280 DO jj = 1, jpj 1281 DO ji = 1, jpi 1282 zwx(ji,jj) = un_adv(ji,jj) 1283 zwy(ji,jj) = vn_adv(ji,jj) 1284 END DO 1285 END DO 1178 1286 IF( ( kt == nit000 .AND. neuler==0 ) .OR. .NOT.ln_bt_fw ) THEN 1179 !$OMP PARALLEL WORKSHARE 1180 un_adv(:,:) = zwx(:,:) * r1_hu_n(:,:) 1181 vn_adv(:,:) = zwy(:,:) * r1_hv_n(:,:) 1182 !$OMP END PARALLEL WORKSHARE 1287 !$OMP PARALLEL DO schedule(static) private(jj,ji) 1288 DO jj = 1, jpj 1289 DO ji = 1, jpi 1290 un_adv(ji,jj) = zwx(ji,jj) * r1_hu_n(ji,jj) 1291 vn_adv(ji,jj) = zwy(ji,jj) * r1_hv_n(ji,jj) 1292 END DO 1293 END DO 1183 1294 ELSE 1184 !$OMP PARALLEL WORKSHARE 1185 un_adv(:,:) = z1_2 * ( ub2_b(:,:) + zwx(:,:) ) * r1_hu_n(:,:) 1186 vn_adv(:,:) = z1_2 * ( vb2_b(:,:) + zwy(:,:) ) * r1_hv_n(:,:) 1187 !$OMP END PARALLEL WORKSHARE 1295 !$OMP PARALLEL DO schedule(static) private(jj,ji) 1296 DO jj = 1, jpj 1297 DO ji = 1, jpi 1298 un_adv(ji,jj) = z1_2 * ( ub2_b(ji,jj) + zwx(ji,jj) ) * r1_hu_n(ji,jj) 1299 vn_adv(ji,jj) = z1_2 * ( vb2_b(ji,jj) + zwy(ji,jj) ) * r1_hv_n(ji,jj) 1300 END DO 1301 END DO 1188 1302 END IF 1189 1303 1190 1304 IF( ln_bt_fw ) THEN ! Save integrated transport for next computation 1191 !$OMP PARALLEL WORKSHARE 1192 ub2_b(:,:) = zwx(:,:) 1193 vb2_b(:,:) = zwy(:,:) 1194 !$OMP END PARALLEL WORKSHARE 1305 !$OMP PARALLEL DO schedule(static) private(jj,ji) 1306 DO jj = 1, jpj 1307 DO ji = 1, jpi 1308 ub2_b(ji,jj) = zwx(ji,jj) 1309 vb2_b(ji,jj) = zwy(ji,jj) 1310 END DO 1311 END DO 1195 1312 ENDIF 1196 1313 ! … … 1225 1342 !$OMP END DO NOWAIT 1226 1343 ! Save barotropic velocities not transport: 1227 !$OMP WORKSHARE 1228 ua_b(:,:) = ua_b(:,:) / ( hu_0(:,:) + zsshu_a(:,:) + 1._wp - ssumask(:,:) ) 1229 va_b(:,:) = va_b(:,:) / ( hv_0(:,:) + zsshv_a(:,:) + 1._wp - ssvmask(:,:) ) 1230 !$OMP END WORKSHARE NOWAIT 1344 !$OMP DO schedule(static) private(jj,ji) 1345 DO jj = 1, jpj 1346 DO ji = 1, jpi 1347 ua_b(ji,jj) = ua_b(ji,jj) / ( hu_0(ji,jj) + zsshu_a(ji,jj) + 1._wp - ssumask(ji,jj) ) 1348 va_b(ji,jj) = va_b(ji,jj) / ( hv_0(ji,jj) + zsshv_a(ji,jj) + 1._wp - ssvmask(ji,jj) ) 1349 END DO 1350 END DO 1231 1351 !$OMP END PARALLEL 1232 1352 ENDIF … … 1249 1369 IF( .NOT.Agrif_Root() .AND. ln_bt_fw ) THEN 1250 1370 IF( Agrif_NbStepint() == 0 ) THEN 1251 !$OMP PARALLEL WORKSHARE 1252 ub2_i_b(:,:) = 0._wp 1253 vb2_i_b(:,:) = 0._wp 1254 !$OMP END PARALLEL WORKSHARE 1371 !$OMP PARALLEL DO schedule(static) private(jj,ji) 1372 DO jj = 1, jpj 1373 DO ji = 1, jpi 1374 ub2_i_b(ji,jj) = 0._wp 1375 vb2_i_b(ji,jj) = 0._wp 1376 END DO 1377 END DO 1255 1378 END IF 1256 1379 ! 1257 1380 za1 = 1._wp / REAL(Agrif_rhot(), wp) 1258 !$OMP PARALLEL WORKSHARE 1259 ub2_i_b(:,:) = ub2_i_b(:,:) + za1 * ub2_b(:,:) 1260 vb2_i_b(:,:) = vb2_i_b(:,:) + za1 * vb2_b(:,:) 1261 !$OMP END PARALLEL WORKSHARE 1381 !$OMP PARALLEL DO schedule(static) private(jj,ji) 1382 DO jj = 1, jpj 1383 DO ji = 1, jpi 1384 ub2_i_b(ji,jj) = ub2_i_b(ji,jj) + za1 * ub2_b(ji,jj) 1385 vb2_i_b(ji,jj) = vb2_i_b(ji,jj) + za1 * vb2_b(ji,jj) 1386 END DO 1387 END DO 1262 1388 ENDIF 1263 1389 #endif
Note: See TracChangeset
for help on using the changeset viewer.