- Timestamp:
- 2016-06-28T11:53:56+02:00 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2016/dev_r6519_HPC_4/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg_ts.F90
r6152 r6748 222 222 SELECT CASE( nn_een_e3f ) !* ff/e3 at F-point 223 223 CASE ( 0 ) ! original formulation (masked averaging of e3t divided by 4) 224 !$OMP PARALLEL DO schedule(static) private(jj, ji) 224 225 DO jj = 1, jpjm1 225 226 DO ji = 1, jpim1 … … 230 231 END DO 231 232 CASE ( 1 ) ! new formulation (masked averaging of e3t divided by the sum of mask) 233 !$OMP PARALLEL DO schedule(static) private(jj, ji) 232 234 DO jj = 1, jpjm1 233 235 DO ji = 1, jpim1 … … 243 245 ! 244 246 ftne(1,:) = 0._wp ; ftnw(1,:) = 0._wp ; ftse(1,:) = 0._wp ; ftsw(1,:) = 0._wp 247 248 !$OMP PARALLEL DO schedule(static) private(jj, ji) 245 249 DO jj = 2, jpj 246 250 DO ji = 2, jpi … … 253 257 ! 254 258 ELSE !== all other schemes (ENE, ENS, MIX) 259 !$OMP PARALLEL WORKSHARE 255 260 zwz(:,:) = 0._wp 256 261 zhf(:,:) = 0._wp 262 !$OMP END PARALLEL WORKSHARE 257 263 IF ( .not. ln_sco ) THEN 258 264 … … 269 275 END IF 270 276 277 !$OMP PARALLEL DO schedule(static) private(jj, ji) 271 278 DO jj = 1, jpjm1 272 zhf(:,jj) = zhf(:,jj) * (1._wp- umask(:,jj,1) * umask(:,jj+1,1)) 279 DO ji = 1, jpi 280 zhf(ji,jj) = zhf(ji,jj) * (1._wp- umask(ji,jj,1) * umask(ji,jj+1,1)) 281 END DO 273 282 END DO 274 283 275 284 DO jk = 1, jpkm1 285 !$OMP PARALLEL DO schedule(static) private(jj, ji) 276 286 DO jj = 1, jpjm1 277 zhf(:,jj) = zhf(:,jj) + e3f_n(:,jj,jk) * umask(:,jj,jk) * umask(:,jj+1,jk) 287 DO ji = 1, jpi 288 zhf(ji,jj) = zhf(ji,jj) + e3f_n(ji,jj,jk) * umask(ji,jj,jk) * umask(ji,jj+1,jk) 289 END DO 278 290 END DO 279 291 END DO 280 292 CALL lbc_lnk( zhf, 'F', 1._wp ) 281 293 ! JC: TBC. hf should be greater than 0 294 !$OMP PARALLEL DO schedule(static) private(jj, ji) 282 295 DO jj = 1, jpj 283 296 DO ji = 1, jpi … … 285 298 END DO 286 299 END DO 300 !$OMP PARALLEL WORKSHARE 287 301 zwz(:,:) = ff(:,:) * zwz(:,:) 302 !$OMP END PARALLEL WORKSHARE 288 303 ENDIF 289 304 ENDIF … … 303 318 ! !* e3*d/dt(Ua) (Vertically integrated) 304 319 ! ! -------------------------------------------------- 320 !$OMP PARALLEL WORKSHARE 305 321 zu_frc(:,:) = 0._wp 306 322 zv_frc(:,:) = 0._wp 323 !$OMP END PARALLEL WORKSHARE 307 324 ! 308 325 DO jk = 1, jpkm1 309 zu_frc(:,:) = zu_frc(:,:) + e3u_n(:,:,jk) * ua(:,:,jk) * umask(:,:,jk) 310 zv_frc(:,:) = zv_frc(:,:) + e3v_n(:,:,jk) * va(:,:,jk) * vmask(:,:,jk) 326 !$OMP PARALLEL DO schedule(static) private(jj,ji) 327 DO jj=1,jpj 328 DO ji=1,jpi 329 zu_frc(ji,jj) = zu_frc(ji,jj) + e3u_n(ji,jj,jk) * ua(ji,jj,jk) * umask(ji,jj,jk) 330 zv_frc(ji,jj) = zv_frc(ji,jj) + e3v_n(ji,jj,jk) * va(ji,jj,jk) * vmask(ji,jj,jk) 331 END DO 332 END DO 311 333 END DO 312 334 ! 335 !$OMP PARALLEL WORKSHARE 313 336 zu_frc(:,:) = zu_frc(:,:) * r1_hu_n(:,:) 314 337 zv_frc(:,:) = zv_frc(:,:) * r1_hv_n(:,:) 338 !$OMP END PARALLEL WORKSHARE 315 339 ! 316 340 ! 317 341 ! !* baroclinic momentum trend (remove the vertical mean trend) 342 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 318 343 DO jk = 1, jpkm1 ! ----------------------------------------------------------- 319 344 DO jj = 2, jpjm1 … … 326 351 ! !* barotropic Coriolis trends (vorticity scheme dependent) 327 352 ! ! -------------------------------------------------------- 353 !$OMP PARALLEL WORKSHARE 328 354 zwx(:,:) = un_b(:,:) * hu_n(:,:) * e2u(:,:) ! now fluxes 329 355 zwy(:,:) = vn_b(:,:) * hv_n(:,:) * e1v(:,:) 356 !$OMP END PARALLEL WORKSHARE 330 357 ! 331 358 IF( ln_dynvor_ene .OR. ln_dynvor_mix ) THEN ! energy conserving or mixed scheme 359 !$OMP PARALLEL DO schedule(static) private(jj,ji,zy1,zy2,zx1,zx2) 332 360 DO jj = 2, jpjm1 333 361 DO ji = fs_2, fs_jpim1 ! vector opt. … … 343 371 ! 344 372 ELSEIF ( ln_dynvor_ens ) THEN ! enstrophy conserving scheme 373 !$OMP PARALLEL DO schedule(static) private(jj,ji,zy1,zx1) 345 374 DO jj = 2, jpjm1 346 375 DO ji = fs_2, fs_jpim1 ! vector opt. … … 355 384 ! 356 385 ELSEIF ( ln_dynvor_een ) THEN ! enstrophy and energy conserving scheme 386 !$OMP PARALLEL DO schedule(static) private(jj,ji) 357 387 DO jj = 2, jpjm1 358 388 DO ji = fs_2, fs_jpim1 ! vector opt. … … 376 406 wduflt1(:,:) = 1.0_wp 377 407 wdvflt1(:,:) = 1.0_wp 408 !$OMP PARALLEL DO schedule(static) private(jj,ji,ll_tmp1,ll_tmp2) 378 409 DO jj = 2, jpjm1 379 410 DO ji = 2, jpim1 … … 415 446 CALL lbc_lnk( zcpx, 'U', 1._wp ) ; CALL lbc_lnk( zcpy, 'V', 1._wp ) 416 447 448 !$OMP PARALLEL DO schedule(static) private(jj,ji) 417 449 DO jj = 2, jpjm1 418 450 DO ji = 2, jpim1 … … 426 458 ELSE 427 459 460 !$OMP PARALLEL DO schedule(static) private(jj,ji) 428 461 DO jj = 2, jpjm1 429 462 DO ji = fs_2, fs_jpim1 ! vector opt. … … 436 469 ENDIF 437 470 471 !$OMP PARALLEL DO schedule(static) private(jj,ji) 438 472 DO jj = 2, jpjm1 ! Remove coriolis term (and possibly spg) from barotropic trend 439 473 DO ji = fs_2, fs_jpim1 … … 445 479 ! ! Add bottom stress contribution from baroclinic velocities: 446 480 IF (ln_bt_fw) THEN 481 !$OMP PARALLEL DO schedule(static) private(jj,ji,ikbu,ikbv) 447 482 DO jj = 2, jpjm1 448 483 DO ji = fs_2, fs_jpim1 ! vector opt. … … 454 489 END DO 455 490 ELSE 491 !$OMP PARALLEL DO schedule(static) private(jj,ji,ikbu,ikbv) 456 492 DO jj = 2, jpjm1 457 493 DO ji = fs_2, fs_jpim1 ! vector opt. … … 475 511 ! ! Add top stress contribution from baroclinic velocities: 476 512 IF (ln_bt_fw) THEN 513 !$OMP PARALLEL DO schedule(static) private(jj,ji,ikbu,ikbv) 477 514 DO jj = 2, jpjm1 478 515 DO ji = fs_2, fs_jpim1 ! vector opt. … … 484 521 END DO 485 522 ELSE 523 !$OMP PARALLEL DO schedule(static) private(jj,ji,ikbu,ikbv) 486 524 DO jj = 2, jpjm1 487 525 DO ji = fs_2, fs_jpim1 ! vector opt. … … 495 533 ! 496 534 ! Note that the "unclipped" top friction parameter is used even with explicit drag 535 !$OMP PARALLEL WORKSHARE 497 536 zu_frc(:,:) = zu_frc(:,:) + r1_hu_n(:,:) * tfrua(:,:) * zwx(:,:) 498 537 zv_frc(:,:) = zv_frc(:,:) + r1_hv_n(:,:) * tfrva(:,:) * zwy(:,:) 538 !$OMP END PARALLEL WORKSHARE 499 539 ! 500 540 IF (ln_bt_fw) THEN ! Add wind forcing 541 !$OMP PARALLEL WORKSHARE 501 542 zu_frc(:,:) = zu_frc(:,:) + zraur * utau(:,:) * r1_hu_n(:,:) 502 543 zv_frc(:,:) = zv_frc(:,:) + zraur * vtau(:,:) * r1_hv_n(:,:) 544 !$OMP END PARALLEL WORKSHARE 503 545 ELSE 546 !$OMP PARALLEL WORKSHARE 504 547 zu_frc(:,:) = zu_frc(:,:) + zraur * z1_2 * ( utau_b(:,:) + utau(:,:) ) * r1_hu_n(:,:) 505 548 zv_frc(:,:) = zv_frc(:,:) + zraur * z1_2 * ( vtau_b(:,:) + vtau(:,:) ) * r1_hv_n(:,:) 549 !$OMP END PARALLEL WORKSHARE 506 550 ENDIF 507 551 ! 508 552 IF ( ln_apr_dyn ) THEN ! Add atm pressure forcing 509 553 IF (ln_bt_fw) THEN 554 !$OMP PARALLEL DO schedule(static) private(jj,ji,zu_spg,zv_spg) 510 555 DO jj = 2, jpjm1 511 556 DO ji = fs_2, fs_jpim1 ! vector opt. … … 517 562 END DO 518 563 ELSE 564 !$OMP PARALLEL DO schedule(static) private(jj,ji,zu_spg,zv_spg) 519 565 DO jj = 2, jpjm1 520 566 DO ji = fs_2, fs_jpim1 ! vector opt. … … 559 605 ! Initialize barotropic variables: 560 606 IF( ll_init )THEN 607 !$OMP PARALLEL WORKSHARE 561 608 sshbb_e(:,:) = 0._wp 562 609 ubb_e (:,:) = 0._wp … … 565 612 ub_e (:,:) = 0._wp 566 613 vb_e (:,:) = 0._wp 614 !$OMP END PARALLEL WORKSHARE 567 615 ENDIF 568 616 569 617 IF( ln_wd ) THEN !preserve the positivity of water depth 570 618 !ssh[b,n,a] should have already been processed for this 619 !$OMP PARALLEL WORKSHARE 571 620 sshbb_e(:,:) = MAX(sshbb_e(:,:), rn_wdmin1 - bathy(:,:)) 572 621 sshb_e(:,:) = MAX(sshb_e(:,:) , rn_wdmin1 - bathy(:,:)) 622 !$OMP END PARALLEL WORKSHARE 573 623 ENDIF 574 624 ! 575 625 IF (ln_bt_fw) THEN ! FORWARD integration: start from NOW fields 626 !$OMP PARALLEL WORKSHARE 576 627 sshn_e(:,:) = sshn(:,:) 577 628 un_e (:,:) = un_b(:,:) … … 582 633 hur_e (:,:) = r1_hu_n(:,:) 583 634 hvr_e (:,:) = r1_hv_n(:,:) 635 !$OMP END PARALLEL WORKSHARE 584 636 ELSE ! CENTRED integration: start from BEFORE fields 637 !$OMP PARALLEL WORKSHARE 585 638 sshn_e(:,:) = sshb(:,:) 586 639 un_e (:,:) = ub_b(:,:) … … 591 644 hur_e (:,:) = r1_hu_b(:,:) 592 645 hvr_e (:,:) = r1_hv_b(:,:) 646 !$OMP END PARALLEL WORKSHARE 593 647 ENDIF 594 648 ! … … 596 650 ! 597 651 ! Initialize sums: 652 !$OMP PARALLEL WORKSHARE 598 653 ua_b (:,:) = 0._wp ! After barotropic velocities (or transport if flux form) 599 654 va_b (:,:) = 0._wp … … 601 656 un_adv(:,:) = 0._wp ! Sum for now transport issued from ts loop 602 657 vn_adv(:,:) = 0._wp 658 !$OMP END PARALLEL WORKSHARE 603 659 ! ! ==================== ! 604 660 DO jn = 1, icycle ! sub-time-step loop ! … … 624 680 625 681 ! Extrapolate barotropic velocities at step jit+0.5: 682 !$OMP PARALLEL WORKSHARE 626 683 ua_e(:,:) = za1 * un_e(:,:) + za2 * ub_e(:,:) + za3 * ubb_e(:,:) 627 684 va_e(:,:) = za1 * vn_e(:,:) + za2 * vb_e(:,:) + za3 * vbb_e(:,:) 685 !$OMP END PARALLEL WORKSHARE 628 686 629 687 IF( .NOT.ln_linssh ) THEN !* Update ocean depth (variable volume case only) … … 632 690 zsshp2_e(:,:) = za1 * sshn_e(:,:) + za2 * sshb_e(:,:) + za3 * sshbb_e(:,:) 633 691 ! 692 !$OMP PARALLEL DO schedule(static) private(jj,ji) 634 693 DO jj = 2, jpjm1 ! Sea Surface Height at u- & v-points 635 694 DO ji = 2, fs_jpim1 ! Vector opt. … … 644 703 CALL lbc_lnk_multi( zwx, 'U', 1._wp, zwy, 'V', 1._wp ) 645 704 ! 705 !$OMP PARALLEL WORKSHARE 646 706 zhup2_e (:,:) = hu_0(:,:) + zwx(:,:) ! Ocean depth at U- and V-points 647 707 zhvp2_e (:,:) = hv_0(:,:) + zwy(:,:) 708 !$OMP END PARALLEL WORKSHARE 648 709 IF( ln_wd ) THEN 649 710 zhup2_e(:,:) = MAX(zhup2_e (:,:), rn_wdmin1) … … 651 712 END IF 652 713 ELSE 714 !$OMP PARALLEL WORKSHARE 653 715 zhup2_e (:,:) = hu_n(:,:) 654 716 zhvp2_e (:,:) = hv_n(:,:) 717 !$OMP END PARALLEL WORKSHARE 655 718 ENDIF 656 719 ! !* after ssh … … 659 722 ! considering fluxes below: 660 723 ! 724 !$OMP PARALLEL WORKSHARE 661 725 zwx(:,:) = e2u(:,:) * ua_e(:,:) * zhup2_e(:,:) ! fluxes at jn+0.5 662 726 zwy(:,:) = e1v(:,:) * va_e(:,:) * zhvp2_e(:,:) 727 !$OMP END PARALLEL WORKSHARE 663 728 ! 664 729 #if defined key_agrif … … 691 756 ! Sum over sub-time-steps to compute advective velocities 692 757 za2 = wgtbtp2(jn) 758 !$OMP PARALLEL WORKSHARE 693 759 un_adv(:,:) = un_adv(:,:) + za2 * zwx(:,:) * r1_e2u(:,:) 694 760 vn_adv(:,:) = vn_adv(:,:) + za2 * zwy(:,:) * r1_e1v(:,:) 761 !$OMP END PARALLEL WORKSHARE 695 762 ! 696 763 ! Set next sea level: 764 !$OMP PARALLEL DO schedule(static) private(jj,ji) 697 765 DO jj = 2, jpjm1 698 766 DO ji = fs_2, fs_jpim1 ! vector opt. … … 701 769 END DO 702 770 END DO 771 !$OMP PARALLEL WORKSHARE 703 772 ssha_e(:,:) = ( sshn_e(:,:) - rdtbt * ( zssh_frc(:,:) + zhdiv(:,:) ) ) * ssmask(:,:) 773 !$OMP END PARALLEL WORKSHARE 704 774 IF( ln_wd ) ssha_e(:,:) = MAX(ssha_e(:,:), rn_wdmin1 - bathy(:,:)) 705 775 CALL lbc_lnk( ssha_e, 'T', 1._wp ) … … 715 785 ! Sea Surface Height at u-,v-points (vvl case only) 716 786 IF( .NOT.ln_linssh ) THEN 787 !$OMP PARALLEL DO schedule(static) private(jj,ji) 717 788 DO jj = 2, jpjm1 718 789 DO ji = 2, jpim1 ! NO Vector Opt. … … 752 823 wduflt1(:,:) = 1._wp 753 824 wdvflt1(:,:) = 1._wp 825 !$OMP PARALLEL DO schedule(static) private(jj,ji,ll_tmp1,ll_tmp2) 754 826 DO jj = 2, jpjm1 755 827 DO ji = 2, jpim1 … … 793 865 IF( .NOT.ln_linssh .AND. .NOT.ln_dynadv_vec ) THEN !* Vector form 794 866 ! 867 !$OMP PARALLEL DO schedule(static) private(jj,ji,zx1,zy1) 795 868 DO jj = 2, jpjm1 796 869 DO ji = 2, jpim1 … … 821 894 ! 822 895 IF( ln_dynvor_ene .OR. ln_dynvor_mix ) THEN !== energy conserving or mixed scheme ==! 896 !$OMP PARALLEL DO schedule(static) private(jj,ji,zy1,zy2,zx1,zx2) 823 897 DO jj = 2, jpjm1 824 898 DO ji = fs_2, fs_jpim1 ! vector opt. … … 833 907 ! 834 908 ELSEIF ( ln_dynvor_ens ) THEN !== enstrophy conserving scheme ==! 909 !$OMP PARALLEL DO schedule(static) private(jj,ji,zx1,zy1) 835 910 DO jj = 2, jpjm1 836 911 DO ji = fs_2, fs_jpim1 ! vector opt. … … 845 920 ! 846 921 ELSEIF ( ln_dynvor_een ) THEN !== energy and enstrophy conserving scheme ==! 922 !$OMP PARALLEL DO schedule(static) private(jj,ji) 847 923 DO jj = 2, jpjm1 848 924 DO ji = fs_2, fs_jpim1 ! vector opt. … … 862 938 ! Add tidal astronomical forcing if defined 863 939 IF ( lk_tide.AND.ln_tide_pot ) THEN 940 !$OMP PARALLEL DO schedule(static) private(jj,ji,zu_spg,zv_spg) 864 941 DO jj = 2, jpjm1 865 942 DO ji = fs_2, fs_jpim1 ! vector opt. … … 873 950 ! 874 951 ! Add bottom stresses: 952 !$OMP PARALLEL WORKSHARE 875 953 zu_trd(:,:) = zu_trd(:,:) + bfrua(:,:) * un_e(:,:) * hur_e(:,:) 876 954 zv_trd(:,:) = zv_trd(:,:) + bfrva(:,:) * vn_e(:,:) * hvr_e(:,:) 955 !$OMP END PARALLEL WORKSHARE 877 956 ! 878 957 ! Add top stresses: 958 !$OMP PARALLEL WORKSHARE 879 959 zu_trd(:,:) = zu_trd(:,:) + tfrua(:,:) * un_e(:,:) * hur_e(:,:) 880 960 zv_trd(:,:) = zv_trd(:,:) + tfrva(:,:) * vn_e(:,:) * hvr_e(:,:) 961 !$OMP END PARALLEL WORKSHARE 881 962 ! 882 963 ! Surface pressure trend: 883 964 884 965 IF( ln_wd ) THEN 966 !$OMP PARALLEL DO schedule(static) private(jj,ji,zu_spg,zv_spg) 885 967 DO jj = 2, jpjm1 886 968 DO ji = 2, jpim1 … … 893 975 END DO 894 976 ELSE 977 !$OMP PARALLEL DO schedule(static) private(jj,ji,zu_spg,zv_spg) 895 978 DO jj = 2, jpjm1 896 979 DO ji = fs_2, fs_jpim1 ! vector opt. … … 907 990 ! Set next velocities: 908 991 IF( ln_dynadv_vec .OR. ln_linssh ) THEN !* Vector form 992 !$OMP PARALLEL DO schedule(static) private(jj,ji) 909 993 DO jj = 2, jpjm1 910 994 DO ji = fs_2, fs_jpim1 ! vector opt. … … 924 1008 ! 925 1009 ELSE !* Flux form 1010 !$OMP PARALLEL DO schedule(static) private(jj,ji,zhura,zhvra) 926 1011 DO jj = 2, jpjm1 927 1012 DO ji = fs_2, fs_jpim1 ! vector opt. … … 957 1042 hv_e (:,:) = MAX(hv_0(:,:) + zsshv_a(:,:), rn_wdmin1) 958 1043 ELSE 1044 !$OMP PARALLEL WORKSHARE 959 1045 hu_e (:,:) = hu_0(:,:) + zsshu_a(:,:) 960 1046 hv_e (:,:) = hv_0(:,:) + zsshv_a(:,:) 1047 !$OMP END PARALLEL WORKSHARE 961 1048 END IF 1049 !$OMP PARALLEL WORKSHARE 962 1050 hur_e(:,:) = ssumask(:,:) / ( hu_e(:,:) + 1._wp - ssumask(:,:) ) 963 1051 hvr_e(:,:) = ssvmask(:,:) / ( hv_e(:,:) + 1._wp - ssvmask(:,:) ) 1052 !$OMP END PARALLEL WORKSHARE 964 1053 ! 965 1054 ENDIF … … 976 1065 ! !* Swap 977 1066 ! ! ---- 1067 !$OMP PARALLEL WORKSHARE 978 1068 ubb_e (:,:) = ub_e (:,:) 979 1069 ub_e (:,:) = un_e (:,:) … … 987 1077 sshb_e (:,:) = sshn_e(:,:) 988 1078 sshn_e (:,:) = ssha_e(:,:) 1079 !$OMP END PARALLEL WORKSHARE 989 1080 990 1081 ! !* Sum over whole bt loop … … 992 1083 za1 = wgtbtp1(jn) 993 1084 IF( ln_dynadv_vec .OR. ln_linssh ) THEN ! Sum velocities 1085 !$OMP PARALLEL WORKSHARE 994 1086 ua_b (:,:) = ua_b (:,:) + za1 * ua_e (:,:) 995 1087 va_b (:,:) = va_b (:,:) + za1 * va_e (:,:) 1088 !$OMP END PARALLEL WORKSHARE 996 1089 ELSE ! Sum transports 1090 !$OMP PARALLEL WORKSHARE 997 1091 ua_b (:,:) = ua_b (:,:) + za1 * ua_e (:,:) * hu_e (:,:) 998 1092 va_b (:,:) = va_b (:,:) + za1 * va_e (:,:) * hv_e (:,:) 1093 !$OMP END PARALLEL WORKSHARE 999 1094 ENDIF 1000 1095 ! ! Sum sea level 1096 !$OMP PARALLEL WORKSHARE 1001 1097 ssha(:,:) = ssha(:,:) + za1 * ssha_e(:,:) 1098 !$OMP END PARALLEL WORKSHARE 1002 1099 ! ! ==================== ! 1003 1100 END DO ! end loop ! … … 1008 1105 ! 1009 1106 ! Set advection velocity correction: 1107 !$OMP PARALLEL WORKSHARE 1010 1108 zwx(:,:) = un_adv(:,:) 1011 1109 zwy(:,:) = vn_adv(:,:) 1110 !$OMP END PARALLEL WORKSHARE 1012 1111 IF( ( kt == nit000 .AND. neuler==0 ) .OR. .NOT.ln_bt_fw ) THEN 1112 !$OMP PARALLEL WORKSHARE 1013 1113 un_adv(:,:) = zwx(:,:) * r1_hu_n(:,:) 1014 1114 vn_adv(:,:) = zwy(:,:) * r1_hv_n(:,:) 1115 !$OMP END PARALLEL WORKSHARE 1015 1116 ELSE 1117 !$OMP PARALLEL WORKSHARE 1016 1118 un_adv(:,:) = z1_2 * ( ub2_b(:,:) + zwx(:,:) ) * r1_hu_n(:,:) 1017 1119 vn_adv(:,:) = z1_2 * ( vb2_b(:,:) + zwy(:,:) ) * r1_hv_n(:,:) 1120 !$OMP END PARALLEL WORKSHARE 1018 1121 END IF 1019 1122 1020 1123 IF( ln_bt_fw ) THEN ! Save integrated transport for next computation 1124 !$OMP PARALLEL WORKSHARE 1021 1125 ub2_b(:,:) = zwx(:,:) 1022 1126 vb2_b(:,:) = zwy(:,:) 1127 !$OMP END PARALLEL WORKSHARE 1023 1128 ENDIF 1024 1129 ! 1025 1130 ! Update barotropic trend: 1026 1131 IF( ln_dynadv_vec .OR. ln_linssh ) THEN 1132 !$OMP PARALLEL DO schedule(static) private(jk) 1027 1133 DO jk=1,jpkm1 1028 1134 ua(:,:,jk) = ua(:,:,jk) + ( ua_b(:,:) - ub_b(:,:) ) * z1_2dt_b … … 1031 1137 ELSE 1032 1138 ! At this stage, ssha has been corrected: compute new depths at velocity points 1139 !$OMP PARALLEL DO schedule(static) private(jj,ji) 1033 1140 DO jj = 1, jpjm1 1034 1141 DO ji = 1, jpim1 ! NO Vector Opt. … … 1043 1150 CALL lbc_lnk_multi( zsshu_a, 'U', 1._wp, zsshv_a, 'V', 1._wp ) ! Boundary conditions 1044 1151 ! 1152 !$OMP PARALLEL DO schedule(static) private(jk) 1045 1153 DO jk=1,jpkm1 1046 1154 ua(:,:,jk) = ua(:,:,jk) + r1_hu_n(:,:) * ( ua_b(:,:) - ub_b(:,:) * hu_b(:,:) ) * z1_2dt_b … … 1048 1156 END DO 1049 1157 ! Save barotropic velocities not transport: 1158 !$OMP PARALLEL WORKSHARE 1050 1159 ua_b(:,:) = ua_b(:,:) / ( hu_0(:,:) + zsshu_a(:,:) + 1._wp - ssumask(:,:) ) 1051 1160 va_b(:,:) = va_b(:,:) / ( hv_0(:,:) + zsshv_a(:,:) + 1._wp - ssvmask(:,:) ) 1052 ENDIF 1053 ! 1161 !$OMP END PARALLEL WORKSHARE 1162 ENDIF 1163 ! 1164 !$OMP PARALLEL DO schedule(static) private(jk) 1054 1165 DO jk = 1, jpkm1 1055 1166 ! Correct velocities: … … 1244 1355 CALL wrk_alloc( jpi,jpj, zcu ) 1245 1356 ! 1357 !$OMP PARALLEL DO schedule(static) private(jj, ji, zxr2, zyr2) 1246 1358 DO jj = 1, jpj 1247 1359 DO ji =1, jpi
Note: See TracChangeset
for help on using the changeset viewer.