Changeset 13906 for NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src
- Timestamp:
- 2020-11-28T19:03:50+01:00 (4 years ago)
- Location:
- NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src
- Files:
-
- 113 edited
- 2 copied
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/ABL/ablmod.F90
r13295 r13906 529 529 ! !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 530 530 ! 531 #if defined key_mpi3 532 CALL lbc_lnk_nc_multi( 'ablmod', u_abl(:,:,:,nt_a ), 'T', -1._wp, v_abl(:,:,:,nt_a) , 'T', -1._wp ) 533 CALL lbc_lnk_nc_multi( 'ablmod', tq_abl(:,:,:,nt_a,jp_ta), 'T', 1._wp , tq_abl(:,:,:,nt_a,jp_qa), 'T', 1._wp , kfillmode = jpfillnothing ) ! ++++ this should not be needed... 534 #else 531 535 CALL lbc_lnk_multi( 'ablmod', u_abl(:,:,:,nt_a ), 'T', -1._wp, v_abl(:,:,:,nt_a) , 'T', -1._wp ) 532 536 CALL lbc_lnk_multi( 'ablmod', tq_abl(:,:,:,nt_a,jp_ta), 'T', 1._wp , tq_abl(:,:,:,nt_a,jp_qa), 'T', 1._wp , kfillmode = jpfillnothing ) ! ++++ this should not be needed... 537 #endif 533 538 ! 534 539 #if defined key_iomput … … 594 599 END_2D 595 600 ! 601 #if defined key_mpi3 602 CALL lbc_lnk_nc_multi( 'ablmod', zwnd_i(:,:) , 'T', -1.0_wp, zwnd_j(:,:) , 'T', -1.0_wp ) 603 #else 596 604 CALL lbc_lnk_multi( 'ablmod', zwnd_i(:,:) , 'T', -1.0_wp, zwnd_j(:,:) , 'T', -1.0_wp ) 605 #endif 597 606 ! 598 607 ! ... scalar wind ( = | U10m - U_oce | ) at T-point (masked) … … 619 628 END_2D 620 629 ! 630 #if defined key_mpi3 631 CALL lbc_lnk_nc_multi( 'ablmod', ptaui(:,:), 'U', -1.0_wp, ptauj(:,:), 'V', -1.0_wp ) 632 #else 621 633 CALL lbc_lnk_multi( 'ablmod', ptaui(:,:), 'U', -1.0_wp, ptauj(:,:), 'V', -1.0_wp ) 634 #endif 622 635 623 636 CALL iom_put( "taum_oce", ptaum ) … … 639 652 & * ( 0.5_wp * ( v_abl(ji,jj+1,2,nt_a) + v_abl(ji,jj,2,nt_a) ) - pssv_ice(ji,jj) ) 640 653 END_2D 654 #if defined key_mpi3 655 CALL lbc_lnk_nc_multi( 'ablmod', ptaui_ice, 'U', -1.0_wp, ptauj_ice, 'V', -1.0_wp ) 656 #else 641 657 CALL lbc_lnk_multi( 'ablmod', ptaui_ice, 'U', -1.0_wp, ptauj_ice, 'V', -1.0_wp ) 658 #endif 642 659 ! 643 660 IF(sn_cfctl%l_prtctl) CALL prt_ctl( tab2d_1=ptaui_ice , clinfo1=' abl_stp: putaui : ' & … … 658 675 & * ( zztmp2 - pssv_ice(ji,jj) ) 659 676 END_2D 677 #if defined key_mpi3 678 CALL lbc_lnk_nc_multi( 'ablmod', ptaui_ice, 'U', -1.0_wp, ptauj_ice,'V', -1.0_wp ) 679 #else 660 680 CALL lbc_lnk_multi( 'ablmod', ptaui_ice, 'U', -1.0_wp, ptauj_ice,'V', -1.0_wp ) 681 #endif 661 682 ! 662 683 IF(sn_cfctl%l_prtctl) THEN … … 865 886 ! Optional : could add pblh smoothing if pblh is noisy horizontally ... 866 887 IF(ln_smth_pblh) THEN 888 #if defined key_mpi3 889 CALL lbc_lnk_nc_multi( 'ablmod', pblh, 'T', 1.0_wp) !, kfillmode = jpfillnothing) 890 #else 867 891 CALL lbc_lnk( 'ablmod', pblh, 'T', 1.0_wp) !, kfillmode = jpfillnothing) 892 #endif 868 893 CALL smooth_pblh( pblh, msk_abl ) 894 #if defined key_mpi3 895 CALL lbc_lnk_nc_multi( 'ablmod', pblh, 'T', 1.0_wp) !, kfillmode = jpfillnothing) 896 #else 869 897 CALL lbc_lnk( 'ablmod', pblh, 'T', 1.0_wp) !, kfillmode = jpfillnothing) 898 #endif 870 899 ENDIF 871 900 ! !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/ICE/icecor.F90
r13741 r13906 116 116 ENDIF 117 117 END_2D 118 #if defined key_mpi3 119 CALL lbc_lnk_nc_multi( 'icecor', u_ice, 'U', -1.0_wp, v_ice, 'V', -1.0_wp ) 120 #else 118 121 CALL lbc_lnk_multi( 'icecor', u_ice, 'U', -1.0_wp, v_ice, 'V', -1.0_wp ) 122 #endif 119 123 ENDIF 120 124 ! -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/ICE/icedyn.F90
r13553 r13906 161 161 & + e1v(ji,jj) * v_ice(ji,jj) - e1v(ji,jj-1) * v_ice(ji,jj-1) ) * r1_e1e2t(ji,jj) 162 162 END_2D 163 #if defined key_mpi3 164 CALL lbc_lnk_nc_multi( 'icedyn', zdivu_i, 'T', 1.0_wp ) 165 #else 163 166 CALL lbc_lnk( 'icedyn', zdivu_i, 'T', 1.0_wp ) 167 #endif 164 168 ! output 165 169 CALL iom_put( 'icediv' , zdivu_i ) -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/ICE/icedyn_adv_pra.F90
r13741 r13906 115 115 CALL icemax3D( ph_ip, zhip_max) 116 116 CALL icemax3D( zs_i , zsi_max ) 117 #if defined key_mpi3 118 CALL lbc_lnk_nc_multi( 'icedyn_adv_pra', zhi_max, 'T', 1._wp, zhs_max, 'T', 1._wp, zhip_max, 'T', 1._wp, zsi_max, 'T', 1._wp ) 119 #else 117 120 CALL lbc_lnk_multi( 'icedyn_adv_pra', zhi_max, 'T', 1._wp, zhs_max, 'T', 1._wp, zhip_max, 'T', 1._wp, zsi_max, 'T', 1._wp ) 121 #endif 118 122 ! 119 123 ! enthalpies … … 130 134 CALL icemax4D( ze_i , zei_max ) 131 135 CALL icemax4D( ze_s , zes_max ) 136 #if defined key_mpi3 137 CALL lbc_lnk_nc_multi( 'icedyn_adv_pra', zei_max, 'T', 1._wp ) 138 CALL lbc_lnk_nc_multi( 'icedyn_adv_pra', zes_max, 'T', 1._wp ) 139 #else 132 140 CALL lbc_lnk( 'icedyn_adv_pra', zei_max, 'T', 1._wp ) 133 141 CALL lbc_lnk( 'icedyn_adv_pra', zes_max, 'T', 1._wp ) 142 #endif 134 143 ! 135 144 ! … … 317 326 & - ( zudy(ji,jj) - zudy(ji-1,jj) + zvdx(ji,jj) - zvdx(ji,jj-1) ) * r1_e1e2t(ji,jj) * zdt 318 327 END_2D 328 #if defined key_mpi3 329 CALL lbc_lnk_nc_multi( 'icedyn_adv_pra', pato_i, 'T', 1.0_wp ) 330 #else 319 331 CALL lbc_lnk( 'icedyn_adv_pra', pato_i, 'T', 1.0_wp ) 332 #endif 320 333 ! 321 334 ! --- diagnostics --- ! -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/ICE/icedyn_adv_umx.F90
r13741 r13906 119 119 CALL icemax3D( ph_ip, zhip_max) 120 120 CALL icemax3D( zs_i , zsi_max ) 121 #if defined key_mpi3 122 CALL lbc_lnk_nc_multi( 'icedyn_adv_umx', zhi_max, 'T', 1._wp, zhs_max, 'T', 1._wp, zhip_max, 'T', 1._wp, zsi_max, 'T', 1._wp ) 123 #else 121 124 CALL lbc_lnk_multi( 'icedyn_adv_umx', zhi_max, 'T', 1._wp, zhs_max, 'T', 1._wp, zhip_max, 'T', 1._wp, zsi_max, 'T', 1._wp ) 125 #endif 122 126 ! 123 127 ! enthalpies … … 134 138 CALL icemax4D( ze_i , zei_max ) 135 139 CALL icemax4D( ze_s , zes_max ) 140 #if defined key_mpi3 141 CALL lbc_lnk_nc_multi( 'icedyn_adv_umx', zei_max, 'T', 1._wp ) 142 CALL lbc_lnk_nc_multi( 'icedyn_adv_umx', zes_max, 'T', 1._wp ) 143 #else 136 144 CALL lbc_lnk( 'icedyn_adv_umx', zei_max, 'T', 1._wp ) 137 145 CALL lbc_lnk( 'icedyn_adv_umx', zes_max, 'T', 1._wp ) 146 #endif 138 147 ! 139 148 ! … … 376 385 & - ( zudy(ji,jj) - zudy(ji-1,jj) + zvdx(ji,jj) - zvdx(ji,jj-1) ) * r1_e1e2t(ji,jj) * zdt 377 386 END_2D 387 #if defined key_mpi3 388 CALL lbc_lnk_nc_multi( 'icedyn_adv_umx', pato_i, 'T', 1._wp ) 389 #else 378 390 CALL lbc_lnk( 'icedyn_adv_umx', pato_i, 'T', 1._wp ) 391 #endif 379 392 ! 380 393 ! --- diagnostics --- ! … … 519 532 END_2D 520 533 END DO 534 #if defined key_mpi3 535 CALL lbc_lnk_nc_multi( 'icedyn_adv_umx', zt_ups, 'T', 1.0_wp ) 536 #else 521 537 CALL lbc_lnk( 'icedyn_adv_umx', zt_ups, 'T', 1.0_wp ) 538 #endif 522 539 ! 523 540 IF ( np_limiter == 1 ) THEN … … 649 666 END_2D 650 667 END DO 668 #if defined key_mpi3 669 CALL lbc_lnk_nc_multi( 'icedyn_adv_umx', pt_ups, 'T', 1.0_wp ) 670 #else 651 671 CALL lbc_lnk( 'icedyn_adv_umx', pt_ups, 'T', 1.0_wp ) 672 #endif 652 673 653 674 END SUBROUTINE upstream … … 795 816 END_2D 796 817 END DO 818 #if defined key_mpi3 819 CALL lbc_lnk_nc_multi( 'icedyn_adv_umx', zpt, 'T', 1.0_wp ) 820 #else 797 821 CALL lbc_lnk( 'icedyn_adv_umx', zpt, 'T', 1.0_wp ) 822 #endif 798 823 ! 799 824 ! !-- ultimate interpolation of pt at v-point --! … … 822 847 END_2D 823 848 END DO 849 #if defined key_mpi3 850 CALL lbc_lnk_nc_multi( 'icedyn_adv_umx', zpt, 'T', 1.0_wp ) 851 #else 824 852 CALL lbc_lnk( 'icedyn_adv_umx', zpt, 'T', 1.0_wp ) 853 #endif 825 854 ! 826 855 ! !-- ultimate interpolation of pt at u-point --! … … 875 904 END DO 876 905 END DO 906 #if defined key_mpi3 907 CALL lbc_lnk_nc_multi( 'icedyn_adv_umx', ztu2, 'T', 1.0_wp ) 908 #else 877 909 CALL lbc_lnk( 'icedyn_adv_umx', ztu2, 'T', 1.0_wp ) 910 #endif 878 911 ! 879 912 ! !-- BiLaplacian in i-direction --! … … 889 922 END DO 890 923 END DO 924 #if defined key_mpi3 925 CALL lbc_lnk_nc_multi( 'icedyn_adv_umx', ztu4, 'T', 1.0_wp ) 926 #else 891 927 CALL lbc_lnk( 'icedyn_adv_umx', ztu4, 'T', 1.0_wp ) 928 #endif 892 929 ! 893 930 ! … … 1015 1052 END_2D 1016 1053 END DO 1054 #if defined key_mpi3 1055 CALL lbc_lnk_nc_multi( 'icedyn_adv_umx', ztv2, 'T', 1.0_wp ) 1056 #else 1017 1057 CALL lbc_lnk( 'icedyn_adv_umx', ztv2, 'T', 1.0_wp ) 1058 #endif 1018 1059 ! 1019 1060 ! !-- BiLaplacian in j-direction --! … … 1026 1067 END_2D 1027 1068 END DO 1069 #if defined key_mpi3 1070 CALL lbc_lnk_nc_multi( 'icedyn_adv_umx', ztv4, 'T', 1.0_wp ) 1071 #else 1028 1072 CALL lbc_lnk( 'icedyn_adv_umx', ztv4, 'T', 1.0_wp ) 1073 #endif 1029 1074 ! 1030 1075 ! … … 1167 1212 END_2D 1168 1213 END DO 1214 #if defined key_mpi3 1215 CALL lbc_lnk_nc_multi( 'icedyn_adv_umx', zti_ups, 'T', 1.0_wp, ztj_ups, 'T', 1.0_wp ) 1216 #else 1169 1217 CALL lbc_lnk_multi( 'icedyn_adv_umx', zti_ups, 'T', 1.0_wp, ztj_ups, 'T', 1.0_wp ) 1218 #endif 1170 1219 1171 1220 DO jl = 1, jpl … … 1189 1238 END_2D 1190 1239 END DO 1240 #if defined key_mpi3 1241 CALL lbc_lnk_nc_multi( 'icedyn_adv_umx', pfu_ho, 'U', -1.0_wp, pfv_ho, 'V', -1.0_wp ) ! lateral boundary cond. 1242 #else 1191 1243 CALL lbc_lnk_multi( 'icedyn_adv_umx', pfu_ho, 'U', -1.0_wp, pfv_ho, 'V', -1.0_wp ) ! lateral boundary cond. 1244 #endif 1192 1245 1193 1246 ENDIF … … 1246 1299 END_2D 1247 1300 END DO 1301 #if defined key_mpi3 1302 CALL lbc_lnk_nc_multi( 'icedyn_adv_umx', zbetup, 'T', 1.0_wp, zbetdo, 'T', 1.0_wp ) ! lateral boundary cond. (unchanged sign) 1303 #else 1248 1304 CALL lbc_lnk_multi( 'icedyn_adv_umx', zbetup, 'T', 1.0_wp, zbetdo, 'T', 1.0_wp ) ! lateral boundary cond. (unchanged sign) 1305 #endif 1249 1306 1250 1307 … … 1301 1358 END_2D 1302 1359 END DO 1360 #if defined key_mpi3 1361 CALL lbc_lnk_nc_multi( 'icedyn_adv_umx', zslpx, 'U', -1.0_wp) ! lateral boundary cond. 1362 #else 1303 1363 CALL lbc_lnk( 'icedyn_adv_umx', zslpx, 'U', -1.0_wp) ! lateral boundary cond. 1364 #endif 1304 1365 1305 1366 DO jl = 1, jpl … … 1365 1426 END_2D 1366 1427 END DO 1428 #if defined key_mpi3 1429 CALL lbc_lnk_nc_multi( 'icedyn_adv_umx', pfu_ho, 'U', -1.0_wp) ! lateral boundary cond. 1430 #else 1367 1431 CALL lbc_lnk( 'icedyn_adv_umx', pfu_ho, 'U', -1.0_wp) ! lateral boundary cond. 1432 #endif 1368 1433 ! 1369 1434 END SUBROUTINE limiter_x … … 1392 1457 END_2D 1393 1458 END DO 1459 #if defined key_mpi3 1460 CALL lbc_lnk_nc_multi( 'icedyn_adv_umx', zslpy, 'V', -1.0_wp) ! lateral boundary cond. 1461 #else 1394 1462 CALL lbc_lnk( 'icedyn_adv_umx', zslpy, 'V', -1.0_wp) ! lateral boundary cond. 1463 #endif 1395 1464 1396 1465 DO jl = 1, jpl … … 1457 1526 END_2D 1458 1527 END DO 1528 #if defined key_mpi3 1529 CALL lbc_lnk_nc_multi( 'icedyn_adv_umx', pfv_ho, 'V', -1.0_wp) ! lateral boundary cond. 1530 #else 1459 1531 CALL lbc_lnk( 'icedyn_adv_umx', pfv_ho, 'V', -1.0_wp) ! lateral boundary cond. 1532 #endif 1460 1533 ! 1461 1534 END SUBROUTINE limiter_y -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/ICE/icedyn_rdgrft.F90
r13741 r13906 801 801 strength(ji,jj) = zworka(ji,jj) 802 802 END_2D 803 #if defined key_mpi3 804 CALL lbc_lnk_nc_multi( 'icedyn_rdgrft', strength, 'T', 1.0_wp ) 805 #else 803 806 CALL lbc_lnk( 'icedyn_rdgrft', strength, 'T', 1.0_wp ) 807 #endif 804 808 ! 805 809 CASE( 2 ) !--- Temporal smoothing … … 820 824 ENDIF 821 825 END_2D 826 #if defined key_mpi3 827 CALL lbc_lnk_nc_multi( 'icedyn_rdgrft', strength, 'T', 1.0_wp ) 828 #else 822 829 CALL lbc_lnk( 'icedyn_rdgrft', strength, 'T', 1.0_wp ) 830 #endif 823 831 ! 824 832 END SELECT -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/ICE/icedyn_rhg_evp.F90
r13741 r13906 199 199 zfmask(ji,jj) = tmask(ji,jj,1) * tmask(ji+1,jj,1) * tmask(ji,jj+1,1) * tmask(ji+1,jj+1,1) 200 200 END_2D 201 CALL lbc_lnk( 'icedyn_rhg_evp', zfmask, 'F', 1._wp ) 201 #if defined key_mpi3 202 CALL lbc_lnk_nc_multi( 'icedyn_rhg_evp', zfmask, 'F', 1._wp) 203 #else 204 CALL lbc_lnk( 'icedyn_rhg_evp', zfmask, 'F', 1._wp) 205 #endif 202 206 203 207 ! Lateral boundary conditions on velocity (modify zfmask) … … 224 228 ENDIF 225 229 END DO 230 #if defined key_mpi3 231 CALL lbc_lnk_nc_multi( 'icedyn_rhg_evp', zfmask, 'F', 1._wp ) 232 #else 226 233 CALL lbc_lnk( 'icedyn_rhg_evp', zfmask, 'F', 1._wp ) 234 #endif 227 235 228 236 !------------------------------------------------------------------------------! … … 316 324 317 325 END_2D 326 #if defined key_mpi3 327 CALL lbc_lnk_nc_multi( 'icedyn_rhg_evp', zmf, 'T', 1.0_wp, zdt_m, 'T', 1.0_wp ) 328 #else 318 329 CALL lbc_lnk_multi( 'icedyn_rhg_evp', zmf, 'T', 1.0_wp, zdt_m, 'T', 1.0_wp ) 330 #endif 319 331 ! 320 332 ! !== Landfast ice parameterization ==! … … 335 347 tau_icebfr(ji,jj) = - rn_lf_bfr * MAX( 0._wp, vt_i(ji,jj) - zvCr ) * EXP( -rn_crhg * ( 1._wp - at_i(ji,jj) ) ) 336 348 END_2D 349 #if defined key_mpi3 350 CALL lbc_lnk_nc_multi( 'icedyn_rhg_evp', tau_icebfr(:,:), 'T', 1.0_wp ) 351 #else 337 352 CALL lbc_lnk( 'icedyn_rhg_evp', tau_icebfr(:,:), 'T', 1.0_wp ) 353 #endif 338 354 ! 339 355 ELSE !-- no landfast … … 394 410 395 411 END_2D 412 #if defined key_mpi3 413 CALL lbc_lnk_nc_multi( 'icedyn_rhg_evp', zdelta, 'T', 1.0_wp ) 414 #else 396 415 CALL lbc_lnk( 'icedyn_rhg_evp', zdelta, 'T', 1.0_wp ) 416 #endif 397 417 398 418 ! P/delta at T points … … 533 553 ENDIF 534 554 END_2D 555 #if defined key_mpi3 556 CALL lbc_lnk_nc_multi( 'icedyn_rhg_evp', v_ice, 'V', -1.0_wp ) 557 #else 535 558 CALL lbc_lnk( 'icedyn_rhg_evp', v_ice, 'V', -1.0_wp ) 559 #endif 536 560 ! 537 561 #if defined key_agrif … … 585 609 ENDIF 586 610 END_2D 611 #if defined key_mpi3 612 CALL lbc_lnk_nc_multi( 'icedyn_rhg_evp', u_ice, 'U', -1.0_wp ) 613 #else 587 614 CALL lbc_lnk( 'icedyn_rhg_evp', u_ice, 'U', -1.0_wp ) 615 #endif 588 616 ! 589 617 #if defined key_agrif … … 639 667 ENDIF 640 668 END_2D 669 #if defined key_mpi3 670 CALL lbc_lnk_nc_multi( 'icedyn_rhg_evp', u_ice, 'U', -1.0_wp ) 671 #else 641 672 CALL lbc_lnk( 'icedyn_rhg_evp', u_ice, 'U', -1.0_wp ) 673 #endif 642 674 ! 643 675 #if defined key_agrif … … 691 723 ENDIF 692 724 END_2D 725 #if defined key_mpi3 726 CALL lbc_lnk_nc_multi( 'icedyn_rhg_evp', v_ice, 'V', -1.0_wp ) 727 #else 693 728 CALL lbc_lnk( 'icedyn_rhg_evp', v_ice, 'V', -1.0_wp ) 729 #endif 694 730 ! 695 731 #if defined key_agrif … … 750 786 751 787 END_2D 788 #if defined key_mpi3 789 CALL lbc_lnk_nc_multi( 'icedyn_rhg_evp', pshear_i, 'T', 1._wp, pdivu_i, 'T', 1._wp, pdelta_i, 'T', 1._wp, zten_i, 'T', 1._wp, & 790 & zs1 , 'T', 1._wp, zs2 , 'T', 1._wp, zs12 , 'F', 1._wp ) 791 #else 752 792 CALL lbc_lnk_multi( 'icedyn_rhg_evp', pshear_i, 'T', 1._wp, pdivu_i, 'T', 1._wp, pdelta_i, 'T', 1._wp, zten_i, 'T', 1._wp, & 753 793 & zs1 , 'T', 1._wp, zs2 , 'T', 1._wp, zs12 , 'F', 1._wp ) 794 #endif 754 795 755 796 ! --- Store the stress tensor for the next time step --- ! … … 766 807 & iom_use('utau_bi') .OR. iom_use('vtau_bi') ) THEN 767 808 ! 809 #if defined key_mpi3 810 CALL lbc_lnk_nc_multi( 'icedyn_rhg_evp', ztaux_oi, 'U', -1.0_wp, ztauy_oi, 'V', -1.0_wp, ztaux_ai, 'U', -1.0_wp, ztauy_ai, 'V', -1.0_wp, & 811 & ztaux_bi, 'U', -1.0_wp, ztauy_bi, 'V', -1.0_wp ) 812 #else 768 813 CALL lbc_lnk_multi( 'icedyn_rhg_evp', ztaux_oi, 'U', -1.0_wp, ztauy_oi, 'V', -1.0_wp, ztaux_ai, 'U', -1.0_wp, ztauy_ai, 'V', -1.0_wp, & 769 814 & ztaux_bi, 'U', -1.0_wp, ztauy_bi, 'V', -1.0_wp ) 815 #endif 770 816 ! 771 817 CALL iom_put( 'utau_oi' , ztaux_oi * zmsk00 ) … … 851 897 & iom_use('corstrx') .OR. iom_use('corstry') .OR. iom_use('intstrx') .OR. iom_use('intstry') ) THEN 852 898 ! 899 #if defined key_mpi3 900 CALL lbc_lnk_nc_multi( 'icedyn_rhg_evp', zspgU, 'U', -1.0_wp, zspgV, 'V', -1.0_wp, & 901 & zCorU, 'U', -1.0_wp, zCorV, 'V', -1.0_wp, zfU, 'U', -1.0_wp, zfV, 'V', -1.0_wp ) 902 #else 853 903 CALL lbc_lnk_multi( 'icedyn_rhg_evp', zspgU, 'U', -1.0_wp, zspgV, 'V', -1.0_wp, & 854 904 & zCorU, 'U', -1.0_wp, zCorV, 'V', -1.0_wp, zfU, 'U', -1.0_wp, zfV, 'V', -1.0_wp ) 905 #endif 855 906 856 907 CALL iom_put( 'dssh_dx' , zspgU * zmsk00 ) ! Sea-surface tilt term in force balance (x) … … 884 935 END_2D 885 936 937 #if defined key_mpi3 938 CALL lbc_lnk_nc_multi( 'icedyn_rhg_evp', zdiag_xmtrp_ice, 'U', -1.0_wp, zdiag_ymtrp_ice, 'V', -1.0_wp, & 939 & zdiag_xmtrp_snw, 'U', -1.0_wp, zdiag_ymtrp_snw, 'V', -1.0_wp, & 940 & zdiag_xatrp , 'U', -1.0_wp, zdiag_yatrp , 'V', -1.0_wp ) 941 #else 886 942 CALL lbc_lnk_multi( 'icedyn_rhg_evp', zdiag_xmtrp_ice, 'U', -1.0_wp, zdiag_ymtrp_ice, 'V', -1.0_wp, & 887 943 & zdiag_xmtrp_snw, 'U', -1.0_wp, zdiag_ymtrp_snw, 'V', -1.0_wp, & 888 944 & zdiag_xatrp , 'U', -1.0_wp, zdiag_yatrp , 'V', -1.0_wp ) 945 #endif 889 946 890 947 CALL iom_put( 'xmtrpice' , zdiag_xmtrp_ice ) ! X-component of sea-ice mass transport (kg/s) -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/ICE/icesbc.F90
r13553 r13906 86 86 vtau_ice(ji,jj) = vtau_ice(ji,jj) * xcplmask(ji,jj,0) + zvtau_ice(ji,jj) * ( 1. - xcplmask(ji,jj,0) ) 87 87 END_2D 88 #if defined key_mpi3 89 CALL lbc_lnk_nc_multi( 'icesbc', utau_ice, 'U', -1.0_wp, vtau_ice, 'V', -1.0_wp ) 90 #else 88 91 CALL lbc_lnk_multi( 'icesbc', utau_ice, 'U', -1.0_wp, vtau_ice, 'V', -1.0_wp ) 92 #endif 89 93 ENDIF 90 94 ! -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/ICE/icethd.F90
r13741 r13906 136 136 END_2D 137 137 ENDIF 138 #if defined key_mpi3 139 CALL lbc_lnk_nc_multi( 'icethd', zfric, 'T', 1.0_wp, zvel, 'T', 1.0_wp ) 140 #else 138 141 CALL lbc_lnk_multi( 'icethd', zfric, 'T', 1.0_wp, zvel, 'T', 1.0_wp ) 142 #endif 139 143 ! 140 144 !--------------------------------------------------------------------! -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/ICE/icethd_do.F90
r13741 r13906 193 193 END_2D 194 194 ! 195 #if defined key_mpi3 196 CALL lbc_lnk_nc_multi( 'icethd_do', zvrel, 'T', 1.0_wp, ht_i_new, 'T', 1.0_wp ) 197 #else 195 198 CALL lbc_lnk_multi( 'icethd_do', zvrel, 'T', 1.0_wp, ht_i_new, 'T', 1.0_wp ) 199 #endif 196 200 197 201 ENDIF -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/ICE/iceupdate.F90
r13741 r13906 345 345 tmod_io(ji,jj) = zrhoco * SQRT( zmodt ) ! rhoco * |U_ice-U_oce| at T-point 346 346 END_2D 347 #if defined key_mpi3 348 CALL lbc_lnk_nc_multi( 'iceupdate', taum, 'T', 1.0_wp, tmod_io, 'T', 1.0_wp ) 349 #else 347 350 CALL lbc_lnk_multi( 'iceupdate', taum, 'T', 1.0_wp, tmod_io, 'T', 1.0_wp ) 351 #endif 348 352 ! 349 353 utau_oce(:,:) = utau(:,:) !* save the air-ocean stresses at ice time-step … … 374 378 vtau(ji,jj) = ( 1._wp - zat_v ) * vtau_oce(ji,jj) + zat_v * zvtau_ice 375 379 END_2D 380 #if defined key_mpi3 381 CALL lbc_lnk_nc_multi( 'iceupdate', utau, 'U', -1.0_wp, vtau, 'V', -1.0_wp ) ! lateral boundary condition 382 #else 376 383 CALL lbc_lnk_multi( 'iceupdate', utau, 'U', -1.0_wp, vtau, 'V', -1.0_wp ) ! lateral boundary condition 384 #endif 377 385 ! 378 386 IF( ln_timing ) CALL timing_stop('ice_update_tau') -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/ICE/icewri.F90
r13553 r13906 137 137 z2d(ji,jj) = 0.5_wp * SQRT( z2da * z2da + z2db * z2db ) 138 138 END_2D 139 #if defined key_mpi3 140 CALL lbc_lnk_nc_multi( 'icewri', z2d, 'T', 1.0_wp ) 141 #else 139 142 CALL lbc_lnk( 'icewri', z2d, 'T', 1.0_wp ) 143 #endif 140 144 CALL iom_put( 'icevel', z2d ) 141 145 -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/NST/agrif_oce_sponge.F90
r13312 r13906 290 290 291 291 IF( .NOT. spongedoneT .AND. .NOT. spongedoneU ) THEN 292 #if defined key_mpi3 293 CALL lbc_lnk_nc_multi( 'agrif_Sponge', fspu, 'U', 1._wp, fspv, 'V', 1._wp, fspt, 'T', 1._wp, fspf, 'F', 1._wp ) 294 #else 292 295 CALL lbc_lnk_multi( 'agrif_Sponge', fspu, 'U', 1._wp, fspv, 'V', 1._wp, fspt, 'T', 1._wp, fspf, 'F', 1._wp ) 296 #endif 293 297 spongedoneT = .TRUE. 294 298 spongedoneU = .TRUE. 295 299 ENDIF 296 300 IF( .NOT. spongedoneT ) THEN 301 #if defined key_mpi3 302 CALL lbc_lnk_nc_multi( 'agrif_Sponge', fspu, 'U', 1._wp, fspv, 'V', 1._wp ) 303 #else 297 304 CALL lbc_lnk_multi( 'agrif_Sponge', fspu, 'U', 1._wp, fspv, 'V', 1._wp ) 305 #endif 298 306 spongedoneT = .TRUE. 299 307 ENDIF 300 308 IF( .NOT. spongedoneT .AND. .NOT. spongedoneU ) THEN 309 #if defined key_mpi3 310 CALL lbc_lnk_nc_multi( 'agrif_Sponge', fspt, 'T', 1._wp, fspf, 'F', 1._wp ) 311 #else 301 312 CALL lbc_lnk_multi( 'agrif_Sponge', fspt, 'T', 1._wp, fspf, 'F', 1._wp ) 313 #endif 302 314 spongedoneU = .TRUE. 303 315 ENDIF … … 323 335 ztabrampu(:,:) = REAL( mbku_parent(:,:), wp ) 324 336 ztabrampv(:,:) = REAL( mbkv_parent(:,:), wp ) 337 #if defined key_mpi3 338 CALL lbc_lnk_nc_multi( 'Agrif_Sponge', ztabramp, 'T', 1._wp, ztabrampu, 'U', 1._wp, ztabrampv, 'V', 1._wp ) 339 #else 325 340 CALL lbc_lnk_multi( 'Agrif_Sponge', ztabramp, 'T', 1._wp, ztabrampu, 'U', 1._wp, ztabrampv, 'V', 1._wp ) 341 #endif 326 342 mbkt_parent(:,:) = NINT( ztabramp (:,:) ) 327 343 mbku_parent(:,:) = NINT( ztabrampu(:,:) ) -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/NST/agrif_user.F90
r13553 r13906 99 99 100 100 101 #if defined key_mpi3 102 CALL lbc_lnk_nc_multi( 'agrif_istate', uu(:,:,: ,Kbb), 'U', -1.0_wp , vv(:,:,:,Kbb), 'V', -1.0_wp ) 103 CALL lbc_lnk_nc_multi( 'agrif_istate', ts(:,:,:,:,Kbb), 'T', 1.0_wp ) 104 #else 101 105 CALL lbc_lnk_multi( 'agrif_istate', uu(:,:,: ,Kbb), 'U', -1.0_wp , vv(:,:,:,Kbb), 'V', -1.0_wp ) 102 106 CALL lbc_lnk( 'agrif_istate', ts(:,:,:,:,Kbb), 'T', 1.0_wp ) 107 #endif 103 108 104 109 END SUBROUTINE Agrif_Istate … … 273 278 ENDIF 274 279 ! 280 #if defined key_mpi3 281 CALL lbc_lnk_nc_multi( 'Agrif_Init_Domain', hu0_parent, 'U', 1.0_wp, hv0_parent, 'V', 1.0_wp ) 282 #else 275 283 CALL lbc_lnk_multi( 'Agrif_Init_Domain', hu0_parent, 'U', 1.0_wp, hv0_parent, 'V', 1.0_wp ) 284 #endif 276 285 DO_2D( 0, 0, 0, 0 ) 277 286 zk(ji,jj) = REAL( mbku_parent(ji,jj), wp ) 278 287 END_2D 288 #if defined key_mpi3 289 CALL lbc_lnk_nc_multi( 'Agrif_InitValues_cont', zk, 'U', 1.0_wp ) 290 #else 279 291 CALL lbc_lnk( 'Agrif_InitValues_cont', zk, 'U', 1.0_wp ) 292 #endif 280 293 mbku_parent(:,:) = MAX( NINT( zk(:,:) ), 1 ) 281 294 DO_2D( 0, 0, 0, 0 ) 282 295 zk(ji,jj) = REAL( mbkv_parent(ji,jj), wp ) 283 296 END_2D 297 #if defined key_mpi3 298 CALL lbc_lnk_nc_multi( 'Agrif_InitValues_cont', zk, 'V', 1.0_wp ) 299 #else 284 300 CALL lbc_lnk( 'Agrif_InitValues_cont', zk, 'V', 1.0_wp ) 301 #endif 285 302 mbkv_parent(:,:) = MAX( NINT( zk(:,:) ), 1 ) 286 303 287 304 IF ( ln_init_chfrpar ) THEN 288 305 CALL Agrif_Init_Variable(sshini_id, procname=agrif_initssh) 306 #if defined key_mpi3 307 CALL lbc_lnk_nc_multi( 'Agrif_Init_Domain', ssh(:,:,Kbb), 'T', 1. ) 308 #else 289 309 CALL lbc_lnk( 'Agrif_Init_Domain', ssh(:,:,Kbb), 'T', 1. ) 310 #endif 290 311 DO jk = 1, jpk 291 312 e3t(:,:,jk,Kbb) = e3t_0(:,:,jk) * ( ht_0(:,:) + ssh(:,:,Kbb) ) & -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/ASM/asminc.F90
r13819 r13906 422 422 & / e3t(ji,jj,jk,Kmm) 423 423 END_2D 424 #if defined key_mpi3 425 CALL lbc_lnk_nc_multi( 'asminc', zhdiv, 'T', 1.0_wp ) ! lateral boundary cond. (no sign change) 426 #else 424 427 CALL lbc_lnk( 'asminc', zhdiv, 'T', 1.0_wp ) ! lateral boundary cond. (no sign change) 428 #endif 425 429 ! 426 430 DO_2D( 0, 0, 0, 0 ) -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/BDY/bdydyn2d.F90
r13226 r13906 102 102 END DO 103 103 IF( ANY(llsend2) .OR. ANY(llrecv2) ) THEN ! if need to send/recv in at least one direction 104 #if defined key_mpi3 105 CALL lbc_lnk_nc_multi( 'bdydyn2d', pua2d, 'U', -1.0_wp, kfillmode=jpfillnothing ,lsend=llsend2, lrecv=llrecv2 ) 106 #else 104 107 CALL lbc_lnk( 'bdydyn2d', pua2d, 'U', -1.0_wp, kfillmode=jpfillnothing ,lsend=llsend2, lrecv=llrecv2 ) 108 #endif 105 109 END IF 106 110 IF( ANY(llsend3) .OR. ANY(llrecv3) ) THEN ! if need to send/recv in at least one direction 111 #if defined key_mpi3 112 CALL lbc_lnk_nc_multi( 'bdydyn2d', pva2d, 'V', -1.0_wp, kfillmode=jpfillnothing ,lsend=llsend3, lrecv=llrecv3 ) 113 #else 107 114 CALL lbc_lnk( 'bdydyn2d', pva2d, 'V', -1.0_wp, kfillmode=jpfillnothing ,lsend=llsend3, lrecv=llrecv3 ) 115 #endif 108 116 END IF 109 117 ! … … 324 332 IF( nn_hls > 1 .AND. ir == 1 ) CYCLE ! at least 2 halos will be corrected -> no need to correct rim 1 before rim 0 325 333 IF( ANY(llsend1) .OR. ANY(llrecv1) ) THEN ! if need to send/recv in at least one direction 334 #if defined key_mpi3 335 CALL lbc_lnk_nc_multi( 'bdydyn2d', zssh(:,:,1), 'T', 1.0_wp, kfillmode=jpfillnothing ,lsend=llsend1, lrecv=llrecv1 ) 336 #else 326 337 CALL lbc_lnk( 'bdydyn2d', zssh(:,:,1), 'T', 1.0_wp, kfillmode=jpfillnothing ,lsend=llsend1, lrecv=llrecv1 ) 338 #endif 327 339 END IF 328 340 END DO -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/BDY/bdydyn3d.F90
r13226 r13906 99 99 ! 100 100 IF( ANY(llsend2) .OR. ANY(llrecv2) ) THEN ! if need to send/recv in at least one direction 101 #if defined key_mpi3 102 CALL lbc_lnk_nc_multi( 'bdydyn2d', puu(:,:,:,Kaa), 'U', -1.0_wp, kfillmode=jpfillnothing ,lsend=llsend2, lrecv=llrecv2 ) 103 #else 101 104 CALL lbc_lnk( 'bdydyn2d', puu(:,:,:,Kaa), 'U', -1.0_wp, kfillmode=jpfillnothing ,lsend=llsend2, lrecv=llrecv2 ) 105 #endif 102 106 END IF 103 107 IF( ANY(llsend3) .OR. ANY(llrecv3) ) THEN ! if need to send/recv in at least one direction 108 #if defined key_mpi3 109 CALL lbc_lnk_nc_multi( 'bdydyn2d', pvv(:,:,:,Kaa), 'V', -1.0_wp, kfillmode=jpfillnothing ,lsend=llsend3, lrecv=llrecv3 ) 110 #else 104 111 CALL lbc_lnk( 'bdydyn2d', pvv(:,:,:,Kaa), 'V', -1.0_wp, kfillmode=jpfillnothing ,lsend=llsend3, lrecv=llrecv3 ) 112 #endif 105 113 END IF 106 114 END DO ! ir -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/BDY/bdyice.F90
r13741 r13906 91 91 END DO ! jbdy 92 92 IF( ANY(llsend1) .OR. ANY(llrecv1) ) THEN ! if need to send/recv in at least one direction 93 #if defined key_mpi3 94 ! exchange 3d arrays 95 CALL lbc_lnk_nc_multi('bdyice', a_i , 'T', 1._wp, h_i , 'T', 1._wp, h_s , 'T', 1._wp, oa_i, 'T', 1._wp & 96 & , s_i , 'T', 1._wp, t_su, 'T', 1._wp, v_i , 'T', 1._wp, v_s , 'T', 1._wp, sv_i, 'T', 1._wp & 97 & , a_ip, 'T', 1._wp, v_ip, 'T', 1._wp, v_il, 'T', 1._wp & 98 & , kfillmode=jpfillnothing ,lsend=llsend1, lrecv=llrecv1 ) 99 ! exchange 4d arrays : third dimension = 1 and then third dimension = jpk 100 CALL lbc_lnk_nc_multi('bdyice', t_s , 'T', 1._wp, e_s , 'T', 1._wp, kfillmode=jpfillnothing ,lsend=llsend1, lrecv=llrecv1 ) 101 CALL lbc_lnk_nc_multi('bdyice', t_i , 'T', 1._wp, e_i , 'T', 1._wp, kfillmode=jpfillnothing ,lsend=llsend1, lrecv=llrecv1 ) 102 #else 93 103 ! exchange 3d arrays 94 104 CALL lbc_lnk_multi('bdyice', a_i , 'T', 1._wp, h_i , 'T', 1._wp, h_s , 'T', 1._wp, oa_i, 'T', 1._wp & … … 99 109 CALL lbc_lnk_multi('bdyice', t_s , 'T', 1._wp, e_s , 'T', 1._wp, kfillmode=jpfillnothing ,lsend=llsend1, lrecv=llrecv1 ) 100 110 CALL lbc_lnk_multi('bdyice', t_i , 'T', 1._wp, e_i , 'T', 1._wp, kfillmode=jpfillnothing ,lsend=llsend1, lrecv=llrecv1 ) 111 #endif 101 112 END IF 102 113 END DO ! ir … … 434 445 END DO 435 446 IF( ANY(llsend2) .OR. ANY(llrecv2) ) THEN ! if need to send/recv in at least one direction 447 #if defined key_mpi3 448 CALL lbc_lnk_nc_multi( 'bdyice', u_ice, 'U', -1.0_wp, kfillmode=jpfillnothing ,lsend=llsend2, lrecv=llrecv2 ) 449 #else 436 450 CALL lbc_lnk( 'bdyice', u_ice, 'U', -1.0_wp, kfillmode=jpfillnothing ,lsend=llsend2, lrecv=llrecv2 ) 451 #endif 437 452 END IF 438 453 CASE ( 'V' ) … … 448 463 END DO 449 464 IF( ANY(llsend3) .OR. ANY(llrecv3) ) THEN ! if need to send/recv in at least one direction 465 #if defined key_mpi3 466 CALL lbc_lnk_nc_multi( 'bdyice', v_ice, 'V', -1.0_wp, kfillmode=jpfillnothing ,lsend=llsend3, lrecv=llrecv3 ) 467 #else 450 468 CALL lbc_lnk( 'bdyice', v_ice, 'V', -1.0_wp, kfillmode=jpfillnothing ,lsend=llsend3, lrecv=llrecv3 ) 469 #endif 451 470 END IF 452 471 END SELECT -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/BDY/bdyini.F90
r13553 r13906 638 638 END DO 639 639 END DO 640 #if defined key_mpi3 641 CALL lbc_lnk_nc_multi( 'bdyini', zfmask, 'F', 1.0_wp ) 642 #else 640 643 CALL lbc_lnk( 'bdyini', zfmask, 'F', 1.0_wp ) 644 #endif 641 645 642 646 ! Read global 2D mask at T-points: bdytmask … … 654 658 END DO 655 659 END DO 660 #if defined key_mpi3 661 CALL lbc_lnk_nc_multi( 'bdyini', bdyumask, 'U', 1.0_wp , bdyvmask, 'V', 1.0_wp ) ! Lateral boundary cond. 662 #else 656 663 CALL lbc_lnk_multi( 'bdyini', bdyumask, 'U', 1.0_wp , bdyvmask, 'V', 1.0_wp ) ! Lateral boundary cond. 664 #endif 657 665 658 666 ! bdy masks are now set to zero on rim 0 points: … … 695 703 END DO 696 704 END DO 705 #if defined key_mpi3 706 CALL lbc_lnk_nc_multi( 'bdyini', zfmask, 'F', 1.0_wp ) 707 #else 697 708 CALL lbc_lnk( 'bdyini', zfmask, 'F', 1.0_wp ) 709 #endif 698 710 699 711 ! bdy masks are now set to zero on rim1 points: … … 871 883 ENDIF 872 884 SELECT CASE( igrd ) 885 #if defined key_mpi3 886 CASE( 1 ) ; CALL lbc_lnk_nc_multi( 'bdyini', ztmp, 'T', 1.0_wp ) 887 CASE( 2 ) ; CALL lbc_lnk_nc_multi( 'bdyini', ztmp, 'U', 1.0_wp ) 888 CASE( 3 ) ; CALL lbc_lnk_nc_multi( 'bdyini', ztmp, 'V', 1.0_wp ) 889 #else 873 890 CASE( 1 ) ; CALL lbc_lnk( 'bdyini', ztmp, 'T', 1.0_wp ) 874 891 CASE( 2 ) ; CALL lbc_lnk( 'bdyini', ztmp, 'U', 1.0_wp ) 875 892 CASE( 3 ) ; CALL lbc_lnk( 'bdyini', ztmp, 'V', 1.0_wp ) 893 #endif 876 894 END SELECT 877 895 DO ib = ibeg, iend … … 919 937 ENDIF 920 938 SELECT CASE( igrd ) 939 #if defined key_mpi3 940 CASE( 1 ) ; CALL lbc_lnk_nc_multi( 'bdyini', ztmp, 'T', 1.0_wp ) 941 CASE( 2 ) ; CALL lbc_lnk_nc_multi( 'bdyini', ztmp, 'U', 1.0_wp ) 942 CASE( 3 ) ; CALL lbc_lnk_nc_multi( 'bdyini', ztmp, 'V', 1.0_wp ) 943 #else 921 944 CASE( 1 ) ; CALL lbc_lnk( 'bdyini', ztmp, 'T', 1.0_wp ) 922 945 CASE( 2 ) ; CALL lbc_lnk( 'bdyini', ztmp, 'U', 1.0_wp ) 923 946 CASE( 3 ) ; CALL lbc_lnk( 'bdyini', ztmp, 'V', 1.0_wp ) 947 #endif 924 948 END SELECT 925 949 DO ib = ibeg, iend … … 1007 1031 END DO 1008 1032 SELECT CASE( igrd ) 1033 #if defined key_mpi3 1034 CASE( 1 ) ; CALL lbc_lnk_nc_multi( 'bdyini', ztmp, 'T', 1.0_wp ) 1035 CASE( 2 ) ; CALL lbc_lnk_nc_multi( 'bdyini', ztmp, 'U', 1.0_wp ) 1036 CASE( 3 ) ; CALL lbc_lnk_nc_multi( 'bdyini', ztmp, 'V', 1.0_wp ) 1037 #else 1009 1038 CASE( 1 ) ; CALL lbc_lnk( 'bdyini', ztmp, 'T', 1.0_wp ) 1010 1039 CASE( 2 ) ; CALL lbc_lnk( 'bdyini', ztmp, 'U', 1.0_wp ) 1011 1040 CASE( 3 ) ; CALL lbc_lnk( 'bdyini', ztmp, 'V', 1.0_wp ) 1041 #endif 1012 1042 END SELECT 1013 1043 DO ib = ibeg, iend -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/BDY/bdytra.F90
r13819 r13906 100 100 END DO 101 101 IF( ANY(llsend1) .OR. ANY(llrecv1) ) THEN ! if need to send/recv in at least one direction 102 #if defined key_mpi3 103 CALL lbc_lnk_nc_multi( 'bdytra', pts(:,:,:,jn,Kaa), 'T', 1.0_wp, kfillmode=jpfillnothing ,lsend=llsend1, lrecv=llrecv1 ) 104 #else 102 105 CALL lbc_lnk( 'bdytra', pts(:,:,:,jn,Kaa), 'T', 1.0_wp, kfillmode=jpfillnothing ,lsend=llsend1, lrecv=llrecv1 ) 106 #endif 103 107 ENDIF 104 108 ! -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/CRS/crsfld.F90
r13553 r13906 156 156 & + vv(ji,jj ,jk,Kmm)**2 * e1v(ji,jj ) * e3v(ji,jj ,jk,Kmm) ) 157 157 END_3D 158 #if defined key_mpi3 159 CALL lbc_lnk_nc_multi( 'crsfld', z3d, 'T', 1.0_wp ) 160 #else 158 161 CALL lbc_lnk( 'crsfld', z3d, 'T', 1.0_wp ) 162 #endif 159 163 ! 160 164 CALL crs_dom_ope( z3d, 'VOL', 'T', tmask, zt_crs, p_e12=e1e2t, p_e3=ze3t, psgn=1.0_wp ) -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/DIA/diaar5.F90
r13819 r13906 358 358 ENDIF 359 359 ENDIF 360 360 361 END SUBROUTINE dia_ar5_hst 361 362 -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/DIA/diaptr.F90
r13819 r13906 124 124 ! 125 125 ALLOCATE( z3dtr(jpi,jpj,nbasin) ) 126 ! 126 127 127 IF( PRESENT( pvtr ) ) THEN 128 128 IF( iom_use( 'zomsf' ) ) THEN ! effective MSF … … 472 472 & iom_use( 'sophteiv' ) .OR. iom_use( 'sopsteiv' ) .OR. iom_use( 'sopstvtr' ) .OR. & 473 473 & iom_use( 'sophtvtr' ) .OR. iom_use( 'uocetr_vsum_cumul' ) 474 474 475 475 IF(lwp) THEN ! Control print 476 476 WRITE(numout,*) -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/DOM/dom_oce.F90
r13741 r13906 97 97 INTEGER, PUBLIC :: noea, nowe !: index of the local neighboring processors in 98 98 INTEGER, PUBLIC :: noso, nono !: east, west, south and north directions 99 INTEGER, PUBLIC :: nones, nonws !: north-east, north-west directions for sending 100 INTEGER, PUBLIC :: noses, nosws !: south-east, south-west directions for sending 101 INTEGER, PUBLIC :: noner, nonwr !: north-east, north-west directions for receiving 102 INTEGER, PUBLIC :: noser, noswr !: south-east, south-west directions for receiving 99 103 INTEGER, PUBLIC :: nidom !: ??? 100 104 -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/DOM/dommsk.F90
r13553 r13906 162 162 & * tmask(ji,jj+1,jk) * tmask(ji+1,jj+1,jk) 163 163 END_3D 164 #if defined key_mpi3 165 CALL lbc_lnk_nc_multi( 'dommsk', umask, 'U', 1.0_wp, vmask, 'V', 1.0_wp, fmask, 'F', 1.0_wp ) ! Lateral boundary conditions 166 #else 164 167 CALL lbc_lnk_multi( 'dommsk', umask, 'U', 1.0_wp, vmask, 'V', 1.0_wp, fmask, 'F', 1.0_wp ) ! Lateral boundary conditions 168 #endif 165 169 166 170 ! Ocean/land mask at wu-, wv- and w points (computed from tmask) … … 219 223 END DO 220 224 ! 225 #if defined key_mpi3 226 CALL lbc_lnk_nc_multi( 'dommsk', fmask, 'F', 1._wp ) ! Lateral boundary conditions on fmask 227 #else 221 228 CALL lbc_lnk( 'dommsk', fmask, 'F', 1._wp ) ! Lateral boundary conditions on fmask 229 #endif 222 230 ! 223 231 ! CAUTION : The fmask may be further modified in dyn_vor_init ( dynvor.F90 ) depending on ln_vorlat -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/DOM/domqco.F90
r13295 r13906 163 163 ! 164 164 IF( .NOT.PRESENT( pr3f ) ) THEN !- lbc on ratio at u-, v-points only 165 #if defined key_mpi3 166 CALL lbc_lnk_nc_multi( 'dom_qco_r3c', pr3u, 'U', 1._wp, pr3v, 'V', 1._wp ) 167 #else 165 168 CALL lbc_lnk_multi( 'dom_qco_r3c', pr3u, 'U', 1._wp, pr3v, 'V', 1._wp ) 169 #endif 166 170 ! 167 171 ! … … 182 186 ENDIF 183 187 ! ! lbc on ratio at u-,v-,f-points 188 #if defined key_mpi3 189 CALL lbc_lnk_nc_multi( 'dom_qco_r3c', pr3u, 'U', 1._wp, pr3v, 'V', 1._wp, pr3f, 'F', 1._wp ) 190 #else 184 191 CALL lbc_lnk_multi( 'dom_qco_r3c', pr3u, 'U', 1._wp, pr3v, 'V', 1._wp, pr3f, 'F', 1._wp ) 192 #endif 185 193 ! 186 194 ENDIF -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/DOM/domutl.F90
r13745 r13906 108 108 ! 109 109 puniq(:,:) = ztstref(:,:) ! default definition 110 #if defined key_mpi3 111 CALL lbc_lnk_nc_multi( 'domwri', puniq, cdgrd, 1. ) ! apply boundary conditions 112 #else 110 113 CALL lbc_lnk( 'domwri', puniq, cdgrd, 1. ) ! apply boundary conditions 114 #endif 111 115 lluniq(:,:,1) = puniq(:,:) == ztstref(:,:) ! check which values have not been changed 112 116 ! -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/DOM/domvvl.F90
r13553 r13906 439 439 ! ! d - thickness diffusion transport: boundary conditions 440 440 ! (stored for tracer advction and continuity equation) 441 #if defined key_mpi3 442 CALL lbc_lnk_nc_multi( 'domvvl', un_td , 'U' , -1._wp, vn_td , 'V' , -1._wp) 443 #else 441 444 CALL lbc_lnk_multi( 'domvvl', un_td , 'U' , -1._wp, vn_td , 'V' , -1._wp) 442 445 #endif 443 446 ! 4 - Time stepping of baroclinic scale factors 444 447 ! --------------------------------------------- 448 #if defined key_mpi3 449 CALL lbc_lnk_nc_multi( 'domvvl', tilde_e3t_a(:,:,:), 'T', 1._wp ) 450 #else 445 451 CALL lbc_lnk( 'domvvl', tilde_e3t_a(:,:,:), 'T', 1._wp ) 452 #endif 446 453 tilde_e3t_a(:,:,:) = tilde_e3t_b(:,:,:) + rDt * tmask(:,:,:) * tilde_e3t_a(:,:,:) 447 454 … … 717 724 & + e1e2t(ji+1,jj) * ( pe3_in(ji+1,jj,jk) - e3t_0(ji+1,jj,jk) ) ) 718 725 END_3D 726 #if defined key_mpi3 727 CALL lbc_lnk_nc_multi( 'domvvl', pe3_out(:,:,:), 'U', 1._wp ) 728 #else 719 729 CALL lbc_lnk( 'domvvl', pe3_out(:,:,:), 'U', 1._wp ) 730 #endif 720 731 pe3_out(:,:,:) = pe3_out(:,:,:) + e3u_0(:,:,:) 721 732 ! … … 726 737 & + e1e2t(ji,jj+1) * ( pe3_in(ji,jj+1,jk) - e3t_0(ji,jj+1,jk) ) ) 727 738 END_3D 739 #if defined key_mpi3 740 CALL lbc_lnk_nc_multi( 'domvvl', pe3_out(:,:,:), 'V', 1._wp ) 741 #else 728 742 CALL lbc_lnk( 'domvvl', pe3_out(:,:,:), 'V', 1._wp ) 743 #endif 729 744 pe3_out(:,:,:) = pe3_out(:,:,:) + e3v_0(:,:,:) 730 745 ! … … 736 751 & + e1e2u(ji,jj+1) * ( pe3_in(ji,jj+1,jk) - e3u_0(ji,jj+1,jk) ) ) 737 752 END_3D 753 #if defined key_mpi3 754 CALL lbc_lnk_nc_multi( 'domvvl', pe3_out(:,:,:), 'F', 1._wp ) 755 #else 738 756 CALL lbc_lnk( 'domvvl', pe3_out(:,:,:), 'F', 1._wp ) 757 #endif 739 758 pe3_out(:,:,:) = pe3_out(:,:,:) + e3f_0(:,:,:) 740 759 ! -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/DOM/domwri.F90
r13295 r13906 229 229 END DO 230 230 END DO 231 #if defined key_mpi3 232 CALL lbc_lnk_nc_multi( 'domwri', zx1, 'T', 1.0_wp ) 233 #else 231 234 CALL lbc_lnk( 'domwri', zx1, 'T', 1.0_wp ) 235 #endif 232 236 ! 233 237 IF( PRESENT( px1 ) ) px1 = zx1 -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/DOM/domzgr.F90
r13295 r13906 125 125 zmsk(:,mj0(jpjglo-nn_hls):mj1(jpjglo-nn_hls) ) = 0._wp ! last line of inner global domain at 0 126 126 ENDIF 127 #if defined key_mpi3 128 CALL lbc_lnk_nc_multi( 'usrdef_zgr', zmsk, 'T', 1. ) ! set halos 129 #else 127 130 CALL lbc_lnk( 'usrdef_zgr', zmsk, 'T', 1. ) ! set halos 131 #endif 128 132 k_top(:,:) = k_top(:,:) * NINT( zmsk(:,:) ) 129 133 ! … … 340 344 END_2D 341 345 ! converte into REAL to use lbc_lnk ; impose a min value of 1 as a zero can be set in lbclnk 346 #if defined key_mpi3 347 zk(:,:) = REAL( miku(:,:), wp ) ; CALL lbc_lnk_nc_multi( 'domzgr', zk, 'U', 1.0_wp ) ; miku(:,:) = MAX( NINT( zk(:,:) ), 1 ) 348 zk(:,:) = REAL( mikv(:,:), wp ) ; CALL lbc_lnk_nc_multi( 'domzgr', zk, 'V', 1.0_wp ) ; mikv(:,:) = MAX( NINT( zk(:,:) ), 1 ) 349 zk(:,:) = REAL( mikf(:,:), wp ) ; CALL lbc_lnk_nc_multi( 'domzgr', zk, 'F', 1.0_wp ) ; mikf(:,:) = MAX( NINT( zk(:,:) ), 1 ) 350 ! 351 zk(:,:) = REAL( mbku(:,:), wp ) ; CALL lbc_lnk_nc_multi( 'domzgr', zk, 'U', 1.0_wp ) ; mbku(:,:) = MAX( NINT( zk(:,:) ), 1 ) 352 zk(:,:) = REAL( mbkv(:,:), wp ) ; CALL lbc_lnk_nc_multi( 'domzgr', zk, 'V', 1.0_wp ) ; mbkv(:,:) = MAX( NINT( zk(:,:) ), 1 ) 353 #else 342 354 zk(:,:) = REAL( miku(:,:), wp ) ; CALL lbc_lnk( 'domzgr', zk, 'U', 1.0_wp ) ; miku(:,:) = MAX( NINT( zk(:,:) ), 1 ) 343 355 zk(:,:) = REAL( mikv(:,:), wp ) ; CALL lbc_lnk( 'domzgr', zk, 'V', 1.0_wp ) ; mikv(:,:) = MAX( NINT( zk(:,:) ), 1 ) … … 346 358 zk(:,:) = REAL( mbku(:,:), wp ) ; CALL lbc_lnk( 'domzgr', zk, 'U', 1.0_wp ) ; mbku(:,:) = MAX( NINT( zk(:,:) ), 1 ) 347 359 zk(:,:) = REAL( mbkv(:,:), wp ) ; CALL lbc_lnk( 'domzgr', zk, 'V', 1.0_wp ) ; mbkv(:,:) = MAX( NINT( zk(:,:) ), 1 ) 360 #endif 348 361 ! 349 362 END SUBROUTINE zgr_top_bot -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/DYN/divhor.F90
r13741 r13906 94 94 IF( ln_isf ) CALL isf_hdiv( kt, Kmm, hdiv ) !== ice shelf ==! (update hdiv field) 95 95 ! 96 #if defined key_mpi3 97 CALL lbc_lnk_nc_multi( 'divhor', hdiv, 'T', 1.0_wp ) ! (no sign change) 98 #else 96 99 CALL lbc_lnk( 'divhor', hdiv, 'T', 1.0_wp ) ! (no sign change) 100 #endif 97 101 ! 98 102 IF( ln_timing ) CALL timing_stop('div_hor') -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/DYN/dynadv_ubs.F90
r13553 r13906 124 124 END_2D 125 125 END DO 126 #if defined key_mpi3 127 CALL lbc_lnk_nc_multi( 'dynadv_ubs', zlu_uu(:,:,:,1), 'U', 1.0_wp , zlu_uv(:,:,:,1), 'U', 1.0_wp, & 128 & zlu_uu(:,:,:,2), 'U', 1.0_wp , zlu_uv(:,:,:,2), 'U', 1.0_wp, & 129 & zlv_vv(:,:,:,1), 'V', 1.0_wp , zlv_vu(:,:,:,1), 'V', 1.0_wp, & 130 & zlv_vv(:,:,:,2), 'V', 1.0_wp , zlv_vu(:,:,:,2), 'V', 1.0_wp ) 131 #else 126 132 CALL lbc_lnk_multi( 'dynadv_ubs', zlu_uu(:,:,:,1), 'U', 1.0_wp , zlu_uv(:,:,:,1), 'U', 1.0_wp, & 127 133 & zlu_uu(:,:,:,2), 'U', 1.0_wp , zlu_uv(:,:,:,2), 'U', 1.0_wp, & 128 134 & zlv_vv(:,:,:,1), 'V', 1.0_wp , zlv_vu(:,:,:,1), 'V', 1.0_wp, & 129 135 & zlv_vv(:,:,:,2), 'V', 1.0_wp , zlv_vu(:,:,:,2), 'V', 1.0_wp ) 136 #endif 130 137 ! 131 138 ! ! ====================== ! -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/DYN/dynatf.F90
r13553 r13906 167 167 # endif 168 168 ! 169 #if defined key_mpi3 170 CALL lbc_lnk_nc_multi( 'dynatf', puu(:,:,:,Kaa), 'U', -1.0_wp, pvv(:,:,:,Kaa), 'V', -1.0_wp ) !* local domain boundaries 171 #else 169 172 CALL lbc_lnk_multi( 'dynatf', puu(:,:,:,Kaa), 'U', -1.0_wp, pvv(:,:,:,Kaa), 'V', -1.0_wp ) !* local domain boundaries 173 #endif 170 174 ! 171 175 ! !* BDY open boundaries -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/DYN/dynhpg.F90
r13745 r13906 449 449 END IF 450 450 END_2D 451 #if defined key_mpi3 452 CALL lbc_lnk_nc_multi( 'dynhpg', zcpx, 'U', 1.0_wp, zcpy, 'V', 1.0_wp ) 453 #else 451 454 CALL lbc_lnk_multi( 'dynhpg', zcpx, 'U', 1.0_wp, zcpy, 'V', 1.0_wp ) 455 #endif 452 456 END IF 453 457 … … 680 684 END IF 681 685 END_2D 686 #if defined key_mpi3 687 CALL lbc_lnk_nc_multi( 'dynhpg', zcpx, 'U', 1.0_wp, zcpy, 'V', 1.0_wp ) 688 #else 682 689 CALL lbc_lnk_multi( 'dynhpg', zcpx, 'U', 1.0_wp, zcpy, 'V', 1.0_wp ) 690 #endif 683 691 END IF 684 692 … … 826 834 827 835 END_3D 836 #if defined key_mpi3 837 CALL lbc_lnk_nc_multi( 'dynhpg', rho_k, 'W', 1.0_wp, rho_i, 'U', 1.0_wp, rho_j, 'V', 1.0_wp ) 838 #else 828 839 CALL lbc_lnk_multi( 'dynhpg', rho_k, 'W', 1.0_wp, rho_i, 'U', 1.0_wp, rho_j, 'V', 1.0_wp ) 840 #endif 829 841 830 842 ! --------------- … … 953 965 ENDIF 954 966 END_2D 967 #if defined key_mpi3 968 CALL lbc_lnk_nc_multi( 'dynhpg', zcpx, 'U', 1.0_wp, zcpy, 'V', 1.0_wp ) 969 #else 955 970 CALL lbc_lnk_multi( 'dynhpg', zcpx, 'U', 1.0_wp, zcpy, 'V', 1.0_wp ) 971 #endif 956 972 ENDIF 957 973 … … 1023 1039 END_2D 1024 1040 1041 #if defined key_mpi3 1042 CALL lbc_lnk_nc_multi ('dynhpg', zsshu_n, 'U', 1.0_wp, zsshv_n, 'V', 1.0_wp ) 1043 #else 1025 1044 CALL lbc_lnk_multi ('dynhpg', zsshu_n, 'U', 1.0_wp, zsshv_n, 'V', 1.0_wp ) 1045 #endif 1026 1046 1027 1047 DO_2D( 0, 0, 0, 0 ) -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/DYN/dynkeg.F90
r13553 r13906 121 121 zhke(ji,jj,jk) = r1_48 * ( zv + zu ) 122 122 END_3D 123 #if defined key_mpi3 124 CALL lbc_lnk_nc_multi( 'dynkeg', zhke, 'T', 1.0_wp ) 125 #else 123 126 CALL lbc_lnk( 'dynkeg', zhke, 'T', 1.0_wp ) 127 #endif 124 128 ! 125 129 END SELECT -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/DYN/dynldf_iso.F90
r13553 r13906 135 135 END_3D 136 136 ! Lateral boundary conditions on the slopes 137 #if defined key_mpi3 138 CALL lbc_lnk_nc_multi( 'dynldf_iso', uslp , 'U', -1.0_wp, vslp , 'V', -1.0_wp, wslpi, 'W', -1.0_wp, wslpj, 'W', -1.0_wp ) 139 #else 137 140 CALL lbc_lnk_multi( 'dynldf_iso', uslp , 'U', -1.0_wp, vslp , 'V', -1.0_wp, wslpi, 'W', -1.0_wp, wslpj, 'W', -1.0_wp ) 141 #endif 138 142 ! 139 143 ENDIF -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/DYN/dynldf_lap_blp.F90
r13553 r13906 132 132 CALL dyn_ldf_lap( kt, Kbb, Kmm, pu, pv, zulap, zvlap, 1 ) ! rotated laplacian applied to pt (output in zlap,Kbb) 133 133 ! 134 #if defined key_mpi3 135 CALL lbc_lnk_nc_multi( 'dynldf_lap_blp', zulap, 'U', -1.0_wp, zvlap, 'V', -1.0_wp ) ! Lateral boundary conditions 136 #else 134 137 CALL lbc_lnk_multi( 'dynldf_lap_blp', zulap, 'U', -1.0_wp, zvlap, 'V', -1.0_wp ) ! Lateral boundary conditions 138 #endif 135 139 ! 136 140 CALL dyn_ldf_lap( kt, Kbb, Kmm, zulap, zvlap, pu_rhs, pv_rhs, 2 ) ! rotated laplacian applied to zlap (output in pt(:,:,:,:,Krhs)) -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/DYN/dynspg_ts.F90
r13553 r13906 520 520 END_2D 521 521 ! 522 #if defined key_mpi3 523 CALL lbc_lnk_nc_multi( 'dynspg_ts', ssha_e, 'T', 1._wp, zhU, 'U', -1._wp, zhV, 'V', -1._wp ) 524 #else 522 525 CALL lbc_lnk_multi( 'dynspg_ts', ssha_e, 'T', 1._wp, zhU, 'U', -1._wp, zhV, 'V', -1._wp ) 526 #endif 523 527 ! 524 528 ! Duplicate sea level across open boundaries (this is only cosmetic if linssh=T) … … 659 663 ! 660 664 IF( .NOT.ln_linssh ) THEN !* Update ocean depth (variable volume case only) 665 #if defined key_mpi3 666 CALL lbc_lnk_nc_multi( 'dynspg_ts', ua_e , 'U', -1._wp, va_e , 'V', -1._wp & 667 & , hu_e , 'U', 1._wp, hv_e , 'V', 1._wp & 668 & , hur_e, 'U', 1._wp, hvr_e, 'V', 1._wp ) 669 #else 661 670 CALL lbc_lnk_multi( 'dynspg_ts', ua_e , 'U', -1._wp, va_e , 'V', -1._wp & 662 671 & , hu_e , 'U', 1._wp, hv_e , 'V', 1._wp & 663 672 & , hur_e, 'U', 1._wp, hvr_e, 'V', 1._wp ) 673 #endif 664 674 ELSE 675 #if defined key_mpi3 676 CALL lbc_lnk_nc_multi( 'dynspg_ts', ua_e , 'U', -1._wp, va_e , 'V', -1._wp ) 677 #else 665 678 CALL lbc_lnk_multi( 'dynspg_ts', ua_e , 'U', -1._wp, va_e , 'V', -1._wp ) 679 #endif 666 680 ENDIF 667 681 ! ! open boundaries … … 751 765 & + e1e2t(ji,jj+1) * pssh(ji,jj+1,Kaa) ) 752 766 END_2D 767 #if defined key_mpi3 768 CALL lbc_lnk_nc_multi( 'dynspg_ts', zsshu_a, 'U', 1._wp, zsshv_a, 'V', 1._wp ) ! Boundary conditions 769 #else 753 770 CALL lbc_lnk_multi( 'dynspg_ts', zsshu_a, 'U', 1._wp, zsshv_a, 'V', 1._wp ) ! Boundary conditions 771 #endif 754 772 ! 755 773 DO jk=1,jpkm1 … … 1114 1132 END_2D 1115 1133 END SELECT 1134 #if defined key_mpi3 1135 CALL lbc_lnk_nc_multi( 'dynspg_ts', zwz, 'F', 1._wp ) 1136 #else 1116 1137 CALL lbc_lnk( 'dynspg_ts', zwz, 'F', 1._wp ) 1138 #endif 1117 1139 ! 1118 1140 ftne(1,:) = 0._wp ; ftnw(1,:) = 0._wp ; ftse(1,:) = 0._wp ; ftsw(1,:) = 0._wp … … 1176 1198 END DO 1177 1199 END DO 1200 #if defined key_mpi3 1201 CALL lbc_lnk_nc_multi( 'dynspg_ts', zhf, 'F', 1._wp ) 1202 #else 1178 1203 CALL lbc_lnk( 'dynspg_ts', zhf, 'F', 1._wp ) 1204 #endif 1179 1205 ! JC: TBC. hf should be greater than 0 1180 1206 DO_2D( 1, 1, 1, 1 ) -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/DYN/dynvor.F90
r13553 r13906 242 242 END DO 243 243 244 #if defined key_mpi3 245 CALL lbc_lnk_nc_multi( 'dynvor', zwz, 'F', 1.0_wp ) 246 #else 244 247 CALL lbc_lnk( 'dynvor', zwz, 'F', 1.0_wp ) 248 #endif 245 249 246 250 CASE ( np_CRV ) !* Coriolis + relative vorticity … … 257 261 END DO 258 262 263 #if defined key_mpi3 264 CALL lbc_lnk_nc_multi( 'dynvor', zwz, 'F', 1.0_wp ) 265 #else 259 266 CALL lbc_lnk( 'dynvor', zwz, 'F', 1.0_wp ) 267 #endif 260 268 261 269 END SELECT … … 610 618 END DO ! End of slab 611 619 ! 620 #if defined key_mpi3 621 CALL lbc_lnk_nc_multi( 'dynvor', zwz, 'F', 1.0_wp ) 622 #else 612 623 CALL lbc_lnk( 'dynvor', zwz, 'F', 1.0_wp ) 624 #endif 613 625 614 626 DO jk = 1, jpkm1 ! Horizontal slab … … 731 743 END DO 732 744 ! 745 #if defined key_mpi3 746 CALL lbc_lnk_nc_multi( 'dynvor', zwz, 'F', 1.0_wp ) 747 #else 733 748 CALL lbc_lnk( 'dynvor', zwz, 'F', 1.0_wp ) 749 #endif 734 750 ! 735 751 DO jk = 1, jpkm1 ! Horizontal slab … … 823 839 END_3D 824 840 ! 841 #if defined key_mpi3 842 CALL lbc_lnk_nc_multi( 'dynvor', fmask, 'F', 1._wp ) ! Lateral boundary conditions on fmask 843 #else 825 844 CALL lbc_lnk( 'dynvor', fmask, 'F', 1._wp ) ! Lateral boundary conditions on fmask 845 #endif 826 846 ! 827 847 ENDIF … … 861 881 dj_e1v_2(ji,jj) = ( e1v(ji,jj) - e1v(ji ,jj-1) ) * 0.5_wp 862 882 END_2D 883 #if defined key_mpi3 884 CALL lbc_lnk_nc_multi( 'dynvor', di_e2u_2, 'T', -1.0_wp , dj_e1v_2, 'T', -1.0_wp ) ! Lateral boundary conditions 885 #else 863 886 CALL lbc_lnk_multi( 'dynvor', di_e2u_2, 'T', -1.0_wp , dj_e1v_2, 'T', -1.0_wp ) ! Lateral boundary conditions 887 #endif 864 888 ! 865 889 CASE DEFAULT !* F-point metric term : pre-compute di(e2u)/(2*e1e2f) and dj(e1v)/(2*e1e2f) … … 869 893 dj_e1u_2e1e2f(ji,jj) = ( e1u(ji ,jj+1) - e1u(ji,jj) ) * 0.5 * r1_e1e2f(ji,jj) 870 894 END_2D 895 #if defined key_mpi3 896 CALL lbc_lnk_nc_multi( 'dynvor', di_e2v_2e1e2f, 'F', -1.0_wp , dj_e1u_2e1e2f, 'F', -1.0_wp ) ! Lateral boundary conditions 897 #else 871 898 CALL lbc_lnk_multi( 'dynvor', di_e2v_2e1e2f, 'F', -1.0_wp , dj_e1u_2e1e2f, 'F', -1.0_wp ) ! Lateral boundary conditions 899 #endif 872 900 END SELECT 873 901 ! -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/DYN/sshwzv.F90
r13553 r13906 119 119 IF ( .NOT.ln_dynspg_ts ) THEN 120 120 IF( ln_bdy ) THEN 121 #if defined key_mpi3 122 CALL lbc_lnk_nc_multi( 'sshwzv', pssh(:,:,Kaa), 'T', 1.0_wp ) ! Not sure that's necessary 123 #else 121 124 CALL lbc_lnk( 'sshwzv', pssh(:,:,Kaa), 'T', 1.0_wp ) ! Not sure that's necessary 125 #endif 122 126 CALL bdy_ssh( pssh(:,:,Kaa) ) ! Duplicate sea level across open boundaries 123 127 ENDIF … … 182 186 END_2D 183 187 END DO 188 #if defined key_mpi3 189 CALL lbc_lnk_nc_multi('sshwzv', zhdiv, 'T', 1.0_wp) ! - ML - Perhaps not necessary: not used for horizontal "connexions" 190 #else 184 191 CALL lbc_lnk('sshwzv', zhdiv, 'T', 1.0_wp) ! - ML - Perhaps not necessary: not used for horizontal "connexions" 192 #endif 185 193 ! ! Is it problematic to have a wrong vertical velocity in boundary cells? 186 194 ! ! Same question holds for hdiv. Perhaps just for security … … 388 396 END_3D 389 397 ENDIF 398 #if defined key_mpi3 399 CALL lbc_lnk_nc_multi( 'sshwzv', Cu_adv, 'T', 1.0_wp ) 400 #else 390 401 CALL lbc_lnk( 'sshwzv', Cu_adv, 'T', 1.0_wp ) 402 #endif 391 403 ! 392 404 CALL iom_put("Courant",Cu_adv) -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/DYN/wet_dry.F90
r13741 r13906 241 241 ENDIF 242 242 END_2D 243 #if defined key_mpi3 244 CALL lbc_lnk_nc_multi( 'wet_dry', zwdlmtu, 'U', 1.0_wp, zwdlmtv, 'V', 1.0_wp ) 245 #else 243 246 CALL lbc_lnk_multi( 'wet_dry', zwdlmtu, 'U', 1.0_wp, zwdlmtv, 'V', 1.0_wp ) 247 #endif 244 248 ! 245 249 CALL mpp_max('wet_dry', jflag) !max over the global domain … … 257 261 ! 258 262 !!gm TO BE SUPPRESSED ? these lbc_lnk are useless since zwdlmtu and zwdlmtv are defined everywhere ! 263 #if defined key_mpi3 264 CALL lbc_lnk_nc_multi( 'wet_dry', puu(:,:,:,Kmm) , 'U', -1.0_wp, pvv(:,:,:,Kmm) , 'V', -1.0_wp ) 265 CALL lbc_lnk_nc_multi( 'wet_dry', uu_b(:,:,Kmm), 'U', -1.0_wp, vv_b(:,:,Kmm), 'V', -1.0_wp ) 266 #else 259 267 CALL lbc_lnk_multi( 'wet_dry', puu(:,:,:,Kmm) , 'U', -1.0_wp, pvv(:,:,:,Kmm) , 'V', -1.0_wp ) 260 268 CALL lbc_lnk_multi( 'wet_dry', uu_b(:,:,Kmm), 'U', -1.0_wp, vv_b(:,:,Kmm), 'V', -1.0_wp ) 269 #endif 261 270 !!gm 262 271 ! … … 366 375 END_2D 367 376 ! 377 #if defined key_mpi3 378 CALL lbc_lnk_nc_multi( 'wet_dry', zwdlmtu, 'U', 1.0_wp, zwdlmtv, 'V', 1.0_wp ) 379 #else 368 380 CALL lbc_lnk_multi( 'wet_dry', zwdlmtu, 'U', 1.0_wp, zwdlmtv, 'V', 1.0_wp ) 381 #endif 369 382 ! 370 383 CALL mpp_max('wet_dry', jflag) !max over the global domain … … 378 391 ! 379 392 !!gm THIS lbc_lnk is useless since it is already done at the end of the jk1-loop 393 #if defined key_mpi3 394 CALL lbc_lnk_nc_multi( 'wet_dry', zflxu, 'U', -1.0_wp, zflxv, 'V', -1.0_wp ) 395 #else 380 396 CALL lbc_lnk_multi( 'wet_dry', zflxu, 'U', -1.0_wp, zflxv, 'V', -1.0_wp ) 397 #endif 381 398 !!gm end 382 399 ! -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/ICB/icbclv.F90
r13295 r13906 173 173 ! 174 174 DO jn = 1, nclasses 175 #if defined key_mpi3 176 CALL lbc_lnk_nc_multi( 'icbclv', berg_grid%stored_ice(:,:,jn), 'T', 1._wp ) 177 #else 175 178 CALL lbc_lnk( 'icbclv', berg_grid%stored_ice(:,:,jn), 'T', 1._wp ) 179 #endif 176 180 END DO 181 #if defined key_mpi3 182 CALL lbc_lnk_nc_multi( 'icbclv', berg_grid%stored_heat, 'T', 1._wp ) 183 #else 177 184 CALL lbc_lnk( 'icbclv', berg_grid%stored_heat, 'T', 1._wp ) 185 #endif 178 186 ! 179 187 IF( nn_verbose_level > 0 .AND. icntmax > 1 ) WRITE(numicb,*) 'icb_clv: icnt=', icnt,' on', narea -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/ICB/icbini.F90
r13295 r13906 127 127 src_calving (ji,jj) = nicbpack * mjg(jj) + mig(ji) 128 128 END_2D 129 #if defined key_mpi3 130 CALL lbc_lnk_nc_multi( 'icbini', src_calving_hflx, 'T', 1._wp ) 131 CALL lbc_lnk_nc_multi( 'icbini', src_calving , 'T', 1._wp ) 132 #else 129 133 CALL lbc_lnk( 'icbini', src_calving_hflx, 'T', 1._wp ) 130 134 CALL lbc_lnk( 'icbini', src_calving , 'T', 1._wp ) 135 #endif 131 136 132 137 ! work out interior of processor from exchange array -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/IOM/iom.F90
r13831 r13906 1342 1342 !--- overlap areas and extra hallows (mpp) 1343 1343 IF( PRESENT(pv_r2d) .AND. idom /= jpdom_unknown .AND. cl_type /= 'Z' ) THEN 1344 #if defined key_mpi3 1345 CALL lbc_lnk_nc_multi( 'iom', pv_r2d, cl_type, zsgn, kfillmode = kfill ) 1346 #else 1344 1347 CALL lbc_lnk( 'iom', pv_r2d, cl_type, zsgn, kfillmode = kfill ) 1348 #endif 1345 1349 ELSEIF( PRESENT(pv_r3d) .AND. idom /= jpdom_unknown .AND. cl_type /= 'Z' ) THEN 1350 #if defined key_mpi3 1351 CALL lbc_lnk_nc_multi( 'iom', pv_r3d, cl_type, zsgn, kfillmode = kfill ) 1352 #else 1346 1353 CALL lbc_lnk( 'iom', pv_r3d, cl_type, zsgn, kfillmode = kfill ) 1354 #endif 1347 1355 ENDIF 1348 1356 ! … … 1363 1371 IF(lwp) WRITE(numout,*) 'XIOS RST READ (3D): ',TRIM(cdvar) 1364 1372 CALL xios_recv_field( trim(cdvar), pv_r3d) 1373 #if defined key_mpi3 1374 IF(idom /= jpdom_unknown ) CALL lbc_lnk_nc_multi( 'iom', pv_r3d,'Z', -999., kfillmode = jpfillnothing) 1375 #else 1365 1376 IF(idom /= jpdom_unknown ) CALL lbc_lnk( 'iom', pv_r3d,'Z', -999., kfillmode = jpfillnothing) 1377 #endif 1366 1378 ELSEIF( PRESENT(pv_r2d) ) THEN 1367 1379 IF(lwp) WRITE(numout,*) 'XIOS RST READ (2D): ', TRIM(cdvar) 1368 1380 CALL xios_recv_field( trim(cdvar), pv_r2d) 1381 #if defined key_mpi3 1382 IF(idom /= jpdom_unknown ) CALL lbc_lnk_nc_multi('iom', pv_r2d,'Z',-999., kfillmode = jpfillnothing) 1383 #else 1369 1384 IF(idom /= jpdom_unknown ) CALL lbc_lnk('iom', pv_r2d,'Z',-999., kfillmode = jpfillnothing) 1385 #endif 1370 1386 ELSEIF( PRESENT(pv_r1d) ) THEN 1371 1387 IF(lwp) WRITE(numout,*) 'XIOS RST READ (1D): ', TRIM(cdvar) … … 1380 1396 !some final adjustments 1381 1397 ! C1D case : always call lbc_lnk to replicate the central value over the whole 3X3 domain 1398 #if defined key_mpi3 1399 IF( lk_c1d .AND. PRESENT(pv_r2d) ) CALL lbc_lnk_nc_multi( 'iom', pv_r2d,'Z',1.0_wp ) 1400 IF( lk_c1d .AND. PRESENT(pv_r3d) ) CALL lbc_lnk_nc_multi( 'iom', pv_r3d,'Z',1.0_wp ) 1401 #else 1382 1402 IF( lk_c1d .AND. PRESENT(pv_r2d) ) CALL lbc_lnk( 'iom', pv_r2d,'Z',1.0_wp ) 1383 1403 IF( lk_c1d .AND. PRESENT(pv_r3d) ) CALL lbc_lnk( 'iom', pv_r3d,'Z',1.0_wp ) 1404 #endif 1384 1405 1385 1406 !--- Apply scale_factor and offset … … 2232 2253 ! 2233 2254 z_fld(:,:) = 1._wp 2255 #if defined key_mpi3 2256 CALL lbc_lnk_nc_multi( 'iom', z_fld, cdgrd, -1.0_wp ) ! Working array for location of northfold 2257 #else 2234 2258 CALL lbc_lnk( 'iom', z_fld, cdgrd, -1.0_wp ) ! Working array for location of northfold 2259 #endif 2235 2260 ! 2236 2261 ! Cell vertices that can be defined -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/ISF/isfcav.F90
r13226 r13906 136 136 ! 137 137 ! lbclnk on melt 138 #if defined key_mpi3 139 CALL lbc_lnk_nc_multi( 'isfmlt', zqh, 'T', 1.0_wp, pqfwf, 'T', 1.0_wp) 140 #else 138 141 CALL lbc_lnk_multi( 'isfmlt', zqh, 'T', 1.0_wp, pqfwf, 'T', 1.0_wp) 142 #endif 139 143 ! 140 144 ! output fluxes -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/ISF/isfcpl.F90
r13295 r13906 212 212 zssmask0(:,:) = zssmask_b(:,:) 213 213 ! 214 #if defined key_mpi3 215 CALL lbc_lnk_nc_multi( 'iscplrst', zssh, 'T', 1.0_wp, zssmask0, 'T', 1.0_wp ) 216 #else 214 217 CALL lbc_lnk_multi( 'iscplrst', zssh, 'T', 1.0_wp, zssmask0, 'T', 1.0_wp ) 218 #endif 215 219 ! 216 220 END DO … … 367 371 ztmask0(:,:,:) = ztmask1(:,:,:) 368 372 ! 373 #if defined key_mpi3 374 CALL lbc_lnk_nc_multi( 'iscplrst', zts0(:,:,:,jp_tem), 'T', 1.0_wp, zts0(:,:,:,jp_sal), 'T', 1.0_wp, ztmask0, 'T', 1.0_wp) 375 #else 369 376 CALL lbc_lnk_multi( 'iscplrst', zts0(:,:,:,jp_tem), 'T', 1.0_wp, zts0(:,:,:,jp_sal), 'T', 1.0_wp, ztmask0, 'T', 1.0_wp) 377 #endif 370 378 ! 371 379 END DO ! nn_drown … … 458 466 END_2D 459 467 ! 468 #if defined key_mpi3 469 CALL lbc_lnk_nc_multi( 'iscpl', risfcpl_vol, 'T', 1.0_wp ) 470 #else 460 471 CALL lbc_lnk( 'iscpl', risfcpl_vol, 'T', 1.0_wp ) 472 #endif 461 473 ! 462 474 ! 3.0: set total correction (div, tr(:,:,:,:,Krhs), ssh) … … 693 705 ! 694 706 ! add lbclnk 707 #if defined key_mpi3 708 CALL lbc_lnk_nc_multi( 'iscplrst', risfcpl_cons_tsc(:,:,:,jp_tem), 'T', 1.0_wp, risfcpl_cons_tsc(:,:,:,jp_sal), 'T', 1.0_wp, & 709 & risfcpl_cons_vol(:,:,:) , 'T', 1.0_wp) 710 #else 695 711 CALL lbc_lnk_multi( 'iscplrst', risfcpl_cons_tsc(:,:,:,jp_tem), 'T', 1.0_wp, risfcpl_cons_tsc(:,:,:,jp_sal), 'T', 1.0_wp, & 696 712 & risfcpl_cons_vol(:,:,:) , 'T', 1.0_wp) 713 #endif 697 714 ! 698 715 ! ssh correction (for dynspg_ts) -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/ISF/isfpar.F90
r13226 r13906 82 82 ! 83 83 ! lbclnk on melt and heat fluxes 84 #if defined key_mpi3 85 CALL lbc_lnk_nc_multi( 'isfmlt', zqh, 'T', 1.0_wp, pqfwf, 'T', 1.0_wp) 86 #else 84 87 CALL lbc_lnk_multi( 'isfmlt', zqh, 'T', 1.0_wp, pqfwf, 'T', 1.0_wp) 88 #endif 85 89 ! 86 90 ! output fluxes -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/LBC/halo_mng.F90
r13286 r13906 92 92 zpta = pta(offset+1 : offset+jpi, offset+1 : offset+jpj) 93 93 END IF 94 #if defined key_mpi3 95 CALL lbc_lnk_nc_multi( 'halo_mng_resize_2D', zpta, cdna, psgn, pfillval=fillval) 96 #else 94 97 CALL lbc_lnk( 'halo_mng_resize_2D', zpta, cdna, psgn, pfillval=fillval) 98 #endif 95 99 DEALLOCATE(pta) 96 100 pta => zpta … … 122 126 zpta = pta(offset+1 : offset+jpi, offset+1 : offset+jpj, :) 123 127 END IF 128 #if defined key_mpi3 129 CALL lbc_lnk_nc_multi( 'halo_mng_resize_3D', zpta, cdna, psgn, pfillval=fillval) 130 #else 124 131 CALL lbc_lnk( 'halo_mng_resize_3D', zpta, cdna, psgn, pfillval=fillval) 132 #endif 125 133 DEALLOCATE(pta) 126 134 pta => zpta … … 153 161 zpta = pta(offset+1 : offset+jpi, offset+1 : offset+jpj, :, :) 154 162 END IF 163 #if defined key_mpi3 164 CALL lbc_lnk_nc_multi( 'halo_mng_resize_4D', zpta(:,:,:,fjpt), cdna, psgn, pfillval=fillval) 165 #else 155 166 CALL lbc_lnk( 'halo_mng_resize_4D', zpta(:,:,:,fjpt), cdna, psgn, pfillval=fillval) 167 #endif 156 168 DEALLOCATE(pta) 157 169 pta => zpta … … 185 197 zpta = pta(offset+1 : offset+jpi, offset+1 : offset+jpj, :, :, :) 186 198 END IF 199 #if defined key_mpi3 200 CALL lbc_lnk_nc_multi( 'halo_mng_resize_5D', zpta(:,:,:,:,fjpt), cdna, psgn, pfillval=fillval) 201 #else 187 202 CALL lbc_lnk( 'halo_mng_resize_5D', zpta(:,:,:,:,fjpt), cdna, psgn, pfillval=fillval) 203 #endif 188 204 DEALLOCATE(pta) 189 205 pta => zpta -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/LBC/lbclnk.F90
r13226 r13906 39 39 MODULE PROCEDURE lbc_lnk_2d_multi_dp , lbc_lnk_3d_multi_dp, lbc_lnk_4d_multi_dp 40 40 END INTERFACE 41 INTERFACE lbc_lnk_nc_multi 42 MODULE PROCEDURE lbc_lnk_nc_2d_sp, lbc_lnk_nc_3d_sp, lbc_lnk_nc_4d_sp 43 MODULE PROCEDURE lbc_lnk_nc_2d_dp, lbc_lnk_nc_3d_dp, lbc_lnk_nc_4d_dp 44 END INTERFACE 45 INTERFACE lbc_lnk_nc 46 MODULE PROCEDURE mpp_lnk_nc_2d_sp, mpp_lnk_nc_3d_sp, mpp_lnk_nc_4d_sp 47 MODULE PROCEDURE mpp_lnk_nc_2d_dp, mpp_lnk_nc_3d_dp, mpp_lnk_nc_4d_dp 48 END INTERFACE 41 49 ! 42 50 INTERFACE lbc_lnk_icb … … 52 60 END INTERFACE 53 61 54 PUBLIC lbc_lnk ! ocean/ice lateral boundary conditions 55 PUBLIC lbc_lnk_multi ! modified ocean/ice lateral boundary conditions 56 PUBLIC lbc_lnk_icb ! iceberg lateral boundary conditions 62 PUBLIC lbc_lnk ! ocean/ice lateral boundary conditions 63 PUBLIC lbc_lnk_multi ! modified ocean/ice lateral boundary conditions 64 PUBLIC lbc_lnk_icb ! iceberg lateral boundary conditions 65 PUBLIC lbc_lnk_nc ! ocean/ice lateral boundary conditions (MPI3 version) 66 PUBLIC lbc_lnk_nc_multi ! modified ocean/ice lateral boundary conditions (MPI3 version) 57 67 58 68 #if defined key_mpp_mpi … … 250 260 # undef DIM_4d 251 261 262 !!---------------------------------------------------------------------- 263 !! *** load_ptr_(2,3,4)d *** 264 !! 265 !! * Dummy Argument : 266 !! in ==> ptab ! array to be loaded (2D, 3D or 4D) 267 !! cd_nat ! nature of pt2d array grid-points 268 !! psgn ! sign used across the north fold boundary 269 !! inout <=> ptab_ptr ! array of 2D, 3D or 4D pointers 270 !! cdna_ptr ! nature of ptab array grid-points 271 !! psgn_ptr ! sign used across the north fold boundary 272 !! kfld ! number of elements that has been attributed 273 !!---------------------------------------------------------------------- 274 275 !!---------------------------------------------------------------------- 276 !! *** lbc_lnk_nc(2,3,4)d_multi *** 277 !! *** load_ptr_(2,3,4)d *** 278 !! 279 !! * Argument : dummy argument use in lbc_lnk_nc_multi_... routines 280 !! 281 !!---------------------------------------------------------------------- 282 283 !! 284 !! ---- SINGLE PRECISION VERSIONS 285 !! 286 # define SINGLE_PRECISION 287 # define DIM_2d 288 # define ROUTINE_NC_LOAD load_ptr_nc_2d_sp 289 # define ROUTINE_MULTI_NC lbc_lnk_nc_2d_sp 290 # include "lbc_lnk_nc_generic.h90" 291 # undef ROUTINE_MULTI_NC 292 # undef ROUTINE_NC_LOAD 293 # undef DIM_2d 294 295 # define DIM_3d 296 # define ROUTINE_NC_LOAD load_ptr_nc_3d_sp 297 # define ROUTINE_MULTI_NC lbc_lnk_nc_3d_sp 298 # include "lbc_lnk_nc_generic.h90" 299 # undef ROUTINE_MULTI_NC 300 # undef ROUTINE_NC_LOAD 301 # undef DIM_3d 302 303 # define DIM_4d 304 # define ROUTINE_NC_LOAD load_ptr_nc_4d_sp 305 # define ROUTINE_MULTI_NC lbc_lnk_nc_4d_sp 306 # include "lbc_lnk_nc_generic.h90" 307 # undef ROUTINE_MULTI_NC 308 # undef ROUTINE_NC_LOAD 309 # undef DIM_4d 310 # undef SINGLE_PRECISION 311 !! 312 !! ---- DOUBLE PRECISION VERSIONS 313 !! 314 315 # define DIM_2d 316 # define ROUTINE_NC_LOAD load_ptr_nc_2d_dp 317 # define ROUTINE_MULTI_NC lbc_lnk_nc_2d_dp 318 # include "lbc_lnk_nc_generic.h90" 319 # undef ROUTINE_MULTI_NC 320 # undef ROUTINE_NC_LOAD 321 # undef DIM_2d 322 323 # define DIM_3d 324 # define ROUTINE_NC_LOAD load_ptr_nc_3d_dp 325 # define ROUTINE_MULTI_NC lbc_lnk_nc_3d_dp 326 # include "lbc_lnk_nc_generic.h90" 327 # undef ROUTINE_MULTI_NC 328 # undef ROUTINE_NC_LOAD 329 # undef DIM_3d 330 331 # define DIM_4d 332 # define ROUTINE_NC_LOAD load_ptr_nc_4d_dp 333 # define ROUTINE_MULTI_NC lbc_lnk_nc_4d_dp 334 # include "lbc_lnk_nc_generic.h90" 335 # undef ROUTINE_MULTI_NC 336 # undef ROUTINE_NC_LOAD 337 # undef DIM_4d 338 339 !!---------------------------------------------------------------------- 340 !! *** routine mpp_lnk_nc_(2,3,4)d *** 341 !! 342 !! * Argument : dummy argument use in mpp_lnk_... routines 343 !! ptab : array or pointer of arrays on which the boundary condition is applied 344 !! cd_nat : nature of array grid-points 345 !! psgn : sign used across the north fold boundary 346 !! kfld : optional, number of pt3d arrays 347 !! kfillmode : optional, method to be use to fill the halos (see jpfill* variables) 348 !! pfillval : optional, background value (used with jpfillcopy) 349 !!---------------------------------------------------------------------- 350 ! 351 ! !== 2D array and array of 2D pointer ==! 352 ! 353 !! 354 !! ---- SINGLE PRECISION VERSIONS 355 !! 356 # define SINGLE_PRECISION 357 # define DIM_2d 358 # define ROUTINE_NC mpp_lnk_nc_2d_sp 359 # include "mpp_nc_generic.h90" 360 # undef ROUTINE_NC 361 # undef DIM_2d 362 ! 363 ! !== 3D array and array of 3D pointer ==! 364 ! 365 # define DIM_3d 366 # define ROUTINE_NC mpp_lnk_nc_3d_sp 367 # include "mpp_nc_generic.h90" 368 # undef ROUTINE_NC 369 # undef DIM_3d 370 ! 371 ! !== 4D array and array of 4D pointer ==! 372 ! 373 # define DIM_4d 374 # define ROUTINE_NC mpp_lnk_nc_4d_sp 375 # include "mpp_nc_generic.h90" 376 # undef ROUTINE_NC 377 # undef DIM_4d 378 # undef SINGLE_PRECISION 379 380 !! 381 !! ---- DOUBLE PRECISION VERSIONS 382 !! 383 # define DIM_2d 384 # define ROUTINE_NC mpp_lnk_nc_2d_dp 385 # include "mpp_nc_generic.h90" 386 # undef ROUTINE_NC 387 # undef DIM_2d 388 ! 389 ! !== 3D array and array of 3D pointer ==! 390 ! 391 # define DIM_3d 392 # define ROUTINE_NC mpp_lnk_nc_3d_dp 393 # include "mpp_nc_generic.h90" 394 # undef ROUTINE_NC 395 # undef DIM_3d 396 ! 397 ! !== 4D array and array of 4D pointer ==! 398 ! 399 # define DIM_4d 400 # define ROUTINE_NC mpp_lnk_nc_4d_dp 401 # include "mpp_nc_generic.h90" 402 # undef ROUTINE_NC 403 # undef DIM_4d 252 404 253 405 !!---------------------------------------------------------------------- -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/LBC/lib_mpp.F90
r13741 r13906 66 66 PUBLIC mppscatter, mppgather 67 67 PUBLIC mpp_ini_znl 68 PUBLIC mpp_ini_nc 68 69 PUBLIC mppsend, mpprecv ! needed by TAM and ICB routines 69 70 PUBLIC mppsend_sp, mpprecv_sp ! needed by TAM and ICB routines … … 137 138 INTEGER :: ndim_rank_znl ! number of processors on the same zonal average 138 139 INTEGER, DIMENSION(:), ALLOCATABLE, SAVE :: nrank_znl ! dimension ndim_rank_znl, number of the procs into the same znl domain 140 141 ! variables used for MPI3 neighbourhood collectives 142 INTEGER, PUBLIC :: mpi_nc_com ! MPI3 neighbourhood collectives communicator 143 INTEGER, PUBLIC :: mpi_nc_all_com ! MPI3 neighbourhood collectives communicator (with diagionals) 139 144 140 145 ! North fold condition in mpp_mpi with jpni > 1 (PUBLIC for TAM) … … 1067 1072 1068 1073 END SUBROUTINE mpp_ini_znl 1074 1075 SUBROUTINE mpp_ini_nc 1076 !!---------------------------------------------------------------------- 1077 !! *** routine mpp_ini_nc *** 1078 !! 1079 !! ** Purpose : Initialize special communicators for MPI3 neighbourhood 1080 !! collectives 1081 !! 1082 !! ** Method : - Create graph communicators starting from the processes 1083 !! distribution along i and j directions 1084 ! 1085 !! ** output 1086 !! mpi_nc_com = MPI3 neighbourhood collectives communicator 1087 !! mpi_nc_all_com = MPI3 neighbourhood collectives communicator 1088 !! (with diagonals) 1089 !! 1090 !!---------------------------------------------------------------------- 1091 INTEGER, DIMENSION(:), ALLOCATABLE :: ineigh, ineighalls, ineighallr 1092 INTEGER :: ideg, idegalls, idegallr, icont, icont1 1093 INTEGER :: ierr 1094 LOGICAL, PARAMETER :: ireord = .FALSE. 1095 1096 #if defined key_mpp_mpi 1097 1098 ideg = 0 1099 idegalls = 0 1100 idegallr = 0 1101 icont = 0 1102 icont1 = 0 1103 1104 IF (nbondi .eq. 1) THEN 1105 ideg = ideg + 1 1106 ELSEIF (nbondi .eq. -1) THEN 1107 ideg = ideg + 1 1108 ELSEIF (nbondi .eq. 0) THEN 1109 ideg = ideg + 2 1110 ENDIF 1111 1112 IF (nbondj .eq. 1) THEN 1113 ideg = ideg + 1 1114 ELSEIF (nbondj .eq. -1) THEN 1115 ideg = ideg + 1 1116 ELSEIF (nbondj .eq. 0) THEN 1117 ideg = ideg + 2 1118 ENDIF 1119 1120 idegalls = ideg 1121 idegallr = ideg 1122 1123 IF (nones .ne. -1) idegalls = idegalls + 1 1124 IF (nonws .ne. -1) idegalls = idegalls + 1 1125 IF (noses .ne. -1) idegalls = idegalls + 1 1126 IF (nosws .ne. -1) idegalls = idegalls + 1 1127 IF (noner .ne. -1) idegallr = idegallr + 1 1128 IF (nonwr .ne. -1) idegallr = idegallr + 1 1129 IF (noser .ne. -1) idegallr = idegallr + 1 1130 IF (noswr .ne. -1) idegallr = idegallr + 1 1131 1132 ALLOCATE(ineigh(ideg)) 1133 ALLOCATE(ineighalls(idegalls)) 1134 ALLOCATE(ineighallr(idegallr)) 1135 1136 IF (nbondi .eq. 1) THEN 1137 icont = icont + 1 1138 ineigh(icont) = nowe 1139 ineighalls(icont) = nowe 1140 ineighallr(icont) = nowe 1141 ELSEIF (nbondi .eq. -1) THEN 1142 icont = icont + 1 1143 ineigh(icont) = noea 1144 ineighalls(icont) = noea 1145 ineighallr(icont) = noea 1146 ELSEIF (nbondi .eq. 0) THEN 1147 icont = icont + 1 1148 ineigh(icont) = nowe 1149 ineighalls(icont) = nowe 1150 ineighallr(icont) = nowe 1151 icont = icont + 1 1152 ineigh(icont) = noea 1153 ineighalls(icont) = noea 1154 ineighallr(icont) = noea 1155 ENDIF 1156 1157 IF (nbondj .eq. 1) THEN 1158 icont = icont + 1 1159 ineigh(icont) = noso 1160 ineighalls(icont) = noso 1161 ineighallr(icont) = noso 1162 ELSEIF (nbondj .eq. -1) THEN 1163 icont = icont + 1 1164 ineigh(icont) = nono 1165 ineighalls(icont) = nono 1166 ineighallr(icont) = nono 1167 ELSEIF (nbondj .eq. 0) THEN 1168 icont = icont + 1 1169 ineigh(icont) = noso 1170 ineighalls(icont) = noso 1171 ineighallr(icont) = noso 1172 icont = icont + 1 1173 ineigh(icont) = nono 1174 ineighalls(icont) = nono 1175 ineighallr(icont) = nono 1176 ENDIF 1177 1178 icont1 = icont 1179 IF (nosws .ne. -1) THEN 1180 icont = icont + 1 1181 ineighalls(icont) = nosws 1182 ENDIF 1183 IF (noses .ne. -1) THEN 1184 icont = icont + 1 1185 ineighalls(icont) = noses 1186 ENDIF 1187 IF (nonws .ne. -1) THEN 1188 icont = icont + 1 1189 ineighalls(icont) = nonws 1190 ENDIF 1191 IF (nones .ne. -1) THEN 1192 icont = icont + 1 1193 ineighalls(icont) = nones 1194 ENDIF 1195 IF (noswr .ne. -1) THEN 1196 icont1 = icont1 + 1 1197 ineighallr(icont1) = noswr 1198 ENDIF 1199 IF (noser .ne. -1) THEN 1200 icont1 = icont1 + 1 1201 ineighallr(icont1) = noser 1202 ENDIF 1203 IF (nonwr .ne. -1) THEN 1204 icont1 = icont1 + 1 1205 ineighallr(icont1) = nonwr 1206 ENDIF 1207 IF (noner .ne. -1) THEN 1208 icont1 = icont1 + 1 1209 ineighallr(icont1) = noner 1210 ENDIF 1211 1212 CALL MPI_Dist_graph_create_adjacent(mpi_comm_oce, ideg, ineigh, MPI_UNWEIGHTED, ideg, ineigh, MPI_UNWEIGHTED, MPI_INFO_NULL, ireord, mpi_nc_com, ierr) 1213 CALL MPI_Dist_graph_create_adjacent(mpi_comm_oce, idegallr, ineighallr, MPI_UNWEIGHTED, idegalls, ineighalls, MPI_UNWEIGHTED, MPI_INFO_NULL, ireord, mpi_nc_all_com, ierr) 1214 1215 DEALLOCATE (ineigh) 1216 DEALLOCATE (ineighalls) 1217 DEALLOCATE (ineighallr) 1218 #endif 1219 END SUBROUTINE mpp_ini_nc 1220 1069 1221 1070 1222 -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/LBC/mppini.F90
r13556 r13906 542 542 ij = ijn(narea) 543 543 ! 544 ! set default neighbours545 noso = ii_noso(narea)546 nowe = ii_nowe(narea)547 noea = ii_noea(narea)548 nono = ii_nono(narea)549 544 jpi = ijpi(ii,ij) 550 545 !!$ Nis0 = iis0(ii,ij) … … 558 553 njmpp = ijmppt(ii,ij) 559 554 jpk = jpkglo ! third dim 555 556 ! set default neighbours 557 noso = ii_noso(narea) 558 nowe = ii_nowe(narea) 559 noea = ii_noea(narea) 560 nono = ii_nono(narea) 561 562 nones = -1 563 nonws = -1 564 noses = -1 565 nosws = -1 566 567 noner = -1 568 nonwr = -1 569 noser = -1 570 noswr = -1 571 572 IF((nbondi .eq. -1) .or. (nbondi .eq. 0)) THEN ! east neighbour exists 573 IF(ibondj(iin(noea+1),ijn(noea+1)) .eq. 0) THEN 574 nones = ii_nono(noea+1) ! east neighbour has north and south neighbours 575 noses = ii_noso(noea+1) 576 ELSEIF(ibondj(iin(noea+1),ijn(noea+1)) .eq. -1) THEN 577 nones = ii_nono(noea+1) ! east neighbour has north neighbour 578 ELSEIF(ibondj(iin(noea+1),ijn(noea+1)) .eq. 1) THEN 579 noses = ii_noso(noea+1) ! east neighbour has south neighbour 580 END IF 581 END IF 582 IF((nbondi .eq. 1) .or. (nbondi .eq. 0)) THEN ! west neighbour exists 583 IF(ibondj(iin(nowe+1),ijn(nowe+1)) .eq. 0) THEN 584 nonws = ii_nono(nowe+1) ! west neighbour has north and south neighbours 585 nosws = ii_noso(nowe+1) 586 ELSEIF(ibondj(iin(nowe+1),ijn(nowe+1)) .eq. -1) THEN 587 nonws = ii_nono(nowe+1) ! west neighbour has north neighbour 588 ELSEIF(ibondj(iin(nowe+1),ijn(nowe+1)) .eq. 1) THEN 589 nosws = ii_noso(nowe+1) ! west neighbour has north neighbour 590 END IF 591 END IF 592 593 IF((nbondj .eq. -1) .or. (nbondj .eq. 0)) THEN ! north neighbour exists 594 IF(ibondi(iin(nono+1),ijn(nono+1)) .eq. 0) THEN 595 noner = ii_noea(nono+1) ! north neighbour has east and west neighbours 596 nonwr = ii_nowe(nono+1) 597 ELSEIF(ibondi(iin(nono+1),ijn(nono+1)) .eq. -1) THEN 598 noner = ii_noea(nono+1) ! north neighbour has east neighbour 599 ELSEIF(ibondi(iin(nono+1),ijn(nono+1)) .eq. 1) THEN 600 nonwr = ii_nowe(nono+1) ! north neighbour has west neighbour 601 END IF 602 END IF 603 IF((nbondj .eq. 1) .or. (nbondj .eq. 0)) THEN ! south neighbour exists 604 IF(ibondi(iin(noso+1),ijn(noso+1)) .eq. 0) THEN 605 noser = ii_noea(noso+1) ! south neighbour has east and west neighbours 606 noswr = ii_nowe(noso+1) 607 ELSEIF(ibondi(iin(noso+1),ijn(noso+1)) .eq. -1) THEN 608 noser = ii_noea(noso+1) ! south neighbour has east neighbour 609 ELSEIF(ibondi(iin(noso+1),ijn(noso+1)) .eq. 1) THEN 610 noswr = ii_nowe(noso+1) ! south neighbour has west neighbour 611 END IF 612 END IF 613 560 614 ! 561 615 CALL init_doloop ! set start/end indices of do-loop, depending on the halo width value (nn_hls) … … 648 702 ENDIF 649 703 ENDIF 704 705 ! 706 CALL mpp_ini_nc ! Initialize communicator for neighbourhood collective communications 650 707 ! 651 708 CALL init_ioipsl ! Prepare NetCDF output file (if necessary) -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/LDF/ldfc1d_c2d.F90
r13898 r13906 85 85 pah2(ji,jj,jk) = pahs2(ji,jj) * ( zratio + zc * ( 1._wp + TANH( - ( zdep2 - zh ) * zw) ) ) 86 86 END_3D 87 #if defined key_mpi3 88 CALL lbc_lnk_nc_multi( 'ldfc1d_c2d', pah2, 'F', 1.0_wp ) ! Lateral boundary conditions 89 #else 87 90 CALL lbc_lnk( 'ldfc1d_c2d', pah2, 'F', 1.0_wp ) ! Lateral boundary conditions 91 #endif 88 92 ! 89 93 CASE( 'TRA' ) ! U- and V-points (zdep1 & 2 are an approximation in zps-coord.) … … 95 99 END_3D 96 100 ! Lateral boundary conditions 101 #if defined key_mpi3 102 CALL lbc_lnk_nc_multi( 'ldfc1d_c2d', pah1, 'U', 1.0_wp , pah2, 'V', 1.0_wp ) 103 #else 97 104 CALL lbc_lnk_multi( 'ldfc1d_c2d', pah1, 'U', 1.0_wp , pah2, 'V', 1.0_wp ) 105 #endif 98 106 ! 99 107 CASE DEFAULT ! error -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/LDF/ldfdyn.F90
r13553 r13906 398 398 ENDIF 399 399 ! 400 #if defined key_mpi3 401 CALL lbc_lnk_nc_multi( 'ldfdyn', ahmt, 'T', 1.0_wp, ahmf, 'F', 1.0_wp ) 402 #else 400 403 CALL lbc_lnk_multi( 'ldfdyn', ahmt, 'T', 1.0_wp, ahmf, 'F', 1.0_wp ) 404 #endif 401 405 ! 402 406 ! … … 430 434 END DO 431 435 ! 436 #if defined key_mpi3 437 CALL lbc_lnk_nc_multi( 'ldfdyn', dtensq, 'T', 1.0_wp ) ! lbc_lnk on dshesq not needed 438 #else 432 439 CALL lbc_lnk_multi( 'ldfdyn', dtensq, 'T', 1.0_wp ) ! lbc_lnk on dshesq not needed 440 #endif 433 441 ! 434 442 DO jk = 1, jpkm1 … … 481 489 ENDIF 482 490 ! 491 #if defined key_mpi3 492 CALL lbc_lnk_nc_multi( 'ldfdyn', ahmt, 'T', 1.0_wp , ahmf, 'F', 1.0_wp ) 493 #else 483 494 CALL lbc_lnk_multi( 'ldfdyn', ahmt, 'T', 1.0_wp , ahmf, 'F', 1.0_wp ) 495 #endif 484 496 ! 485 497 END SELECT -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/LDF/ldfslp.F90
r13553 r13906 229 229 !!gm end modif 230 230 END_3D 231 #if defined key_mpi3 232 CALL lbc_lnk_nc_multi( 'ldfslp', zwz, 'U', -1.0_wp, zww, 'V', -1.0_wp ) ! lateral boundary conditions 233 #else 231 234 CALL lbc_lnk_multi( 'ldfslp', zwz, 'U', -1.0_wp, zww, 'V', -1.0_wp ) ! lateral boundary conditions 235 #endif 232 236 ! 233 237 ! !* horizontal Shapiro filter … … 303 307 !!gm end modif 304 308 END_3D 309 #if defined key_mpi3 310 CALL lbc_lnk_nc_multi( 'ldfslp', zwz, 'T', -1.0_wp, zww, 'T', -1.0_wp ) ! lateral boundary conditions 311 #else 305 312 CALL lbc_lnk_multi( 'ldfslp', zwz, 'T', -1.0_wp, zww, 'T', -1.0_wp ) ! lateral boundary conditions 313 #endif 306 314 ! 307 315 ! !* horizontal Shapiro filter … … 348 356 ! IV. Lateral boundary conditions 349 357 ! =============================== 358 #if defined key_mpi3 359 CALL lbc_lnk_nc_multi( 'ldfslp', uslp , 'U', -1.0_wp , vslp , 'V', -1.0_wp , wslpi, 'W', -1.0_wp, wslpj, 'W', -1.0_wp ) 360 #else 350 361 CALL lbc_lnk_multi( 'ldfslp', uslp , 'U', -1.0_wp , vslp , 'V', -1.0_wp , wslpi, 'W', -1.0_wp, wslpj, 'W', -1.0_wp ) 362 #endif 351 363 352 364 IF(sn_cfctl%l_prtctl) THEN … … 580 592 wslp2(:,:,1) = 0._wp ! force the surface wslp to zero 581 593 594 #if defined key_mpi3 595 CALL lbc_lnk_nc_multi( 'ldfslp', wslp2, 'W', 1.0_wp ) ! lateral boundary confition on wslp2 only ==>>> gm : necessary ? to be checked 596 #else 582 597 CALL lbc_lnk( 'ldfslp', wslp2, 'W', 1.0_wp ) ! lateral boundary confition on wslp2 only ==>>> gm : necessary ? to be checked 598 #endif 583 599 ! 584 600 IF( ln_timing ) CALL timing_stop('ldf_slp_triad') … … 689 705 END_2D 690 706 !!gm this lbc_lnk should be useless.... 707 #if defined key_mpi3 708 CALL lbc_lnk_nc_multi( 'ldfslp', uslpml , 'U', -1.0_wp , vslpml , 'V', -1.0_wp , wslpiml, 'W', -1.0_wp , wslpjml, 'W', -1.0_wp ) 709 #else 691 710 CALL lbc_lnk_multi( 'ldfslp', uslpml , 'U', -1.0_wp , vslpml , 'V', -1.0_wp , wslpiml, 'W', -1.0_wp , wslpjml, 'W', -1.0_wp ) 711 #endif 692 712 ! 693 713 END SUBROUTINE ldf_slp_mxl -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/LDF/ldftra.F90
r13898 r13906 692 692 zaeiw(ji,jj) = MIN( zzaei , paei0 ) ! Max value = paei0 693 693 END_2D 694 #if defined key_mpi3 695 CALL lbc_lnk_nc_multi( 'ldftra', zaeiw(:,:), 'W', 1.0_wp ) ! lateral boundary condition 696 #else 694 697 CALL lbc_lnk( 'ldftra', zaeiw(:,:), 'W', 1.0_wp ) ! lateral boundary condition 698 #endif 695 699 ! 696 700 DO_2D( 0, 0, 0, 0 ) !== aei at u- and v-points ==! … … 698 702 paeiv(ji,jj,1) = 0.5_wp * ( zaeiw(ji,jj) + zaeiw(ji ,jj+1) ) * vmask(ji,jj,1) 699 703 END_2D 704 #if defined key_mpi3 705 CALL lbc_lnk_nc_multi( 'ldftra', paeiu(:,:,1), 'U', 1.0_wp , paeiv(:,:,1), 'V', 1.0_wp ) ! lateral boundary condition 706 #else 700 707 CALL lbc_lnk_multi( 'ldftra', paeiu(:,:,1), 'U', 1.0_wp , paeiv(:,:,1), 'V', 1.0_wp ) ! lateral boundary condition 708 #endif 701 709 702 710 DO jk = 2, jpkm1 !== deeper values equal the surface one ==! -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/SBC/cpl_oasis3.F90
r13553 r13906 418 418 !--- we must call lbc_lnk to fill the halos that where not received. 419 419 IF( .NOT. ll_1st ) THEN 420 #if defined key_mpi3 421 CALL lbc_lnk_nc_multi( 'cpl_oasis3', pdata(:,:,jc), srcv(kid)%clgrid, srcv(kid)%nsgn ) 422 #else 420 423 CALL lbc_lnk( 'cpl_oasis3', pdata(:,:,jc), srcv(kid)%clgrid, srcv(kid)%nsgn ) 424 #endif 421 425 ENDIF 422 426 -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/SBC/fldread.F90
r13553 r13906 372 372 CALL wgt_list( sdjf, iw ) 373 373 CALL fld_interp( sdjf%num, sdjf%clvar, iw, ipk, dta_alias(:,:,:), sdjf%nrec(1,iaa), sdjf%lsmname ) 374 #if defined key_mpi3 375 CALL lbc_lnk_nc_multi( 'fldread', dta_alias(:,:,:), sdjf%cltype, sdjf%zsgn, kfillmode = jpfillcopy ) 376 #else 374 377 CALL lbc_lnk( 'fldread', dta_alias(:,:,:), sdjf%cltype, sdjf%zsgn, kfillmode = jpfillcopy ) 378 #endif 375 379 ELSE ! default case 376 380 ! C1D case: If product of spatial dimensions == ipk, then x,y are of … … 383 387 IF( lk_c1d .AND. lmoor ) THEN 384 388 CALL iom_get( sdjf%num, jpdom_unknown, sdjf%clvar, dta_alias(2,2,:), sdjf%nrec(1,iaa) ) ! jpdom_unknown -> no lbc_lnk 389 #if defined key_mpi3 390 CALL lbc_lnk_nc_multi( 'fldread', dta_alias(:,:,:), 'T', 1., kfillmode = jpfillcopy ) 391 #else 385 392 CALL lbc_lnk( 'fldread', dta_alias(:,:,:), 'T', 1., kfillmode = jpfillcopy ) 393 #endif 386 394 ELSE 387 395 CALL iom_get( sdjf%num, jpdom_global, sdjf%clvar, dta_alias(:,:,:), sdjf%nrec(1,iaa), & -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/SBC/geo2ocean.F90
r13295 r13906 272 272 ! =========================== ! 273 273 ! ! lateral boundary cond.: T-, U-, V-, F-pts, sgn 274 #if defined key_mpi3 275 CALL lbc_lnk_nc_multi( 'geo2ocean', gcost, 'T', -1.0_wp, gsint, 'T', -1.0_wp, gcosu, 'U', -1.0_wp, gsinu, 'U', -1.0_wp, & 276 & gcosv, 'V', -1.0_wp, gsinv, 'V', -1.0_wp, gcosf, 'F', -1.0_wp, gsinf, 'F', -1.0_wp ) 277 #else 274 278 CALL lbc_lnk_multi( 'geo2ocean', gcost, 'T', -1.0_wp, gsint, 'T', -1.0_wp, gcosu, 'U', -1.0_wp, gsinu, 'U', -1.0_wp, & 275 279 & gcosv, 'V', -1.0_wp, gsinv, 'V', -1.0_wp, gcosf, 'F', -1.0_wp, gsinf, 'F', -1.0_wp ) 280 #endif 276 281 ! 277 282 END SUBROUTINE angle -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/SBC/sbc_oce.F90
r13553 r13906 224 224 wndm(ji,jj) = SQRT ( ztau * zcoef ) * tmask(ji,jj,1) 225 225 END_2D 226 #if defined key_mpi3 227 CALL lbc_lnk_nc_multi( 'sbc_oce', wndm(:,:) , 'T', 1.0_wp ) 228 #else 226 229 CALL lbc_lnk( 'sbc_oce', wndm(:,:) , 'T', 1.0_wp ) 230 #endif 227 231 ! 228 232 END SUBROUTINE sbc_tau2wnd -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/SBC/sbcblk.F90
r13553 r13906 757 757 758 758 IF( ln_crt_fbk ) THEN 759 #if defined key_mpi3 760 CALL lbc_lnk_nc_multi( 'sbcblk', utau, 'U', -1., vtau, 'V', -1., taum, 'T', -1. ) 761 #else 759 762 CALL lbc_lnk_multi( 'sbcblk', utau, 'U', -1., vtau, 'V', -1., taum, 'T', -1. ) 763 #endif 760 764 ELSE 765 #if defined key_mpi3 766 CALL lbc_lnk_nc_multi( 'sbcblk', utau, 'U', -1., vtau, 'V', -1. ) 767 #else 761 768 CALL lbc_lnk_multi( 'sbcblk', utau, 'U', -1., vtau, 'V', -1. ) 769 #endif 762 770 ENDIF 763 771 … … 981 989 pvtaui(ji,jj) = zztmp2 * ( pvtaui(ji,jj) + pvtaui(ji ,jj+1) ) 982 990 END_2D 991 #if defined key_mpi3 992 CALL lbc_lnk_nc_multi( 'sbcblk', putaui, 'U', -1._wp, pvtaui, 'V', -1._wp ) 993 #else 983 994 CALL lbc_lnk_multi( 'sbcblk', putaui, 'U', -1._wp, pvtaui, 'V', -1._wp ) 995 #endif 984 996 ! 985 997 IF(sn_cfctl%l_prtctl) CALL prt_ctl( tab2d_1=putaui , clinfo1=' blk_ice: putaui : ' & … … 1459 1471 ! 1460 1472 END_2D 1473 #if defined key_mpi3 1474 CALL lbc_lnk_nc_multi( 'sbcblk', pcd, 'T', 1.0_wp, pch, 'T', 1.0_wp ) 1475 #else 1461 1476 CALL lbc_lnk_multi( 'sbcblk', pcd, 'T', 1.0_wp, pch, 'T', 1.0_wp ) 1477 #endif 1462 1478 ! 1463 1479 END SUBROUTINE Cdn10_Lupkes2015 -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/SBC/sbccpl.F90
r13553 r13906 1199 1199 frcv(jpr_oty1)%z3(ji,jj,1) = 0.5 * ( frcv(jpr_oty1)%z3(ji ,jj+1,1) + frcv(jpr_oty1)%z3(ji,jj,1) ) 1200 1200 END_2D 1201 #if defined key_mpi3 1202 CALL lbc_lnk_nc_multi( 'sbccpl', frcv(jpr_otx1)%z3(:,:,1), 'U', -1.0_wp, frcv(jpr_oty1)%z3(:,:,1), 'V', -1.0_wp ) 1203 #else 1201 1204 CALL lbc_lnk_multi( 'sbccpl', frcv(jpr_otx1)%z3(:,:,1), 'U', -1.0_wp, frcv(jpr_oty1)%z3(:,:,1), 'V', -1.0_wp ) 1205 #endif 1202 1206 ENDIF 1203 1207 llnewtx = .TRUE. … … 1224 1228 frcv(jpr_taum)%z3(ji,jj,1) = 0.5 * SQRT( zzx * zzx + zzy * zzy ) 1225 1229 END_2D 1230 #if defined key_mpi3 1231 CALL lbc_lnk_nc_multi( 'sbccpl', frcv(jpr_taum)%z3(:,:,1), 'T', 1.0_wp ) 1232 #else 1226 1233 CALL lbc_lnk( 'sbccpl', frcv(jpr_taum)%z3(:,:,1), 'T', 1.0_wp ) 1234 #endif 1227 1235 llnewtau = .TRUE. 1228 1236 ELSE … … 1593 1601 p_tauj(ji,jj) = zztmp2 * ( frcv(jpr_ity1)%z3(ji ,jj+1,1) + frcv(jpr_ity1)%z3(ji,jj,1) ) 1594 1602 END_2D 1603 #if defined key_mpi3 1604 CALL lbc_lnk_nc_multi( 'sbccpl', p_taui, 'U', -1., p_tauj, 'V', -1. ) 1605 #else 1595 1606 CALL lbc_lnk_multi( 'sbccpl', p_taui, 'U', -1., p_tauj, 'V', -1. ) 1607 #endif 1596 1608 END SELECT 1597 1609 … … 2483 2495 zity1(ji,jj) = 0.5 * ( v_ice(ji,jj ) + v_ice(ji ,jj-1 ) ) * fr_i(ji,jj) 2484 2496 END_2D 2497 #if defined key_mpi3 2498 CALL lbc_lnk_nc_multi( 'sbccpl', zitx1, 'T', -1.0_wp, zity1, 'T', -1.0_wp ) 2499 #else 2485 2500 CALL lbc_lnk_multi( 'sbccpl', zitx1, 'T', -1.0_wp, zity1, 'T', -1.0_wp ) 2501 #endif 2486 2502 CASE( 'mixed oce-ice' ) ! Ocean and Ice on C-grid ==> T 2487 2503 DO_2D( 0, 0, 0, 0 ) … … 2492 2508 END_2D 2493 2509 END SELECT 2510 #if defined key_mpi3 2511 CALL lbc_lnk_nc_multi( 'sbccpl', zotx1, ssnd(jps_ocx1)%clgrid, -1.0_wp, zoty1, ssnd(jps_ocy1)%clgrid, -1.0_wp ) 2512 #else 2494 2513 CALL lbc_lnk_multi( 'sbccpl', zotx1, ssnd(jps_ocx1)%clgrid, -1.0_wp, zoty1, ssnd(jps_ocy1)%clgrid, -1.0_wp ) 2514 #endif 2495 2515 ! 2496 2516 ENDIF … … 2560 2580 zity1(ji,jj) = 0.5 * ( v_ice(ji,jj ) + v_ice(ji ,jj-1 ) ) * fr_i(ji,jj) 2561 2581 END_2D 2582 #if defined key_mpi3 2583 CALL lbc_lnk_nc_multi( 'sbccpl', zitx1, 'T', -1.0_wp, zity1, 'T', -1.0_wp ) 2584 #else 2562 2585 CALL lbc_lnk_multi( 'sbccpl', zitx1, 'T', -1.0_wp, zity1, 'T', -1.0_wp ) 2586 #endif 2563 2587 CASE( 'mixed oce-ice' ) ! Ocean and Ice on C-grid ==> T 2564 2588 DO_2D( 0, 0, 0, 0 ) … … 2569 2593 END_2D 2570 2594 END SELECT 2595 #if defined key_mpi3 2596 CALL lbc_lnk_nc_multi( 'sbccpl', zotx1, ssnd(jps_ocxw)%clgrid, -1.0_wp, zoty1, ssnd(jps_ocyw)%clgrid, -1.0_wp ) 2597 #else 2571 2598 CALL lbc_lnk_multi( 'sbccpl', zotx1, ssnd(jps_ocxw)%clgrid, -1.0_wp, zoty1, ssnd(jps_ocyw)%clgrid, -1.0_wp ) 2599 #endif 2572 2600 ! 2573 2601 ! -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/SBC/sbcflx.F90
r13898 r13906 145 145 ! 146 146 ! clem: without these lbc calls, it seems that the northfold is not ok (true in 3.6, not sure in 4.x) 147 #if defined key_mpi3 148 CALL lbc_lnk_nc_multi( 'sbcflx', utau, 'U', -1._wp, vtau, 'V', -1._wp, & 149 & qns, 'T', 1._wp, emp , 'T', 1._wp, qsr, 'T', 1._wp ) !! sfx, 'T', 1._wp ) 150 #else 147 151 CALL lbc_lnk_multi( 'sbcflx', utau, 'U', -1._wp, vtau, 'V', -1._wp, & 148 152 & qns, 'T', 1._wp, emp , 'T', 1._wp, qsr, 'T', 1._wp ) !! sfx, 'T', 1._wp ) 153 #endif 149 154 ! 150 155 IF( nitend-nit000 <= 100 .AND. lwp ) THEN ! control print (if less than 100 time-step asked) … … 172 177 END_2D 173 178 ! 179 #if defined key_mpi3 180 CALL lbc_lnk_nc_multi( 'sbcflx', taum, 'T', 1._wp, wndm, 'T', 1._wp ) 181 #else 174 182 CALL lbc_lnk_multi( 'sbcflx', taum, 'T', 1._wp, wndm, 'T', 1._wp ) 183 #endif 175 184 ! 176 185 END SUBROUTINE sbc_flx -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/SBC/sbcfwb.F90
r13741 r13906 181 181 ! 182 182 !!gm ===>>>> lbc_lnk should be useless as all the computation is done over the whole domain ! 183 #if defined key_mpi3 184 CALL lbc_lnk_nc_multi( 'sbcfwb', zerp_cor, 'T', 1.0_wp ) 185 #else 183 186 CALL lbc_lnk( 'sbcfwb', zerp_cor, 'T', 1.0_wp ) 187 #endif 184 188 ! 185 189 emp(:,:) = emp(:,:) + zerp_cor(:,:) -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/SBC/sbcice_cice.F90
r13295 r13906 222 222 END_2D 223 223 224 #if defined key_mpi3 225 CALL lbc_lnk_nc_multi( 'sbcice_cice', fr_iu , 'U', 1.0_wp, fr_iv , 'V', 1.0_wp ) 226 #else 224 227 CALL lbc_lnk_multi( 'sbcice_cice', fr_iu , 'U', 1.0_wp, fr_iv , 'V', 1.0_wp ) 228 #endif 225 229 226 230 ! set the snow+ice mass … … 506 510 ss_iou(ji,jj) = 0.5 * ( ztmp1(ji,jj-1) + ztmp1(ji,jj) ) * umask(ji,jj,1) 507 511 END_2D 512 #if defined key_mpi3 513 CALL lbc_lnk_nc_multi( 'sbcice_cice', ss_iou , 'U', -1.0_wp ) 514 #else 508 515 CALL lbc_lnk( 'sbcice_cice', ss_iou , 'U', -1.0_wp ) 516 #endif 509 517 510 518 ! y comp of ocean-ice stress … … 516 524 ss_iov(ji,jj) = 0.5 * ( ztmp1(ji-1,jj) + ztmp1(ji,jj) ) * vmask(ji,jj,1) 517 525 END_2D 526 #if defined key_mpi3 527 CALL lbc_lnk_nc_multi( 'sbcice_cice', ss_iov , 'V', -1.0_wp ) 528 #else 518 529 CALL lbc_lnk( 'sbcice_cice', ss_iov , 'V', -1.0_wp ) 530 #endif 519 531 520 532 ! x and y comps of surface stress … … 569 581 fmmflx(:,:) = ztmp1(:,:) !!Joakim edit 570 582 583 #if defined key_mpi3 584 CALL lbc_lnk_nc_multi( 'sbcice_cice', emp , 'T', 1.0_wp, sfx , 'T', 1.0_wp ) 585 #else 571 586 CALL lbc_lnk_multi( 'sbcice_cice', emp , 'T', 1.0_wp, sfx , 'T', 1.0_wp ) 587 #endif 572 588 573 589 ! Solar penetrative radiation and non solar surface heat flux … … 595 611 #endif 596 612 qsr(:,:)=qsr(:,:)+ztmp1(:,:) 613 #if defined key_mpi3 614 CALL lbc_lnk_nc_multi( 'sbcice_cice', qsr , 'T', 1.0_wp ) 615 #else 597 616 CALL lbc_lnk( 'sbcice_cice', qsr , 'T', 1.0_wp ) 617 #endif 598 618 599 619 DO_2D( 1, 1, 1, 1 ) … … 608 628 qns(:,:)=qns(:,:)+nfrzmlt(:,:)+ztmp1(:,:) 609 629 630 #if defined key_mpi3 631 CALL lbc_lnk_nc_multi( 'sbcice_cice', qns , 'T', 1.0_wp ) 632 #else 610 633 CALL lbc_lnk( 'sbcice_cice', qns , 'T', 1.0_wp ) 634 #endif 611 635 612 636 ! Prepare for the following CICE time-step … … 626 650 END_2D 627 651 652 #if defined key_mpi3 653 CALL lbc_lnk_nc_multi( 'sbcice_cice', fr_iu , 'U', 1.0_wp, fr_iv , 'V', 1.0_wp ) 654 #else 628 655 CALL lbc_lnk_multi( 'sbcice_cice', fr_iu , 'U', 1.0_wp, fr_iv , 'V', 1.0_wp ) 656 #endif 629 657 630 658 ! set the snow+ice mass … … 848 876 ! A. Ensure all haloes are filled in NEMO field (pn) 849 877 878 #if defined key_mpi3 879 CALL lbc_lnk_nc_multi( 'sbcice_cice', pn , cd_type, psgn ) 880 #else 850 881 CALL lbc_lnk( 'sbcice_cice', pn , cd_type, psgn ) 882 #endif 851 883 852 884 #if defined key_nemocice_decomp … … 1023 1055 ! D. Ensure all haloes are filled in pn 1024 1056 1057 #if defined key_mpi3 1058 CALL lbc_lnk_nc_multi( 'sbcice_cice', pn , cd_type, psgn ) 1059 #else 1025 1060 CALL lbc_lnk( 'sbcice_cice', pn , cd_type, psgn ) 1061 #endif 1026 1062 1027 1063 END SUBROUTINE cice2nemo -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/SBC/sbcmod.F90
r13831 r13906 464 464 ! A lbc_lnk is therefore needed to ensure reproducibility and restartability. 465 465 ! see ticket #2113 for discussion about this lbc_lnk. 466 #if defined key_mpi3 467 IF( .NOT. ln_passive_mode ) CALL lbc_lnk_nc_multi( 'sbcmod', emp, 'T', 1.0_wp ) ! ensure restartability with icebergs 468 #else 466 469 IF( .NOT. ln_passive_mode ) CALL lbc_lnk( 'sbcmod', emp, 'T', 1.0_wp ) ! ensure restartability with icebergs 470 #endif 467 471 ENDIF 468 472 -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/SBC/sbcwave.F90
r13553 r13906 199 199 ENDIF 200 200 201 #if defined key_mpi3 202 CALL lbc_lnk_nc_multi( 'sbcwave', usd, 'U', -1.0_wp, vsd, 'V', -1.0_wp ) 203 #else 201 204 CALL lbc_lnk_multi( 'sbcwave', usd, 'U', -1.0_wp, vsd, 'V', -1.0_wp ) 205 #endif 202 206 203 207 ! … … 212 216 END_3D 213 217 ! 218 #if defined key_mpi3 219 CALL lbc_lnk_nc_multi( 'sbcwave', ze3divh, 'T', 1.0_wp ) 220 #else 214 221 CALL lbc_lnk( 'sbcwave', ze3divh, 'T', 1.0_wp ) 222 #endif 215 223 ! 216 224 IF( ln_linssh ) THEN ; ik = 1 ! none zero velocity through the sea surface … … 271 279 taum(ji,jj) = SQRT( tauw_x(ji,jj)*tauw_x(ji,jj) + tauw_y(ji,jj)*tauw_y(ji,jj) ) 272 280 END_2D 281 #if defined key_mpi3 282 CALL lbc_lnk_nc_multi( 'sbcwave', utau(:,:), 'U', -1.0_wp , vtau(:,:), 'V', -1.0_wp , taum(:,:) , 'T', -1.0_wp ) 283 #else 273 284 CALL lbc_lnk_multi( 'sbcwave', utau(:,:), 'U', -1.0_wp , vtau(:,:), 'V', -1.0_wp , taum(:,:) , 'T', -1.0_wp ) 285 #endif 274 286 ENDIF 275 287 ! -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/STO/stopar.F90
r13295 r13906 174 174 ! Apply horizontal Laplacian filter to w 175 175 DO jflt = 1, sto2d_flt(jsto) 176 #if defined key_mpi3 177 CALL lbc_lnk_nc_multi( 'stopar', sto2d(:,:,jsto), sto2d_typ(jsto), sto2d_sgn(jsto) ) 178 #else 176 179 CALL lbc_lnk( 'stopar', sto2d(:,:,jsto), sto2d_typ(jsto), sto2d_sgn(jsto) ) 180 #endif 177 181 CALL sto_par_flt( sto2d(:,:,jsto) ) 178 182 END DO … … 197 201 198 202 ! Lateral boundary conditions on sto2d 203 #if defined key_mpi3 204 CALL lbc_lnk_nc_multi( 'stopar', sto2d(:,:,jsto), sto2d_typ(jsto), sto2d_sgn(jsto) ) 205 #else 199 206 CALL lbc_lnk( 'stopar', sto2d(:,:,jsto), sto2d_typ(jsto), sto2d_sgn(jsto) ) 207 #endif 200 208 END DO 201 209 ! … … 212 220 ! Apply horizontal Laplacian filter to w 213 221 DO jflt = 1, sto3d_flt(jsto) 222 #if defined key_mpi3 223 CALL lbc_lnk_nc_multi( 'stopar', sto3d(:,:,jk,jsto), sto3d_typ(jsto), sto3d_sgn(jsto) ) 224 #else 214 225 CALL lbc_lnk( 'stopar', sto3d(:,:,jk,jsto), sto3d_typ(jsto), sto3d_sgn(jsto) ) 226 #endif 215 227 CALL sto_par_flt( sto3d(:,:,jk,jsto) ) 216 228 END DO … … 235 247 END DO 236 248 ! Lateral boundary conditions on sto3d 249 #if defined key_mpi3 250 CALL lbc_lnk_nc_multi( 'stopar', sto3d(:,:,:,jsto), sto3d_typ(jsto), sto3d_sgn(jsto) ) 251 #else 237 252 CALL lbc_lnk( 'stopar', sto3d(:,:,:,jsto), sto3d_typ(jsto), sto3d_sgn(jsto) ) 253 #endif 238 254 END DO 239 255 ! … … 642 658 ! Apply horizontal Laplacian filter to w 643 659 DO jflt = 1, sto2d_flt(jsto) 660 #if defined key_mpi3 661 CALL lbc_lnk_nc_multi( 'stopar', sto2d(:,:,jsto), sto2d_typ(jsto), sto2d_sgn(jsto) ) 662 #else 644 663 CALL lbc_lnk( 'stopar', sto2d(:,:,jsto), sto2d_typ(jsto), sto2d_sgn(jsto) ) 664 #endif 645 665 CALL sto_par_flt( sto2d(:,:,jsto) ) 646 666 END DO … … 659 679 ! Apply horizontal Laplacian filter to w 660 680 DO jflt = 1, sto3d_flt(jsto) 681 #if defined key_mpi3 682 CALL lbc_lnk_nc_multi( 'stopar', sto3d(:,:,jk,jsto), sto3d_typ(jsto), sto3d_sgn(jsto) ) 683 #else 661 684 CALL lbc_lnk( 'stopar', sto3d(:,:,jk,jsto), sto3d_typ(jsto), sto3d_sgn(jsto) ) 685 #endif 662 686 CALL sto_par_flt( sto3d(:,:,jk,jsto) ) 663 687 END DO -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/STO/stopts.F90
r13295 r13906 54 54 55 55 DO jts = 1, jpts 56 #if defined key_mpi3 57 CALL lbc_lnk_nc_multi( 'stopts', pts(:,:,:,jts), 'T' , 1._wp ) 58 #else 56 59 CALL lbc_lnk( 'stopts', pts(:,:,:,jts), 'T' , 1._wp ) 60 #endif 57 61 ENDDO 58 62 … … 119 123 DO jdof = 1, nn_sto_eos 120 124 DO jts = 1, jpts 125 #if defined key_mpi3 126 CALL lbc_lnk_nc_multi( 'stopts', pts_ran(:,:,:,jts,jdof), 'T' , 1._wp ) 127 #else 121 128 CALL lbc_lnk( 'stopts', pts_ran(:,:,:,jts,jdof), 'T' , 1._wp ) 129 #endif 122 130 END DO 123 131 END DO -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/TRA/traadv.F90
r13898 r13906 179 179 CALL tra_adv_cen ( kt, nit000, 'TRA', zuu, zvv, zww, Kmm, pts, jpts, Krhs, nn_cen_h, nn_cen_v ) 180 180 CASE ( np_FCT ) ! FCT scheme : 2nd / 4th order 181 IF (nn_hls.EQ.2) THEN ; CALL lbc_lnk_multi( 'traadv', pts(:,:,:,:,Kbb), 'T', 1., pts(:,:,:,:,Kmm), 'T', 1.) 182 CALL lbc_lnk_multi( 'traadv', zuu(:,:,:), 'U', -1., zvv(:,:,:), 'V', -1., zww(:,:,:), 'W', 1.) ; END IF 181 IF (nn_hls.EQ.2) THEN 182 #if defined key_mpi3 183 CALL lbc_lnk_nc_multi( 'traadv', pts(:,:,:,:,Kbb), 'T', 1., pts(:,:,:,:,Kmm), 'T', 1.) 184 CALL lbc_lnk_nc_multi( 'traadv', zuu(:,:,:), 'U', -1., zvv(:,:,:), 'V', -1., zww(:,:,:), 'W', 1.) 185 #else 186 CALL lbc_lnk_multi( 'traadv', pts(:,:,:,:,Kbb), 'T', 1., pts(:,:,:,:,Kmm), 'T', 1.) 187 CALL lbc_lnk_multi( 'traadv', zuu(:,:,:), 'U', -1., zvv(:,:,:), 'V', -1., zww(:,:,:), 'W', 1.) 188 #endif 189 END IF 183 190 CALL tra_adv_fct ( kt, nit000, 'TRA', rDt, zuu, zvv, zww, Kbb, Kmm, pts, jpts, Krhs, nn_fct_h, nn_fct_v ) 184 191 CASE ( np_MUS ) ! MUSCL 185 192 ! NOTE: [tiling-comms-merge] I added this lbc_lnk as it did not validate against the trunk when using ln_zco 193 #if defined key_mpi3 194 IF (nn_hls.EQ.2) CALL lbc_lnk_nc_multi( 'traadv', pts(:,:,:,:,Kbb), 'T', 1.) 195 #else 186 196 IF (nn_hls.EQ.2) CALL lbc_lnk_multi( 'traadv', pts(:,:,:,:,Kbb), 'T', 1.) 197 #endif 187 198 CALL tra_adv_mus ( kt, nit000, 'TRA', rDt, zuu, zvv, zww, Kbb, Kmm, pts, jpts, Krhs, ln_mus_ups ) 188 199 CASE ( np_UBS ) ! UBS 200 #if defined key_mpi3 201 IF (nn_hls.EQ.2) CALL lbc_lnk_nc_multi( 'traadv', pts(:,:,:,:,Kbb), 'T', 1.) 202 #else 189 203 IF (nn_hls.EQ.2) CALL lbc_lnk_multi( 'traadv', pts(:,:,:,:,Kbb), 'T', 1.) 204 #endif 190 205 CALL tra_adv_ubs ( kt, nit000, 'TRA', rDt, zuu, zvv, zww, Kbb, Kmm, pts, jpts, Krhs, nn_ubs_v ) 191 206 CASE ( np_QCK ) ! QUICKEST 192 IF (nn_hls.EQ.2) THEN ; CALL lbc_lnk_multi( 'traadv', zuu(:,:,:), 'U', -1., zvv(:,:,:), 'V', -1.) 193 CALL lbc_lnk( 'traadv', pts(:,:,:,:,Kbb), 'T', 1.) ; END IF 207 IF (nn_hls.EQ.2) THEN 208 #if defined key_mpi3 209 CALL lbc_lnk_nc_multi( 'traadv', zuu(:,:,:), 'U', -1., zvv(:,:,:), 'V', -1.) 210 CALL lbc_lnk_nc_multi( 'traadv', pts(:,:,:,:,Kbb), 'T', 1.) 211 #else 212 CALL lbc_lnk_multi( 'traadv', zuu(:,:,:), 'U', -1., zvv(:,:,:), 'V', -1.) 213 CALL lbc_lnk( 'traadv', pts(:,:,:,:,Kbb), 'T', 1.) 214 #endif 215 END IF 194 216 CALL tra_adv_qck ( kt, nit000, 'TRA', rDt, zuu, zvv, zww, Kbb, Kmm, pts, jpts, Krhs ) 195 217 ! -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/TRA/traadv_cen.F90
r13898 r13906 119 119 ztv(ji,jj,jk) = ( pt(ji ,jj+1,jk,jn,Kmm) - pt(ji,jj,jk,jn,Kmm) ) * vmask(ji,jj,jk) 120 120 END_3D 121 #if defined key_mpi3 122 IF (nn_hls.EQ.1) CALL lbc_lnk_nc_multi( 'traadv_cen', ztu, 'U', -1.0_wp , ztv, 'V', -1.0_wp ) ! Lateral boundary cond. 123 #else 121 124 IF (nn_hls.EQ.1) CALL lbc_lnk_multi( 'traadv_cen', ztu, 'U', -1.0_wp , ztv, 'V', -1.0_wp ) ! Lateral boundary cond. 125 #endif 122 126 ! 123 127 DO_3D( nn_hls-1, 0, nn_hls-1, 0, 1, jpkm1 ) ! Horizontal advective fluxes … … 131 135 zwy(ji,jj,jk) = 0.5_wp * pV(ji,jj,jk) * zC4t_v 132 136 END_3D 137 #if defined key_mpi3 138 IF (nn_hls.EQ.1) CALL lbc_lnk_nc_multi( 'traadv_cen', zwx, 'U', -1. , zwy, 'V', -1. ) 139 #else 133 140 IF (nn_hls.EQ.1) CALL lbc_lnk_multi( 'traadv_cen', zwx, 'U', -1. , zwy, 'V', -1. ) 141 #endif 134 142 ! 135 143 CASE DEFAULT -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/TRA/traadv_fct.F90
r13903 r13906 112 112 ! 113 113 ENDIF 114 114 115 !! -- init to 0 115 116 zwi(:,:,:) = 0._wp … … 237 238 END_2D 238 239 END DO 240 #if defined key_mpi3 241 CALL lbc_lnk_nc_multi( 'traadv_fct', zltu, 'T', 1.0_wp , zltv, 'T', 1.0_wp, ncsten=.FALSE. ) ! Lateral boundary cond. (unchanged sgn) 242 #else 239 243 CALL lbc_lnk_multi( 'traadv_fct', zltu, 'T', 1.0_wp , zltv, 'T', 1.0_wp ) ! Lateral boundary cond. (unchanged sgn) 240 ! 241 DO_3D( 1, 0, 1, 0, 1, jpkm1 ) 244 #endif 245 ! 246 DO_3D( 1, 0, 1, 0, 1, jpkm1 ) ! Horizontal advective fluxes 242 247 zC2t_u = pt(ji,jj,jk,jn,Kmm) + pt(ji+1,jj ,jk,jn,Kmm) ! 2 x C2 interpolation of T at u- & v-points 243 248 zC2t_v = pt(ji,jj,jk,jn,Kmm) + pt(ji ,jj+1,jk,jn,Kmm) … … 255 260 ztv(ji,jj,jk) = ( pt(ji ,jj+1,jk,jn,Kmm) - pt(ji,jj,jk,jn,Kmm) ) * vmask(ji,jj,jk) 256 261 END_3D 262 #if defined key_mpi3 263 IF (nn_hls.EQ.1) CALL lbc_lnk_nc_multi( 'traadv_fct', ztu, 'U', -1.0_wp , ztv, 'V', -1.0_wp ) ! Lateral boundary cond. (unchanged sgn) 264 #else 257 265 IF (nn_hls.EQ.1) CALL lbc_lnk_multi( 'traadv_fct', ztu, 'U', -1.0_wp , ztv, 'V', -1.0_wp ) ! Lateral boundary cond. (unchanged sgn) 266 #endif 258 267 ! 259 268 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) ! Horizontal advective fluxes … … 452 461 END_2D 453 462 END DO 463 #if defined key_mpi3 464 IF (nn_hls.EQ.1) CALL lbc_lnk_nc_multi( 'traadv_fct', zbetup, 'T', 1.0_wp , zbetdo, 'T', 1.0_wp ) ! lateral boundary cond. (unchanged sign) 465 #else 454 466 IF (nn_hls.EQ.1) CALL lbc_lnk_multi( 'traadv_fct', zbetup, 'T', 1.0_wp , zbetdo, 'T', 1.0_wp ) ! lateral boundary cond. (unchanged sign) 467 #endif 455 468 456 469 ! 3. monotonic flux in the i & j direction (paa & pbb) -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/TRA/traadv_mus.F90
r13898 r13906 140 140 END_3D 141 141 ! lateral boundary conditions (changed sign) 142 #if defined key_mpi3 143 IF ( nn_hls.EQ.1 ) CALL lbc_lnk_nc_multi( 'traadv_mus', zwx, 'U', -1.0_wp , zwy, 'V', -1.0_wp ) 144 #else 142 145 IF ( nn_hls.EQ.1 ) CALL lbc_lnk_multi( 'traadv_mus', zwx, 'U', -1.0_wp , zwy, 'V', -1.0_wp ) 146 #endif 143 147 ! !-- Slopes of tracer 144 148 zslpx(:,:,jpk) = 0._wp ! bottom values … … 176 180 zwy(ji,jj,jk) = pV(ji,jj,jk) * ( zalpha * zzwx + (1.-zalpha) * zzwy ) 177 181 END_3D 182 #if defined key_mpi3 183 IF ( nn_hls.EQ.1 ) CALL lbc_lnk_nc_multi( 'traadv_mus', zwx, 'U', -1.0_wp , zwy, 'V', -1.0_wp ) ! lateral boundary conditions (changed sign) 184 #else 178 185 IF ( nn_hls.EQ.1 ) CALL lbc_lnk_multi( 'traadv_mus', zwx, 'U', -1.0_wp , zwy, 'V', -1.0_wp ) ! lateral boundary conditions (changed sign) 186 #endif 179 187 ! 180 188 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) !-- Tracer advective trend -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/TRA/traadv_qck.F90
r13898 r13906 150 150 zfd(ji,jj,jk) = pt(ji+1,jj,jk,jn,Kbb) ! Downstream in the x-direction for the tracer 151 151 END_3D 152 #if defined key_mpi3 153 IF (nn_hls.EQ.1) CALL lbc_lnk_nc_multi( 'traadv_qck', zfc(:,:,:), 'T', 1.0_wp , zfd(:,:,:), 'T', 1.0_wp ) ! Lateral boundary conditions 154 #else 152 155 IF (nn_hls.EQ.1) CALL lbc_lnk_multi( 'traadv_qck', zfc(:,:,:), 'T', 1.0_wp , zfd(:,:,:), 'T', 1.0_wp ) ! Lateral boundary conditions 156 #endif 153 157 154 158 ! … … 168 172 END_3D 169 173 !--- Lateral boundary conditions 174 #if defined key_mpi3 175 IF (nn_hls.EQ.1) CALL lbc_lnk_nc_multi( 'traadv_qck', zfu(:,:,:), 'T', 1.0_wp , zfd(:,:,:), 'T', 1.0_wp, zfc(:,:,:), 'T', 1.0_wp, zwx(:,:,:), 'T', 1.0_wp ) 176 #else 170 177 IF (nn_hls.EQ.1) CALL lbc_lnk_multi( 'traadv_qck', zfu(:,:,:), 'T', 1.0_wp , zfd(:,:,:), 'T', 1.0_wp, zfc(:,:,:), 'T', 1.0_wp, zwx(:,:,:), 'T', 1.0_wp ) 178 #endif 171 179 172 180 !--- QUICKEST scheme … … 177 185 zfu(ji,jj,jk) = tmask(ji-1,jj,jk) + tmask(ji,jj,jk) + tmask(ji+1,jj,jk) - 2. 178 186 END_3D 187 #if defined key_mpi3 188 IF (nn_hls.EQ.1) CALL lbc_lnk_nc_multi( 'traadv_qck', zfu(:,:,:), 'T', 1.0_wp ) ! Lateral boundary conditions 189 #else 179 190 IF (nn_hls.EQ.1) CALL lbc_lnk( 'traadv_qck', zfu(:,:,:), 'T', 1.0_wp ) ! Lateral boundary conditions 191 #endif 180 192 181 193 ! … … 240 252 END_2D 241 253 END DO 254 #if defined key_mpi3 255 IF (nn_hls.EQ.1) CALL lbc_lnk_nc_multi( 'traadv_qck', zfc(:,:,:), 'T', 1.0_wp , zfd(:,:,:), 'T', 1.0_wp ) ! Lateral boundary conditions 256 #else 242 257 IF (nn_hls.EQ.1) CALL lbc_lnk_multi( 'traadv_qck', zfc(:,:,:), 'T', 1.0_wp , zfd(:,:,:), 'T', 1.0_wp ) ! Lateral boundary conditions 243 258 #endif 244 259 245 260 ! … … 261 276 262 277 !--- Lateral boundary conditions 278 #if defined key_mpi3 279 IF (nn_hls.EQ.1) CALL lbc_lnk_nc_multi( 'traadv_qck', zfu(:,:,:), 'T', 1.0_wp , zfd(:,:,:), 'T', 1.0_wp, zfc(:,:,:), 'T', 1.0_wp, zwy(:,:,:), 'T', 1.0_wp ) 280 #else 263 281 IF (nn_hls.EQ.1) CALL lbc_lnk_multi( 'traadv_qck', zfu(:,:,:), 'T', 1.0_wp , zfd(:,:,:), 'T', 1.0_wp, zfc(:,:,:), 'T', 1.0_wp, zwy(:,:,:), 'T', 1.0_wp ) 282 #endif 264 283 265 284 !--- QUICKEST scheme … … 270 289 zfu(ji,jj,jk) = tmask(ji,jj-1,jk) + tmask(ji,jj,jk) + tmask(ji,jj+1,jk) - 2. 271 290 END_3D 291 #if defined key_mpi3 292 IF (nn_hls.EQ.1) CALL lbc_lnk_nc_multi( 'traadv_qck', zfu(:,:,:), 'T', 1.0_wp ) !--- Lateral boundary conditions 293 #else 272 294 IF (nn_hls.EQ.1) CALL lbc_lnk( 'traadv_qck', zfu(:,:,:), 'T', 1.0_wp ) !--- Lateral boundary conditions 295 #endif 273 296 ! 274 297 ! Tracer flux on the x-direction -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/TRA/traadv_ubs.F90
r13898 r13906 140 140 ! 141 141 END DO 142 #if defined key_mpi3 143 IF (nn_hls.EQ.1) CALL lbc_lnk_nc_multi( 'traadv_ubs', zltu, 'T', 1.0_wp, zltv, 'T', 1.0_wp ) ! Lateral boundary cond. (unchanged sgn) 144 #else 142 145 IF (nn_hls.EQ.1) CALL lbc_lnk_multi( 'traadv_ubs', zltu, 'T', 1.0_wp, zltv, 'T', 1.0_wp ) ! Lateral boundary cond. (unchanged sgn) 146 #endif 143 147 ! 144 148 DO_3D( 1, 0, 1, 0, 1, jpkm1 ) !== Horizontal advective fluxes ==! (UBS) -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/TRA/traatf.F90
r13898 r13906 110 110 #endif 111 111 ! ! local domain boundaries (T-point, unchanged sign) 112 #if defined key_mpi3 113 CALL lbc_lnk_nc_multi( 'traatf', pts(:,:,:,jp_tem,Kaa), 'T', 1.0_wp, pts(:,:,:,jp_sal,Kaa), 'T', 1.0_wp ) 114 #else 112 115 CALL lbc_lnk_multi( 'traatf', pts(:,:,:,jp_tem,Kaa), 'T', 1.0_wp, pts(:,:,:,jp_sal,Kaa), 'T', 1.0_wp ) 116 #endif 113 117 ! 114 118 IF( ln_bdy ) CALL bdy_tra( kt, Kbb, pts, Kaa ) ! BDY open boundaries -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/TRA/trabbl.F90
r13898 r13906 142 142 ! lateral boundary conditions ; just need for outputs 143 143 ! NOTE: [tiling-comms-merge] The diagnostic results change along the north fold if this is removed 144 #if defined key_mpi3 145 CALL lbc_lnk_nc_multi( 'trabbl', utr_bbl, 'U', 1.0_wp , vtr_bbl, 'V', 1.0_wp ) 146 #else 144 147 CALL lbc_lnk_multi( 'trabbl', utr_bbl, 'U', 1.0_wp , vtr_bbl, 'V', 1.0_wp ) 148 #endif 145 149 CALL iom_put( "uoce_bbl", utr_bbl ) ! bbl i-transport 146 150 CALL iom_put( "voce_bbl", vtr_bbl ) ! bbl j-transport … … 524 528 ! converte into REAL to use lbc_lnk ; impose a min value of 1 as a zero can be set in lbclnk 525 529 zmbku(:,:) = REAL( mbku_d(:,:), wp ) ; zmbkv(:,:) = REAL( mbkv_d(:,:), wp ) 530 #if defined key_mpi3 531 CALL lbc_lnk_nc_multi( 'trabbl', zmbku,'U',1.0_wp, zmbkv,'V',1.0_wp) 532 #else 526 533 CALL lbc_lnk_multi( 'trabbl', zmbku,'U',1.0_wp, zmbkv,'V',1.0_wp) 534 #endif 527 535 mbku_d(:,:) = MAX( INT( zmbku(:,:) ), 1 ) ; mbkv_d(:,:) = MAX( NINT( zmbkv(:,:) ), 1 ) 528 536 ! … … 543 551 e3v_bbl_0(ji,jj) = MIN( e3v_0(ji,jj,mbkt(ji ,jj+1)), e3v_0(ji,jj,mbkt(ji,jj)) ) 544 552 END_2D 553 #if defined key_mpi3 554 CALL lbc_lnk_nc_multi( 'trabbl', e3u_bbl_0, 'U', 1.0_wp , e3v_bbl_0, 'V', 1.0_wp ) ! lateral boundary conditions 555 #else 545 556 CALL lbc_lnk_multi( 'trabbl', e3u_bbl_0, 'U', 1.0_wp , e3v_bbl_0, 'V', 1.0_wp ) ! lateral boundary conditions 557 #endif 546 558 ! 547 559 ! !* masked diffusive flux coefficients -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/TRA/traldf_lap_blp.F90
r13898 r13906 237 237 ! 238 238 ! NOTE: [tiling-comms-merge] Needed for both nn_hls as tra_ldf_iso and tra_ldf_triad have not yet been adjusted to work with nn_hls = 2. In the zps case the lbc_lnk in zps_hde handles this, but in the zco case zlap always needs this lbc_lnk. I did try adjusting the bounds in tra_ldf_iso and tra_ldf_triad so this lbc_lnk was only needed for nn_hls = 1, but this was not correct and I did not have time to figure out why 239 #if defined key_mpi3 240 CALL lbc_lnk_nc_multi( 'traldf_lap_blp', zlap(:,:,:,:) , 'T', 1.0_wp ) ! Lateral boundary conditions (unchanged sign) 241 #else 239 242 CALL lbc_lnk( 'traldf_lap_blp', zlap(:,:,:,:) , 'T', 1.0_wp ) ! Lateral boundary conditions (unchanged sign) 243 #endif 240 244 ! ! Partial top/bottom cell: GRADh( zlap ) 241 245 IF( ln_isfcav .AND. ln_zps ) THEN ; CALL zps_hde_isf( kt, Kmm, kjpt, zlap, zglu, zglv, zgui, zgvi ) ! both top & bottom -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/TRA/tramle.F90
r13898 r13906 307 307 rfv(ji,jj) = SQRT( zfv * zfv + z1_t2 ) 308 308 END_2D 309 #if defined key_mpi3 310 IF (nn_hls.EQ.1) CALL lbc_lnk_nc_multi( 'tramle', rfu, 'U', 1.0_wp , rfv, 'V', 1.0_wp ) 311 #else 309 312 IF (nn_hls.EQ.1) CALL lbc_lnk_multi( 'tramle', rfu, 'U', 1.0_wp , rfv, 'V', 1.0_wp ) 313 #endif 310 314 ! 311 315 ELSEIF( nn_mle == 1 ) THEN ! MLE array allocation & initialisation -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/TRA/trazdf.F90
r13898 r13906 98 98 ! NOTE: [tiling-comms-merge] The diagnostic results change along the north fold if this is removed 99 99 !!gm this should be moved in trdtra.F90 and done on all trends 100 #if defined key_mpi3 101 CALL lbc_lnk_nc_multi( 'trazdf', ztrdt, 'T', 1.0_wp , ztrds, 'T', 1.0_wp ) 102 #else 100 103 CALL lbc_lnk_multi( 'trazdf', ztrdt, 'T', 1.0_wp , ztrds, 'T', 1.0_wp ) 104 #endif 101 105 !!gm 102 106 CALL trd_tra( kt, Kmm, Krhs, 'TRA', jp_tem, jptra_zdf, ztrdt ) -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/TRA/zpshde.F90
r13898 r13906 172 172 END DO 173 173 ! 174 #if defined key_mpi3 175 IF (nn_hls.EQ.1) CALL lbc_lnk_nc_multi( 'zpshde', pgtu(:,:,:), 'U', -1.0_wp , pgtv(:,:,:), 'V', -1.0_wp ) ! Lateral boundary cond. 176 #else 174 177 IF (nn_hls.EQ.1) CALL lbc_lnk_multi( 'zpshde', pgtu(:,:,:), 'U', -1.0_wp , pgtv(:,:,:), 'V', -1.0_wp ) ! Lateral boundary cond. 178 #endif 175 179 ! 176 180 IF( PRESENT( prd ) ) THEN !== horizontal derivative of density anomalies (rd) ==! (optional part) … … 205 209 ENDIF 206 210 END_2D 211 #if defined key_mpi3 212 IF (nn_hls.EQ.1) CALL lbc_lnk_nc_multi( 'zpshde', pgru , 'U', -1.0_wp , pgrv , 'V', -1.0_wp ) ! Lateral boundary conditions 213 #else 207 214 IF (nn_hls.EQ.1) CALL lbc_lnk_multi( 'zpshde', pgru , 'U', -1.0_wp , pgrv , 'V', -1.0_wp ) ! Lateral boundary conditions 215 #endif 208 216 ! 209 217 END IF … … 356 364 END DO 357 365 ! 366 #if defined key_mpi3 367 IF (nn_hls.EQ.1) CALL lbc_lnk_nc_multi( 'zpshde', pgtu(:,:,:), 'U', -1.0_wp , pgtv(:,:,:), 'V', -1.0_wp ) ! Lateral boundary cond. 368 #else 358 369 IF (nn_hls.EQ.1) CALL lbc_lnk_multi( 'zpshde', pgtu(:,:,:), 'U', -1.0_wp , pgtv(:,:,:), 'V', -1.0_wp ) ! Lateral boundary cond. 370 #endif 359 371 360 372 ! horizontal derivative of density anomalies (rd) … … 398 410 END_2D 399 411 412 #if defined key_mpi3 413 IF (nn_hls.EQ.1) CALL lbc_lnk_nc_multi( 'zpshde', pgru , 'U', -1.0_wp , pgrv , 'V', -1.0_wp ) ! Lateral boundary conditions 414 #else 400 415 IF (nn_hls.EQ.1) CALL lbc_lnk_multi( 'zpshde', pgru , 'U', -1.0_wp , pgrv , 'V', -1.0_wp ) ! Lateral boundary conditions 416 #endif 401 417 ! 402 418 END IF … … 449 465 ! 450 466 END DO 467 #if defined key_mpi3 468 IF (nn_hls.EQ.1) CALL lbc_lnk_nc_multi( 'zpshde', pgtui(:,:,:), 'U', -1.0_wp , pgtvi(:,:,:), 'V', -1.0_wp ) ! Lateral boundary cond. 469 #else 451 470 IF (nn_hls.EQ.1) CALL lbc_lnk_multi( 'zpshde', pgtui(:,:,:), 'U', -1.0_wp , pgtvi(:,:,:), 'V', -1.0_wp ) ! Lateral boundary cond. 471 #endif 452 472 453 473 IF( PRESENT( prd ) ) THEN !== horizontal derivative of density anomalies (rd) ==! (optional part) … … 488 508 489 509 END_2D 510 #if defined key_mpi3 511 IF (nn_hls.EQ.1) CALL lbc_lnk_nc_multi( 'zpshde', pgrui, 'U', -1.0_wp , pgrvi, 'V', -1.0_wp ) ! Lateral boundary conditions 512 #else 490 513 IF (nn_hls.EQ.1) CALL lbc_lnk_multi( 'zpshde', pgrui, 'U', -1.0_wp , pgrvi, 'V', -1.0_wp ) ! Lateral boundary conditions 514 #endif 491 515 ! 492 516 END IF -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/TRD/trddyn.F90
r13553 r13906 128 128 z3dy(ji,jj,jk) = vv(ji,jj,jk,Kmm) * ( vv(ji,jj+1,jk,Kmm) - vv(ji,jj-1,jk,Kmm) ) / ( 2._wp * e2v(ji,jj) ) 129 129 END_3D 130 #if defined key_mpi3 131 CALL lbc_lnk_nc_multi( 'trddyn', z3dx, 'U', -1.0_wp, z3dy, 'V', -1.0_wp ) 132 #else 130 133 CALL lbc_lnk_multi( 'trddyn', z3dx, 'U', -1.0_wp, z3dy, 'V', -1.0_wp ) 134 #endif 131 135 CALL iom_put( "utrd_udx", z3dx ) 132 136 CALL iom_put( "vtrd_vdy", z3dy ) -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/TRD/trdken.F90
r13295 r13906 90 90 !!---------------------------------------------------------------------- 91 91 ! 92 #if defined key_mpi3 93 CALL lbc_lnk_nc_multi( 'trdken', putrd, 'U', -1.0_wp , pvtrd, 'V', -1.0_wp ) ! lateral boundary conditions 94 #else 92 95 CALL lbc_lnk_multi( 'trdken', putrd, 'U', -1.0_wp , pvtrd, 'V', -1.0_wp ) ! lateral boundary conditions 96 #endif 93 97 ! 94 98 nkstp = kt -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/TRD/trdmxl.F90
r13553 r13906 472 472 !-- Lateral boundary conditions 473 473 ! ... temperature ... ... salinity ... 474 #if defined key_mpi3 475 CALL lbc_lnk_nc_multi( 'trdmxl', ztmltot , 'T', 1.0_wp, zsmltot , 'T', 1.0_wp, & 476 & ztmlres , 'T', 1.0_wp, zsmlres , 'T', 1.0_wp, & 477 & ztmlatf , 'T', 1.0_wp, zsmlatf , 'T', 1.0_wp ) 478 #else 474 479 CALL lbc_lnk_multi( 'trdmxl', ztmltot , 'T', 1.0_wp, zsmltot , 'T', 1.0_wp, & 475 480 & ztmlres , 'T', 1.0_wp, zsmlres , 'T', 1.0_wp, & 476 481 & ztmlatf , 'T', 1.0_wp, zsmlatf , 'T', 1.0_wp ) 482 #endif 477 483 478 484 … … 523 529 !-- Lateral boundary conditions 524 530 ! ... temperature ... ... salinity ... 531 #if defined key_mpi3 532 CALL lbc_lnk_nc_multi( 'trdmxl', ztmltot2, 'T', 1.0_wp, zsmltot2, 'T', 1.0_wp, & 533 & ztmlres2, 'T', 1.0_wp, zsmlres2, 'T', 1.0_wp ) 534 ! 535 CALL lbc_lnk_nc_multi( 'trdmxl', ztmltrd2(:,:,:), 'T', 1.0_wp, zsmltrd2(:,:,:), 'T', 1.0_wp ) ! / in the NetCDF trends file 536 #else 525 537 CALL lbc_lnk_multi( 'trdmxl', ztmltot2, 'T', 1.0_wp, zsmltot2, 'T', 1.0_wp, & 526 538 & ztmlres2, 'T', 1.0_wp, zsmlres2, 'T', 1.0_wp ) 527 539 ! 528 540 CALL lbc_lnk_multi( 'trdmxl', ztmltrd2(:,:,:), 'T', 1.0_wp, zsmltrd2(:,:,:), 'T', 1.0_wp ) ! / in the NetCDF trends file 541 #endif 529 542 530 543 ! III.3 Time evolution array swap -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/TRD/trdtra.F90
r13553 r13906 210 210 !!---------------------------------------------------------------------- 211 211 ! 212 SELECT CASE( cdir ) ! shift depending on the direction212 SELECT CASE( cdir ) ! shift depending on the direction 213 213 CASE( 'X' ) ; ii = 1 ; ij = 0 ; ik = 0 ! i-trend 214 214 CASE( 'Y' ) ; ii = 0 ; ij = 1 ; ik = 0 ! j-trend … … 216 216 END SELECT 217 217 ! 218 ! ! set to zero uncomputed values218 ! ! set to zero uncomputed values 219 219 ptrd(jpi,:,:) = 0._wp ; ptrd(1,:,:) = 0._wp 220 220 ptrd(:,jpj,:) = 0._wp ; ptrd(:,1,:) = 0._wp -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/TRD/trdvor.F90
r13553 r13906 162 162 163 163 zudpvor(:,:) = 0._wp ; zvdpvor(:,:) = 0._wp ! Initialisation 164 #if defined key_mpi3 165 CALL lbc_lnk_nc_multi( 'trdvor', putrdvor, 'U', -1.0_wp , pvtrdvor, 'V', -1.0_wp ) ! lateral boundary condition 166 #else 164 167 CALL lbc_lnk_multi( 'trdvor', putrdvor, 'U', -1.0_wp , pvtrdvor, 'V', -1.0_wp ) ! lateral boundary condition 168 #endif 165 169 166 170 … … 251 255 zvdpvor(:,:) = 0._wp 252 256 ! ! lateral boundary condition on input momentum trends 257 #if defined key_mpi3 258 CALL lbc_lnk_nc_multi( 'trdvor', putrdvor, 'U', -1.0_wp , pvtrdvor, 'V', -1.0_wp ) 259 #else 253 260 CALL lbc_lnk_multi( 'trdvor', putrdvor, 'U', -1.0_wp , pvtrdvor, 'V', -1.0_wp ) 261 #endif 254 262 255 263 ! ===================================== … … 400 408 401 409 ! Boundary conditions 410 #if defined key_mpi3 411 CALL lbc_lnk_nc_multi( 'trdvor', vor_avrtot, 'F', 1.0_wp , vor_avrres, 'F', 1.0_wp ) 412 #else 402 413 CALL lbc_lnk_multi( 'trdvor', vor_avrtot, 'F', 1.0_wp , vor_avrres, 'F', 1.0_wp ) 414 #endif 403 415 404 416 -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/USR/usrdef_fmask.F90
r13553 r13906 153 153 ENDIF 154 154 ! 155 #if defined key_mpi3 156 CALL lbc_lnk_nc_multi( 'usrdef_fmask', pfmsk, 'F', 1._wp ) ! Lateral boundary conditions on fmask 157 #else 155 158 CALL lbc_lnk( 'usrdef_fmask', pfmsk, 'F', 1._wp ) ! Lateral boundary conditions on fmask 159 #endif 156 160 ! 157 161 END SUBROUTINE usr_def_fmask -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/USR/usrdef_sbc.F90
r13295 r13906 181 181 wndm(ji,jj) = SQRT( zmod * zcoef ) 182 182 END_2D 183 #if defined key_mpi3 184 CALL lbc_lnk_nc_multi( 'usrdef_sbc', taum(:,:), 'T', 1.0_wp , wndm(:,:), 'T', 1.0_wp ) 185 #else 183 186 CALL lbc_lnk_multi( 'usrdef_sbc', taum(:,:), 'T', 1.0_wp , wndm(:,:), 'T', 1.0_wp ) 187 #endif 184 188 185 189 ! ---------------------------------- ! -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/ZDF/zdfosm.F90
r13553 r13906 1223 1223 1224 1224 ! Lateral boundary conditions on zvicos (sign unchanged), needed to caclulate viscosities on u and v grids 1225 #if defined key_mpi3 1226 CALL lbc_lnk_nc_multi( 'zdfosm', zviscos(:,:,:), 'W', 1.0_wp ) 1227 #else 1225 1228 CALL lbc_lnk( 'zdfosm', zviscos(:,:,:), 'W', 1.0_wp ) 1229 #endif 1226 1230 1227 1231 ! GN 25/8: need to change tmask --> wmask … … 1232 1236 END_3D 1233 1237 ! Lateral boundary conditions on ghamu and ghamv, currently on W-grid (sign unchanged), needed to caclulate gham[uv] on u and v grids 1238 #if defined key_mpi3 1239 CALL lbc_lnk_nc_multi( 'zdfosm', p_avt, 'W', 1.0_wp , p_avm, 'W', 1.0_wp, & 1240 & ghamu, 'W', 1.0_wp , ghamv, 'W', 1.0_wp ) 1241 #else 1234 1242 CALL lbc_lnk_multi( 'zdfosm', p_avt, 'W', 1.0_wp , p_avm, 'W', 1.0_wp, & 1235 1243 & ghamu, 'W', 1.0_wp , ghamv, 'W', 1.0_wp ) 1244 #endif 1236 1245 DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 1237 1246 ghamu(ji,jj,jk) = ( ghamu(ji,jj,jk) + ghamu(ji+1,jj,jk) ) & … … 1246 1255 ! Lateral boundary conditions on final outputs for gham[ts], on W-grid (sign unchanged) 1247 1256 ! Lateral boundary conditions on final outputs for gham[uv], on [UV]-grid (sign unchanged) 1257 #if defined key_mpi3 1258 CALL lbc_lnk_nc_multi( 'zdfosm', ghamt, 'W', 1.0_wp , ghams, 'W', 1.0_wp, & 1259 & ghamu, 'U', 1.0_wp , ghamv, 'V', 1.0_wp ) 1260 #else 1248 1261 CALL lbc_lnk_multi( 'zdfosm', ghamt, 'W', 1.0_wp , ghams, 'W', 1.0_wp, & 1249 1262 & ghamu, 'U', 1.0_wp , ghamv, 'V', 1.0_wp ) 1263 #endif 1250 1264 1251 1265 IF(ln_dia_osm) THEN … … 1287 1301 END IF 1288 1302 ! Lateral boundary conditions on p_avt (sign unchanged) 1303 #if defined key_mpi3 1304 CALL lbc_lnk_nc_multi( 'zdfosm', p_avt(:,:,:), 'W', 1.0_wp ) 1305 #else 1289 1306 CALL lbc_lnk( 'zdfosm', p_avt(:,:,:), 'W', 1.0_wp ) 1307 #endif 1290 1308 ! 1291 1309 END SUBROUTINE zdf_osm -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/ZDF/zdfphy.F90
r13741 r13906 313 313 ! !* Lateral boundary conditions (sign unchanged) 314 314 IF( l_zdfsh2 ) THEN 315 #if defined key_mpi3 316 CALL lbc_lnk_nc_multi( 'zdfphy', avm_k, 'W', 1.0_wp , avt_k, 'W', 1.0_wp, & 317 & avm , 'W', 1.0_wp , avt , 'W', 1.0_wp , avs , 'W', 1.0_wp ) 318 #else 315 319 CALL lbc_lnk_multi( 'zdfphy', avm_k, 'W', 1.0_wp , avt_k, 'W', 1.0_wp, & 316 320 & avm , 'W', 1.0_wp , avt , 'W', 1.0_wp , avs , 'W', 1.0_wp ) 321 #endif 317 322 ELSE 323 #if defined key_mpi3 324 CALL lbc_lnk_nc_multi( 'zdfphy', avm , 'W', 1.0_wp , avt , 'W', 1.0_wp , avs , 'W', 1.0_wp ) 325 #else 318 326 CALL lbc_lnk_multi( 'zdfphy', avm , 'W', 1.0_wp , avt , 'W', 1.0_wp , avs , 'W', 1.0_wp ) 327 #endif 319 328 ENDIF 320 329 ! 321 330 IF( l_zdfdrg ) THEN ! drag have been updated (non-linear cases) 331 #if defined key_mpi3 332 IF( ln_isfcav ) THEN ; CALL lbc_lnk_nc_multi( 'zdfphy', rCdU_top, 'T', 1.0_wp , rCdU_bot, 'T', 1.0_wp ) ! top & bot drag 333 ELSE ; CALL lbc_lnk_nc_multi ( 'zdfphy', rCdU_bot, 'T', 1.0_wp ) ! bottom drag only 334 ENDIF 335 #else 322 336 IF( ln_isfcav ) THEN ; CALL lbc_lnk_multi( 'zdfphy', rCdU_top, 'T', 1.0_wp , rCdU_bot, 'T', 1.0_wp ) ! top & bot drag 323 337 ELSE ; CALL lbc_lnk ( 'zdfphy', rCdU_bot, 'T', 1.0_wp ) ! bottom drag only 324 338 ENDIF 339 #endif 325 340 ENDIF 326 341 ! -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/lib_fortran.F90
r13327 r13906 229 229 ENDIF 230 230 END_2D 231 #if defined key_mpi3 232 CALL lbc_lnk_nc_multi( 'lib_fortran', p2d, 'T', 1.0_wp ) 233 #else 231 234 CALL lbc_lnk( 'lib_fortran', p2d, 'T', 1.0_wp ) 235 #endif 232 236 ! no need for 2nd exchange when nn_hls = 2 233 237 IF( nn_hls /= 2 ) THEN … … 248 252 IF( MOD(mjg(jpj-2), 3) == 0 ) p2d(:,jpj-1) = p2d(:, jpj) 249 253 ENDIF 254 #if defined key_mpi3 255 CALL lbc_lnk_nc_multi( 'lib_fortran', p2d, 'T', 1.0_wp ) 256 #else 250 257 CALL lbc_lnk( 'lib_fortran', p2d, 'T', 1.0_wp ) 258 #endif 251 259 ENDIF 252 260 … … 284 292 END_2D 285 293 END DO 294 #if defined key_mpi3 295 CALL lbc_lnk_nc_multi( 'lib_fortran', p3d, 'T', 1.0_wp ) 296 #else 286 297 CALL lbc_lnk( 'lib_fortran', p3d, 'T', 1.0_wp ) 298 #endif 287 299 ! no need for 2nd exchange when nn_hls = 2 288 300 IF( nn_hls /= 2 ) THEN … … 303 315 IF( MOD(mjg(jpj-2), 3) == 0 ) p3d(:,jpj-1,:) = p3d(:, jpj,:) 304 316 ENDIF 317 #if defined key_mpi3 318 CALL lbc_lnk_nc_multi( 'lib_fortran', p3d, 'T', 1.0_wp ) 319 #else 305 320 CALL lbc_lnk( 'lib_fortran', p3d, 'T', 1.0_wp ) 321 #endif 306 322 ENDIF 307 323 -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/module_example
r13553 r13906 127 127 END SELECT 128 128 ! 129 #if defined key_mpi3 130 CALL lbc_lnk_nc_multi( 'module_example', avm, 'T', 1. ) ! Lateral boundary conditions (unchanged sign) 131 #else 129 132 CALL lbc_lnk( 'module_example', avm, 'T', 1. ) ! Lateral boundary conditions (unchanged sign) 133 #endif 130 134 ! 131 135 END SUBROUTINE exa_mpl -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/stpMLF.F90
r13237 r13906 457 457 #endif 458 458 ! ! local domain boundaries (T-point, unchanged sign) 459 #if defined key_mpi3 460 CALL lbc_lnk_nc_multi( 'finalize_sbc', puu(:,:,:, Kaa), 'U', -1., pvv(:,:,: ,Kaa), 'V', -1. & 461 & , pts(:,:,:,jp_tem,Kaa), 'T', 1., pts(:,:,:,jp_sal,Kaa), 'T', 1. ) !* local domain boundaries 462 #else 459 463 CALL lbc_lnk_multi( 'finalize_sbc', puu(:,:,:, Kaa), 'U', -1., pvv(:,:,: ,Kaa), 'V', -1. & 460 464 & , pts(:,:,:,jp_tem,Kaa), 'T', 1., pts(:,:,:,jp_sal,Kaa), 'T', 1. ) !* local domain boundaries 465 #endif 461 466 ! 462 467 ! !* BDY open boundaries -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/SWE/asminc.F90
r13553 r13906 423 423 & / e3t(ji,jj,jk,Kmm) 424 424 END_2D 425 #if defined key_mpi3 426 CALL lbc_lnk_nc_multi( 'asminc', zhdiv, 'T', 1. ) ! lateral boundary cond. (no sign change) 427 #else 425 428 CALL lbc_lnk( 'asminc', zhdiv, 'T', 1. ) ! lateral boundary cond. (no sign change) 429 #endif 426 430 ! 427 431 DO_2D( 0, 0, 0, 0 ) -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/SWE/diawri.F90
r13295 r13906 184 184 & + e3t(ji+1,jj,1,Kmm) * e1e2t(ji+1,jj) ) * r1_e1e2u(ji,jj) 185 185 END_2D 186 #if defined key_mpi3 187 CALL lbc_lnk_nc_multi( 'diawri', z2d, 'U', 1._wp ) 188 #else 186 189 CALL lbc_lnk( 'diawri', z2d, 'U', 1._wp ) 190 #endif 187 191 CALL iom_put( "hu", z2d ) 188 192 ENDIF … … 194 198 & + e3t(ji,jj ,1,Kmm) * e1e2t(ji,jj ) ) * r1_e1e2v(ji,jj) 195 199 END_2D 200 #if defined key_mpi3 201 CALL lbc_lnk_nc_multi( 'diawri', z2d, 'V', 1._wp ) 202 #else 196 203 CALL lbc_lnk( 'diawri', z2d, 'V', 1._wp ) 204 #endif 197 205 CALL iom_put( "hv", z2d ) 198 206 ENDIF … … 205 213 END_2D 206 214 z2d(:,:) = z2d(:,:) * ssfmask(:,:) 215 #if defined key_mpi3 216 CALL lbc_lnk_nc_multi( 'diawri', z2d, 'F', 1._wp ) 217 #else 207 218 CALL lbc_lnk( 'diawri', z2d, 'F', 1._wp ) 219 #endif 208 220 CALL iom_put( "hf", z2d ) 209 221 ENDIF … … 224 236 ! 225 237 END_2D 238 #if defined key_mpi3 239 CALL lbc_lnk_nc_multi( 'diawri', z2d, 'T', 1. ) 240 #else 226 241 CALL lbc_lnk( 'diawri', z2d, 'T', 1. ) 242 #endif 227 243 CALL iom_put( "taubot", z2d ) 228 244 ENDIF … … 243 259 END_2D 244 260 ! 261 #if defined key_mpi3 262 CALL lbc_lnk_nc_multi( 'diawri', z2d, 'T', 1. ) 263 #else 245 264 CALL lbc_lnk( 'diawri', z2d, 'T', 1. ) 265 #endif 246 266 IF ( iom_use("sKE" ) ) CALL iom_put( "sKE" , z2d ) 247 267 … … 259 279 END_2D 260 280 ! 281 #if defined key_mpi3 282 CALL lbc_lnk_nc_multi( 'diawri', z2d, 'F', 1. ) 283 #else 261 284 CALL lbc_lnk( 'diawri', z2d, 'F', 1. ) 285 #endif 262 286 CALL iom_put( "sKEf", z2d ) 263 287 ENDIF … … 277 301 & - e1u(ji ,jj+1) * uu(ji ,jj+1,1,Kmm) + e1u(ji,jj) * uu(ji,jj,1,Kmm) ) * r1_e1e2f(ji,jj) 278 302 END_2D 303 #if defined key_mpi3 304 CALL lbc_lnk_nc_multi( 'diawri', z2d, 'F', 1. ) 305 #else 279 306 CALL lbc_lnk( 'diawri', z2d, 'F', 1. ) 307 #endif 280 308 CALL iom_put( "relvor", z2d ) ! relative vorticity ( zeta ) 281 309 ! … … 290 318 z2d(ji,jj) = ze3 * z2d(ji,jj) 291 319 END_2D 320 #if defined key_mpi3 321 CALL lbc_lnk_nc_multi( 'diawri', z2d, 'F', 1. ) 322 #else 292 323 CALL lbc_lnk( 'diawri', z2d, 'F', 1. ) 324 #endif 293 325 CALL iom_put( "relpotvor", z2d ) ! relative potential vorticity (zeta/h) 294 326 ! … … 301 333 z2d(ji,jj) = ze3 * ff_f(ji,jj) + z2d(ji,jj) 302 334 END_2D 335 #if defined key_mpi3 336 CALL lbc_lnk_nc_multi( 'diawri', z2d, 'F', 1. ) 337 #else 303 338 CALL lbc_lnk( 'diawri', z2d, 'F', 1. ) 339 #endif 304 340 CALL iom_put( "abspotvor", z2d ) ! absolute potential vorticity ( q ) 305 341 ! … … 307 343 z2d(ji,jj) = 0.5_wp * z2d(ji,jj) * z2d(ji,jj) 308 344 END_2D 345 #if defined key_mpi3 346 CALL lbc_lnk_nc_multi( 'diawri', z2d, 'F', 1. ) 347 #else 309 348 CALL lbc_lnk( 'diawri', z2d, 'F', 1. ) 349 #endif 310 350 CALL iom_put( "Ens", z2d ) ! potential enstrophy ( 1/2*q2 ) 311 351 ! -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/SWE/dommsk.F90
r13295 r13906 141 141 ! the following call is mandatory 142 142 ! it masks boundaries (bathy=0) where needed depending on the configuration (closed, periodic...) 143 #if defined key_mpi3 144 CALL lbc_lnk_nc_multi( 'dommsk', tmask , 'T', 1._wp ) ! Lateral boundary conditions 145 #else 143 146 CALL lbc_lnk( 'dommsk', tmask , 'T', 1._wp ) ! Lateral boundary conditions 147 #endif 144 148 145 149 ! Mask corrections for bdy (read in mppini2) … … 173 177 END DO 174 178 END DO 179 #if defined key_mpi3 180 CALL lbc_lnk_nc_multi( 'dommsk', umask, 'U', 1., vmask, 'V', 1., fmask, 'F', 1. ) ! Lateral boundary conditions 181 #else 175 182 CALL lbc_lnk_multi( 'dommsk', umask, 'U', 1., vmask, 'V', 1., fmask, 'F', 1. ) ! Lateral boundary conditions 183 #endif 176 184 177 185 ! Ocean/land mask at wu-, wv- and w points (computed from tmask) … … 198 206 & tmask(ji,jj ,1), tmask(ji+1,jj ,1) ) 199 207 END_2D 208 #if defined key_mpi3 209 CALL lbc_lnk_nc_multi( 'dommsk', ssfmask, 'F', 1._wp ) 210 #else 200 211 CALL lbc_lnk( 'dommsk', ssfmask, 'F', 1._wp ) 212 #endif 201 213 202 214 !!an … … 279 291 DEALLOCATE( zwf ) 280 292 ! 293 #if defined key_mpi3 294 CALL lbc_lnk_nc_multi( 'dommsk', fmask, 'F', 1._wp ) ! Lateral boundary conditions on fmask 295 #else 281 296 CALL lbc_lnk( 'dommsk', fmask, 'F', 1._wp ) ! Lateral boundary conditions on fmask 297 #endif 282 298 ! 283 299 ! CAUTION : The fmask may be further modified in dyn_vor_init ( dynvor.F90 ) depending on ln_vorlat -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/SWE/domvvl.F90
r13553 r13906 520 520 ! ! d - thickness diffusion transport: boundary conditions 521 521 ! (stored for tracer advction and continuity equation) 522 #if defined key_mpi3 523 CALL lbc_lnk_nc_multi( 'domvvl', un_td , 'U' , -1._wp, vn_td , 'V' , -1._wp) 524 #else 522 525 CALL lbc_lnk_multi( 'domvvl', un_td , 'U' , -1._wp, vn_td , 'V' , -1._wp) 526 #endif 523 527 524 528 ! 4 - Time stepping of baroclinic scale factors 525 529 ! --------------------------------------------- 530 #if defined key_mpi3 531 CALL lbc_lnk_nc_multi( 'domvvl', tilde_e3t_a(:,:,:), 'T', 1._wp ) 532 #else 526 533 CALL lbc_lnk( 'domvvl', tilde_e3t_a(:,:,:), 'T', 1._wp ) 534 #endif 527 535 tilde_e3t_a(:,:,:) = tilde_e3t_b(:,:,:) + rDt * tmask(:,:,:) * tilde_e3t_a(:,:,:) 528 536 … … 1016 1024 & + e1e2t(ji+1,jj) * pssh(ji+1,jj) ) * r1_hu_0(ji,jj) * r1_e1e2u(ji,jj) 1017 1025 END_2D 1026 #if defined key_mpi3 1027 CALL lbc_lnk_nc_multi( 'domvvl', zc3(:,:), 'U', 1._wp ) 1028 #else 1018 1029 CALL lbc_lnk( 'domvvl', zc3(:,:), 'U', 1._wp ) 1030 #endif 1019 1031 ! 1020 1032 DO jk = 1, jpkm1 … … 1027 1039 & + e1e2t(ji,jj+1) * pssh(ji,jj+1) ) * r1_hv_0(ji,jj) * r1_e1e2v(ji,jj) 1028 1040 END_2D 1041 #if defined key_mpi3 1042 CALL lbc_lnk_nc_multi( 'domvvl', zc3(:,:), 'V', 1._wp ) 1043 #else 1029 1044 CALL lbc_lnk( 'domvvl', zc3(:,:), 'V', 1._wp ) 1045 #endif 1030 1046 ! 1031 1047 DO jk = 1, jpkm1 … … 1040 1056 & + e1e2t(ji+1,jj+1) * pssh(ji+1,jj+1) ) * r1_hf_0(ji,jj) * r1_e1e2f(ji,jj) 1041 1057 END_2D 1058 #if defined key_mpi3 1059 CALL lbc_lnk_nc_multi( 'domvvl', zc3(:,:), 'F', 1._wp ) 1060 #else 1042 1061 CALL lbc_lnk( 'domvvl', zc3(:,:), 'F', 1._wp ) 1062 #endif 1043 1063 ! 1044 1064 DO jk = 1, jpkm1 ! Horizontal interpolation of e3f from ssh … … 1059 1079 & + e1e2t(ji+1,jj) * pssh(ji+1,jj) ) * r1_hu_0(ji,jj) * r1_e1e2u(ji,jj) 1060 1080 END_2D 1081 #if defined key_mpi3 1082 CALL lbc_lnk_nc_multi( 'domvvl', zc3(:,:), 'U', 1._wp ) 1083 #else 1061 1084 CALL lbc_lnk( 'domvvl', zc3(:,:), 'U', 1._wp ) 1085 #endif 1062 1086 ! 1063 1087 DO jk = 1, jpk … … 1070 1094 & + e1e2t(ji,jj+1) * pssh(ji,jj+1) ) * r1_hv_0(ji,jj) * r1_e1e2v(ji,jj) 1071 1095 END_2D 1096 #if defined key_mpi3 1097 CALL lbc_lnk_nc_multi( 'domvvl', zc3(:,:), 'V', 1._wp ) 1098 #else 1072 1099 CALL lbc_lnk( 'domvvl', zc3(:,:), 'V', 1._wp ) 1100 #endif 1073 1101 ! 1074 1102 DO jk = 1, jpk -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/SWE/dynatf.F90
r13295 r13906 165 165 # endif 166 166 ! 167 #if defined key_mpi3 168 CALL lbc_lnk_nc_multi( 'dynatf', puu(:,:,:,Kaa), 'U', -1., pvv(:,:,:,Kaa), 'V', -1. ) !* local domain boundaries 169 #else 167 170 CALL lbc_lnk_multi( 'dynatf', puu(:,:,:,Kaa), 'U', -1., pvv(:,:,:,Kaa), 'V', -1. ) !* local domain boundaries 171 #endif 168 172 ! 169 173 ! !* BDY open boundaries -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/SWE/dynkeg.F90
r13295 r13906 133 133 zhke(ji,jj,jk) = r1_48 * ( zv + zu ) 134 134 END_3D 135 #if defined key_mpi3 136 CALL lbc_lnk_nc_multi( 'dynkeg', zhke, 'T', 1. ) 137 #else 135 138 CALL lbc_lnk( 'dynkeg', zhke, 'T', 1. ) 139 #endif 136 140 ! 137 141 END SELECT -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/SWE/dynldf_lap_blp.F90
r13295 r13906 232 232 CALL dyn_ldf_lap( kt, Kbb, Kmm, pu, pv, zulap, zvlap, 1 ) ! rotated laplacian applied to pt (output in zlap,Kbb) 233 233 ! 234 #if defined key_mpi3 235 CALL lbc_lnk_nc_multi( 'dynldf_lap_blp', zulap, 'U', -1., zvlap, 'V', -1. ) ! Lateral boundary conditions 236 #else 234 237 CALL lbc_lnk_multi( 'dynldf_lap_blp', zulap, 'U', -1., zvlap, 'V', -1. ) ! Lateral boundary conditions 238 #endif 235 239 ! 236 240 CALL dyn_ldf_lap( kt, Kbb, Kmm, zulap, zvlap, pu_rhs, pv_rhs, 2 ) ! rotated laplacian applied to zlap (output in pt(:,:,:,:,Krhs)) -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/SWE/dynvor.F90
r13295 r13906 242 242 ENDIF 243 243 END DO 244 #if defined key_mpi3 245 CALL lbc_lnk_nc_multi( 'dynvor', zwz, 'F', 1. ) 246 #else 244 247 CALL lbc_lnk( 'dynvor', zwz, 'F', 1. ) 248 #endif 245 249 ! 246 250 END SELECT … … 599 603 END DO ! End of slab 600 604 ! 605 #if defined key_mpi3 606 CALL lbc_lnk_nc_multi( 'dynvor', zwz, 'F', 1. ) 607 #else 601 608 CALL lbc_lnk( 'dynvor', zwz, 'F', 1. ) 609 #endif 602 610 603 611 DO jk = 1, jpkm1 ! Horizontal slab … … 720 728 END DO 721 729 ! 730 #if defined key_mpi3 731 CALL lbc_lnk_nc_multi( 'dynvor', zwz, 'F', 1. ) 732 #else 722 733 CALL lbc_lnk( 'dynvor', zwz, 'F', 1. ) 734 #endif 723 735 ! 724 736 DO jk = 1, jpkm1 ! Horizontal slab … … 812 824 END_3D 813 825 ! 826 #if defined key_mpi3 827 CALL lbc_lnk_nc_multi( 'dynvor', fmask, 'F', 1._wp ) ! Lateral boundary conditions on fmask 828 #else 814 829 CALL lbc_lnk( 'dynvor', fmask, 'F', 1._wp ) ! Lateral boundary conditions on fmask 830 #endif 815 831 ! 816 832 ENDIF … … 850 866 dj_e1v_2(ji,jj) = ( e1v(ji,jj) - e1v(ji ,jj-1) ) * 0.5_wp 851 867 END_2D 868 #if defined key_mpi3 869 CALL lbc_lnk_nc_multi( 'dynvor', di_e2u_2, 'T', -1. , dj_e1v_2, 'T', -1. ) ! Lateral boundary conditions 870 #else 852 871 CALL lbc_lnk_multi( 'dynvor', di_e2u_2, 'T', -1. , dj_e1v_2, 'T', -1. ) ! Lateral boundary conditions 872 #endif 853 873 ! 854 874 CASE DEFAULT !* F-point metric term : pre-compute di(e2u)/(2*e1e2f) and dj(e1v)/(2*e1e2f) … … 858 878 dj_e1u_2e1e2f(ji,jj) = ( e1u(ji ,jj+1) - e1u(ji,jj) ) * 0.5 * r1_e1e2f(ji,jj) 859 879 END_2D 880 #if defined key_mpi3 881 CALL lbc_lnk_nc_multi( 'dynvor', di_e2v_2e1e2f, 'F', -1. , dj_e1u_2e1e2f, 'F', -1. ) ! Lateral boundary conditions 882 #else 860 883 CALL lbc_lnk_multi( 'dynvor', di_e2v_2e1e2f, 'F', -1. , dj_e1u_2e1e2f, 'F', -1. ) ! Lateral boundary conditions 884 #endif 861 885 END SELECT 862 886 ! -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/SWE/ldfdyn.F90
r13295 r13906 426 426 ENDIF 427 427 ! 428 #if defined key_mpi3 429 CALL lbc_lnk_nc_multi( 'ldfdyn', ahmt, 'T', 1., ahmf, 'F', 1. ) 430 #else 428 431 CALL lbc_lnk_multi( 'ldfdyn', ahmt, 'T', 1., ahmf, 'F', 1. ) 432 #endif 429 433 ! 430 434 ! … … 458 462 END DO 459 463 ! 464 #if defined key_mpi3 465 CALL lbc_lnk_nc_multi( 'ldfdyn', dtensq, 'T', 1. ) ! lbc_lnk on dshesq not needed 466 #else 460 467 CALL lbc_lnk_multi( 'ldfdyn', dtensq, 'T', 1. ) ! lbc_lnk on dshesq not needed 468 #endif 461 469 ! 462 470 DO jk = 1, jpkm1 … … 509 517 ENDIF 510 518 ! 519 #if defined key_mpi3 520 CALL lbc_lnk_nc_multi( 'ldfdyn', ahmt, 'T', 1. , ahmf, 'F', 1. ) 521 #else 511 522 CALL lbc_lnk_multi( 'ldfdyn', ahmt, 'T', 1. , ahmf, 'F', 1. ) 523 #endif 512 524 ! 513 525 END SELECT -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/SWE/sbcice_cice.F90
r13295 r13906 224 224 END_2D 225 225 226 #if defined key_mpi3 227 CALL lbc_lnk_nc_multi( 'sbcice_cice', fr_iu , 'U', 1., fr_iv , 'V', 1. ) 228 #else 226 229 CALL lbc_lnk_multi( 'sbcice_cice', fr_iu , 'U', 1., fr_iv , 'V', 1. ) 230 #endif 227 231 228 232 ! set the snow+ice mass … … 510 514 ss_iou(ji,jj) = 0.5 * ( ztmp1(ji,jj-1) + ztmp1(ji,jj) ) * umask(ji,jj,1) 511 515 END_2D 516 #if defined key_mpi3 517 CALL lbc_lnk_nc_multi( 'sbcice_cice', ss_iou , 'U', -1. ) 518 #else 512 519 CALL lbc_lnk( 'sbcice_cice', ss_iou , 'U', -1. ) 520 #endif 513 521 514 522 ! y comp of ocean-ice stress … … 520 528 ss_iov(ji,jj) = 0.5 * ( ztmp1(ji-1,jj) + ztmp1(ji,jj) ) * vmask(ji,jj,1) 521 529 END_2D 530 #if defined key_mpi3 531 CALL lbc_lnk_nc_multi( 'sbcice_cice', ss_iov , 'V', -1. ) 532 #else 522 533 CALL lbc_lnk( 'sbcice_cice', ss_iov , 'V', -1. ) 534 #endif 523 535 524 536 ! x and y comps of surface stress … … 573 585 fmmflx(:,:) = ztmp1(:,:) !!Joakim edit 574 586 587 #if defined key_mpi3 588 CALL lbc_lnk_nc_multi( 'sbcice_cice', emp , 'T', 1., sfx , 'T', 1. ) 589 #else 575 590 CALL lbc_lnk_multi( 'sbcice_cice', emp , 'T', 1., sfx , 'T', 1. ) 591 #endif 576 592 577 593 ! Solar penetrative radiation and non solar surface heat flux … … 599 615 #endif 600 616 qsr(:,:)=qsr(:,:)+ztmp1(:,:) 617 #if defined key_mpi3 618 CALL lbc_lnk_nc_multi( 'sbcice_cice', qsr , 'T', 1. ) 619 #else 601 620 CALL lbc_lnk( 'sbcice_cice', qsr , 'T', 1. ) 621 #endif 602 622 603 623 DO_2D( 1, 1, 1, 1 ) … … 612 632 qns(:,:)=qns(:,:)+nfrzmlt(:,:)+ztmp1(:,:) 613 633 634 #if defined key_mpi3 635 CALL lbc_lnk_nc_multi( 'sbcice_cice', qns , 'T', 1. ) 636 #else 614 637 CALL lbc_lnk( 'sbcice_cice', qns , 'T', 1. ) 638 #endif 615 639 616 640 ! Prepare for the following CICE time-step … … 630 654 END_2D 631 655 656 #if defined key_mpi3 657 CALL lbc_lnk_nc_multi( 'sbcice_cice', fr_iu , 'U', 1., fr_iv , 'V', 1. ) 658 #else 632 659 CALL lbc_lnk_multi( 'sbcice_cice', fr_iu , 'U', 1., fr_iv , 'V', 1. ) 660 #endif 633 661 634 662 ! set the snow+ice mass … … 852 880 ! A. Ensure all haloes are filled in NEMO field (pn) 853 881 882 #if defined key_mpi3 883 CALL lbc_lnk_nc_multi( 'sbcice_cice', pn , cd_type, psgn ) 884 #else 854 885 CALL lbc_lnk( 'sbcice_cice', pn , cd_type, psgn ) 886 #endif 855 887 856 888 #if defined key_nemocice_decomp … … 1027 1059 ! D. Ensure all haloes are filled in pn 1028 1060 1061 #if defined key_mpi3 1062 CALL lbc_lnk_nc_multi( 'sbcice_cice', pn , cd_type, psgn ) 1063 #else 1029 1064 CALL lbc_lnk( 'sbcice_cice', pn , cd_type, psgn ) 1065 #endif 1030 1066 1031 1067 END SUBROUTINE cice2nemo -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/SWE/step.F90
r13553 r13906 237 237 238 238 239 #if defined key_mpi3 240 CALL lbc_lnk_nc_multi( 'stp', uu(:,:,:,Nnn), 'U', -1., vv(:,:,:,Nnn), 'V', -1., & !* local domain boundaries 241 & uu(:,:,:,Naa), 'U', -1., vv(:,:,:,Naa), 'V', -1. ) 242 #else 239 243 CALL lbc_lnk_multi( 'stp', uu(:,:,:,Nnn), 'U', -1., vv(:,:,:,Nnn), 'V', -1., & !* local domain boundaries 240 244 & uu(:,:,:,Naa), 'U', -1., vv(:,:,:,Naa), 'V', -1. ) 245 #endif 241 246 242 247 !!an -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/SWE/stepLF.F90
r13295 r13906 248 248 249 249 250 #if defined key_mpi3 251 CALL lbc_lnk_nc_multi( 'stp', uu(:,:,:,Nnn), 'U', -1., vv(:,:,:,Nnn), 'V', -1., & !* local domain boundaries 252 & uu(:,:,:,Naa), 'U', -1., vv(:,:,:,Naa), 'V', -1. ) 253 #else 250 254 CALL lbc_lnk_multi( 'stp', uu(:,:,:,Nnn), 'U', -1., vv(:,:,:,Nnn), 'V', -1., & !* local domain boundaries 251 255 & uu(:,:,:,Naa), 'U', -1., vv(:,:,:,Naa), 'V', -1. ) 256 #endif 252 257 253 258 !!an -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/SWE/stpRK3.F90
r13295 r13906 308 308 309 309 310 #if defined key_mpi3 311 CALL lbc_lnk_nc_multi( 'stp_RK3', uu(:,:,:,Nnn), 'U', -1., vv(:,:,:,Nnn), 'V', -1., & !* local domain boundaries 312 & uu(:,:,:,Naa), 'U', -1., vv(:,:,:,Naa), 'V', -1. ) 313 #else 310 314 CALL lbc_lnk_multi( 'stp_RK3', uu(:,:,:,Nnn), 'U', -1., vv(:,:,:,Nnn), 'V', -1., & !* local domain boundaries 311 315 & uu(:,:,:,Naa), 'U', -1., vv(:,:,:,Naa), 'V', -1. ) 316 #endif 312 317 313 318 !!an -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/TOP/PISCES/P2Z/p2zbio.F90
r13295 r13906 339 339 ! 340 340 IF( lk_iomput ) THEN 341 #if defined key_mpi3 342 CALL lbc_lnk_nc_multi( 'p2zbio', zw2d(:,:,:),'T', 1.0_wp ) 343 CALL lbc_lnk_nc_multi( 'p2zbio', zw3d(:,:,:,1),'T', 1.0_wp, zw3d(:,:,:,2),'T', 1.0_wp, zw3d(:,:,:,3),'T', 1.0_wp ) 344 #else 341 345 CALL lbc_lnk( 'p2zbio', zw2d(:,:,:),'T', 1.0_wp ) 342 346 CALL lbc_lnk_multi( 'p2zbio', zw3d(:,:,:,1),'T', 1.0_wp, zw3d(:,:,:,2),'T', 1.0_wp, zw3d(:,:,:,3),'T', 1.0_wp ) 347 #endif 343 348 ! Save diagnostics 344 349 CALL iom_put( "TNO3PHY", zw2d(:,:,1) ) -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/TOP/PISCES/P2Z/p2zexp.F90
r13295 r13906 107 107 END_2D 108 108 109 #if defined key_mpi3 110 CALL lbc_lnk_nc_multi( 'p2zexp', sedpocn, 'T', 1.0_wp ) 111 #else 109 112 CALL lbc_lnk( 'p2zexp', sedpocn, 'T', 1.0_wp ) 113 #endif 110 114 111 115 ! Oa & Ek: diagnostics depending on jpdia2d ! left as example … … 210 214 END IF 211 215 END_2D 216 #if defined key_mpi3 217 CALL lbc_lnk_nc_multi( 'p2zexp', cmask , 'T', 1.0_wp ) ! lateral boundary conditions on cmask (sign unchanged) 218 #else 212 219 CALL lbc_lnk( 'p2zexp', cmask , 'T', 1.0_wp ) ! lateral boundary conditions on cmask (sign unchanged) 220 #endif 213 221 areacot = glob_sum( 'p2zexp', e1e2t(:,:) * cmask(:,:) ) 214 222 ! -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/TOP/PISCES/P4Z/p4zbc.F90
r13295 r13906 311 311 END_3D 312 312 ! 313 #if defined key_mpi3 314 CALL lbc_lnk_nc_multi( 'p4zbc', zcmask , 'T', 1.0_wp ) ! lateral boundary conditions on cmask (sign unchanged) 315 #else 313 316 CALL lbc_lnk( 'p4zbc', zcmask , 'T', 1.0_wp ) ! lateral boundary conditions on cmask (sign unchanged) 317 #endif 314 318 ! 315 319 DO_3D( 1, 1, 1, 1, 1, jpk ) -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/TOP/TRP/trcadv.F90
r13898 r13906 124 124 ! 125 125 CASE ( np_CEN ) ! Centered : 2nd / 4th order 126 #if defined key_mpi3 127 IF (nn_hls.EQ.2) CALL lbc_lnk_nc_multi( 'trcadv', ptr(:,:,:,:,Kmm), 'T', 1.) 128 #else 126 129 IF (nn_hls.EQ.2) CALL lbc_lnk_multi( 'trcadv', ptr(:,:,:,:,Kmm), 'T', 1.) 130 #endif 127 131 CALL tra_adv_cen( kt, nittrc000,'TRC', zuu, zvv, zww, Kmm, ptr, jptra, Krhs, nn_cen_h, nn_cen_v ) 128 132 CASE ( np_FCT ) ! FCT : 2nd / 4th order 129 IF (nn_hls.EQ.2) THEN ; CALL lbc_lnk_multi( 'trcadv', ptr(:,:,:,:,Kbb), 'T', 1., ptr(:,:,:,:,Kmm), 'T', 1.) 130 CALL lbc_lnk_multi( 'traadv', zuu(:,:,:), 'U', -1., zvv(:,:,:), 'V', -1., zww(:,:,:), 'W', 1.) ; END IF 133 IF (nn_hls.EQ.2) THEN 134 #if defined key_mpi3 135 CALL lbc_lnk_nc_multi( 'trcadv', ptr(:,:,:,:,Kbb), 'T', 1., ptr(:,:,:,:,Kmm), 'T', 1.) 136 CALL lbc_lnk_nc_multi( 'traadv', zuu(:,:,:), 'U', -1., zvv(:,:,:), 'V', -1., zww(:,:,:), 'W', 1.) 137 #else 138 CALL lbc_lnk_multi( 'trcadv', ptr(:,:,:,:,Kbb), 'T', 1., ptr(:,:,:,:,Kmm), 'T', 1.) 139 CALL lbc_lnk_multi( 'traadv', zuu(:,:,:), 'U', -1., zvv(:,:,:), 'V', -1., zww(:,:,:), 'W', 1.) 140 #endif 141 END IF 131 142 CALL tra_adv_fct( kt, nittrc000,'TRC', rDt_trc, zuu, zvv, zww, Kbb, Kmm, ptr, jptra, Krhs, nn_fct_h, nn_fct_v ) 132 143 CASE ( np_MUS ) ! MUSCL 144 #if defined key_mpi3 145 IF (nn_hls.EQ.2) CALL lbc_lnk_nc_multi( 'trcadv', ptr(:,:,:,:,Kbb), 'T', 1.) 146 #else 147 IF (nn_hls.EQ.2) CALL lbc_lnk_multi( 'trcadv', ptr(:,:,:,:,Kbb), 'T', 1.) 148 #endif 133 149 CALL tra_adv_mus( kt, nittrc000,'TRC', rDt_trc, zuu, zvv, zww, Kbb, Kmm, ptr, jptra, Krhs, ln_mus_ups ) 134 150 CASE ( np_UBS ) ! UBS 151 #if defined key_mpi3 152 IF (nn_hls.EQ.2) CALL lbc_lnk_nc_multi( 'trcadv', ptr(:,:,:,:,Kbb), 'T', 1.) 153 #else 135 154 IF (nn_hls.EQ.2) CALL lbc_lnk_multi( 'trcadv', ptr(:,:,:,:,Kbb), 'T', 1.) 155 #endif 136 156 CALL tra_adv_ubs( kt, nittrc000,'TRC', rDt_trc, zuu, zvv, zww, Kbb, Kmm, ptr, jptra, Krhs, nn_ubs_v ) 137 157 CASE ( np_QCK ) ! QUICKEST 138 IF (nn_hls.EQ.2) THEN ; CALL lbc_lnk_multi( 'trcadv', zuu(:,:,:), 'U', -1., zvv(:,:,:), 'V', -1.) 139 CALL lbc_lnk( 'traadv', ptr(:,:,:,:,Kbb), 'T', 1.) ; END IF 158 IF (nn_hls.EQ.2) THEN 159 #if defined key_mpi3 160 CALL lbc_lnk_nc_multi( 'trcadv', zuu(:,:,:), 'U', -1., zvv(:,:,:), 'V', -1.) 161 CALL lbc_lnk_nc_multi( 'traadv', ptr(:,:,:,:,Kbb), 'T', 1.) 162 #else 163 CALL lbc_lnk_multi( 'trcadv', zuu(:,:,:), 'U', -1., zvv(:,:,:), 'V', -1.) 164 CALL lbc_lnk( 'traadv', ptr(:,:,:,:,Kbb), 'T', 1.) 165 #endif 166 END IF 140 167 CALL tra_adv_qck( kt, nittrc000,'TRC', rDt_trc, zuu, zvv, zww, Kbb, Kmm, ptr, jptra, Krhs ) 141 168 ! -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/TOP/TRP/trcatf.F90
r13295 r13906 102 102 #endif 103 103 ! Update after tracer on domain lateral boundaries 104 #if defined key_mpi3 105 CALL lbc_lnk_nc_multi( 'trcatf', ptr(:,:,:,:,Kaa), 'T', 1. ) 106 #else 104 107 CALL lbc_lnk( 'trcatf', ptr(:,:,:,:,Kaa), 'T', 1. ) 108 #endif 105 109 106 110 IF( ln_bdy ) CALL trc_bdy( kt, Kbb, Kmm, Kaa ) … … 168 172 ENDIF 169 173 ! 174 #if defined key_mpi3 175 CALL lbc_lnk_nc_multi( 'trcatf', ptr(:,:,:,:,Kmm), 'T', 1._wp, ptr(:,:,:,:,Kaa), 'T', 1._wp, ptr(:,:,:,:,Kaa), 'T', 1._wp ) 176 #else 170 177 CALL lbc_lnk_multi( 'trcatf', ptr(:,:,:,:,Kmm), 'T', 1._wp, ptr(:,:,:,:,Kaa), 'T', 1._wp, ptr(:,:,:,:,Kaa), 'T', 1._wp ) 178 #endif 171 179 ENDIF 172 180 ! -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/TOP/TRP/trcsbc.F90
r13295 r13906 155 155 END SELECT 156 156 ! 157 #if defined key_mpi3 158 CALL lbc_lnk_nc_multi( 'trcsbc', sbc_trc(:,:,:), 'T', 1.0_wp ) 159 #else 157 160 CALL lbc_lnk( 'trcsbc', sbc_trc(:,:,:), 'T', 1.0_wp ) 161 #endif 158 162 ! Concentration dilution effect on tracers due to evaporation & precipitation 159 163 DO jn = 1, jptra -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/TOP/TRP/trdmxl_trc.F90
r13553 r13906 284 284 IF( ln_trdtrc(jn) ) THEN 285 285 DO jl = 1, jpltrd_trc 286 #if defined key_mpi3 287 CALL lbc_lnk_nc_multi( 'trdmxl_trc', tmltrd_trc(:,:,jl,jn), 'T', 1. ) ! lateral boundary conditions 288 #else 286 289 CALL lbc_lnk( 'trdmxl_trc', tmltrd_trc(:,:,jl,jn), 'T', 1. ) ! lateral boundary conditions 290 #endif 287 291 END DO 288 292 ENDIF … … 419 423 !-- Lateral boundary conditions 420 424 IF ( cn_cfg .NE. 'gyre' ) THEN 425 #if defined key_mpi3 426 CALL lbc_lnk_nc_multi( 'trdmxl_trc', ztmltot(:,:,jn) , 'T', 1. , ztmlres(:,:,jn) , 'T', 1., & 427 & ztmlatf(:,:,jn) , 'T', 1. , ztmlrad(:,:,jn) , 'T', 1. ) 428 #else 421 429 CALL lbc_lnk_multi( 'trdmxl_trc', ztmltot(:,:,jn) , 'T', 1. , ztmlres(:,:,jn) , 'T', 1., & 422 430 & ztmlatf(:,:,jn) , 'T', 1. , ztmlrad(:,:,jn) , 'T', 1. ) 431 #endif 423 432 ENDIF 424 433 … … 470 479 !-- Lateral boundary conditions 471 480 IF ( cn_cfg .NE. 'gyre' ) THEN ! other than GYRE configuration 481 #if defined key_mpi3 482 CALL lbc_lnk_nc_multi( 'trdmxl_trc', ztmltot2(:,:,jn), 'T', 1., ztmlres2(:,:,jn), 'T', 1. ) 483 #else 472 484 CALL lbc_lnk_multi( 'trdmxl_trc', ztmltot2(:,:,jn), 'T', 1., ztmlres2(:,:,jn), 'T', 1. ) 485 #endif 473 486 DO jl = 1, jpltrd_trc 487 #if defined key_mpi3 488 CALL lbc_lnk_nc_multi( 'trdmxl_trc', ztmltrd2(:,:,jl,jn), 'T', 1. ) ! will be output in the NetCDF trends file 489 #else 474 490 CALL lbc_lnk( 'trdmxl_trc', ztmltrd2(:,:,jl,jn), 'T', 1. ) ! will be output in the NetCDF trends file 491 #endif 475 492 END DO 476 493 ENDIF -
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/TOP/trcbdy.F90
r13553 r13906 103 103 END DO 104 104 IF( ANY(llsend1) .OR. ANY(llrecv1) ) THEN ! if need to send/recv in at least one direction 105 #if defined key_mpi3 106 CALL lbc_lnk_nc_multi( 'trcbdy', tr(:,:,:,:,Krhs), 'T', 1.0_wp, kfillmode=jpfillnothing ,lsend=llsend1, lrecv=llrecv1 ) 107 #else 105 108 CALL lbc_lnk( 'trcbdy', tr(:,:,:,:,Krhs), 'T', 1.0_wp, kfillmode=jpfillnothing ,lsend=llsend1, lrecv=llrecv1 ) 109 #endif 106 110 ENDIF 107 111 !
Note: See TracChangeset
for help on using the changeset viewer.