- Timestamp:
- 2020-12-02T06:43:12+01:00 (4 years ago)
- Location:
- NEMO/branches/2020/dev_r13923_Tiling_Cleanup_MPI3_LoopFusion/src/OCE
- Files:
-
- 75 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2020/dev_r13923_Tiling_Cleanup_MPI3_LoopFusion/src/OCE/ASM/asminc.F90
r13906 r13963 422 422 & / e3t(ji,jj,jk,Kmm) 423 423 END_2D 424 #if defined key_mpi3425 CALL lbc_lnk_nc_multi( 'asminc', zhdiv, 'T', 1.0_wp ) ! lateral boundary cond. (no sign change)426 #else427 424 CALL lbc_lnk( 'asminc', zhdiv, 'T', 1.0_wp ) ! lateral boundary cond. (no sign change) 428 #endif429 425 ! 430 426 DO_2D( 0, 0, 0, 0 ) -
NEMO/branches/2020/dev_r13923_Tiling_Cleanup_MPI3_LoopFusion/src/OCE/BDY/bdydyn2d.F90
r13906 r13963 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_mpi3105 CALL lbc_lnk_nc_multi( 'bdydyn2d', pua2d, 'U', -1.0_wp, kfillmode=jpfillnothing ,lsend=llsend2, lrecv=llrecv2 )106 #else107 104 CALL lbc_lnk( 'bdydyn2d', pua2d, 'U', -1.0_wp, kfillmode=jpfillnothing ,lsend=llsend2, lrecv=llrecv2 ) 108 #endif109 105 END IF 110 106 IF( ANY(llsend3) .OR. ANY(llrecv3) ) THEN ! if need to send/recv in at least one direction 111 #if defined key_mpi3112 CALL lbc_lnk_nc_multi( 'bdydyn2d', pva2d, 'V', -1.0_wp, kfillmode=jpfillnothing ,lsend=llsend3, lrecv=llrecv3 )113 #else114 107 CALL lbc_lnk( 'bdydyn2d', pva2d, 'V', -1.0_wp, kfillmode=jpfillnothing ,lsend=llsend3, lrecv=llrecv3 ) 115 #endif116 108 END IF 117 109 ! … … 332 324 IF( nn_hls > 1 .AND. ir == 1 ) CYCLE ! at least 2 halos will be corrected -> no need to correct rim 1 before rim 0 333 325 IF( ANY(llsend1) .OR. ANY(llrecv1) ) THEN ! if need to send/recv in at least one direction 334 #if defined key_mpi3335 CALL lbc_lnk_nc_multi( 'bdydyn2d', zssh(:,:,1), 'T', 1.0_wp, kfillmode=jpfillnothing ,lsend=llsend1, lrecv=llrecv1 )336 #else337 326 CALL lbc_lnk( 'bdydyn2d', zssh(:,:,1), 'T', 1.0_wp, kfillmode=jpfillnothing ,lsend=llsend1, lrecv=llrecv1 ) 338 #endif339 327 END IF 340 328 END DO -
NEMO/branches/2020/dev_r13923_Tiling_Cleanup_MPI3_LoopFusion/src/OCE/BDY/bdydyn3d.F90
r13906 r13963 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_mpi3102 CALL lbc_lnk_nc_multi( 'bdydyn2d', puu(:,:,:,Kaa), 'U', -1.0_wp, kfillmode=jpfillnothing ,lsend=llsend2, lrecv=llrecv2 )103 #else104 101 CALL lbc_lnk( 'bdydyn2d', puu(:,:,:,Kaa), 'U', -1.0_wp, kfillmode=jpfillnothing ,lsend=llsend2, lrecv=llrecv2 ) 105 #endif106 102 END IF 107 103 IF( ANY(llsend3) .OR. ANY(llrecv3) ) THEN ! if need to send/recv in at least one direction 108 #if defined key_mpi3109 CALL lbc_lnk_nc_multi( 'bdydyn2d', pvv(:,:,:,Kaa), 'V', -1.0_wp, kfillmode=jpfillnothing ,lsend=llsend3, lrecv=llrecv3 )110 #else111 104 CALL lbc_lnk( 'bdydyn2d', pvv(:,:,:,Kaa), 'V', -1.0_wp, kfillmode=jpfillnothing ,lsend=llsend3, lrecv=llrecv3 ) 112 #endif113 105 END IF 114 106 END DO ! ir -
NEMO/branches/2020/dev_r13923_Tiling_Cleanup_MPI3_LoopFusion/src/OCE/BDY/bdyice.F90
r13906 r13963 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_mpi394 ! exchange 3d arrays95 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 = jpk100 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 #else103 93 ! exchange 3d arrays 104 94 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 & … … 109 99 CALL lbc_lnk_multi('bdyice', t_s , 'T', 1._wp, e_s , 'T', 1._wp, kfillmode=jpfillnothing ,lsend=llsend1, lrecv=llrecv1 ) 110 100 CALL lbc_lnk_multi('bdyice', t_i , 'T', 1._wp, e_i , 'T', 1._wp, kfillmode=jpfillnothing ,lsend=llsend1, lrecv=llrecv1 ) 111 #endif112 101 END IF 113 102 END DO ! ir … … 445 434 END DO 446 435 IF( ANY(llsend2) .OR. ANY(llrecv2) ) THEN ! if need to send/recv in at least one direction 447 #if defined key_mpi3448 CALL lbc_lnk_nc_multi( 'bdyice', u_ice, 'U', -1.0_wp, kfillmode=jpfillnothing ,lsend=llsend2, lrecv=llrecv2 )449 #else450 436 CALL lbc_lnk( 'bdyice', u_ice, 'U', -1.0_wp, kfillmode=jpfillnothing ,lsend=llsend2, lrecv=llrecv2 ) 451 #endif452 437 END IF 453 438 CASE ( 'V' ) … … 463 448 END DO 464 449 IF( ANY(llsend3) .OR. ANY(llrecv3) ) THEN ! if need to send/recv in at least one direction 465 #if defined key_mpi3466 CALL lbc_lnk_nc_multi( 'bdyice', v_ice, 'V', -1.0_wp, kfillmode=jpfillnothing ,lsend=llsend3, lrecv=llrecv3 )467 #else468 450 CALL lbc_lnk( 'bdyice', v_ice, 'V', -1.0_wp, kfillmode=jpfillnothing ,lsend=llsend3, lrecv=llrecv3 ) 469 #endif470 451 END IF 471 452 END SELECT -
NEMO/branches/2020/dev_r13923_Tiling_Cleanup_MPI3_LoopFusion/src/OCE/BDY/bdyini.F90
r13906 r13963 638 638 END DO 639 639 END DO 640 #if defined key_mpi3641 CALL lbc_lnk_nc_multi( 'bdyini', zfmask, 'F', 1.0_wp )642 #else643 640 CALL lbc_lnk( 'bdyini', zfmask, 'F', 1.0_wp ) 644 #endif645 641 646 642 ! Read global 2D mask at T-points: bdytmask … … 658 654 END DO 659 655 END DO 660 #if defined key_mpi3661 CALL lbc_lnk_nc_multi( 'bdyini', bdyumask, 'U', 1.0_wp , bdyvmask, 'V', 1.0_wp ) ! Lateral boundary cond.662 #else663 656 CALL lbc_lnk_multi( 'bdyini', bdyumask, 'U', 1.0_wp , bdyvmask, 'V', 1.0_wp ) ! Lateral boundary cond. 664 #endif665 657 666 658 ! bdy masks are now set to zero on rim 0 points: … … 703 695 END DO 704 696 END DO 705 #if defined key_mpi3706 CALL lbc_lnk_nc_multi( 'bdyini', zfmask, 'F', 1.0_wp )707 #else708 697 CALL lbc_lnk( 'bdyini', zfmask, 'F', 1.0_wp ) 709 #endif710 698 711 699 ! bdy masks are now set to zero on rim1 points: … … 883 871 ENDIF 884 872 SELECT CASE( igrd ) 885 #if defined key_mpi3886 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 #else890 873 CASE( 1 ) ; CALL lbc_lnk( 'bdyini', ztmp, 'T', 1.0_wp ) 891 874 CASE( 2 ) ; CALL lbc_lnk( 'bdyini', ztmp, 'U', 1.0_wp ) 892 875 CASE( 3 ) ; CALL lbc_lnk( 'bdyini', ztmp, 'V', 1.0_wp ) 893 #endif894 876 END SELECT 895 877 DO ib = ibeg, iend … … 937 919 ENDIF 938 920 SELECT CASE( igrd ) 939 #if defined key_mpi3940 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 #else944 921 CASE( 1 ) ; CALL lbc_lnk( 'bdyini', ztmp, 'T', 1.0_wp ) 945 922 CASE( 2 ) ; CALL lbc_lnk( 'bdyini', ztmp, 'U', 1.0_wp ) 946 923 CASE( 3 ) ; CALL lbc_lnk( 'bdyini', ztmp, 'V', 1.0_wp ) 947 #endif948 924 END SELECT 949 925 DO ib = ibeg, iend … … 1031 1007 END DO 1032 1008 SELECT CASE( igrd ) 1033 #if defined key_mpi31034 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 #else1038 1009 CASE( 1 ) ; CALL lbc_lnk( 'bdyini', ztmp, 'T', 1.0_wp ) 1039 1010 CASE( 2 ) ; CALL lbc_lnk( 'bdyini', ztmp, 'U', 1.0_wp ) 1040 1011 CASE( 3 ) ; CALL lbc_lnk( 'bdyini', ztmp, 'V', 1.0_wp ) 1041 #endif1042 1012 END SELECT 1043 1013 DO ib = ibeg, iend -
NEMO/branches/2020/dev_r13923_Tiling_Cleanup_MPI3_LoopFusion/src/OCE/BDY/bdytra.F90
r13906 r13963 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_mpi3103 CALL lbc_lnk_nc_multi( 'bdytra', pts(:,:,:,jn,Kaa), 'T', 1.0_wp, kfillmode=jpfillnothing ,lsend=llsend1, lrecv=llrecv1 )104 #else105 102 CALL lbc_lnk( 'bdytra', pts(:,:,:,jn,Kaa), 'T', 1.0_wp, kfillmode=jpfillnothing ,lsend=llsend1, lrecv=llrecv1 ) 106 #endif107 103 ENDIF 108 104 ! -
NEMO/branches/2020/dev_r13923_Tiling_Cleanup_MPI3_LoopFusion/src/OCE/CRS/crsfld.F90
r13906 r13963 156 156 & + vv(ji,jj ,jk,Kmm)**2 * e1v(ji,jj ) * e3v(ji,jj ,jk,Kmm) ) 157 157 END_3D 158 #if defined key_mpi3159 CALL lbc_lnk_nc_multi( 'crsfld', z3d, 'T', 1.0_wp )160 #else161 158 CALL lbc_lnk( 'crsfld', z3d, 'T', 1.0_wp ) 162 #endif163 159 ! 164 160 CALL crs_dom_ope( z3d, 'VOL', 'T', tmask, zt_crs, p_e12=e1e2t, p_e3=ze3t, psgn=1.0_wp ) -
NEMO/branches/2020/dev_r13923_Tiling_Cleanup_MPI3_LoopFusion/src/OCE/DOM/dommsk.F90
r13906 r13963 162 162 & * tmask(ji,jj+1,jk) * tmask(ji+1,jj+1,jk) 163 163 END_3D 164 #if defined key_mpi3165 CALL lbc_lnk_nc_multi( 'dommsk', umask, 'U', 1.0_wp, vmask, 'V', 1.0_wp, fmask, 'F', 1.0_wp ) ! Lateral boundary conditions166 #else167 164 CALL lbc_lnk_multi( 'dommsk', umask, 'U', 1.0_wp, vmask, 'V', 1.0_wp, fmask, 'F', 1.0_wp ) ! Lateral boundary conditions 168 #endif169 165 170 166 ! Ocean/land mask at wu-, wv- and w points (computed from tmask) … … 223 219 END DO 224 220 ! 225 #if defined key_mpi3226 CALL lbc_lnk_nc_multi( 'dommsk', fmask, 'F', 1._wp ) ! Lateral boundary conditions on fmask227 #else228 221 CALL lbc_lnk( 'dommsk', fmask, 'F', 1._wp ) ! Lateral boundary conditions on fmask 229 #endif230 222 ! 231 223 ! CAUTION : The fmask may be further modified in dyn_vor_init ( dynvor.F90 ) depending on ln_vorlat -
NEMO/branches/2020/dev_r13923_Tiling_Cleanup_MPI3_LoopFusion/src/OCE/DOM/domqco.F90
r13906 r13963 163 163 ! 164 164 IF( .NOT.PRESENT( pr3f ) ) THEN !- lbc on ratio at u-, v-points only 165 #if defined key_mpi3166 CALL lbc_lnk_nc_multi( 'dom_qco_r3c', pr3u, 'U', 1._wp, pr3v, 'V', 1._wp )167 #else168 165 CALL lbc_lnk_multi( 'dom_qco_r3c', pr3u, 'U', 1._wp, pr3v, 'V', 1._wp ) 169 #endif170 166 ! 171 167 ! … … 186 182 ENDIF 187 183 ! ! lbc on ratio at u-,v-,f-points 188 #if defined key_mpi3189 CALL lbc_lnk_nc_multi( 'dom_qco_r3c', pr3u, 'U', 1._wp, pr3v, 'V', 1._wp, pr3f, 'F', 1._wp )190 #else191 184 CALL lbc_lnk_multi( 'dom_qco_r3c', pr3u, 'U', 1._wp, pr3v, 'V', 1._wp, pr3f, 'F', 1._wp ) 192 #endif193 185 ! 194 186 ENDIF -
NEMO/branches/2020/dev_r13923_Tiling_Cleanup_MPI3_LoopFusion/src/OCE/DOM/domutl.F90
r13906 r13963 108 108 ! 109 109 puniq(:,:) = ztstref(:,:) ! default definition 110 #if defined key_mpi3111 CALL lbc_lnk_nc_multi( 'domwri', puniq, cdgrd, 1. ) ! apply boundary conditions112 #else113 110 CALL lbc_lnk( 'domwri', puniq, cdgrd, 1. ) ! apply boundary conditions 114 #endif115 111 lluniq(:,:,1) = puniq(:,:) == ztstref(:,:) ! check which values have not been changed 116 112 ! -
NEMO/branches/2020/dev_r13923_Tiling_Cleanup_MPI3_LoopFusion/src/OCE/DOM/domvvl.F90
r13906 r13963 439 439 ! ! d - thickness diffusion transport: boundary conditions 440 440 ! (stored for tracer advction and continuity equation) 441 #if defined key_mpi3442 CALL lbc_lnk_nc_multi( 'domvvl', un_td , 'U' , -1._wp, vn_td , 'V' , -1._wp)443 #else444 441 CALL lbc_lnk_multi( 'domvvl', un_td , 'U' , -1._wp, vn_td , 'V' , -1._wp) 445 #endif446 442 ! 4 - Time stepping of baroclinic scale factors 447 443 ! --------------------------------------------- 448 #if defined key_mpi3449 CALL lbc_lnk_nc_multi( 'domvvl', tilde_e3t_a(:,:,:), 'T', 1._wp )450 #else451 444 CALL lbc_lnk( 'domvvl', tilde_e3t_a(:,:,:), 'T', 1._wp ) 452 #endif453 445 tilde_e3t_a(:,:,:) = tilde_e3t_b(:,:,:) + rDt * tmask(:,:,:) * tilde_e3t_a(:,:,:) 454 446 … … 724 716 & + e1e2t(ji+1,jj) * ( pe3_in(ji+1,jj,jk) - e3t_0(ji+1,jj,jk) ) ) 725 717 END_3D 726 #if defined key_mpi3727 CALL lbc_lnk_nc_multi( 'domvvl', pe3_out(:,:,:), 'U', 1._wp )728 #else729 718 CALL lbc_lnk( 'domvvl', pe3_out(:,:,:), 'U', 1._wp ) 730 #endif731 719 pe3_out(:,:,:) = pe3_out(:,:,:) + e3u_0(:,:,:) 732 720 ! … … 737 725 & + e1e2t(ji,jj+1) * ( pe3_in(ji,jj+1,jk) - e3t_0(ji,jj+1,jk) ) ) 738 726 END_3D 739 #if defined key_mpi3740 CALL lbc_lnk_nc_multi( 'domvvl', pe3_out(:,:,:), 'V', 1._wp )741 #else742 727 CALL lbc_lnk( 'domvvl', pe3_out(:,:,:), 'V', 1._wp ) 743 #endif744 728 pe3_out(:,:,:) = pe3_out(:,:,:) + e3v_0(:,:,:) 745 729 ! … … 751 735 & + e1e2u(ji,jj+1) * ( pe3_in(ji,jj+1,jk) - e3u_0(ji,jj+1,jk) ) ) 752 736 END_3D 753 #if defined key_mpi3754 CALL lbc_lnk_nc_multi( 'domvvl', pe3_out(:,:,:), 'F', 1._wp )755 #else756 737 CALL lbc_lnk( 'domvvl', pe3_out(:,:,:), 'F', 1._wp ) 757 #endif758 738 pe3_out(:,:,:) = pe3_out(:,:,:) + e3f_0(:,:,:) 759 739 ! -
NEMO/branches/2020/dev_r13923_Tiling_Cleanup_MPI3_LoopFusion/src/OCE/DOM/domwri.F90
r13906 r13963 229 229 END DO 230 230 END DO 231 #if defined key_mpi3232 CALL lbc_lnk_nc_multi( 'domwri', zx1, 'T', 1.0_wp )233 #else234 231 CALL lbc_lnk( 'domwri', zx1, 'T', 1.0_wp ) 235 #endif236 232 ! 237 233 IF( PRESENT( px1 ) ) px1 = zx1 -
NEMO/branches/2020/dev_r13923_Tiling_Cleanup_MPI3_LoopFusion/src/OCE/DOM/domzgr.F90
r13906 r13963 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_mpi3128 CALL lbc_lnk_nc_multi( 'usrdef_zgr', zmsk, 'T', 1. ) ! set halos129 #else130 127 CALL lbc_lnk( 'usrdef_zgr', zmsk, 'T', 1. ) ! set halos 131 #endif132 128 k_top(:,:) = k_top(:,:) * NINT( zmsk(:,:) ) 133 129 ! … … 344 340 END_2D 345 341 ! 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_mpi3347 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 #else354 342 zk(:,:) = REAL( miku(:,:), wp ) ; CALL lbc_lnk( 'domzgr', zk, 'U', 1.0_wp ) ; miku(:,:) = MAX( NINT( zk(:,:) ), 1 ) 355 343 zk(:,:) = REAL( mikv(:,:), wp ) ; CALL lbc_lnk( 'domzgr', zk, 'V', 1.0_wp ) ; mikv(:,:) = MAX( NINT( zk(:,:) ), 1 ) … … 358 346 zk(:,:) = REAL( mbku(:,:), wp ) ; CALL lbc_lnk( 'domzgr', zk, 'U', 1.0_wp ) ; mbku(:,:) = MAX( NINT( zk(:,:) ), 1 ) 359 347 zk(:,:) = REAL( mbkv(:,:), wp ) ; CALL lbc_lnk( 'domzgr', zk, 'V', 1.0_wp ) ; mbkv(:,:) = MAX( NINT( zk(:,:) ), 1 ) 360 #endif361 348 ! 362 349 END SUBROUTINE zgr_top_bot -
NEMO/branches/2020/dev_r13923_Tiling_Cleanup_MPI3_LoopFusion/src/OCE/DYN/divhor.F90
r13906 r13963 94 94 IF( ln_isf ) CALL isf_hdiv( kt, Kmm, hdiv ) !== ice shelf ==! (update hdiv field) 95 95 ! 96 #if defined key_mpi397 CALL lbc_lnk_nc_multi( 'divhor', hdiv, 'T', 1.0_wp ) ! (no sign change)98 #else99 96 CALL lbc_lnk( 'divhor', hdiv, 'T', 1.0_wp ) ! (no sign change) 100 #endif101 97 ! 102 98 IF( ln_timing ) CALL timing_stop('div_hor') -
NEMO/branches/2020/dev_r13923_Tiling_Cleanup_MPI3_LoopFusion/src/OCE/DYN/dynadv_ubs.F90
r13906 r13963 124 124 END_2D 125 125 END DO 126 #if defined key_mpi3127 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 #else132 126 CALL lbc_lnk_multi( 'dynadv_ubs', zlu_uu(:,:,:,1), 'U', 1.0_wp , zlu_uv(:,:,:,1), 'U', 1.0_wp, & 133 127 & zlu_uu(:,:,:,2), 'U', 1.0_wp , zlu_uv(:,:,:,2), 'U', 1.0_wp, & 134 128 & zlv_vv(:,:,:,1), 'V', 1.0_wp , zlv_vu(:,:,:,1), 'V', 1.0_wp, & 135 129 & zlv_vv(:,:,:,2), 'V', 1.0_wp , zlv_vu(:,:,:,2), 'V', 1.0_wp ) 136 #endif137 130 ! 138 131 ! ! ====================== ! -
NEMO/branches/2020/dev_r13923_Tiling_Cleanup_MPI3_LoopFusion/src/OCE/DYN/dynatf.F90
r13906 r13963 167 167 # endif 168 168 ! 169 #if defined key_mpi3170 CALL lbc_lnk_nc_multi( 'dynatf', puu(:,:,:,Kaa), 'U', -1.0_wp, pvv(:,:,:,Kaa), 'V', -1.0_wp ) !* local domain boundaries171 #else172 169 CALL lbc_lnk_multi( 'dynatf', puu(:,:,:,Kaa), 'U', -1.0_wp, pvv(:,:,:,Kaa), 'V', -1.0_wp ) !* local domain boundaries 173 #endif174 170 ! 175 171 ! !* BDY open boundaries -
NEMO/branches/2020/dev_r13923_Tiling_Cleanup_MPI3_LoopFusion/src/OCE/DYN/dynhpg.F90
r13906 r13963 449 449 END IF 450 450 END_2D 451 #if defined key_mpi3452 CALL lbc_lnk_nc_multi( 'dynhpg', zcpx, 'U', 1.0_wp, zcpy, 'V', 1.0_wp )453 #else454 451 CALL lbc_lnk_multi( 'dynhpg', zcpx, 'U', 1.0_wp, zcpy, 'V', 1.0_wp ) 455 #endif456 452 END IF 457 453 … … 684 680 END IF 685 681 END_2D 686 #if defined key_mpi3687 CALL lbc_lnk_nc_multi( 'dynhpg', zcpx, 'U', 1.0_wp, zcpy, 'V', 1.0_wp )688 #else689 682 CALL lbc_lnk_multi( 'dynhpg', zcpx, 'U', 1.0_wp, zcpy, 'V', 1.0_wp ) 690 #endif691 683 END IF 692 684 … … 834 826 835 827 END_3D 836 #if defined key_mpi3837 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 #else839 828 CALL lbc_lnk_multi( 'dynhpg', rho_k, 'W', 1.0_wp, rho_i, 'U', 1.0_wp, rho_j, 'V', 1.0_wp ) 840 #endif841 829 842 830 ! --------------- … … 965 953 ENDIF 966 954 END_2D 967 #if defined key_mpi3968 CALL lbc_lnk_nc_multi( 'dynhpg', zcpx, 'U', 1.0_wp, zcpy, 'V', 1.0_wp )969 #else970 955 CALL lbc_lnk_multi( 'dynhpg', zcpx, 'U', 1.0_wp, zcpy, 'V', 1.0_wp ) 971 #endif972 956 ENDIF 973 957 … … 1039 1023 END_2D 1040 1024 1041 #if defined key_mpi31042 CALL lbc_lnk_nc_multi ('dynhpg', zsshu_n, 'U', 1.0_wp, zsshv_n, 'V', 1.0_wp )1043 #else1044 1025 CALL lbc_lnk_multi ('dynhpg', zsshu_n, 'U', 1.0_wp, zsshv_n, 'V', 1.0_wp ) 1045 #endif1046 1026 1047 1027 DO_2D( 0, 0, 0, 0 ) -
NEMO/branches/2020/dev_r13923_Tiling_Cleanup_MPI3_LoopFusion/src/OCE/DYN/dynkeg.F90
r13906 r13963 121 121 zhke(ji,jj,jk) = r1_48 * ( zv + zu ) 122 122 END_3D 123 #if defined key_mpi3124 CALL lbc_lnk_nc_multi( 'dynkeg', zhke, 'T', 1.0_wp )125 #else126 123 CALL lbc_lnk( 'dynkeg', zhke, 'T', 1.0_wp ) 127 #endif128 124 ! 129 125 END SELECT -
NEMO/branches/2020/dev_r13923_Tiling_Cleanup_MPI3_LoopFusion/src/OCE/DYN/dynldf_iso.F90
r13906 r13963 135 135 END_3D 136 136 ! Lateral boundary conditions on the slopes 137 #if defined key_mpi3138 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 #else140 137 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 #endif142 138 ! 143 139 ENDIF -
NEMO/branches/2020/dev_r13923_Tiling_Cleanup_MPI3_LoopFusion/src/OCE/DYN/dynldf_lap_blp.F90
r13906 r13963 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_mpi3135 CALL lbc_lnk_nc_multi( 'dynldf_lap_blp', zulap, 'U', -1.0_wp, zvlap, 'V', -1.0_wp ) ! Lateral boundary conditions136 #else137 134 CALL lbc_lnk_multi( 'dynldf_lap_blp', zulap, 'U', -1.0_wp, zvlap, 'V', -1.0_wp ) ! Lateral boundary conditions 138 #endif139 135 ! 140 136 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_r13923_Tiling_Cleanup_MPI3_LoopFusion/src/OCE/DYN/dynspg_ts.F90
r13906 r13963 520 520 END_2D 521 521 ! 522 #if defined key_mpi3523 CALL lbc_lnk_nc_multi( 'dynspg_ts', ssha_e, 'T', 1._wp, zhU, 'U', -1._wp, zhV, 'V', -1._wp )524 #else525 522 CALL lbc_lnk_multi( 'dynspg_ts', ssha_e, 'T', 1._wp, zhU, 'U', -1._wp, zhV, 'V', -1._wp ) 526 #endif527 523 ! 528 524 ! Duplicate sea level across open boundaries (this is only cosmetic if linssh=T) … … 663 659 ! 664 660 IF( .NOT.ln_linssh ) THEN !* Update ocean depth (variable volume case only) 665 #if defined key_mpi3666 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 #else670 661 CALL lbc_lnk_multi( 'dynspg_ts', ua_e , 'U', -1._wp, va_e , 'V', -1._wp & 671 662 & , hu_e , 'U', 1._wp, hv_e , 'V', 1._wp & 672 663 & , hur_e, 'U', 1._wp, hvr_e, 'V', 1._wp ) 673 #endif674 664 ELSE 675 #if defined key_mpi3676 CALL lbc_lnk_nc_multi( 'dynspg_ts', ua_e , 'U', -1._wp, va_e , 'V', -1._wp )677 #else678 665 CALL lbc_lnk_multi( 'dynspg_ts', ua_e , 'U', -1._wp, va_e , 'V', -1._wp ) 679 #endif680 666 ENDIF 681 667 ! ! open boundaries … … 765 751 & + e1e2t(ji,jj+1) * pssh(ji,jj+1,Kaa) ) 766 752 END_2D 767 #if defined key_mpi3768 CALL lbc_lnk_nc_multi( 'dynspg_ts', zsshu_a, 'U', 1._wp, zsshv_a, 'V', 1._wp ) ! Boundary conditions769 #else770 753 CALL lbc_lnk_multi( 'dynspg_ts', zsshu_a, 'U', 1._wp, zsshv_a, 'V', 1._wp ) ! Boundary conditions 771 #endif772 754 ! 773 755 DO jk=1,jpkm1 … … 1132 1114 END_2D 1133 1115 END SELECT 1134 #if defined key_mpi31135 CALL lbc_lnk_nc_multi( 'dynspg_ts', zwz, 'F', 1._wp )1136 #else1137 1116 CALL lbc_lnk( 'dynspg_ts', zwz, 'F', 1._wp ) 1138 #endif1139 1117 ! 1140 1118 ftne(1,:) = 0._wp ; ftnw(1,:) = 0._wp ; ftse(1,:) = 0._wp ; ftsw(1,:) = 0._wp … … 1198 1176 END DO 1199 1177 END DO 1200 #if defined key_mpi31201 CALL lbc_lnk_nc_multi( 'dynspg_ts', zhf, 'F', 1._wp )1202 #else1203 1178 CALL lbc_lnk( 'dynspg_ts', zhf, 'F', 1._wp ) 1204 #endif1205 1179 ! JC: TBC. hf should be greater than 0 1206 1180 DO_2D( 1, 1, 1, 1 ) -
NEMO/branches/2020/dev_r13923_Tiling_Cleanup_MPI3_LoopFusion/src/OCE/DYN/dynvor.F90
r13906 r13963 242 242 END DO 243 243 244 #if defined key_mpi3245 CALL lbc_lnk_nc_multi( 'dynvor', zwz, 'F', 1.0_wp )246 #else247 244 CALL lbc_lnk( 'dynvor', zwz, 'F', 1.0_wp ) 248 #endif249 245 250 246 CASE ( np_CRV ) !* Coriolis + relative vorticity … … 261 257 END DO 262 258 263 #if defined key_mpi3264 CALL lbc_lnk_nc_multi( 'dynvor', zwz, 'F', 1.0_wp )265 #else266 259 CALL lbc_lnk( 'dynvor', zwz, 'F', 1.0_wp ) 267 #endif268 260 269 261 END SELECT … … 618 610 END DO ! End of slab 619 611 ! 620 #if defined key_mpi3621 CALL lbc_lnk_nc_multi( 'dynvor', zwz, 'F', 1.0_wp )622 #else623 612 CALL lbc_lnk( 'dynvor', zwz, 'F', 1.0_wp ) 624 #endif625 613 626 614 DO jk = 1, jpkm1 ! Horizontal slab … … 743 731 END DO 744 732 ! 745 #if defined key_mpi3746 CALL lbc_lnk_nc_multi( 'dynvor', zwz, 'F', 1.0_wp )747 #else748 733 CALL lbc_lnk( 'dynvor', zwz, 'F', 1.0_wp ) 749 #endif750 734 ! 751 735 DO jk = 1, jpkm1 ! Horizontal slab … … 839 823 END_3D 840 824 ! 841 #if defined key_mpi3842 CALL lbc_lnk_nc_multi( 'dynvor', fmask, 'F', 1._wp ) ! Lateral boundary conditions on fmask843 #else844 825 CALL lbc_lnk( 'dynvor', fmask, 'F', 1._wp ) ! Lateral boundary conditions on fmask 845 #endif846 826 ! 847 827 ENDIF … … 881 861 dj_e1v_2(ji,jj) = ( e1v(ji,jj) - e1v(ji ,jj-1) ) * 0.5_wp 882 862 END_2D 883 #if defined key_mpi3884 CALL lbc_lnk_nc_multi( 'dynvor', di_e2u_2, 'T', -1.0_wp , dj_e1v_2, 'T', -1.0_wp ) ! Lateral boundary conditions885 #else886 863 CALL lbc_lnk_multi( 'dynvor', di_e2u_2, 'T', -1.0_wp , dj_e1v_2, 'T', -1.0_wp ) ! Lateral boundary conditions 887 #endif888 864 ! 889 865 CASE DEFAULT !* F-point metric term : pre-compute di(e2u)/(2*e1e2f) and dj(e1v)/(2*e1e2f) … … 893 869 dj_e1u_2e1e2f(ji,jj) = ( e1u(ji ,jj+1) - e1u(ji,jj) ) * 0.5 * r1_e1e2f(ji,jj) 894 870 END_2D 895 #if defined key_mpi3896 CALL lbc_lnk_nc_multi( 'dynvor', di_e2v_2e1e2f, 'F', -1.0_wp , dj_e1u_2e1e2f, 'F', -1.0_wp ) ! Lateral boundary conditions897 #else898 871 CALL lbc_lnk_multi( 'dynvor', di_e2v_2e1e2f, 'F', -1.0_wp , dj_e1u_2e1e2f, 'F', -1.0_wp ) ! Lateral boundary conditions 899 #endif900 872 END SELECT 901 873 ! -
NEMO/branches/2020/dev_r13923_Tiling_Cleanup_MPI3_LoopFusion/src/OCE/DYN/sshwzv.F90
r13906 r13963 119 119 IF ( .NOT.ln_dynspg_ts ) THEN 120 120 IF( ln_bdy ) THEN 121 #if defined key_mpi3122 CALL lbc_lnk_nc_multi( 'sshwzv', pssh(:,:,Kaa), 'T', 1.0_wp ) ! Not sure that's necessary123 #else124 121 CALL lbc_lnk( 'sshwzv', pssh(:,:,Kaa), 'T', 1.0_wp ) ! Not sure that's necessary 125 #endif126 122 CALL bdy_ssh( pssh(:,:,Kaa) ) ! Duplicate sea level across open boundaries 127 123 ENDIF … … 186 182 END_2D 187 183 END DO 188 #if defined key_mpi3189 CALL lbc_lnk_nc_multi('sshwzv', zhdiv, 'T', 1.0_wp) ! - ML - Perhaps not necessary: not used for horizontal "connexions"190 #else191 184 CALL lbc_lnk('sshwzv', zhdiv, 'T', 1.0_wp) ! - ML - Perhaps not necessary: not used for horizontal "connexions" 192 #endif193 185 ! ! Is it problematic to have a wrong vertical velocity in boundary cells? 194 186 ! ! Same question holds for hdiv. Perhaps just for security … … 396 388 END_3D 397 389 ENDIF 398 #if defined key_mpi3399 CALL lbc_lnk_nc_multi( 'sshwzv', Cu_adv, 'T', 1.0_wp )400 #else401 390 CALL lbc_lnk( 'sshwzv', Cu_adv, 'T', 1.0_wp ) 402 #endif403 391 ! 404 392 CALL iom_put("Courant",Cu_adv) -
NEMO/branches/2020/dev_r13923_Tiling_Cleanup_MPI3_LoopFusion/src/OCE/DYN/wet_dry.F90
r13906 r13963 241 241 ENDIF 242 242 END_2D 243 #if defined key_mpi3244 CALL lbc_lnk_nc_multi( 'wet_dry', zwdlmtu, 'U', 1.0_wp, zwdlmtv, 'V', 1.0_wp )245 #else246 243 CALL lbc_lnk_multi( 'wet_dry', zwdlmtu, 'U', 1.0_wp, zwdlmtv, 'V', 1.0_wp ) 247 #endif248 244 ! 249 245 CALL mpp_max('wet_dry', jflag) !max over the global domain … … 261 257 ! 262 258 !!gm TO BE SUPPRESSED ? these lbc_lnk are useless since zwdlmtu and zwdlmtv are defined everywhere ! 263 #if defined key_mpi3264 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 #else267 259 CALL lbc_lnk_multi( 'wet_dry', puu(:,:,:,Kmm) , 'U', -1.0_wp, pvv(:,:,:,Kmm) , 'V', -1.0_wp ) 268 260 CALL lbc_lnk_multi( 'wet_dry', uu_b(:,:,Kmm), 'U', -1.0_wp, vv_b(:,:,Kmm), 'V', -1.0_wp ) 269 #endif270 261 !!gm 271 262 ! … … 375 366 END_2D 376 367 ! 377 #if defined key_mpi3378 CALL lbc_lnk_nc_multi( 'wet_dry', zwdlmtu, 'U', 1.0_wp, zwdlmtv, 'V', 1.0_wp )379 #else380 368 CALL lbc_lnk_multi( 'wet_dry', zwdlmtu, 'U', 1.0_wp, zwdlmtv, 'V', 1.0_wp ) 381 #endif382 369 ! 383 370 CALL mpp_max('wet_dry', jflag) !max over the global domain … … 391 378 ! 392 379 !!gm THIS lbc_lnk is useless since it is already done at the end of the jk1-loop 393 #if defined key_mpi3394 CALL lbc_lnk_nc_multi( 'wet_dry', zflxu, 'U', -1.0_wp, zflxv, 'V', -1.0_wp )395 #else396 380 CALL lbc_lnk_multi( 'wet_dry', zflxu, 'U', -1.0_wp, zflxv, 'V', -1.0_wp ) 397 #endif398 381 !!gm end 399 382 ! -
NEMO/branches/2020/dev_r13923_Tiling_Cleanup_MPI3_LoopFusion/src/OCE/ICB/icbclv.F90
r13906 r13963 173 173 ! 174 174 DO jn = 1, nclasses 175 #if defined key_mpi3176 CALL lbc_lnk_nc_multi( 'icbclv', berg_grid%stored_ice(:,:,jn), 'T', 1._wp )177 #else178 175 CALL lbc_lnk( 'icbclv', berg_grid%stored_ice(:,:,jn), 'T', 1._wp ) 179 #endif180 176 END DO 181 #if defined key_mpi3182 CALL lbc_lnk_nc_multi( 'icbclv', berg_grid%stored_heat, 'T', 1._wp )183 #else184 177 CALL lbc_lnk( 'icbclv', berg_grid%stored_heat, 'T', 1._wp ) 185 #endif186 178 ! 187 179 IF( nn_verbose_level > 0 .AND. icntmax > 1 ) WRITE(numicb,*) 'icb_clv: icnt=', icnt,' on', narea -
NEMO/branches/2020/dev_r13923_Tiling_Cleanup_MPI3_LoopFusion/src/OCE/ICB/icbini.F90
r13906 r13963 127 127 src_calving (ji,jj) = nicbpack * mjg(jj) + mig(ji) 128 128 END_2D 129 #if defined key_mpi3130 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 #else133 129 CALL lbc_lnk( 'icbini', src_calving_hflx, 'T', 1._wp ) 134 130 CALL lbc_lnk( 'icbini', src_calving , 'T', 1._wp ) 135 #endif136 131 137 132 ! work out interior of processor from exchange array -
NEMO/branches/2020/dev_r13923_Tiling_Cleanup_MPI3_LoopFusion/src/OCE/IOM/iom.F90
r13906 r13963 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_mpi31345 CALL lbc_lnk_nc_multi( 'iom', pv_r2d, cl_type, zsgn, kfillmode = kfill )1346 #else1347 1344 CALL lbc_lnk( 'iom', pv_r2d, cl_type, zsgn, kfillmode = kfill ) 1348 #endif1349 1345 ELSEIF( PRESENT(pv_r3d) .AND. idom /= jpdom_unknown .AND. cl_type /= 'Z' ) THEN 1350 #if defined key_mpi31351 CALL lbc_lnk_nc_multi( 'iom', pv_r3d, cl_type, zsgn, kfillmode = kfill )1352 #else1353 1346 CALL lbc_lnk( 'iom', pv_r3d, cl_type, zsgn, kfillmode = kfill ) 1354 #endif1355 1347 ENDIF 1356 1348 ! … … 1371 1363 IF(lwp) WRITE(numout,*) 'XIOS RST READ (3D): ',TRIM(cdvar) 1372 1364 CALL xios_recv_field( trim(cdvar), pv_r3d) 1373 #if defined key_mpi31374 IF(idom /= jpdom_unknown ) CALL lbc_lnk_nc_multi( 'iom', pv_r3d,'Z', -999., kfillmode = jpfillnothing)1375 #else1376 1365 IF(idom /= jpdom_unknown ) CALL lbc_lnk( 'iom', pv_r3d,'Z', -999., kfillmode = jpfillnothing) 1377 #endif1378 1366 ELSEIF( PRESENT(pv_r2d) ) THEN 1379 1367 IF(lwp) WRITE(numout,*) 'XIOS RST READ (2D): ', TRIM(cdvar) 1380 1368 CALL xios_recv_field( trim(cdvar), pv_r2d) 1381 #if defined key_mpi31382 IF(idom /= jpdom_unknown ) CALL lbc_lnk_nc_multi('iom', pv_r2d,'Z',-999., kfillmode = jpfillnothing)1383 #else1384 1369 IF(idom /= jpdom_unknown ) CALL lbc_lnk('iom', pv_r2d,'Z',-999., kfillmode = jpfillnothing) 1385 #endif1386 1370 ELSEIF( PRESENT(pv_r1d) ) THEN 1387 1371 IF(lwp) WRITE(numout,*) 'XIOS RST READ (1D): ', TRIM(cdvar) … … 1396 1380 !some final adjustments 1397 1381 ! C1D case : always call lbc_lnk to replicate the central value over the whole 3X3 domain 1398 #if defined key_mpi31399 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 #else1402 1382 IF( lk_c1d .AND. PRESENT(pv_r2d) ) CALL lbc_lnk( 'iom', pv_r2d,'Z',1.0_wp ) 1403 1383 IF( lk_c1d .AND. PRESENT(pv_r3d) ) CALL lbc_lnk( 'iom', pv_r3d,'Z',1.0_wp ) 1404 #endif1405 1384 1406 1385 !--- Apply scale_factor and offset … … 2253 2232 ! 2254 2233 z_fld(:,:) = 1._wp 2255 #if defined key_mpi32256 CALL lbc_lnk_nc_multi( 'iom', z_fld, cdgrd, -1.0_wp ) ! Working array for location of northfold2257 #else2258 2234 CALL lbc_lnk( 'iom', z_fld, cdgrd, -1.0_wp ) ! Working array for location of northfold 2259 #endif2260 2235 ! 2261 2236 ! Cell vertices that can be defined -
NEMO/branches/2020/dev_r13923_Tiling_Cleanup_MPI3_LoopFusion/src/OCE/ISF/isfcav.F90
r13906 r13963 136 136 ! 137 137 ! lbclnk on melt 138 #if defined key_mpi3139 CALL lbc_lnk_nc_multi( 'isfmlt', zqh, 'T', 1.0_wp, pqfwf, 'T', 1.0_wp)140 #else141 138 CALL lbc_lnk_multi( 'isfmlt', zqh, 'T', 1.0_wp, pqfwf, 'T', 1.0_wp) 142 #endif143 139 ! 144 140 ! output fluxes -
NEMO/branches/2020/dev_r13923_Tiling_Cleanup_MPI3_LoopFusion/src/OCE/ISF/isfcpl.F90
r13906 r13963 212 212 zssmask0(:,:) = zssmask_b(:,:) 213 213 ! 214 #if defined key_mpi3215 CALL lbc_lnk_nc_multi( 'iscplrst', zssh, 'T', 1.0_wp, zssmask0, 'T', 1.0_wp )216 #else217 214 CALL lbc_lnk_multi( 'iscplrst', zssh, 'T', 1.0_wp, zssmask0, 'T', 1.0_wp ) 218 #endif219 215 ! 220 216 END DO … … 371 367 ztmask0(:,:,:) = ztmask1(:,:,:) 372 368 ! 373 #if defined key_mpi3374 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 #else376 369 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 #endif378 370 ! 379 371 END DO ! nn_drown … … 466 458 END_2D 467 459 ! 468 #if defined key_mpi3469 CALL lbc_lnk_nc_multi( 'iscpl', risfcpl_vol, 'T', 1.0_wp )470 #else471 460 CALL lbc_lnk( 'iscpl', risfcpl_vol, 'T', 1.0_wp ) 472 #endif473 461 ! 474 462 ! 3.0: set total correction (div, tr(:,:,:,:,Krhs), ssh) … … 705 693 ! 706 694 ! add lbclnk 707 #if defined key_mpi3708 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 #else711 695 CALL lbc_lnk_multi( 'iscplrst', risfcpl_cons_tsc(:,:,:,jp_tem), 'T', 1.0_wp, risfcpl_cons_tsc(:,:,:,jp_sal), 'T', 1.0_wp, & 712 696 & risfcpl_cons_vol(:,:,:) , 'T', 1.0_wp) 713 #endif714 697 ! 715 698 ! ssh correction (for dynspg_ts) -
NEMO/branches/2020/dev_r13923_Tiling_Cleanup_MPI3_LoopFusion/src/OCE/ISF/isfpar.F90
r13906 r13963 82 82 ! 83 83 ! lbclnk on melt and heat fluxes 84 #if defined key_mpi385 CALL lbc_lnk_nc_multi( 'isfmlt', zqh, 'T', 1.0_wp, pqfwf, 'T', 1.0_wp)86 #else87 84 CALL lbc_lnk_multi( 'isfmlt', zqh, 'T', 1.0_wp, pqfwf, 'T', 1.0_wp) 88 #endif89 85 ! 90 86 ! output fluxes -
NEMO/branches/2020/dev_r13923_Tiling_Cleanup_MPI3_LoopFusion/src/OCE/LBC/halo_mng.F90
r13906 r13963 92 92 zpta = pta(offset+1 : offset+jpi, offset+1 : offset+jpj) 93 93 END IF 94 #if defined key_mpi395 CALL lbc_lnk_nc_multi( 'halo_mng_resize_2D', zpta, cdna, psgn, pfillval=fillval)96 #else97 94 CALL lbc_lnk( 'halo_mng_resize_2D', zpta, cdna, psgn, pfillval=fillval) 98 #endif99 95 DEALLOCATE(pta) 100 96 pta => zpta … … 126 122 zpta = pta(offset+1 : offset+jpi, offset+1 : offset+jpj, :) 127 123 END IF 128 #if defined key_mpi3129 CALL lbc_lnk_nc_multi( 'halo_mng_resize_3D', zpta, cdna, psgn, pfillval=fillval)130 #else131 124 CALL lbc_lnk( 'halo_mng_resize_3D', zpta, cdna, psgn, pfillval=fillval) 132 #endif133 125 DEALLOCATE(pta) 134 126 pta => zpta … … 161 153 zpta = pta(offset+1 : offset+jpi, offset+1 : offset+jpj, :, :) 162 154 END IF 163 #if defined key_mpi3164 CALL lbc_lnk_nc_multi( 'halo_mng_resize_4D', zpta(:,:,:,fjpt), cdna, psgn, pfillval=fillval)165 #else166 155 CALL lbc_lnk( 'halo_mng_resize_4D', zpta(:,:,:,fjpt), cdna, psgn, pfillval=fillval) 167 #endif168 156 DEALLOCATE(pta) 169 157 pta => zpta … … 197 185 zpta = pta(offset+1 : offset+jpi, offset+1 : offset+jpj, :, :, :) 198 186 END IF 199 #if defined key_mpi3200 CALL lbc_lnk_nc_multi( 'halo_mng_resize_5D', zpta(:,:,:,:,fjpt), cdna, psgn, pfillval=fillval)201 #else202 187 CALL lbc_lnk( 'halo_mng_resize_5D', zpta(:,:,:,:,fjpt), cdna, psgn, pfillval=fillval) 203 #endif204 188 DEALLOCATE(pta) 205 189 pta => zpta -
NEMO/branches/2020/dev_r13923_Tiling_Cleanup_MPI3_LoopFusion/src/OCE/LBC/lbc_lnk_multi_generic.h90
r13553 r13963 40 40 & , pt9 , cdna9 , psgn9 , pt10, cdna10, psgn10, pt11, cdna11, psgn11, pt12, cdna12, psgn12 & 41 41 & , pt13, cdna13, psgn13, pt14, cdna14, psgn14, pt15, cdna15, psgn15, pt16, cdna16, psgn16 & 42 & , kfillmode, pfillval, lsend, lrecv )42 & , kfillmode, pfillval, lsend, lrecv, ncsten ) 43 43 !!--------------------------------------------------------------------- 44 44 CHARACTER(len=*) , INTENT(in ) :: cdname ! name of the calling subroutine … … 55 55 REAL(wp) , OPTIONAL , INTENT(in ) :: pfillval ! background value (used at closed boundaries) 56 56 LOGICAL, DIMENSION(4), OPTIONAL , INTENT(in ) :: lsend, lrecv ! indicate how communications are to be carried out 57 LOGICAL , OPTIONAL , INTENT(in ) :: ncsten 57 58 !! 58 59 INTEGER :: kfld ! number of elements that will be attributed … … 84 85 IF( PRESENT(psgn16) ) CALL ROUTINE_LOAD( pt16, cdna16, psgn16, ptab_ptr, cdna_ptr, psgn_ptr, kfld ) 85 86 ! 86 CALL lbc_lnk_ptr( cdname, ptab_ptr, cdna_ptr, psgn_ptr, kfld, kfillmode, pfillval, lsend, lrecv )87 CALL lbc_lnk_ptr( cdname, ptab_ptr, cdna_ptr, psgn_ptr, kfld, kfillmode, pfillval, lsend, lrecv, ncsten ) 87 88 ! 88 89 END SUBROUTINE ROUTINE_MULTI -
NEMO/branches/2020/dev_r13923_Tiling_Cleanup_MPI3_LoopFusion/src/OCE/LBC/mpp_lnk_generic.h90
r13286 r13963 72 72 73 73 #if defined MULTI 74 SUBROUTINE ROUTINE_LNK( cdname, ptab, cd_nat, psgn, kfld, kfillmode, pfillval, lsend, lrecv )74 SUBROUTINE ROUTINE_LNK( cdname, ptab, cd_nat, psgn, kfld, kfillmode, pfillval, lsend, lrecv, ncsten ) 75 75 INTEGER , INTENT(in ) :: kfld ! number of pt3d arrays 76 76 #else 77 SUBROUTINE ROUTINE_LNK( cdname, ptab, cd_nat, psgn , kfillmode, pfillval, lsend, lrecv )77 SUBROUTINE ROUTINE_LNK( cdname, ptab, cd_nat, psgn , kfillmode, pfillval, lsend, lrecv, ncsten ) 78 78 #endif 79 79 ARRAY_TYPE(:,:,:,:,:) ! array or pointer of arrays on which the boundary condition is applied … … 84 84 REAL(wp), OPTIONAL, INTENT(in ) :: pfillval ! background value (used at closed boundaries) 85 85 LOGICAL, DIMENSION(4),OPTIONAL, INTENT(in ) :: lsend, lrecv ! communication with other 4 proc 86 LOGICAL, OPTIONAL, INTENT(in ) :: ncsten ! 5-point or 9-point stencil 86 87 ! 87 88 INTEGER :: ji, jj, jk, jl, jf ! dummy loop indices … … 100 101 !!---------------------------------------------------------------------- 101 102 ! 103 #if defined key_mpi3 104 # if defined MULTI 105 CALL lbc_lnk_nc ( cdname, ptab, cd_nat, psgn, kfld, kfillmode, pfillval, lsend, lrecv, ncsten ) 106 # else 107 CALL lbc_lnk_nc_multi(cdname, ptab, cd_nat, psgn, kfillmode=kfillmode, pfillval=pfillval, lsend=lsend, lrecv=lrecv, ncsten=ncsten) 108 # endif 109 #else 110 102 111 ! ----------------------------------------- ! 103 112 ! 0. local variables initialization ! … … 387 396 IF( llrecv_no ) DEALLOCATE( zrcv_no ) 388 397 ! 398 #endif 389 399 END SUBROUTINE ROUTINE_LNK 390 400 #undef PRECISION -
NEMO/branches/2020/dev_r13923_Tiling_Cleanup_MPI3_LoopFusion/src/OCE/LDF/ldfc1d_c2d.F90
r13906 r13963 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_mpi388 CALL lbc_lnk_nc_multi( 'ldfc1d_c2d', pah2, 'F', 1.0_wp ) ! Lateral boundary conditions89 #else90 87 CALL lbc_lnk( 'ldfc1d_c2d', pah2, 'F', 1.0_wp ) ! Lateral boundary conditions 91 #endif92 88 ! 93 89 CASE( 'TRA' ) ! U- and V-points (zdep1 & 2 are an approximation in zps-coord.) … … 99 95 END_3D 100 96 ! Lateral boundary conditions 101 #if defined key_mpi3102 CALL lbc_lnk_nc_multi( 'ldfc1d_c2d', pah1, 'U', 1.0_wp , pah2, 'V', 1.0_wp )103 #else104 97 CALL lbc_lnk_multi( 'ldfc1d_c2d', pah1, 'U', 1.0_wp , pah2, 'V', 1.0_wp ) 105 #endif106 98 ! 107 99 CASE DEFAULT ! error -
NEMO/branches/2020/dev_r13923_Tiling_Cleanup_MPI3_LoopFusion/src/OCE/LDF/ldfdyn.F90
r13906 r13963 398 398 ENDIF 399 399 ! 400 #if defined key_mpi3401 CALL lbc_lnk_nc_multi( 'ldfdyn', ahmt, 'T', 1.0_wp, ahmf, 'F', 1.0_wp )402 #else403 400 CALL lbc_lnk_multi( 'ldfdyn', ahmt, 'T', 1.0_wp, ahmf, 'F', 1.0_wp ) 404 #endif405 401 ! 406 402 ! … … 434 430 END DO 435 431 ! 436 #if defined key_mpi3437 CALL lbc_lnk_nc_multi( 'ldfdyn', dtensq, 'T', 1.0_wp ) ! lbc_lnk on dshesq not needed438 #else439 432 CALL lbc_lnk_multi( 'ldfdyn', dtensq, 'T', 1.0_wp ) ! lbc_lnk on dshesq not needed 440 #endif441 433 ! 442 434 DO jk = 1, jpkm1 … … 489 481 ENDIF 490 482 ! 491 #if defined key_mpi3492 CALL lbc_lnk_nc_multi( 'ldfdyn', ahmt, 'T', 1.0_wp , ahmf, 'F', 1.0_wp )493 #else494 483 CALL lbc_lnk_multi( 'ldfdyn', ahmt, 'T', 1.0_wp , ahmf, 'F', 1.0_wp ) 495 #endif496 484 ! 497 485 END SELECT -
NEMO/branches/2020/dev_r13923_Tiling_Cleanup_MPI3_LoopFusion/src/OCE/LDF/ldfslp.F90
r13906 r13963 229 229 !!gm end modif 230 230 END_3D 231 #if defined key_mpi3232 CALL lbc_lnk_nc_multi( 'ldfslp', zwz, 'U', -1.0_wp, zww, 'V', -1.0_wp ) ! lateral boundary conditions233 #else234 231 CALL lbc_lnk_multi( 'ldfslp', zwz, 'U', -1.0_wp, zww, 'V', -1.0_wp ) ! lateral boundary conditions 235 #endif236 232 ! 237 233 ! !* horizontal Shapiro filter … … 307 303 !!gm end modif 308 304 END_3D 309 #if defined key_mpi3310 CALL lbc_lnk_nc_multi( 'ldfslp', zwz, 'T', -1.0_wp, zww, 'T', -1.0_wp ) ! lateral boundary conditions311 #else312 305 CALL lbc_lnk_multi( 'ldfslp', zwz, 'T', -1.0_wp, zww, 'T', -1.0_wp ) ! lateral boundary conditions 313 #endif314 306 ! 315 307 ! !* horizontal Shapiro filter … … 356 348 ! IV. Lateral boundary conditions 357 349 ! =============================== 358 #if defined key_mpi3359 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 #else361 350 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 #endif363 351 364 352 IF(sn_cfctl%l_prtctl) THEN … … 592 580 wslp2(:,:,1) = 0._wp ! force the surface wslp to zero 593 581 594 #if defined key_mpi3595 CALL lbc_lnk_nc_multi( 'ldfslp', wslp2, 'W', 1.0_wp ) ! lateral boundary confition on wslp2 only ==>>> gm : necessary ? to be checked596 #else597 582 CALL lbc_lnk( 'ldfslp', wslp2, 'W', 1.0_wp ) ! lateral boundary confition on wslp2 only ==>>> gm : necessary ? to be checked 598 #endif599 583 ! 600 584 IF( ln_timing ) CALL timing_stop('ldf_slp_triad') … … 705 689 END_2D 706 690 !!gm this lbc_lnk should be useless.... 707 #if defined key_mpi3708 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 #else710 691 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 #endif712 692 ! 713 693 END SUBROUTINE ldf_slp_mxl -
NEMO/branches/2020/dev_r13923_Tiling_Cleanup_MPI3_LoopFusion/src/OCE/LDF/ldftra.F90
r13906 r13963 692 692 zaeiw(ji,jj) = MIN( zzaei , paei0 ) ! Max value = paei0 693 693 END_2D 694 #if defined key_mpi3695 CALL lbc_lnk_nc_multi( 'ldftra', zaeiw(:,:), 'W', 1.0_wp ) ! lateral boundary condition696 #else697 694 CALL lbc_lnk( 'ldftra', zaeiw(:,:), 'W', 1.0_wp ) ! lateral boundary condition 698 #endif699 695 ! 700 696 DO_2D( 0, 0, 0, 0 ) !== aei at u- and v-points ==! … … 702 698 paeiv(ji,jj,1) = 0.5_wp * ( zaeiw(ji,jj) + zaeiw(ji ,jj+1) ) * vmask(ji,jj,1) 703 699 END_2D 704 #if defined key_mpi3705 CALL lbc_lnk_nc_multi( 'ldftra', paeiu(:,:,1), 'U', 1.0_wp , paeiv(:,:,1), 'V', 1.0_wp ) ! lateral boundary condition706 #else707 700 CALL lbc_lnk_multi( 'ldftra', paeiu(:,:,1), 'U', 1.0_wp , paeiv(:,:,1), 'V', 1.0_wp ) ! lateral boundary condition 708 #endif709 701 710 702 DO jk = 2, jpkm1 !== deeper values equal the surface one ==! -
NEMO/branches/2020/dev_r13923_Tiling_Cleanup_MPI3_LoopFusion/src/OCE/SBC/cpl_oasis3.F90
r13906 r13963 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_mpi3421 CALL lbc_lnk_nc_multi( 'cpl_oasis3', pdata(:,:,jc), srcv(kid)%clgrid, srcv(kid)%nsgn )422 #else423 420 CALL lbc_lnk( 'cpl_oasis3', pdata(:,:,jc), srcv(kid)%clgrid, srcv(kid)%nsgn ) 424 #endif425 421 ENDIF 426 422 -
NEMO/branches/2020/dev_r13923_Tiling_Cleanup_MPI3_LoopFusion/src/OCE/SBC/fldread.F90
r13906 r13963 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_mpi3375 CALL lbc_lnk_nc_multi( 'fldread', dta_alias(:,:,:), sdjf%cltype, sdjf%zsgn, kfillmode = jpfillcopy )376 #else377 374 CALL lbc_lnk( 'fldread', dta_alias(:,:,:), sdjf%cltype, sdjf%zsgn, kfillmode = jpfillcopy ) 378 #endif379 375 ELSE ! default case 380 376 ! C1D case: If product of spatial dimensions == ipk, then x,y are of … … 387 383 IF( lk_c1d .AND. lmoor ) THEN 388 384 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_mpi3390 CALL lbc_lnk_nc_multi( 'fldread', dta_alias(:,:,:), 'T', 1., kfillmode = jpfillcopy )391 #else392 385 CALL lbc_lnk( 'fldread', dta_alias(:,:,:), 'T', 1., kfillmode = jpfillcopy ) 393 #endif394 386 ELSE 395 387 CALL iom_get( sdjf%num, jpdom_global, sdjf%clvar, dta_alias(:,:,:), sdjf%nrec(1,iaa), & -
NEMO/branches/2020/dev_r13923_Tiling_Cleanup_MPI3_LoopFusion/src/OCE/SBC/geo2ocean.F90
r13906 r13963 272 272 ! =========================== ! 273 273 ! ! lateral boundary cond.: T-, U-, V-, F-pts, sgn 274 #if defined key_mpi3275 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 #else278 274 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, & 279 275 & gcosv, 'V', -1.0_wp, gsinv, 'V', -1.0_wp, gcosf, 'F', -1.0_wp, gsinf, 'F', -1.0_wp ) 280 #endif281 276 ! 282 277 END SUBROUTINE angle -
NEMO/branches/2020/dev_r13923_Tiling_Cleanup_MPI3_LoopFusion/src/OCE/SBC/sbc_oce.F90
r13906 r13963 224 224 wndm(ji,jj) = SQRT ( ztau * zcoef ) * tmask(ji,jj,1) 225 225 END_2D 226 #if defined key_mpi3227 CALL lbc_lnk_nc_multi( 'sbc_oce', wndm(:,:) , 'T', 1.0_wp )228 #else229 226 CALL lbc_lnk( 'sbc_oce', wndm(:,:) , 'T', 1.0_wp ) 230 #endif231 227 ! 232 228 END SUBROUTINE sbc_tau2wnd -
NEMO/branches/2020/dev_r13923_Tiling_Cleanup_MPI3_LoopFusion/src/OCE/SBC/sbcblk.F90
r13906 r13963 757 757 758 758 IF( ln_crt_fbk ) THEN 759 #if defined key_mpi3760 CALL lbc_lnk_nc_multi( 'sbcblk', utau, 'U', -1., vtau, 'V', -1., taum, 'T', -1. )761 #else762 759 CALL lbc_lnk_multi( 'sbcblk', utau, 'U', -1., vtau, 'V', -1., taum, 'T', -1. ) 763 #endif764 760 ELSE 765 #if defined key_mpi3766 CALL lbc_lnk_nc_multi( 'sbcblk', utau, 'U', -1., vtau, 'V', -1. )767 #else768 761 CALL lbc_lnk_multi( 'sbcblk', utau, 'U', -1., vtau, 'V', -1. ) 769 #endif770 762 ENDIF 771 763 … … 989 981 pvtaui(ji,jj) = zztmp2 * ( pvtaui(ji,jj) + pvtaui(ji ,jj+1) ) 990 982 END_2D 991 #if defined key_mpi3992 CALL lbc_lnk_nc_multi( 'sbcblk', putaui, 'U', -1._wp, pvtaui, 'V', -1._wp )993 #else994 983 CALL lbc_lnk_multi( 'sbcblk', putaui, 'U', -1._wp, pvtaui, 'V', -1._wp ) 995 #endif996 984 ! 997 985 IF(sn_cfctl%l_prtctl) CALL prt_ctl( tab2d_1=putaui , clinfo1=' blk_ice: putaui : ' & … … 1471 1459 ! 1472 1460 END_2D 1473 #if defined key_mpi31474 CALL lbc_lnk_nc_multi( 'sbcblk', pcd, 'T', 1.0_wp, pch, 'T', 1.0_wp )1475 #else1476 1461 CALL lbc_lnk_multi( 'sbcblk', pcd, 'T', 1.0_wp, pch, 'T', 1.0_wp ) 1477 #endif1478 1462 ! 1479 1463 END SUBROUTINE Cdn10_Lupkes2015 -
NEMO/branches/2020/dev_r13923_Tiling_Cleanup_MPI3_LoopFusion/src/OCE/SBC/sbccpl.F90
r13906 r13963 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_mpi31202 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 #else1204 1201 CALL lbc_lnk_multi( 'sbccpl', frcv(jpr_otx1)%z3(:,:,1), 'U', -1.0_wp, frcv(jpr_oty1)%z3(:,:,1), 'V', -1.0_wp ) 1205 #endif1206 1202 ENDIF 1207 1203 llnewtx = .TRUE. … … 1228 1224 frcv(jpr_taum)%z3(ji,jj,1) = 0.5 * SQRT( zzx * zzx + zzy * zzy ) 1229 1225 END_2D 1230 #if defined key_mpi31231 CALL lbc_lnk_nc_multi( 'sbccpl', frcv(jpr_taum)%z3(:,:,1), 'T', 1.0_wp )1232 #else1233 1226 CALL lbc_lnk( 'sbccpl', frcv(jpr_taum)%z3(:,:,1), 'T', 1.0_wp ) 1234 #endif1235 1227 llnewtau = .TRUE. 1236 1228 ELSE … … 1601 1593 p_tauj(ji,jj) = zztmp2 * ( frcv(jpr_ity1)%z3(ji ,jj+1,1) + frcv(jpr_ity1)%z3(ji,jj,1) ) 1602 1594 END_2D 1603 #if defined key_mpi31604 CALL lbc_lnk_nc_multi( 'sbccpl', p_taui, 'U', -1., p_tauj, 'V', -1. )1605 #else1606 1595 CALL lbc_lnk_multi( 'sbccpl', p_taui, 'U', -1., p_tauj, 'V', -1. ) 1607 #endif1608 1596 END SELECT 1609 1597 … … 2495 2483 zity1(ji,jj) = 0.5 * ( v_ice(ji,jj ) + v_ice(ji ,jj-1 ) ) * fr_i(ji,jj) 2496 2484 END_2D 2497 #if defined key_mpi32498 CALL lbc_lnk_nc_multi( 'sbccpl', zitx1, 'T', -1.0_wp, zity1, 'T', -1.0_wp )2499 #else2500 2485 CALL lbc_lnk_multi( 'sbccpl', zitx1, 'T', -1.0_wp, zity1, 'T', -1.0_wp ) 2501 #endif2502 2486 CASE( 'mixed oce-ice' ) ! Ocean and Ice on C-grid ==> T 2503 2487 DO_2D( 0, 0, 0, 0 ) … … 2508 2492 END_2D 2509 2493 END SELECT 2510 #if defined key_mpi32511 CALL lbc_lnk_nc_multi( 'sbccpl', zotx1, ssnd(jps_ocx1)%clgrid, -1.0_wp, zoty1, ssnd(jps_ocy1)%clgrid, -1.0_wp )2512 #else2513 2494 CALL lbc_lnk_multi( 'sbccpl', zotx1, ssnd(jps_ocx1)%clgrid, -1.0_wp, zoty1, ssnd(jps_ocy1)%clgrid, -1.0_wp ) 2514 #endif2515 2495 ! 2516 2496 ENDIF … … 2580 2560 zity1(ji,jj) = 0.5 * ( v_ice(ji,jj ) + v_ice(ji ,jj-1 ) ) * fr_i(ji,jj) 2581 2561 END_2D 2582 #if defined key_mpi32583 CALL lbc_lnk_nc_multi( 'sbccpl', zitx1, 'T', -1.0_wp, zity1, 'T', -1.0_wp )2584 #else2585 2562 CALL lbc_lnk_multi( 'sbccpl', zitx1, 'T', -1.0_wp, zity1, 'T', -1.0_wp ) 2586 #endif2587 2563 CASE( 'mixed oce-ice' ) ! Ocean and Ice on C-grid ==> T 2588 2564 DO_2D( 0, 0, 0, 0 ) … … 2593 2569 END_2D 2594 2570 END SELECT 2595 #if defined key_mpi32596 CALL lbc_lnk_nc_multi( 'sbccpl', zotx1, ssnd(jps_ocxw)%clgrid, -1.0_wp, zoty1, ssnd(jps_ocyw)%clgrid, -1.0_wp )2597 #else2598 2571 CALL lbc_lnk_multi( 'sbccpl', zotx1, ssnd(jps_ocxw)%clgrid, -1.0_wp, zoty1, ssnd(jps_ocyw)%clgrid, -1.0_wp ) 2599 #endif2600 2572 ! 2601 2573 ! -
NEMO/branches/2020/dev_r13923_Tiling_Cleanup_MPI3_LoopFusion/src/OCE/SBC/sbcflx.F90
r13906 r13963 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_mpi3148 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 #else151 147 CALL lbc_lnk_multi( 'sbcflx', utau, 'U', -1._wp, vtau, 'V', -1._wp, & 152 148 & qns, 'T', 1._wp, emp , 'T', 1._wp, qsr, 'T', 1._wp ) !! sfx, 'T', 1._wp ) 153 #endif154 149 ! 155 150 IF( nitend-nit000 <= 100 .AND. lwp ) THEN ! control print (if less than 100 time-step asked) … … 177 172 END_2D 178 173 ! 179 #if defined key_mpi3180 CALL lbc_lnk_nc_multi( 'sbcflx', taum, 'T', 1._wp, wndm, 'T', 1._wp )181 #else182 174 CALL lbc_lnk_multi( 'sbcflx', taum, 'T', 1._wp, wndm, 'T', 1._wp ) 183 #endif184 175 ! 185 176 END SUBROUTINE sbc_flx -
NEMO/branches/2020/dev_r13923_Tiling_Cleanup_MPI3_LoopFusion/src/OCE/SBC/sbcfwb.F90
r13906 r13963 181 181 ! 182 182 !!gm ===>>>> lbc_lnk should be useless as all the computation is done over the whole domain ! 183 #if defined key_mpi3184 CALL lbc_lnk_nc_multi( 'sbcfwb', zerp_cor, 'T', 1.0_wp )185 #else186 183 CALL lbc_lnk( 'sbcfwb', zerp_cor, 'T', 1.0_wp ) 187 #endif188 184 ! 189 185 emp(:,:) = emp(:,:) + zerp_cor(:,:) -
NEMO/branches/2020/dev_r13923_Tiling_Cleanup_MPI3_LoopFusion/src/OCE/SBC/sbcice_cice.F90
r13906 r13963 222 222 END_2D 223 223 224 #if defined key_mpi3225 CALL lbc_lnk_nc_multi( 'sbcice_cice', fr_iu , 'U', 1.0_wp, fr_iv , 'V', 1.0_wp )226 #else227 224 CALL lbc_lnk_multi( 'sbcice_cice', fr_iu , 'U', 1.0_wp, fr_iv , 'V', 1.0_wp ) 228 #endif229 225 230 226 ! set the snow+ice mass … … 510 506 ss_iou(ji,jj) = 0.5 * ( ztmp1(ji,jj-1) + ztmp1(ji,jj) ) * umask(ji,jj,1) 511 507 END_2D 512 #if defined key_mpi3513 CALL lbc_lnk_nc_multi( 'sbcice_cice', ss_iou , 'U', -1.0_wp )514 #else515 508 CALL lbc_lnk( 'sbcice_cice', ss_iou , 'U', -1.0_wp ) 516 #endif517 509 518 510 ! y comp of ocean-ice stress … … 524 516 ss_iov(ji,jj) = 0.5 * ( ztmp1(ji-1,jj) + ztmp1(ji,jj) ) * vmask(ji,jj,1) 525 517 END_2D 526 #if defined key_mpi3527 CALL lbc_lnk_nc_multi( 'sbcice_cice', ss_iov , 'V', -1.0_wp )528 #else529 518 CALL lbc_lnk( 'sbcice_cice', ss_iov , 'V', -1.0_wp ) 530 #endif531 519 532 520 ! x and y comps of surface stress … … 581 569 fmmflx(:,:) = ztmp1(:,:) !!Joakim edit 582 570 583 #if defined key_mpi3584 CALL lbc_lnk_nc_multi( 'sbcice_cice', emp , 'T', 1.0_wp, sfx , 'T', 1.0_wp )585 #else586 571 CALL lbc_lnk_multi( 'sbcice_cice', emp , 'T', 1.0_wp, sfx , 'T', 1.0_wp ) 587 #endif588 572 589 573 ! Solar penetrative radiation and non solar surface heat flux … … 611 595 #endif 612 596 qsr(:,:)=qsr(:,:)+ztmp1(:,:) 613 #if defined key_mpi3614 CALL lbc_lnk_nc_multi( 'sbcice_cice', qsr , 'T', 1.0_wp )615 #else616 597 CALL lbc_lnk( 'sbcice_cice', qsr , 'T', 1.0_wp ) 617 #endif618 598 619 599 DO_2D( 1, 1, 1, 1 ) … … 628 608 qns(:,:)=qns(:,:)+nfrzmlt(:,:)+ztmp1(:,:) 629 609 630 #if defined key_mpi3631 CALL lbc_lnk_nc_multi( 'sbcice_cice', qns , 'T', 1.0_wp )632 #else633 610 CALL lbc_lnk( 'sbcice_cice', qns , 'T', 1.0_wp ) 634 #endif635 611 636 612 ! Prepare for the following CICE time-step … … 650 626 END_2D 651 627 652 #if defined key_mpi3653 CALL lbc_lnk_nc_multi( 'sbcice_cice', fr_iu , 'U', 1.0_wp, fr_iv , 'V', 1.0_wp )654 #else655 628 CALL lbc_lnk_multi( 'sbcice_cice', fr_iu , 'U', 1.0_wp, fr_iv , 'V', 1.0_wp ) 656 #endif657 629 658 630 ! set the snow+ice mass … … 876 848 ! A. Ensure all haloes are filled in NEMO field (pn) 877 849 878 #if defined key_mpi3879 CALL lbc_lnk_nc_multi( 'sbcice_cice', pn , cd_type, psgn )880 #else881 850 CALL lbc_lnk( 'sbcice_cice', pn , cd_type, psgn ) 882 #endif883 851 884 852 #if defined key_nemocice_decomp … … 1055 1023 ! D. Ensure all haloes are filled in pn 1056 1024 1057 #if defined key_mpi31058 CALL lbc_lnk_nc_multi( 'sbcice_cice', pn , cd_type, psgn )1059 #else1060 1025 CALL lbc_lnk( 'sbcice_cice', pn , cd_type, psgn ) 1061 #endif1062 1026 1063 1027 END SUBROUTINE cice2nemo -
NEMO/branches/2020/dev_r13923_Tiling_Cleanup_MPI3_LoopFusion/src/OCE/SBC/sbcmod.F90
r13906 r13963 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_mpi3467 IF( .NOT. ln_passive_mode ) CALL lbc_lnk_nc_multi( 'sbcmod', emp, 'T', 1.0_wp ) ! ensure restartability with icebergs468 #else469 466 IF( .NOT. ln_passive_mode ) CALL lbc_lnk( 'sbcmod', emp, 'T', 1.0_wp ) ! ensure restartability with icebergs 470 #endif471 467 ENDIF 472 468 -
NEMO/branches/2020/dev_r13923_Tiling_Cleanup_MPI3_LoopFusion/src/OCE/SBC/sbcwave.F90
r13906 r13963 199 199 ENDIF 200 200 201 #if defined key_mpi3202 CALL lbc_lnk_nc_multi( 'sbcwave', usd, 'U', -1.0_wp, vsd, 'V', -1.0_wp )203 #else204 201 CALL lbc_lnk_multi( 'sbcwave', usd, 'U', -1.0_wp, vsd, 'V', -1.0_wp ) 205 #endif206 202 207 203 ! … … 216 212 END_3D 217 213 ! 218 #if defined key_mpi3219 CALL lbc_lnk_nc_multi( 'sbcwave', ze3divh, 'T', 1.0_wp )220 #else221 214 CALL lbc_lnk( 'sbcwave', ze3divh, 'T', 1.0_wp ) 222 #endif223 215 ! 224 216 IF( ln_linssh ) THEN ; ik = 1 ! none zero velocity through the sea surface … … 279 271 taum(ji,jj) = SQRT( tauw_x(ji,jj)*tauw_x(ji,jj) + tauw_y(ji,jj)*tauw_y(ji,jj) ) 280 272 END_2D 281 #if defined key_mpi3282 CALL lbc_lnk_nc_multi( 'sbcwave', utau(:,:), 'U', -1.0_wp , vtau(:,:), 'V', -1.0_wp , taum(:,:) , 'T', -1.0_wp )283 #else284 273 CALL lbc_lnk_multi( 'sbcwave', utau(:,:), 'U', -1.0_wp , vtau(:,:), 'V', -1.0_wp , taum(:,:) , 'T', -1.0_wp ) 285 #endif286 274 ENDIF 287 275 ! -
NEMO/branches/2020/dev_r13923_Tiling_Cleanup_MPI3_LoopFusion/src/OCE/STO/stopar.F90
r13906 r13963 174 174 ! Apply horizontal Laplacian filter to w 175 175 DO jflt = 1, sto2d_flt(jsto) 176 #if defined key_mpi3177 CALL lbc_lnk_nc_multi( 'stopar', sto2d(:,:,jsto), sto2d_typ(jsto), sto2d_sgn(jsto) )178 #else179 176 CALL lbc_lnk( 'stopar', sto2d(:,:,jsto), sto2d_typ(jsto), sto2d_sgn(jsto) ) 180 #endif181 177 CALL sto_par_flt( sto2d(:,:,jsto) ) 182 178 END DO … … 201 197 202 198 ! Lateral boundary conditions on sto2d 203 #if defined key_mpi3204 CALL lbc_lnk_nc_multi( 'stopar', sto2d(:,:,jsto), sto2d_typ(jsto), sto2d_sgn(jsto) )205 #else206 199 CALL lbc_lnk( 'stopar', sto2d(:,:,jsto), sto2d_typ(jsto), sto2d_sgn(jsto) ) 207 #endif208 200 END DO 209 201 ! … … 220 212 ! Apply horizontal Laplacian filter to w 221 213 DO jflt = 1, sto3d_flt(jsto) 222 #if defined key_mpi3223 CALL lbc_lnk_nc_multi( 'stopar', sto3d(:,:,jk,jsto), sto3d_typ(jsto), sto3d_sgn(jsto) )224 #else225 214 CALL lbc_lnk( 'stopar', sto3d(:,:,jk,jsto), sto3d_typ(jsto), sto3d_sgn(jsto) ) 226 #endif227 215 CALL sto_par_flt( sto3d(:,:,jk,jsto) ) 228 216 END DO … … 247 235 END DO 248 236 ! Lateral boundary conditions on sto3d 249 #if defined key_mpi3250 CALL lbc_lnk_nc_multi( 'stopar', sto3d(:,:,:,jsto), sto3d_typ(jsto), sto3d_sgn(jsto) )251 #else252 237 CALL lbc_lnk( 'stopar', sto3d(:,:,:,jsto), sto3d_typ(jsto), sto3d_sgn(jsto) ) 253 #endif254 238 END DO 255 239 ! … … 658 642 ! Apply horizontal Laplacian filter to w 659 643 DO jflt = 1, sto2d_flt(jsto) 660 #if defined key_mpi3661 CALL lbc_lnk_nc_multi( 'stopar', sto2d(:,:,jsto), sto2d_typ(jsto), sto2d_sgn(jsto) )662 #else663 644 CALL lbc_lnk( 'stopar', sto2d(:,:,jsto), sto2d_typ(jsto), sto2d_sgn(jsto) ) 664 #endif665 645 CALL sto_par_flt( sto2d(:,:,jsto) ) 666 646 END DO … … 679 659 ! Apply horizontal Laplacian filter to w 680 660 DO jflt = 1, sto3d_flt(jsto) 681 #if defined key_mpi3682 CALL lbc_lnk_nc_multi( 'stopar', sto3d(:,:,jk,jsto), sto3d_typ(jsto), sto3d_sgn(jsto) )683 #else684 661 CALL lbc_lnk( 'stopar', sto3d(:,:,jk,jsto), sto3d_typ(jsto), sto3d_sgn(jsto) ) 685 #endif686 662 CALL sto_par_flt( sto3d(:,:,jk,jsto) ) 687 663 END DO -
NEMO/branches/2020/dev_r13923_Tiling_Cleanup_MPI3_LoopFusion/src/OCE/STO/stopts.F90
r13906 r13963 54 54 55 55 DO jts = 1, jpts 56 #if defined key_mpi357 CALL lbc_lnk_nc_multi( 'stopts', pts(:,:,:,jts), 'T' , 1._wp )58 #else59 56 CALL lbc_lnk( 'stopts', pts(:,:,:,jts), 'T' , 1._wp ) 60 #endif61 57 ENDDO 62 58 … … 123 119 DO jdof = 1, nn_sto_eos 124 120 DO jts = 1, jpts 125 #if defined key_mpi3126 CALL lbc_lnk_nc_multi( 'stopts', pts_ran(:,:,:,jts,jdof), 'T' , 1._wp )127 #else128 121 CALL lbc_lnk( 'stopts', pts_ran(:,:,:,jts,jdof), 'T' , 1._wp ) 129 #endif130 122 END DO 131 123 END DO -
NEMO/branches/2020/dev_r13923_Tiling_Cleanup_MPI3_LoopFusion/src/OCE/TRA/traadv.F90
r13946 r13963 179 179 ! 180 180 CASE ( np_CEN ) ! Centered scheme : 2nd / 4th order 181 #if defined key_mpi3182 IF (nn_hls.EQ.2) CALL lbc_lnk_nc_multi( 'traadv', pts(:,:,:,:,Kmm), 'T', 1. )183 #else184 181 IF (nn_hls.EQ.2) CALL lbc_lnk( 'traadv', pts(:,:,:,:,Kmm), 'T', 1. ) 185 #endif186 182 CALL tra_adv_cen ( kt, nit000, 'TRA', zuu, zvv, zww, Kmm, pts, jpts, Krhs, nn_cen_h, nn_cen_v ) 187 183 CASE ( np_FCT ) ! FCT scheme : 2nd / 4th order 188 184 IF (nn_hls.EQ.2) THEN 189 #if defined key_mpi3190 CALL lbc_lnk_nc_multi( 'traadv', pts(:,:,:,:,Kbb), 'T', 1., pts(:,:,:,:,Kmm), 'T', 1.)191 CALL lbc_lnk_nc_multi( 'traadv', zuu(:,:,:), 'U', -1., zvv(:,:,:), 'V', -1., zww(:,:,:), 'W', 1.)192 #else193 185 CALL lbc_lnk_multi( 'traadv', pts(:,:,:,:,Kbb), 'T', 1., pts(:,:,:,:,Kmm), 'T', 1.) 194 186 CALL lbc_lnk_multi( 'traadv', zuu(:,:,:), 'U', -1., zvv(:,:,:), 'V', -1., zww(:,:,:), 'W', 1.) 195 #endif196 187 #if defined key_loop_fusion 197 188 CALL tra_adv_fct_lf ( kt, nit000, 'TRA', rDt, zuu, zvv, zww, Kbb, Kmm, pts, jpts, Krhs, nn_fct_h, nn_fct_v ) … … 205 196 ! NOTE: [tiling-comms-merge] I added this lbc_lnk as it did not validate against the trunk when using ln_zco 206 197 IF (nn_hls.EQ.2) THEN 207 #if defined key_mpi3208 CALL lbc_lnk_nc_multi( 'traadv', pts(:,:,:,:,Kbb), 'T', 1.)209 #else210 198 CALL lbc_lnk( 'traadv', pts(:,:,:,:,Kbb), 'T', 1.) 211 #endif212 199 #if defined key_loop_fusion 213 200 CALL tra_adv_mus_lf ( kt, nit000, 'TRA', rDt, zuu, zvv, zww, Kbb, Kmm, pts, jpts, Krhs, ln_mus_ups ) … … 219 206 END IF 220 207 CASE ( np_UBS ) ! UBS 221 #if defined key_mpi3222 IF (nn_hls.EQ.2) CALL lbc_lnk_nc_multi( 'traadv', pts(:,:,:,:,Kbb), 'T', 1.)223 #else224 208 IF (nn_hls.EQ.2) CALL lbc_lnk( 'traadv', pts(:,:,:,:,Kbb), 'T', 1.) 225 #endif226 209 CALL tra_adv_ubs ( kt, nit000, 'TRA', rDt, zuu, zvv, zww, Kbb, Kmm, pts, jpts, Krhs, nn_ubs_v ) 227 210 CASE ( np_QCK ) ! QUICKEST 228 211 IF (nn_hls.EQ.2) THEN 229 #if defined key_mpi3230 CALL lbc_lnk_nc_multi( 'traadv', zuu(:,:,:), 'U', -1., zvv(:,:,:), 'V', -1.)231 CALL lbc_lnk_nc_multi( 'traadv', pts(:,:,:,:,Kbb), 'T', 1.)232 #else233 212 CALL lbc_lnk_multi( 'traadv', zuu(:,:,:), 'U', -1., zvv(:,:,:), 'V', -1.) 234 213 CALL lbc_lnk( 'traadv', pts(:,:,:,:,Kbb), 'T', 1.) 235 #endif236 214 END IF 237 215 CALL tra_adv_qck ( kt, nit000, 'TRA', rDt, zuu, zvv, zww, Kbb, Kmm, pts, jpts, Krhs ) -
NEMO/branches/2020/dev_r13923_Tiling_Cleanup_MPI3_LoopFusion/src/OCE/TRA/traadv_cen.F90
r13906 r13963 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_mpi3122 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 #else124 121 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 #endif126 122 ! 127 123 DO_3D( nn_hls-1, 0, nn_hls-1, 0, 1, jpkm1 ) ! Horizontal advective fluxes … … 135 131 zwy(ji,jj,jk) = 0.5_wp * pV(ji,jj,jk) * zC4t_v 136 132 END_3D 137 #if defined key_mpi3138 IF (nn_hls.EQ.1) CALL lbc_lnk_nc_multi( 'traadv_cen', zwx, 'U', -1. , zwy, 'V', -1. )139 #else140 133 IF (nn_hls.EQ.1) CALL lbc_lnk_multi( 'traadv_cen', zwx, 'U', -1. , zwy, 'V', -1. ) 141 #endif142 134 ! 143 135 CASE DEFAULT -
NEMO/branches/2020/dev_r13923_Tiling_Cleanup_MPI3_LoopFusion/src/OCE/TRA/traadv_fct.F90
r13946 r13963 240 240 END_2D 241 241 END DO 242 #if defined key_mpi3243 CALL lbc_lnk_nc_multi( 'traadv_fct', zltu, 'T', 1.0_wp , zltv, 'T', 1.0_wp, ncsten=.FALSE. ) ! Lateral boundary cond. (unchanged sgn)244 #else245 242 CALL lbc_lnk_multi( 'traadv_fct', zltu, 'T', 1.0_wp , zltv, 'T', 1.0_wp ) ! Lateral boundary cond. (unchanged sgn) 246 #endif247 243 ! 248 244 DO_3D( 1, 0, 1, 0, 1, jpkm1 ) … … 253 249 zwy(ji,jj,jk) = 0.5_wp * pV(ji,jj,jk) * ( zC2t_v + zltv(ji,jj,jk) - zltv(ji,jj+1,jk) ) - zwy(ji,jj,jk) 254 250 END_3D 255 #if defined key_mpi3256 IF (nn_hls.EQ.2) CALL lbc_lnk_nc_multi( 'traadv_fct', zwx, 'U', -1.0_wp, zwy, 'V', -1.0_wp ) ! Lateral boundary cond. (unchanged sgn)257 #else258 251 IF (nn_hls.EQ.2) CALL lbc_lnk_multi( 'traadv_fct', zwx, 'U', -1.0_wp, zwy, 'V', -1.0_wp ) ! Lateral boundary cond. (unchanged sgn) 259 #endif260 252 ! 261 253 CASE( 41 ) !- 4th order centered ==>> !!gm coding attempt need to be tested … … 266 258 ztv(ji,jj,jk) = ( pt(ji ,jj+1,jk,jn,Kmm) - pt(ji,jj,jk,jn,Kmm) ) * vmask(ji,jj,jk) 267 259 END_3D 268 #if defined key_mpi3269 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)270 #else271 260 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) 272 #endif273 261 ! 274 262 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) … … 284 272 zwy(ji,jj,jk) = 0.5_wp * pV(ji,jj,jk) * zC4t_v - zwy(ji,jj,jk) 285 273 END_3D 286 #if defined key_mpi3287 IF (nn_hls.EQ.2) CALL lbc_lnk_nc_multi( 'traadv_fct', zwx, 'U', -1.0_wp , zwy, 'V', -1.0_wp ) ! Lateral boundary cond. (unchanged sgn)288 #else289 274 IF (nn_hls.EQ.2) CALL lbc_lnk_multi( 'traadv_fct', zwx, 'U', -1.0_wp , zwy, 'V', -1.0_wp ) ! Lateral boundary cond. (unchanged sgn) 290 #endif291 275 ! 292 276 END SELECT … … 312 296 ! 313 297 IF (nn_hls.EQ.1) THEN 314 #if defined key_mpi3315 CALL lbc_lnk_nc_multi( 'traadv_fct', zwi, 'T', 1.0_wp, zwx, 'U', -1.0_wp , zwy, 'V', -1.0_wp, zwz, 'T', 1.0_wp )316 #else317 298 CALL lbc_lnk_multi( 'traadv_fct', zwi, 'T', 1.0_wp, zwx, 'U', -1.0_wp , zwy, 'V', -1.0_wp, zwz, 'T', 1.0_wp ) 318 #endif319 299 ELSE 320 #if defined key_mpi3321 CALL lbc_lnk_nc_multi( 'traadv_fct', zwi, 'T', 1.0_wp)322 #else323 300 CALL lbc_lnk( 'traadv_fct', zwi, 'T', 1.0_wp) 324 #endif325 301 END IF 326 302 ! … … 487 463 END_2D 488 464 END DO 489 #if defined key_mpi3490 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)491 #else492 465 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) 493 #endif494 466 495 467 ! 3. monotonic flux in the i & j direction (paa & pbb) -
NEMO/branches/2020/dev_r13923_Tiling_Cleanup_MPI3_LoopFusion/src/OCE/TRA/traadv_mus.F90
r13906 r13963 140 140 END_3D 141 141 ! lateral boundary conditions (changed sign) 142 #if defined key_mpi3143 IF ( nn_hls.EQ.1 ) CALL lbc_lnk_nc_multi( 'traadv_mus', zwx, 'U', -1.0_wp , zwy, 'V', -1.0_wp )144 #else145 142 IF ( nn_hls.EQ.1 ) CALL lbc_lnk_multi( 'traadv_mus', zwx, 'U', -1.0_wp , zwy, 'V', -1.0_wp ) 146 #endif147 143 ! !-- Slopes of tracer 148 144 zslpx(:,:,jpk) = 0._wp ! bottom values … … 180 176 zwy(ji,jj,jk) = pV(ji,jj,jk) * ( zalpha * zzwx + (1.-zalpha) * zzwy ) 181 177 END_3D 182 #if defined key_mpi3183 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 #else185 178 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 #endif187 179 ! 188 180 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) !-- Tracer advective trend -
NEMO/branches/2020/dev_r13923_Tiling_Cleanup_MPI3_LoopFusion/src/OCE/TRA/traadv_qck.F90
r13906 r13963 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_mpi3153 IF (nn_hls.EQ.1) CALL lbc_lnk_nc_multi( 'traadv_qck', zfc(:,:,:), 'T', 1.0_wp , zfd(:,:,:), 'T', 1.0_wp ) ! Lateral boundary conditions154 #else155 152 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 #endif157 153 158 154 ! … … 172 168 END_3D 173 169 !--- Lateral boundary conditions 174 #if defined key_mpi3175 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 #else177 170 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 #endif179 171 180 172 !--- QUICKEST scheme … … 185 177 zfu(ji,jj,jk) = tmask(ji-1,jj,jk) + tmask(ji,jj,jk) + tmask(ji+1,jj,jk) - 2. 186 178 END_3D 187 #if defined key_mpi3188 IF (nn_hls.EQ.1) CALL lbc_lnk_nc_multi( 'traadv_qck', zfu(:,:,:), 'T', 1.0_wp ) ! Lateral boundary conditions189 #else190 179 IF (nn_hls.EQ.1) CALL lbc_lnk( 'traadv_qck', zfu(:,:,:), 'T', 1.0_wp ) ! Lateral boundary conditions 191 #endif192 180 193 181 ! … … 252 240 END_2D 253 241 END DO 254 #if defined key_mpi3255 IF (nn_hls.EQ.1) CALL lbc_lnk_nc_multi( 'traadv_qck', zfc(:,:,:), 'T', 1.0_wp , zfd(:,:,:), 'T', 1.0_wp ) ! Lateral boundary conditions256 #else257 242 IF (nn_hls.EQ.1) CALL lbc_lnk_multi( 'traadv_qck', zfc(:,:,:), 'T', 1.0_wp , zfd(:,:,:), 'T', 1.0_wp ) ! Lateral boundary conditions 258 #endif259 243 260 244 ! … … 276 260 277 261 !--- Lateral boundary conditions 278 #if defined key_mpi3279 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 #else281 262 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 #endif283 263 284 264 !--- QUICKEST scheme … … 289 269 zfu(ji,jj,jk) = tmask(ji,jj-1,jk) + tmask(ji,jj,jk) + tmask(ji,jj+1,jk) - 2. 290 270 END_3D 291 #if defined key_mpi3292 IF (nn_hls.EQ.1) CALL lbc_lnk_nc_multi( 'traadv_qck', zfu(:,:,:), 'T', 1.0_wp ) !--- Lateral boundary conditions293 #else294 271 IF (nn_hls.EQ.1) CALL lbc_lnk( 'traadv_qck', zfu(:,:,:), 'T', 1.0_wp ) !--- Lateral boundary conditions 295 #endif296 272 ! 297 273 ! Tracer flux on the x-direction -
NEMO/branches/2020/dev_r13923_Tiling_Cleanup_MPI3_LoopFusion/src/OCE/TRA/traadv_ubs.F90
r13906 r13963 140 140 ! 141 141 END DO 142 #if defined key_mpi3143 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 #else145 142 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 #endif147 143 ! 148 144 DO_3D( 1, 0, 1, 0, 1, jpkm1 ) !== Horizontal advective fluxes ==! (UBS) -
NEMO/branches/2020/dev_r13923_Tiling_Cleanup_MPI3_LoopFusion/src/OCE/TRA/traatf.F90
r13923 r13963 110 110 #endif 111 111 ! ! local domain boundaries (T-point, unchanged sign) 112 #if defined key_mpi3113 CALL lbc_lnk_nc_multi( 'traatf', pts(:,:,:,jp_tem,Kaa), 'T', 1.0_wp, pts(:,:,:,jp_sal,Kaa), 'T', 1.0_wp )114 #else115 112 CALL lbc_lnk_multi( 'traatf', pts(:,:,:,jp_tem,Kaa), 'T', 1.0_wp, pts(:,:,:,jp_sal,Kaa), 'T', 1.0_wp ) 116 #endif117 113 ! 118 114 IF( ln_bdy ) CALL bdy_tra( kt, Kbb, pts, Kaa ) ! BDY open boundaries … … 160 156 ENDIF 161 157 ! 162 #if defined key_mpi3163 CALL lbc_lnk_nc_multi( 'traatf', pts(:,:,:,jp_tem,Kmm) , 'T', 1.0_wp, pts(:,:,:,jp_sal,Kmm) , 'T', 1.0_wp )164 #else165 158 CALL lbc_lnk_multi( 'traatf', pts(:,:,:,jp_tem,Kmm) , 'T', 1.0_wp, pts(:,:,:,jp_sal,Kmm) , 'T', 1.0_wp ) 166 #endif167 159 168 160 ENDIF -
NEMO/branches/2020/dev_r13923_Tiling_Cleanup_MPI3_LoopFusion/src/OCE/TRA/traatf_qco.F90
r13923 r13963 149 149 ENDIF 150 150 ! 151 #if defined key_mpi3152 CALL lbc_lnk_nc_multi( 'traatfqco', pts(:,:,:,jp_tem,Kmm) , 'T', 1., pts(:,:,:,jp_sal,Kmm) , 'T', 1. )153 #else154 151 CALL lbc_lnk_multi( 'traatfqco', pts(:,:,:,jp_tem,Kmm) , 'T', 1., pts(:,:,:,jp_sal,Kmm) , 'T', 1. ) 155 #endif156 152 157 153 ENDIF -
NEMO/branches/2020/dev_r13923_Tiling_Cleanup_MPI3_LoopFusion/src/OCE/TRA/trabbl.F90
r13906 r13963 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_mpi3145 CALL lbc_lnk_nc_multi( 'trabbl', utr_bbl, 'U', 1.0_wp , vtr_bbl, 'V', 1.0_wp )146 #else147 144 CALL lbc_lnk_multi( 'trabbl', utr_bbl, 'U', 1.0_wp , vtr_bbl, 'V', 1.0_wp ) 148 #endif149 145 CALL iom_put( "uoce_bbl", utr_bbl ) ! bbl i-transport 150 146 CALL iom_put( "voce_bbl", vtr_bbl ) ! bbl j-transport … … 528 524 ! converte into REAL to use lbc_lnk ; impose a min value of 1 as a zero can be set in lbclnk 529 525 zmbku(:,:) = REAL( mbku_d(:,:), wp ) ; zmbkv(:,:) = REAL( mbkv_d(:,:), wp ) 530 #if defined key_mpi3531 CALL lbc_lnk_nc_multi( 'trabbl', zmbku,'U',1.0_wp, zmbkv,'V',1.0_wp)532 #else533 526 CALL lbc_lnk_multi( 'trabbl', zmbku,'U',1.0_wp, zmbkv,'V',1.0_wp) 534 #endif535 527 mbku_d(:,:) = MAX( INT( zmbku(:,:) ), 1 ) ; mbkv_d(:,:) = MAX( NINT( zmbkv(:,:) ), 1 ) 536 528 ! … … 551 543 e3v_bbl_0(ji,jj) = MIN( e3v_0(ji,jj,mbkt(ji ,jj+1)), e3v_0(ji,jj,mbkt(ji,jj)) ) 552 544 END_2D 553 #if defined key_mpi3554 CALL lbc_lnk_nc_multi( 'trabbl', e3u_bbl_0, 'U', 1.0_wp , e3v_bbl_0, 'V', 1.0_wp ) ! lateral boundary conditions555 #else556 545 CALL lbc_lnk_multi( 'trabbl', e3u_bbl_0, 'U', 1.0_wp , e3v_bbl_0, 'V', 1.0_wp ) ! lateral boundary conditions 557 #endif558 546 ! 559 547 ! !* masked diffusive flux coefficients -
NEMO/branches/2020/dev_r13923_Tiling_Cleanup_MPI3_LoopFusion/src/OCE/TRA/traldf.F90
r13946 r13963 93 93 CASE ( np_blp , np_blp_i , np_blp_it ) ! bilaplacian: iso-level & iso-neutral operators 94 94 ! NOTE: [tiling-comms-merge] This lbc_lnk is still needed in the zco case, because zps_hde is not called in step 95 #if defined key_mpi396 IF(nn_hls.EQ.2) CALL lbc_lnk_nc_multi( 'tra_ldf', pts(:,:,:,:,Kbb), 'T',1.)97 #else98 95 IF(nn_hls.EQ.2) CALL lbc_lnk( 'tra_ldf', pts(:,:,:,:,Kbb), 'T',1.) 99 #endif100 96 CALL tra_ldf_blp ( kt, Kmm, nit000,'TRA', ahtu, ahtv, gtsu, gtsv, gtui, gtvi, pts(:,:,:,:,Kbb), pts(:,:,:,:,Krhs), jpts, nldf_tra ) 101 97 END SELECT -
NEMO/branches/2020/dev_r13923_Tiling_Cleanup_MPI3_LoopFusion/src/OCE/TRA/traldf_lap_blp.F90
r13906 r13963 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_mpi3240 CALL lbc_lnk_nc_multi( 'traldf_lap_blp', zlap(:,:,:,:) , 'T', 1.0_wp ) ! Lateral boundary conditions (unchanged sign)241 #else242 239 CALL lbc_lnk( 'traldf_lap_blp', zlap(:,:,:,:) , 'T', 1.0_wp ) ! Lateral boundary conditions (unchanged sign) 243 #endif244 240 ! ! Partial top/bottom cell: GRADh( zlap ) 245 241 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_r13923_Tiling_Cleanup_MPI3_LoopFusion/src/OCE/TRA/tramle.F90
r13906 r13963 307 307 rfv(ji,jj) = SQRT( zfv * zfv + z1_t2 ) 308 308 END_2D 309 #if defined key_mpi3310 IF (nn_hls.EQ.1) CALL lbc_lnk_nc_multi( 'tramle', rfu, 'U', 1.0_wp , rfv, 'V', 1.0_wp )311 #else312 309 IF (nn_hls.EQ.1) CALL lbc_lnk_multi( 'tramle', rfu, 'U', 1.0_wp , rfv, 'V', 1.0_wp ) 313 #endif314 310 ! 315 311 ELSEIF( nn_mle == 1 ) THEN ! MLE array allocation & initialisation -
NEMO/branches/2020/dev_r13923_Tiling_Cleanup_MPI3_LoopFusion/src/OCE/TRA/trazdf.F90
r13906 r13963 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_mpi3101 CALL lbc_lnk_nc_multi( 'trazdf', ztrdt, 'T', 1.0_wp , ztrds, 'T', 1.0_wp )102 #else103 100 CALL lbc_lnk_multi( 'trazdf', ztrdt, 'T', 1.0_wp , ztrds, 'T', 1.0_wp ) 104 #endif105 101 !!gm 106 102 CALL trd_tra( kt, Kmm, Krhs, 'TRA', jp_tem, jptra_zdf, ztrdt ) -
NEMO/branches/2020/dev_r13923_Tiling_Cleanup_MPI3_LoopFusion/src/OCE/TRA/zpshde.F90
r13946 r13963 126 126 ! NOTE: [tiling-comms-merge] Some lbc_lnks in tra_adv and tra_ldf can be taken out in the zps case, because this lbc_lnk is called when zps_hde is called in the stp routine. In the zco case they are still needed. 127 127 IF (nn_hls.EQ.2) THEN 128 #if defined key_mpi3129 CALL lbc_lnk_nc_multi( 'zpshde', pta, 'T', 1.0_wp)130 #else131 128 CALL lbc_lnk( 'zpshde', pta, 'T', 1.0_wp) 132 #endif133 #if defined key_mpi3134 IF(PRESENT(prd)) CALL lbc_lnk_nc_multi( 'zpshde', prd, 'T', 1.0_wp)135 #else136 129 IF(PRESENT(prd)) CALL lbc_lnk( 'zpshde', prd, 'T', 1.0_wp) 137 #endif138 130 END IF 139 131 ! … … 182 174 END DO 183 175 ! 184 #if defined key_mpi3185 IF (nn_hls.EQ.1) CALL lbc_lnk_nc_multi( 'zpshde', pgtu(:,:,:), 'U', -1.0_wp , pgtv(:,:,:), 'V', -1.0_wp ) ! Lateral boundary cond.186 #else187 176 IF (nn_hls.EQ.1) CALL lbc_lnk_multi( 'zpshde', pgtu(:,:,:), 'U', -1.0_wp , pgtv(:,:,:), 'V', -1.0_wp ) ! Lateral boundary cond. 188 #endif189 177 ! 190 178 IF( PRESENT( prd ) ) THEN !== horizontal derivative of density anomalies (rd) ==! (optional part) … … 219 207 ENDIF 220 208 END_2D 221 #if defined key_mpi3222 IF (nn_hls.EQ.1) CALL lbc_lnk_nc_multi( 'zpshde', pgru , 'U', -1.0_wp , pgrv , 'V', -1.0_wp ) ! Lateral boundary conditions223 #else224 209 IF (nn_hls.EQ.1) CALL lbc_lnk_multi( 'zpshde', pgru , 'U', -1.0_wp , pgrv , 'V', -1.0_wp ) ! Lateral boundary conditions 225 #endif226 210 ! 227 211 END IF … … 325 309 ! 326 310 IF (nn_hls.EQ.2) THEN 327 #if defined key_mpi3328 CALL lbc_lnk_nc_multi( 'zpshde', pta, 'T', 1.0_wp)329 #else330 311 CALL lbc_lnk( 'zpshde', pta, 'T', 1.0_wp) 331 #endif332 #if defined key_mpi3333 IF (PRESENT(prd)) CALL lbc_lnk_nc_multi( 'zpshde', prd, 'T', 1.0_wp)334 #else335 312 IF (PRESENT(prd)) CALL lbc_lnk( 'zpshde', prd, 'T', 1.0_wp) 336 #endif337 313 END IF 338 314 … … 384 360 END DO 385 361 ! 386 #if defined key_mpi3387 IF (nn_hls.EQ.1) CALL lbc_lnk_nc_multi( 'zpshde', pgtu(:,:,:), 'U', -1.0_wp , pgtv(:,:,:), 'V', -1.0_wp ) ! Lateral boundary cond.388 #else389 362 IF (nn_hls.EQ.1) CALL lbc_lnk_multi( 'zpshde', pgtu(:,:,:), 'U', -1.0_wp , pgtv(:,:,:), 'V', -1.0_wp ) ! Lateral boundary cond. 390 #endif391 363 392 364 ! horizontal derivative of density anomalies (rd) … … 430 402 END_2D 431 403 432 #if defined key_mpi3433 IF (nn_hls.EQ.1) CALL lbc_lnk_nc_multi( 'zpshde', pgru , 'U', -1.0_wp , pgrv , 'V', -1.0_wp ) ! Lateral boundary conditions434 #else435 404 IF (nn_hls.EQ.1) CALL lbc_lnk_multi( 'zpshde', pgru , 'U', -1.0_wp , pgrv , 'V', -1.0_wp ) ! Lateral boundary conditions 436 #endif437 405 ! 438 406 END IF … … 485 453 ! 486 454 END DO 487 #if defined key_mpi3488 IF (nn_hls.EQ.1) CALL lbc_lnk_nc_multi( 'zpshde', pgtui(:,:,:), 'U', -1.0_wp , pgtvi(:,:,:), 'V', -1.0_wp ) ! Lateral boundary cond.489 #else490 455 IF (nn_hls.EQ.1) CALL lbc_lnk_multi( 'zpshde', pgtui(:,:,:), 'U', -1.0_wp , pgtvi(:,:,:), 'V', -1.0_wp ) ! Lateral boundary cond. 491 #endif492 456 493 457 IF( PRESENT( prd ) ) THEN !== horizontal derivative of density anomalies (rd) ==! (optional part) … … 528 492 529 493 END_2D 530 #if defined key_mpi3531 IF (nn_hls.EQ.1) CALL lbc_lnk_nc_multi( 'zpshde', pgrui, 'U', -1.0_wp , pgrvi, 'V', -1.0_wp ) ! Lateral boundary conditions532 #else533 494 IF (nn_hls.EQ.1) CALL lbc_lnk_multi( 'zpshde', pgrui, 'U', -1.0_wp , pgrvi, 'V', -1.0_wp ) ! Lateral boundary conditions 534 #endif535 495 ! 536 496 END IF -
NEMO/branches/2020/dev_r13923_Tiling_Cleanup_MPI3_LoopFusion/src/OCE/TRD/trddyn.F90
r13906 r13963 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_mpi3131 CALL lbc_lnk_nc_multi( 'trddyn', z3dx, 'U', -1.0_wp, z3dy, 'V', -1.0_wp )132 #else133 130 CALL lbc_lnk_multi( 'trddyn', z3dx, 'U', -1.0_wp, z3dy, 'V', -1.0_wp ) 134 #endif135 131 CALL iom_put( "utrd_udx", z3dx ) 136 132 CALL iom_put( "vtrd_vdy", z3dy ) -
NEMO/branches/2020/dev_r13923_Tiling_Cleanup_MPI3_LoopFusion/src/OCE/TRD/trdken.F90
r13906 r13963 90 90 !!---------------------------------------------------------------------- 91 91 ! 92 #if defined key_mpi393 CALL lbc_lnk_nc_multi( 'trdken', putrd, 'U', -1.0_wp , pvtrd, 'V', -1.0_wp ) ! lateral boundary conditions94 #else95 92 CALL lbc_lnk_multi( 'trdken', putrd, 'U', -1.0_wp , pvtrd, 'V', -1.0_wp ) ! lateral boundary conditions 96 #endif97 93 ! 98 94 nkstp = kt -
NEMO/branches/2020/dev_r13923_Tiling_Cleanup_MPI3_LoopFusion/src/OCE/TRD/trdmxl.F90
r13906 r13963 472 472 !-- Lateral boundary conditions 473 473 ! ... temperature ... ... salinity ... 474 #if defined key_mpi3475 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 #else479 474 CALL lbc_lnk_multi( 'trdmxl', ztmltot , 'T', 1.0_wp, zsmltot , 'T', 1.0_wp, & 480 475 & ztmlres , 'T', 1.0_wp, zsmlres , 'T', 1.0_wp, & 481 476 & ztmlatf , 'T', 1.0_wp, zsmlatf , 'T', 1.0_wp ) 482 #endif483 477 484 478 … … 529 523 !-- Lateral boundary conditions 530 524 ! ... temperature ... ... salinity ... 531 #if defined key_mpi3532 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 file536 #else537 525 CALL lbc_lnk_multi( 'trdmxl', ztmltot2, 'T', 1.0_wp, zsmltot2, 'T', 1.0_wp, & 538 526 & ztmlres2, 'T', 1.0_wp, zsmlres2, 'T', 1.0_wp ) 539 527 ! 540 528 CALL lbc_lnk_multi( 'trdmxl', ztmltrd2(:,:,:), 'T', 1.0_wp, zsmltrd2(:,:,:), 'T', 1.0_wp ) ! / in the NetCDF trends file 541 #endif542 529 543 530 ! III.3 Time evolution array swap -
NEMO/branches/2020/dev_r13923_Tiling_Cleanup_MPI3_LoopFusion/src/OCE/TRD/trdvor.F90
r13906 r13963 162 162 163 163 zudpvor(:,:) = 0._wp ; zvdpvor(:,:) = 0._wp ! Initialisation 164 #if defined key_mpi3165 CALL lbc_lnk_nc_multi( 'trdvor', putrdvor, 'U', -1.0_wp , pvtrdvor, 'V', -1.0_wp ) ! lateral boundary condition166 #else167 164 CALL lbc_lnk_multi( 'trdvor', putrdvor, 'U', -1.0_wp , pvtrdvor, 'V', -1.0_wp ) ! lateral boundary condition 168 #endif169 165 170 166 … … 255 251 zvdpvor(:,:) = 0._wp 256 252 ! ! lateral boundary condition on input momentum trends 257 #if defined key_mpi3258 CALL lbc_lnk_nc_multi( 'trdvor', putrdvor, 'U', -1.0_wp , pvtrdvor, 'V', -1.0_wp )259 #else260 253 CALL lbc_lnk_multi( 'trdvor', putrdvor, 'U', -1.0_wp , pvtrdvor, 'V', -1.0_wp ) 261 #endif262 254 263 255 ! ===================================== … … 408 400 409 401 ! Boundary conditions 410 #if defined key_mpi3411 CALL lbc_lnk_nc_multi( 'trdvor', vor_avrtot, 'F', 1.0_wp , vor_avrres, 'F', 1.0_wp )412 #else413 402 CALL lbc_lnk_multi( 'trdvor', vor_avrtot, 'F', 1.0_wp , vor_avrres, 'F', 1.0_wp ) 414 #endif415 403 416 404 -
NEMO/branches/2020/dev_r13923_Tiling_Cleanup_MPI3_LoopFusion/src/OCE/USR/usrdef_fmask.F90
r13906 r13963 153 153 ENDIF 154 154 ! 155 #if defined key_mpi3156 CALL lbc_lnk_nc_multi( 'usrdef_fmask', pfmsk, 'F', 1._wp ) ! Lateral boundary conditions on fmask157 #else158 155 CALL lbc_lnk( 'usrdef_fmask', pfmsk, 'F', 1._wp ) ! Lateral boundary conditions on fmask 159 #endif160 156 ! 161 157 END SUBROUTINE usr_def_fmask -
NEMO/branches/2020/dev_r13923_Tiling_Cleanup_MPI3_LoopFusion/src/OCE/USR/usrdef_sbc.F90
r13906 r13963 181 181 wndm(ji,jj) = SQRT( zmod * zcoef ) 182 182 END_2D 183 #if defined key_mpi3184 CALL lbc_lnk_nc_multi( 'usrdef_sbc', taum(:,:), 'T', 1.0_wp , wndm(:,:), 'T', 1.0_wp )185 #else186 183 CALL lbc_lnk_multi( 'usrdef_sbc', taum(:,:), 'T', 1.0_wp , wndm(:,:), 'T', 1.0_wp ) 187 #endif188 184 189 185 ! ---------------------------------- ! -
NEMO/branches/2020/dev_r13923_Tiling_Cleanup_MPI3_LoopFusion/src/OCE/ZDF/zdfosm.F90
r13906 r13963 1223 1223 1224 1224 ! Lateral boundary conditions on zvicos (sign unchanged), needed to caclulate viscosities on u and v grids 1225 #if defined key_mpi31226 CALL lbc_lnk_nc_multi( 'zdfosm', zviscos(:,:,:), 'W', 1.0_wp )1227 #else1228 1225 CALL lbc_lnk( 'zdfosm', zviscos(:,:,:), 'W', 1.0_wp ) 1229 #endif1230 1226 1231 1227 ! GN 25/8: need to change tmask --> wmask … … 1236 1232 END_3D 1237 1233 ! 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_mpi31239 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 #else1242 1234 CALL lbc_lnk_multi( 'zdfosm', p_avt, 'W', 1.0_wp , p_avm, 'W', 1.0_wp, & 1243 1235 & ghamu, 'W', 1.0_wp , ghamv, 'W', 1.0_wp ) 1244 #endif1245 1236 DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 1246 1237 ghamu(ji,jj,jk) = ( ghamu(ji,jj,jk) + ghamu(ji+1,jj,jk) ) & … … 1255 1246 ! Lateral boundary conditions on final outputs for gham[ts], on W-grid (sign unchanged) 1256 1247 ! Lateral boundary conditions on final outputs for gham[uv], on [UV]-grid (sign unchanged) 1257 #if defined key_mpi31258 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 #else1261 1248 CALL lbc_lnk_multi( 'zdfosm', ghamt, 'W', 1.0_wp , ghams, 'W', 1.0_wp, & 1262 1249 & ghamu, 'U', 1.0_wp , ghamv, 'V', 1.0_wp ) 1263 #endif1264 1250 1265 1251 IF(ln_dia_osm) THEN … … 1301 1287 END IF 1302 1288 ! Lateral boundary conditions on p_avt (sign unchanged) 1303 #if defined key_mpi31304 CALL lbc_lnk_nc_multi( 'zdfosm', p_avt(:,:,:), 'W', 1.0_wp )1305 #else1306 1289 CALL lbc_lnk( 'zdfosm', p_avt(:,:,:), 'W', 1.0_wp ) 1307 #endif1308 1290 ! 1309 1291 END SUBROUTINE zdf_osm -
NEMO/branches/2020/dev_r13923_Tiling_Cleanup_MPI3_LoopFusion/src/OCE/ZDF/zdfphy.F90
r13906 r13963 313 313 ! !* Lateral boundary conditions (sign unchanged) 314 314 IF( l_zdfsh2 ) THEN 315 #if defined key_mpi3316 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 #else319 315 CALL lbc_lnk_multi( 'zdfphy', avm_k, 'W', 1.0_wp , avt_k, 'W', 1.0_wp, & 320 316 & avm , 'W', 1.0_wp , avt , 'W', 1.0_wp , avs , 'W', 1.0_wp ) 321 #endif322 317 ELSE 323 #if defined key_mpi3324 CALL lbc_lnk_nc_multi( 'zdfphy', avm , 'W', 1.0_wp , avt , 'W', 1.0_wp , avs , 'W', 1.0_wp )325 #else326 318 CALL lbc_lnk_multi( 'zdfphy', avm , 'W', 1.0_wp , avt , 'W', 1.0_wp , avs , 'W', 1.0_wp ) 327 #endif328 319 ENDIF 329 320 ! 330 321 IF( l_zdfdrg ) THEN ! drag have been updated (non-linear cases) 331 #if defined key_mpi3332 IF( ln_isfcav ) THEN ; CALL lbc_lnk_nc_multi( 'zdfphy', rCdU_top, 'T', 1.0_wp , rCdU_bot, 'T', 1.0_wp ) ! top & bot drag333 ELSE ; CALL lbc_lnk_nc_multi ( 'zdfphy', rCdU_bot, 'T', 1.0_wp ) ! bottom drag only334 ENDIF335 #else336 322 IF( ln_isfcav ) THEN ; CALL lbc_lnk_multi( 'zdfphy', rCdU_top, 'T', 1.0_wp , rCdU_bot, 'T', 1.0_wp ) ! top & bot drag 337 323 ELSE ; CALL lbc_lnk ( 'zdfphy', rCdU_bot, 'T', 1.0_wp ) ! bottom drag only 338 324 ENDIF 339 #endif340 325 ENDIF 341 326 ! -
NEMO/branches/2020/dev_r13923_Tiling_Cleanup_MPI3_LoopFusion/src/OCE/lib_fortran.F90
r13906 r13963 229 229 ENDIF 230 230 END_2D 231 #if defined key_mpi3232 CALL lbc_lnk_nc_multi( 'lib_fortran', p2d, 'T', 1.0_wp )233 #else234 231 CALL lbc_lnk( 'lib_fortran', p2d, 'T', 1.0_wp ) 235 #endif236 232 ! no need for 2nd exchange when nn_hls = 2 237 233 IF( nn_hls /= 2 ) THEN … … 252 248 IF( MOD(mjg(jpj-2), 3) == 0 ) p2d(:,jpj-1) = p2d(:, jpj) 253 249 ENDIF 254 #if defined key_mpi3255 CALL lbc_lnk_nc_multi( 'lib_fortran', p2d, 'T', 1.0_wp )256 #else257 250 CALL lbc_lnk( 'lib_fortran', p2d, 'T', 1.0_wp ) 258 #endif259 251 ENDIF 260 252 … … 292 284 END_2D 293 285 END DO 294 #if defined key_mpi3295 CALL lbc_lnk_nc_multi( 'lib_fortran', p3d, 'T', 1.0_wp )296 #else297 286 CALL lbc_lnk( 'lib_fortran', p3d, 'T', 1.0_wp ) 298 #endif299 287 ! no need for 2nd exchange when nn_hls = 2 300 288 IF( nn_hls /= 2 ) THEN … … 315 303 IF( MOD(mjg(jpj-2), 3) == 0 ) p3d(:,jpj-1,:) = p3d(:, jpj,:) 316 304 ENDIF 317 #if defined key_mpi3318 CALL lbc_lnk_nc_multi( 'lib_fortran', p3d, 'T', 1.0_wp )319 #else320 305 CALL lbc_lnk( 'lib_fortran', p3d, 'T', 1.0_wp ) 321 #endif322 306 ENDIF 323 307 -
NEMO/branches/2020/dev_r13923_Tiling_Cleanup_MPI3_LoopFusion/src/OCE/module_example
r13906 r13963 127 127 END SELECT 128 128 ! 129 #if defined key_mpi3130 CALL lbc_lnk_nc_multi( 'module_example', avm, 'T', 1. ) ! Lateral boundary conditions (unchanged sign)131 #else132 129 CALL lbc_lnk( 'module_example', avm, 'T', 1. ) ! Lateral boundary conditions (unchanged sign) 133 #endif134 130 ! 135 131 END SUBROUTINE exa_mpl -
NEMO/branches/2020/dev_r13923_Tiling_Cleanup_MPI3_LoopFusion/src/OCE/stpMLF.F90
r13906 r13963 457 457 #endif 458 458 ! ! local domain boundaries (T-point, unchanged sign) 459 #if defined key_mpi3460 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 boundaries462 #else463 459 CALL lbc_lnk_multi( 'finalize_sbc', puu(:,:,:, Kaa), 'U', -1., pvv(:,:,: ,Kaa), 'V', -1. & 464 460 & , pts(:,:,:,jp_tem,Kaa), 'T', 1., pts(:,:,:,jp_sal,Kaa), 'T', 1. ) !* local domain boundaries 465 #endif466 461 ! 467 462 ! !* BDY open boundaries
Note: See TracChangeset
for help on using the changeset viewer.