New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 13906 – NEMO

Changeset 13906


Ignore:
Timestamp:
2020-11-28T19:03:50+01:00 (3 years ago)
Author:
mocavero
Message:

Merge with dev_r13296_HPC-07_mocavero_mpi3

Location:
NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3
Files:
128 edited
2 copied

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/ABL/ablmod.F90

    r13295 r13906  
    529529      !                            !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
    530530      ! 
     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 
    531535      CALL lbc_lnk_multi( 'ablmod',  u_abl(:,:,:,nt_a      ), 'T', -1._wp,  v_abl(:,:,:,nt_a)      , 'T', -1._wp                            ) 
    532536      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 
    533538      ! 
    534539#if defined key_iomput 
     
    594599      END_2D 
    595600      ! 
     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 
    596604      CALL lbc_lnk_multi( 'ablmod', zwnd_i(:,:) , 'T', -1.0_wp, zwnd_j(:,:) , 'T', -1.0_wp ) 
     605#endif 
    597606      ! 
    598607      ! ... scalar wind ( = | U10m - U_oce | ) at T-point (masked) 
     
    619628      END_2D 
    620629      ! 
     630#if defined key_mpi3 
     631      CALL lbc_lnk_nc_multi( 'ablmod', ptaui(:,:), 'U', -1.0_wp, ptauj(:,:), 'V', -1.0_wp ) 
     632#else 
    621633      CALL lbc_lnk_multi( 'ablmod', ptaui(:,:), 'U', -1.0_wp, ptauj(:,:), 'V', -1.0_wp ) 
     634#endif 
    622635 
    623636      CALL iom_put( "taum_oce", ptaum ) 
     
    639652            &                      * ( 0.5_wp * ( v_abl(ji,jj+1,2,nt_a) + v_abl(ji,jj,2,nt_a) ) - pssv_ice(ji,jj) ) 
    640653      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 
    641657      CALL lbc_lnk_multi( 'ablmod', ptaui_ice, 'U', -1.0_wp, ptauj_ice, 'V', -1.0_wp ) 
     658#endif 
    642659      ! 
    643660      IF(sn_cfctl%l_prtctl)   CALL prt_ctl( tab2d_1=ptaui_ice  , clinfo1=' abl_stp: putaui : '   & 
     
    658675            &         * ( zztmp2 - pssv_ice(ji,jj) ) 
    659676      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 
    660680      CALL lbc_lnk_multi( 'ablmod', ptaui_ice, 'U', -1.0_wp, ptauj_ice,'V', -1.0_wp ) 
     681#endif 
    661682      ! 
    662683      IF(sn_cfctl%l_prtctl) THEN 
     
    865886      ! Optional : could add pblh smoothing if pblh is noisy horizontally ... 
    866887      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 
    867891         CALL lbc_lnk( 'ablmod', pblh, 'T', 1.0_wp) !, kfillmode = jpfillnothing) 
     892#endif 
    868893         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 
    869897         CALL lbc_lnk( 'ablmod', pblh, 'T', 1.0_wp) !, kfillmode = jpfillnothing) 
     898#endif 
    870899      ENDIF 
    871900      !                            !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/ICE/icecor.F90

    r13741 r13906  
    116116            ENDIF 
    117117         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 
    118121         CALL lbc_lnk_multi( 'icecor', u_ice, 'U', -1.0_wp, v_ice, 'V', -1.0_wp ) 
     122#endif 
    119123      ENDIF 
    120124      ! 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/ICE/icedyn.F90

    r13553 r13906  
    161161                  &             + e1v(ji,jj) * v_ice(ji,jj) - e1v(ji,jj-1) * v_ice(ji,jj-1) ) * r1_e1e2t(ji,jj) 
    162162            END_2D 
     163#if defined key_mpi3 
     164            CALL lbc_lnk_nc_multi( 'icedyn', zdivu_i, 'T', 1.0_wp ) 
     165#else 
    163166            CALL lbc_lnk( 'icedyn', zdivu_i, 'T', 1.0_wp ) 
     167#endif 
    164168            ! output 
    165169            CALL iom_put( 'icediv' , zdivu_i ) 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/ICE/icedyn_adv_pra.F90

    r13741 r13906  
    115115      CALL icemax3D( ph_ip, zhip_max) 
    116116      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 
    117120      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 
    118122      ! 
    119123      ! enthalpies 
     
    130134      CALL icemax4D( ze_i , zei_max ) 
    131135      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 
    132140      CALL lbc_lnk( 'icedyn_adv_pra', zei_max, 'T', 1._wp ) 
    133141      CALL lbc_lnk( 'icedyn_adv_pra', zes_max, 'T', 1._wp ) 
     142#endif 
    134143      ! 
    135144      ! 
     
    317326               &                          - ( zudy(ji,jj) - zudy(ji-1,jj) + zvdx(ji,jj) - zvdx(ji,jj-1) ) * r1_e1e2t(ji,jj) * zdt 
    318327         END_2D 
     328#if defined key_mpi3 
     329         CALL lbc_lnk_nc_multi( 'icedyn_adv_pra', pato_i, 'T',  1.0_wp ) 
     330#else 
    319331         CALL lbc_lnk( 'icedyn_adv_pra', pato_i, 'T',  1.0_wp ) 
     332#endif 
    320333         ! 
    321334         ! --- diagnostics --- ! 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/ICE/icedyn_adv_umx.F90

    r13741 r13906  
    119119      CALL icemax3D( ph_ip, zhip_max) 
    120120      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 
    121124      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 
    122126      ! 
    123127      ! enthalpies 
     
    134138      CALL icemax4D( ze_i , zei_max ) 
    135139      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 
    136144      CALL lbc_lnk( 'icedyn_adv_umx', zei_max, 'T', 1._wp ) 
    137145      CALL lbc_lnk( 'icedyn_adv_umx', zes_max, 'T', 1._wp ) 
     146#endif 
    138147      ! 
    139148      ! 
     
    376385               &                          - ( zudy(ji,jj) - zudy(ji-1,jj) + zvdx(ji,jj) - zvdx(ji,jj-1) ) * r1_e1e2t(ji,jj) * zdt 
    377386         END_2D 
     387#if defined key_mpi3 
     388         CALL lbc_lnk_nc_multi( 'icedyn_adv_umx', pato_i, 'T',  1._wp ) 
     389#else 
    378390         CALL lbc_lnk( 'icedyn_adv_umx', pato_i, 'T',  1._wp ) 
     391#endif 
    379392         ! 
    380393         ! --- diagnostics --- ! 
     
    519532            END_2D 
    520533         END DO 
     534#if defined key_mpi3 
     535         CALL lbc_lnk_nc_multi( 'icedyn_adv_umx', zt_ups, 'T',  1.0_wp ) 
     536#else 
    521537         CALL lbc_lnk( 'icedyn_adv_umx', zt_ups, 'T',  1.0_wp ) 
     538#endif 
    522539         ! 
    523540         IF    ( np_limiter == 1 ) THEN 
     
    649666         END_2D 
    650667      END DO 
     668#if defined key_mpi3 
     669      CALL lbc_lnk_nc_multi( 'icedyn_adv_umx', pt_ups, 'T', 1.0_wp ) 
     670#else 
    651671      CALL lbc_lnk( 'icedyn_adv_umx', pt_ups, 'T', 1.0_wp ) 
     672#endif 
    652673 
    653674   END SUBROUTINE upstream 
     
    795816            END_2D 
    796817         END DO 
     818#if defined key_mpi3 
     819         CALL lbc_lnk_nc_multi( 'icedyn_adv_umx', zpt, 'T', 1.0_wp ) 
     820#else 
    797821         CALL lbc_lnk( 'icedyn_adv_umx', zpt, 'T', 1.0_wp ) 
     822#endif 
    798823         ! 
    799824         !                                                        !--  ultimate interpolation of pt at v-point  --! 
     
    822847            END_2D 
    823848         END DO 
     849#if defined key_mpi3 
     850         CALL lbc_lnk_nc_multi( 'icedyn_adv_umx', zpt, 'T', 1.0_wp ) 
     851#else 
    824852         CALL lbc_lnk( 'icedyn_adv_umx', zpt, 'T', 1.0_wp ) 
     853#endif 
    825854         ! 
    826855         !                                                        !--  ultimate interpolation of pt at u-point  --! 
     
    875904         END DO 
    876905      END DO 
     906#if defined key_mpi3 
     907      CALL lbc_lnk_nc_multi( 'icedyn_adv_umx', ztu2, 'T', 1.0_wp ) 
     908#else 
    877909      CALL lbc_lnk( 'icedyn_adv_umx', ztu2, 'T', 1.0_wp ) 
     910#endif 
    878911      ! 
    879912      !                                                     !--  BiLaplacian in i-direction  --! 
     
    889922         END DO 
    890923      END DO 
     924#if defined key_mpi3 
     925      CALL lbc_lnk_nc_multi( 'icedyn_adv_umx', ztu4, 'T', 1.0_wp ) 
     926#else 
    891927      CALL lbc_lnk( 'icedyn_adv_umx', ztu4, 'T', 1.0_wp ) 
     928#endif 
    892929      ! 
    893930      ! 
     
    10151052         END_2D 
    10161053      END DO 
     1054#if defined key_mpi3 
     1055      CALL lbc_lnk_nc_multi( 'icedyn_adv_umx', ztv2, 'T', 1.0_wp ) 
     1056#else 
    10171057      CALL lbc_lnk( 'icedyn_adv_umx', ztv2, 'T', 1.0_wp ) 
     1058#endif 
    10181059      ! 
    10191060      !                                                     !--  BiLaplacian in j-direction  --! 
     
    10261067         END_2D 
    10271068      END DO 
     1069#if defined key_mpi3 
     1070      CALL lbc_lnk_nc_multi( 'icedyn_adv_umx', ztv4, 'T', 1.0_wp ) 
     1071#else 
    10281072      CALL lbc_lnk( 'icedyn_adv_umx', ztv4, 'T', 1.0_wp ) 
     1073#endif 
    10291074      ! 
    10301075      ! 
     
    11671212            END_2D 
    11681213         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 
    11691217         CALL lbc_lnk_multi( 'icedyn_adv_umx', zti_ups, 'T', 1.0_wp, ztj_ups, 'T', 1.0_wp ) 
     1218#endif 
    11701219 
    11711220         DO jl = 1, jpl 
     
    11891238            END_2D 
    11901239         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 
    11911243         CALL lbc_lnk_multi( 'icedyn_adv_umx', pfu_ho, 'U', -1.0_wp, pfv_ho, 'V', -1.0_wp )   ! lateral boundary cond. 
     1244#endif 
    11921245 
    11931246      ENDIF 
     
    12461299         END_2D 
    12471300      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 
    12481304      CALL lbc_lnk_multi( 'icedyn_adv_umx', zbetup, 'T', 1.0_wp, zbetdo, 'T', 1.0_wp )   ! lateral boundary cond. (unchanged sign) 
     1305#endif 
    12491306 
    12501307       
     
    13011358         END_2D 
    13021359      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 
    13031363      CALL lbc_lnk( 'icedyn_adv_umx', zslpx, 'U', -1.0_wp)   ! lateral boundary cond. 
     1364#endif 
    13041365       
    13051366      DO jl = 1, jpl 
     
    13651426         END_2D 
    13661427      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 
    13671431      CALL lbc_lnk( 'icedyn_adv_umx', pfu_ho, 'U', -1.0_wp)   ! lateral boundary cond. 
     1432#endif 
    13681433      ! 
    13691434   END SUBROUTINE limiter_x 
     
    13921457         END_2D 
    13931458      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 
    13941462      CALL lbc_lnk( 'icedyn_adv_umx', zslpy, 'V', -1.0_wp)   ! lateral boundary cond. 
     1463#endif 
    13951464 
    13961465      DO jl = 1, jpl 
     
    14571526         END_2D 
    14581527      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 
    14591531      CALL lbc_lnk( 'icedyn_adv_umx', pfv_ho, 'V', -1.0_wp)   ! lateral boundary cond. 
     1532#endif 
    14601533      ! 
    14611534   END SUBROUTINE limiter_y 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/ICE/icedyn_rdgrft.F90

    r13741 r13906  
    801801            strength(ji,jj) = zworka(ji,jj) 
    802802         END_2D 
     803#if defined key_mpi3 
     804         CALL lbc_lnk_nc_multi( 'icedyn_rdgrft', strength, 'T', 1.0_wp ) 
     805#else 
    803806         CALL lbc_lnk( 'icedyn_rdgrft', strength, 'T', 1.0_wp ) 
     807#endif 
    804808         ! 
    805809      CASE( 2 )               !--- Temporal smoothing 
     
    820824            ENDIF 
    821825         END_2D 
     826#if defined key_mpi3 
     827         CALL lbc_lnk_nc_multi( 'icedyn_rdgrft', strength, 'T', 1.0_wp ) 
     828#else 
    822829         CALL lbc_lnk( 'icedyn_rdgrft', strength, 'T', 1.0_wp ) 
     830#endif 
    823831         ! 
    824832      END SELECT 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/ICE/icedyn_rhg_evp.F90

    r13741 r13906  
    199199         zfmask(ji,jj) = tmask(ji,jj,1) * tmask(ji+1,jj,1) * tmask(ji,jj+1,1) * tmask(ji+1,jj+1,1) 
    200200      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 
    202206 
    203207      ! Lateral boundary conditions on velocity (modify zfmask) 
     
    224228         ENDIF 
    225229      END DO 
     230#if defined key_mpi3 
     231      CALL lbc_lnk_nc_multi( 'icedyn_rhg_evp', zfmask, 'F', 1._wp ) 
     232#else 
    226233      CALL lbc_lnk( 'icedyn_rhg_evp', zfmask, 'F', 1._wp ) 
     234#endif 
    227235 
    228236      !------------------------------------------------------------------------------! 
     
    316324 
    317325      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 
    318329      CALL lbc_lnk_multi( 'icedyn_rhg_evp', zmf, 'T', 1.0_wp, zdt_m, 'T', 1.0_wp ) 
     330#endif 
    319331      ! 
    320332      !                                  !== Landfast ice parameterization ==! 
     
    335347            tau_icebfr(ji,jj) = - rn_lf_bfr * MAX( 0._wp, vt_i(ji,jj) - zvCr ) * EXP( -rn_crhg * ( 1._wp - at_i(ji,jj) ) ) 
    336348         END_2D 
     349#if defined key_mpi3 
     350         CALL lbc_lnk_nc_multi( 'icedyn_rhg_evp', tau_icebfr(:,:), 'T', 1.0_wp ) 
     351#else 
    337352         CALL lbc_lnk( 'icedyn_rhg_evp', tau_icebfr(:,:), 'T', 1.0_wp ) 
     353#endif 
    338354         ! 
    339355      ELSE                               !-- no landfast 
     
    394410 
    395411         END_2D 
     412#if defined key_mpi3 
     413         CALL lbc_lnk_nc_multi( 'icedyn_rhg_evp', zdelta, 'T', 1.0_wp ) 
     414#else 
    396415         CALL lbc_lnk( 'icedyn_rhg_evp', zdelta, 'T', 1.0_wp ) 
     416#endif 
    397417 
    398418         ! P/delta at T points 
     
    533553               ENDIF 
    534554            END_2D 
     555#if defined key_mpi3 
     556            CALL lbc_lnk_nc_multi( 'icedyn_rhg_evp', v_ice, 'V', -1.0_wp ) 
     557#else 
    535558            CALL lbc_lnk( 'icedyn_rhg_evp', v_ice, 'V', -1.0_wp ) 
     559#endif 
    536560            ! 
    537561#if defined key_agrif 
     
    585609               ENDIF 
    586610            END_2D 
     611#if defined key_mpi3 
     612            CALL lbc_lnk_nc_multi( 'icedyn_rhg_evp', u_ice, 'U', -1.0_wp ) 
     613#else 
    587614            CALL lbc_lnk( 'icedyn_rhg_evp', u_ice, 'U', -1.0_wp ) 
     615#endif 
    588616            ! 
    589617#if defined key_agrif 
     
    639667               ENDIF 
    640668            END_2D 
     669#if defined key_mpi3 
     670            CALL lbc_lnk_nc_multi( 'icedyn_rhg_evp', u_ice, 'U', -1.0_wp ) 
     671#else 
    641672            CALL lbc_lnk( 'icedyn_rhg_evp', u_ice, 'U', -1.0_wp ) 
     673#endif 
    642674            ! 
    643675#if defined key_agrif 
     
    691723               ENDIF 
    692724            END_2D 
     725#if defined key_mpi3 
     726            CALL lbc_lnk_nc_multi( 'icedyn_rhg_evp', v_ice, 'V', -1.0_wp ) 
     727#else 
    693728            CALL lbc_lnk( 'icedyn_rhg_evp', v_ice, 'V', -1.0_wp ) 
     729#endif 
    694730            ! 
    695731#if defined key_agrif 
     
    750786 
    751787      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 
    752792      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, & 
    753793         &                                  zs1     , 'T', 1._wp, zs2    , 'T', 1._wp, zs12    , 'F', 1._wp ) 
     794#endif 
    754795       
    755796      ! --- Store the stress tensor for the next time step --- ! 
     
    766807         & iom_use('utau_bi') .OR. iom_use('vtau_bi') ) THEN 
    767808         ! 
     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 
    768813         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, & 
    769814            &                                  ztaux_bi, 'U', -1.0_wp, ztauy_bi, 'V', -1.0_wp ) 
     815#endif 
    770816         ! 
    771817         CALL iom_put( 'utau_oi' , ztaux_oi * zmsk00 ) 
     
    851897         & iom_use('corstrx') .OR. iom_use('corstry') .OR. iom_use('intstrx') .OR. iom_use('intstry') ) THEN 
    852898         ! 
     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 
    853903         CALL lbc_lnk_multi( 'icedyn_rhg_evp', zspgU, 'U', -1.0_wp, zspgV, 'V', -1.0_wp, & 
    854904            &                                  zCorU, 'U', -1.0_wp, zCorV, 'V', -1.0_wp, zfU, 'U', -1.0_wp, zfV, 'V', -1.0_wp ) 
     905#endif 
    855906 
    856907         CALL iom_put( 'dssh_dx' , zspgU * zmsk00 )   ! Sea-surface tilt term in force balance (x) 
     
    884935         END_2D 
    885936 
     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 
    886942         CALL lbc_lnk_multi( 'icedyn_rhg_evp', zdiag_xmtrp_ice, 'U', -1.0_wp, zdiag_ymtrp_ice, 'V', -1.0_wp, & 
    887943            &                                  zdiag_xmtrp_snw, 'U', -1.0_wp, zdiag_ymtrp_snw, 'V', -1.0_wp, & 
    888944            &                                  zdiag_xatrp    , 'U', -1.0_wp, zdiag_yatrp    , 'V', -1.0_wp ) 
     945#endif 
    889946 
    890947         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  
    8686            vtau_ice(ji,jj) = vtau_ice(ji,jj) * xcplmask(ji,jj,0) + zvtau_ice(ji,jj) * ( 1. - xcplmask(ji,jj,0) ) 
    8787         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 
    8891         CALL lbc_lnk_multi( 'icesbc', utau_ice, 'U', -1.0_wp, vtau_ice, 'V', -1.0_wp ) 
     92#endif 
    8993      ENDIF 
    9094      ! 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/ICE/icethd.F90

    r13741 r13906  
    136136         END_2D 
    137137      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 
    138141      CALL lbc_lnk_multi( 'icethd', zfric, 'T',  1.0_wp, zvel, 'T', 1.0_wp ) 
     142#endif 
    139143      ! 
    140144      !--------------------------------------------------------------------! 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/ICE/icethd_do.F90

    r13741 r13906  
    193193         END_2D 
    194194         !  
     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 
    195198         CALL lbc_lnk_multi( 'icethd_do', zvrel, 'T', 1.0_wp, ht_i_new, 'T', 1.0_wp  ) 
     199#endif 
    196200 
    197201      ENDIF 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/ICE/iceupdate.F90

    r13741 r13906  
    345345            tmod_io(ji,jj) = zrhoco * SQRT( zmodt )          ! rhoco * |U_ice-U_oce| at T-point 
    346346         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 
    347350         CALL lbc_lnk_multi( 'iceupdate', taum, 'T', 1.0_wp, tmod_io, 'T', 1.0_wp ) 
     351#endif 
    348352         ! 
    349353         utau_oce(:,:) = utau(:,:)                    !* save the air-ocean stresses at ice time-step 
     
    374378         vtau(ji,jj) = ( 1._wp - zat_v ) * vtau_oce(ji,jj) + zat_v * zvtau_ice 
    375379      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 
    376383      CALL lbc_lnk_multi( 'iceupdate', utau, 'U', -1.0_wp, vtau, 'V', -1.0_wp )   ! lateral boundary condition 
     384#endif 
    377385      ! 
    378386      IF( ln_timing )   CALL timing_stop('ice_update_tau') 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/ICE/icewri.F90

    r13553 r13906  
    137137            z2d(ji,jj) = 0.5_wp * SQRT( z2da * z2da + z2db * z2db ) 
    138138         END_2D 
     139#if defined key_mpi3 
     140         CALL lbc_lnk_nc_multi( 'icewri', z2d, 'T', 1.0_wp ) 
     141#else 
    139142         CALL lbc_lnk( 'icewri', z2d, 'T', 1.0_wp ) 
     143#endif 
    140144         CALL iom_put( 'icevel', z2d ) 
    141145 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/NST/agrif_oce_sponge.F90

    r13312 r13906  
    290290       
    291291      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 
    292295         CALL lbc_lnk_multi( 'agrif_Sponge', fspu, 'U', 1._wp, fspv, 'V', 1._wp, fspt, 'T', 1._wp, fspf, 'F', 1._wp ) 
     296#endif 
    293297         spongedoneT = .TRUE. 
    294298         spongedoneU = .TRUE. 
    295299      ENDIF 
    296300      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 
    297304         CALL lbc_lnk_multi( 'agrif_Sponge', fspu, 'U', 1._wp, fspv, 'V', 1._wp ) 
     305#endif 
    298306         spongedoneT = .TRUE. 
    299307      ENDIF 
    300308      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 
    301312         CALL lbc_lnk_multi( 'agrif_Sponge', fspt, 'T', 1._wp, fspf, 'F', 1._wp ) 
     313#endif 
    302314         spongedoneU = .TRUE. 
    303315      ENDIF 
     
    323335      ztabrampu(:,:) = REAL( mbku_parent(:,:), wp ) 
    324336      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 
    325340      CALL lbc_lnk_multi( 'Agrif_Sponge', ztabramp, 'T', 1._wp, ztabrampu, 'U', 1._wp, ztabrampv, 'V', 1._wp ) 
     341#endif 
    326342      mbkt_parent(:,:) = NINT( ztabramp (:,:) ) 
    327343      mbku_parent(:,:) = NINT( ztabrampu(:,:) ) 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/NST/agrif_user.F90

    r13553 r13906  
    9999 
    100100 
     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 
    101105      CALL lbc_lnk_multi( 'agrif_istate', uu(:,:,:  ,Kbb), 'U', -1.0_wp , vv(:,:,:,Kbb), 'V', -1.0_wp ) 
    102106      CALL lbc_lnk(       'agrif_istate', ts(:,:,:,:,Kbb), 'T',  1.0_wp ) 
     107#endif 
    103108 
    104109   END SUBROUTINE Agrif_Istate 
     
    273278      ENDIF 
    274279      ! 
     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 
    275283      CALL lbc_lnk_multi( 'Agrif_Init_Domain', hu0_parent, 'U', 1.0_wp, hv0_parent, 'V', 1.0_wp ) 
     284#endif 
    276285      DO_2D( 0, 0, 0, 0 ) 
    277286         zk(ji,jj) = REAL( mbku_parent(ji,jj), wp ) 
    278287      END_2D 
     288#if defined key_mpi3 
     289      CALL lbc_lnk_nc_multi( 'Agrif_InitValues_cont', zk, 'U', 1.0_wp ) 
     290#else 
    279291      CALL lbc_lnk( 'Agrif_InitValues_cont', zk, 'U', 1.0_wp ) 
     292#endif 
    280293      mbku_parent(:,:) = MAX( NINT( zk(:,:) ), 1 ) 
    281294      DO_2D( 0, 0, 0, 0 ) 
    282295         zk(ji,jj) = REAL( mbkv_parent(ji,jj), wp ) 
    283296      END_2D 
     297#if defined key_mpi3 
     298      CALL lbc_lnk_nc_multi( 'Agrif_InitValues_cont', zk, 'V', 1.0_wp ) 
     299#else 
    284300      CALL lbc_lnk( 'Agrif_InitValues_cont', zk, 'V', 1.0_wp ) 
     301#endif 
    285302      mbkv_parent(:,:) = MAX( NINT( zk(:,:) ), 1 )    
    286303 
    287304      IF ( ln_init_chfrpar ) THEN  
    288305         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 
    289309         CALL lbc_lnk( 'Agrif_Init_Domain', ssh(:,:,Kbb), 'T', 1. ) 
     310#endif 
    290311         DO jk = 1, jpk 
    291312               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  
    422422                     &            / e3t(ji,jj,jk,Kmm) 
    423423               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 
    424427               CALL lbc_lnk( 'asminc', zhdiv, 'T', 1.0_wp )   ! lateral boundary cond. (no sign change) 
     428#endif 
    425429               ! 
    426430               DO_2D( 0, 0, 0, 0 ) 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/BDY/bdydyn2d.F90

    r13226 r13906  
    102102         END DO 
    103103         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 
    104107            CALL lbc_lnk( 'bdydyn2d', pua2d, 'U', -1.0_wp, kfillmode=jpfillnothing ,lsend=llsend2, lrecv=llrecv2 ) 
     108#endif 
    105109         END IF 
    106110         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 
    107114            CALL lbc_lnk( 'bdydyn2d', pva2d, 'V', -1.0_wp, kfillmode=jpfillnothing ,lsend=llsend3, lrecv=llrecv3 ) 
     115#endif 
    108116         END IF 
    109117         ! 
     
    324332         IF( nn_hls > 1 .AND. ir == 1 ) CYCLE   ! at least 2 halos will be corrected -> no need to correct rim 1 before rim 0 
    325333         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 
    326337            CALL lbc_lnk( 'bdydyn2d', zssh(:,:,1), 'T',  1.0_wp, kfillmode=jpfillnothing ,lsend=llsend1, lrecv=llrecv1 ) 
     338#endif 
    327339         END IF 
    328340      END DO 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/BDY/bdydyn3d.F90

    r13226 r13906  
    9999         ! 
    100100         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 
    101104            CALL lbc_lnk( 'bdydyn2d', puu(:,:,:,Kaa), 'U', -1.0_wp, kfillmode=jpfillnothing ,lsend=llsend2, lrecv=llrecv2 ) 
     105#endif 
    102106         END IF 
    103107         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 
    104111            CALL lbc_lnk( 'bdydyn2d', pvv(:,:,:,Kaa), 'V', -1.0_wp, kfillmode=jpfillnothing ,lsend=llsend3, lrecv=llrecv3 ) 
     112#endif 
    105113         END IF 
    106114      END DO   ! ir 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/BDY/bdyice.F90

    r13741 r13906  
    9191         END DO   ! jbdy 
    9292         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 
    93103            ! exchange 3d arrays 
    94104            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                   & 
     
    99109            CALL lbc_lnk_multi('bdyice', t_s , 'T', 1._wp, e_s , 'T', 1._wp, kfillmode=jpfillnothing ,lsend=llsend1, lrecv=llrecv1 ) 
    100110            CALL lbc_lnk_multi('bdyice', t_i , 'T', 1._wp, e_i , 'T', 1._wp, kfillmode=jpfillnothing ,lsend=llsend1, lrecv=llrecv1 ) 
     111#endif 
    101112         END IF 
    102113      END DO   ! ir 
     
    434445            END DO 
    435446            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 
    436450               CALL lbc_lnk( 'bdyice', u_ice, 'U', -1.0_wp, kfillmode=jpfillnothing ,lsend=llsend2, lrecv=llrecv2 ) 
     451#endif 
    437452            END IF 
    438453         CASE ( 'V' ) 
     
    448463            END DO 
    449464            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 
    450468               CALL lbc_lnk( 'bdyice', v_ice, 'V', -1.0_wp, kfillmode=jpfillnothing ,lsend=llsend3, lrecv=llrecv3 ) 
     469#endif 
    451470            END IF 
    452471         END SELECT 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/BDY/bdyini.F90

    r13553 r13906  
    638638         END DO 
    639639      END DO 
     640#if defined key_mpi3 
     641      CALL lbc_lnk_nc_multi( 'bdyini', zfmask, 'F', 1.0_wp ) 
     642#else 
    640643      CALL lbc_lnk( 'bdyini', zfmask, 'F', 1.0_wp ) 
     644#endif 
    641645 
    642646      ! Read global 2D mask at T-points: bdytmask 
     
    654658         END DO 
    655659      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 
    656663      CALL lbc_lnk_multi( 'bdyini', bdyumask, 'U', 1.0_wp , bdyvmask, 'V', 1.0_wp )   ! Lateral boundary cond.  
     664#endif 
    657665 
    658666      ! bdy masks are now set to zero on rim 0 points: 
     
    695703         END DO 
    696704      END DO 
     705#if defined key_mpi3 
     706      CALL lbc_lnk_nc_multi( 'bdyini', zfmask, 'F', 1.0_wp ) 
     707#else 
    697708      CALL lbc_lnk( 'bdyini', zfmask, 'F', 1.0_wp ) 
     709#endif 
    698710 
    699711      ! bdy masks are now set to zero on rim1 points: 
     
    871883            ENDIF  
    872884            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 
    873890               CASE( 1 )   ;   CALL lbc_lnk( 'bdyini', ztmp, 'T', 1.0_wp ) 
    874891               CASE( 2 )   ;   CALL lbc_lnk( 'bdyini', ztmp, 'U', 1.0_wp ) 
    875892               CASE( 3 )   ;   CALL lbc_lnk( 'bdyini', ztmp, 'V', 1.0_wp ) 
     893#endif 
    876894            END SELECT  
    877895            DO ib = ibeg, iend 
     
    919937            ENDIF 
    920938            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 
    921944               CASE( 1 )   ;   CALL lbc_lnk( 'bdyini', ztmp, 'T', 1.0_wp ) 
    922945               CASE( 2 )   ;   CALL lbc_lnk( 'bdyini', ztmp, 'U', 1.0_wp ) 
    923946               CASE( 3 )   ;   CALL lbc_lnk( 'bdyini', ztmp, 'V', 1.0_wp ) 
     947#endif 
    924948            END SELECT  
    925949            DO ib = ibeg, iend 
     
    10071031            END DO 
    10081032            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 
    10091038               CASE( 1 )   ;   CALL lbc_lnk( 'bdyini', ztmp, 'T', 1.0_wp ) 
    10101039               CASE( 2 )   ;   CALL lbc_lnk( 'bdyini', ztmp, 'U', 1.0_wp ) 
    10111040               CASE( 3 )   ;   CALL lbc_lnk( 'bdyini', ztmp, 'V', 1.0_wp ) 
     1041#endif 
    10121042            END SELECT  
    10131043            DO ib = ibeg, iend 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/BDY/bdytra.F90

    r13819 r13906  
    100100         END DO 
    101101         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 
    102105            CALL lbc_lnk( 'bdytra', pts(:,:,:,jn,Kaa), 'T',  1.0_wp, kfillmode=jpfillnothing ,lsend=llsend1, lrecv=llrecv1 ) 
     106#endif 
    103107         ENDIF 
    104108         ! 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/CRS/crsfld.F90

    r13553 r13906  
    156156               &          + vv(ji,jj  ,jk,Kmm)**2 * e1v(ji,jj  ) * e3v(ji,jj  ,jk,Kmm)   ) 
    157157         END_3D 
     158#if defined key_mpi3 
     159         CALL lbc_lnk_nc_multi( 'crsfld', z3d, 'T', 1.0_wp ) 
     160#else 
    158161         CALL lbc_lnk( 'crsfld', z3d, 'T', 1.0_wp ) 
     162#endif 
    159163         ! 
    160164         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  
    358358         ENDIF 
    359359      ENDIF 
     360     
    360361   END SUBROUTINE dia_ar5_hst 
    361362 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/DIA/diaptr.F90

    r13819 r13906  
    124124      ! 
    125125      ALLOCATE( z3dtr(jpi,jpj,nbasin) ) 
    126       ! 
     126 
    127127      IF( PRESENT( pvtr ) ) THEN 
    128128         IF( iom_use( 'zomsf' ) ) THEN    ! effective MSF 
     
    472472         &       iom_use( 'sophteiv' ) .OR. iom_use( 'sopsteiv' ) .OR. iom_use( 'sopstvtr' ) .OR.  & 
    473473         &       iom_use( 'sophtvtr' ) .OR. iom_use( 'uocetr_vsum_cumul' ) 
    474   
     474       
    475475      IF(lwp) THEN                     ! Control print 
    476476         WRITE(numout,*) 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/DOM/dom_oce.F90

    r13741 r13906  
    9797   INTEGER, PUBLIC ::   noea, nowe        !: index of the local neighboring processors in 
    9898   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 
    99103   INTEGER, PUBLIC ::   nidom             !: ??? 
    100104 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/DOM/dommsk.F90

    r13553 r13906  
    162162            &            * tmask(ji,jj+1,jk) * tmask(ji+1,jj+1,jk) 
    163163      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 
    164167      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 
    165169  
    166170      ! Ocean/land mask at wu-, wv- and w points    (computed from tmask) 
     
    219223         END DO 
    220224         ! 
     225#if defined key_mpi3 
     226         CALL lbc_lnk_nc_multi( 'dommsk', fmask, 'F', 1._wp )      ! Lateral boundary conditions on fmask 
     227#else 
    221228         CALL lbc_lnk( 'dommsk', fmask, 'F', 1._wp )      ! Lateral boundary conditions on fmask 
     229#endif 
    222230         ! 
    223231         ! 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  
    163163      ! 
    164164      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 
    165168         CALL lbc_lnk_multi( 'dom_qco_r3c', pr3u, 'U', 1._wp, pr3v, 'V', 1._wp ) 
     169#endif 
    166170         ! 
    167171         ! 
     
    182186         ENDIF 
    183187         !                                                 ! 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 
    184191         CALL lbc_lnk_multi( 'dom_qco_r3c', pr3u, 'U', 1._wp, pr3v, 'V', 1._wp, pr3f, 'F', 1._wp ) 
     192#endif 
    185193         ! 
    186194      ENDIF 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/DOM/domutl.F90

    r13745 r13906  
    108108      ! 
    109109      puniq(:,:) = ztstref(:,:)                    ! default definition 
     110#if defined key_mpi3 
     111      CALL lbc_lnk_nc_multi( 'domwri', puniq, cdgrd, 1. )   ! apply boundary conditions 
     112#else 
    110113      CALL lbc_lnk( 'domwri', puniq, cdgrd, 1. )   ! apply boundary conditions 
     114#endif 
    111115      lluniq(:,:,1) = puniq(:,:) == ztstref(:,:)   ! check which values have not been changed  
    112116      ! 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/DOM/domvvl.F90

    r13553 r13906  
    439439         !                               ! d - thickness diffusion transport: boundary conditions 
    440440         !                             (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 
    441444         CALL lbc_lnk_multi( 'domvvl', un_td , 'U' , -1._wp, vn_td , 'V' , -1._wp) 
    442  
     445#endif 
    443446         ! 4 - Time stepping of baroclinic scale factors 
    444447         ! --------------------------------------------- 
     448#if defined key_mpi3 
     449         CALL lbc_lnk_nc_multi( 'domvvl', tilde_e3t_a(:,:,:), 'T', 1._wp ) 
     450#else 
    445451         CALL lbc_lnk( 'domvvl', tilde_e3t_a(:,:,:), 'T', 1._wp ) 
     452#endif 
    446453         tilde_e3t_a(:,:,:) = tilde_e3t_b(:,:,:) + rDt * tmask(:,:,:) * tilde_e3t_a(:,:,:) 
    447454 
     
    717724               &                           + e1e2t(ji+1,jj) * ( pe3_in(ji+1,jj,jk) - e3t_0(ji+1,jj,jk) ) ) 
    718725         END_3D 
     726#if defined key_mpi3 
     727         CALL lbc_lnk_nc_multi( 'domvvl', pe3_out(:,:,:), 'U', 1._wp ) 
     728#else 
    719729         CALL lbc_lnk( 'domvvl', pe3_out(:,:,:), 'U', 1._wp ) 
     730#endif 
    720731         pe3_out(:,:,:) = pe3_out(:,:,:) + e3u_0(:,:,:) 
    721732         ! 
     
    726737               &                           + e1e2t(ji,jj+1) * ( pe3_in(ji,jj+1,jk) - e3t_0(ji,jj+1,jk) ) ) 
    727738         END_3D 
     739#if defined key_mpi3 
     740         CALL lbc_lnk_nc_multi( 'domvvl', pe3_out(:,:,:), 'V', 1._wp ) 
     741#else 
    728742         CALL lbc_lnk( 'domvvl', pe3_out(:,:,:), 'V', 1._wp ) 
     743#endif 
    729744         pe3_out(:,:,:) = pe3_out(:,:,:) + e3v_0(:,:,:) 
    730745         ! 
     
    736751               &                           + e1e2u(ji,jj+1) * ( pe3_in(ji,jj+1,jk) - e3u_0(ji,jj+1,jk) ) ) 
    737752         END_3D 
     753#if defined key_mpi3 
     754         CALL lbc_lnk_nc_multi( 'domvvl', pe3_out(:,:,:), 'F', 1._wp ) 
     755#else 
    738756         CALL lbc_lnk( 'domvvl', pe3_out(:,:,:), 'F', 1._wp ) 
     757#endif 
    739758         pe3_out(:,:,:) = pe3_out(:,:,:) + e3f_0(:,:,:) 
    740759         ! 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/DOM/domwri.F90

    r13295 r13906  
    229229         END DO 
    230230      END DO 
     231#if defined key_mpi3 
     232      CALL lbc_lnk_nc_multi( 'domwri', zx1, 'T', 1.0_wp ) 
     233#else 
    231234      CALL lbc_lnk( 'domwri', zx1, 'T', 1.0_wp ) 
     235#endif 
    232236      ! 
    233237      IF( PRESENT( px1 ) )    px1 = zx1 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/DOM/domzgr.F90

    r13295 r13906  
    125125         zmsk(:,mj0(jpjglo-nn_hls):mj1(jpjglo-nn_hls)  ) = 0._wp   ! last    line of inner global domain at 0 
    126126      ENDIF 
     127#if defined key_mpi3 
     128      CALL lbc_lnk_nc_multi( 'usrdef_zgr', zmsk, 'T', 1. )             ! set halos 
     129#else 
    127130      CALL lbc_lnk( 'usrdef_zgr', zmsk, 'T', 1. )             ! set halos 
     131#endif 
    128132      k_top(:,:) = k_top(:,:) * NINT( zmsk(:,:) ) 
    129133      ! 
     
    340344      END_2D 
    341345      ! 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 
    342354      zk(:,:) = REAL( miku(:,:), wp )   ;   CALL lbc_lnk( 'domzgr', zk, 'U', 1.0_wp )   ;   miku(:,:) = MAX( NINT( zk(:,:) ), 1 ) 
    343355      zk(:,:) = REAL( mikv(:,:), wp )   ;   CALL lbc_lnk( 'domzgr', zk, 'V', 1.0_wp )   ;   mikv(:,:) = MAX( NINT( zk(:,:) ), 1 ) 
     
    346358      zk(:,:) = REAL( mbku(:,:), wp )   ;   CALL lbc_lnk( 'domzgr', zk, 'U', 1.0_wp )   ;   mbku(:,:) = MAX( NINT( zk(:,:) ), 1 ) 
    347359      zk(:,:) = REAL( mbkv(:,:), wp )   ;   CALL lbc_lnk( 'domzgr', zk, 'V', 1.0_wp )   ;   mbkv(:,:) = MAX( NINT( zk(:,:) ), 1 ) 
     360#endif 
    348361      ! 
    349362   END SUBROUTINE zgr_top_bot 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/DYN/divhor.F90

    r13741 r13906  
    9494      IF( ln_isf )                      CALL isf_hdiv( kt, Kmm, hdiv )           !==  ice shelf         ==!   (update hdiv field) 
    9595      ! 
     96#if defined key_mpi3 
     97      CALL lbc_lnk_nc_multi( 'divhor', hdiv, 'T', 1.0_wp )   !   (no sign change) 
     98#else 
    9699      CALL lbc_lnk( 'divhor', hdiv, 'T', 1.0_wp )   !   (no sign change) 
     100#endif 
    97101      ! 
    98102      IF( ln_timing )   CALL timing_stop('div_hor') 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/DYN/dynadv_ubs.F90

    r13553 r13906  
    124124         END_2D 
    125125      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 
    126132      CALL lbc_lnk_multi( 'dynadv_ubs', zlu_uu(:,:,:,1), 'U', 1.0_wp , zlu_uv(:,:,:,1), 'U', 1.0_wp,  & 
    127133                      &   zlu_uu(:,:,:,2), 'U', 1.0_wp , zlu_uv(:,:,:,2), 'U', 1.0_wp,  &  
    128134                      &   zlv_vv(:,:,:,1), 'V', 1.0_wp , zlv_vu(:,:,:,1), 'V', 1.0_wp,  & 
    129135                      &   zlv_vv(:,:,:,2), 'V', 1.0_wp , zlv_vu(:,:,:,2), 'V', 1.0_wp   ) 
     136#endif 
    130137      ! 
    131138      !                                      ! ====================== ! 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/DYN/dynatf.F90

    r13553 r13906  
    167167# endif 
    168168      ! 
     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 
    169172      CALL lbc_lnk_multi( 'dynatf', puu(:,:,:,Kaa), 'U', -1.0_wp, pvv(:,:,:,Kaa), 'V', -1.0_wp )     !* local domain boundaries 
     173#endif 
    170174      ! 
    171175      !                                !* BDY open boundaries 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/DYN/dynhpg.F90

    r13745 r13906  
    449449          END IF 
    450450        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 
    451454        CALL lbc_lnk_multi( 'dynhpg', zcpx, 'U', 1.0_wp, zcpy, 'V', 1.0_wp ) 
     455#endif 
    452456      END IF 
    453457 
     
    680684          END IF 
    681685        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 
    682689        CALL lbc_lnk_multi( 'dynhpg', zcpx, 'U', 1.0_wp, zcpy, 'V', 1.0_wp ) 
     690#endif 
    683691      END IF 
    684692 
     
    826834 
    827835      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 
    828839      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 
    829841 
    830842      ! --------------- 
     
    953965            ENDIF 
    954966         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 
    955970         CALL lbc_lnk_multi( 'dynhpg', zcpx, 'U', 1.0_wp, zcpy, 'V', 1.0_wp ) 
     971#endif 
    956972      ENDIF 
    957973 
     
    10231039      END_2D 
    10241040 
     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 
    10251044      CALL lbc_lnk_multi ('dynhpg', zsshu_n, 'U', 1.0_wp, zsshv_n, 'V', 1.0_wp ) 
     1045#endif 
    10261046 
    10271047      DO_2D( 0, 0, 0, 0 ) 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/DYN/dynkeg.F90

    r13553 r13906  
    121121            zhke(ji,jj,jk) = r1_48 * ( zv + zu ) 
    122122         END_3D 
     123#if defined key_mpi3 
     124         CALL lbc_lnk_nc_multi( 'dynkeg', zhke, 'T', 1.0_wp ) 
     125#else 
    123126         CALL lbc_lnk( 'dynkeg', zhke, 'T', 1.0_wp ) 
     127#endif 
    124128         ! 
    125129      END SELECT  
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/DYN/dynldf_iso.F90

    r13553 r13906  
    135135         END_3D 
    136136         ! 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 
    137140         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 
    138142         ! 
    139143       ENDIF 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/DYN/dynldf_lap_blp.F90

    r13553 r13906  
    132132      CALL dyn_ldf_lap( kt, Kbb, Kmm, pu, pv, zulap, zvlap, 1 )   ! rotated laplacian applied to pt (output in zlap,Kbb) 
    133133      ! 
     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 
    134137      CALL lbc_lnk_multi( 'dynldf_lap_blp', zulap, 'U', -1.0_wp, zvlap, 'V', -1.0_wp )             ! Lateral boundary conditions 
     138#endif 
    135139      ! 
    136140      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  
    520520         END_2D 
    521521         ! 
     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 
    522525         CALL lbc_lnk_multi( 'dynspg_ts', ssha_e, 'T', 1._wp,  zhU, 'U', -1._wp,  zhV, 'V', -1._wp ) 
     526#endif 
    523527         ! 
    524528         ! Duplicate sea level across open boundaries (this is only cosmetic if linssh=T) 
     
    659663         ! 
    660664         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 
    661670            CALL lbc_lnk_multi( 'dynspg_ts', ua_e , 'U', -1._wp, va_e , 'V', -1._wp  & 
    662671                 &                         , hu_e , 'U',  1._wp, hv_e , 'V',  1._wp  & 
    663672                 &                         , hur_e, 'U',  1._wp, hvr_e, 'V',  1._wp  ) 
     673#endif 
    664674         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 
    665678            CALL lbc_lnk_multi( 'dynspg_ts', ua_e , 'U', -1._wp, va_e , 'V', -1._wp  ) 
     679#endif 
    666680         ENDIF 
    667681         !                                                 ! open boundaries 
     
    751765               &              +   e1e2t(ji,jj+1) * pssh(ji,jj+1,Kaa) ) 
    752766         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 
    753770         CALL lbc_lnk_multi( 'dynspg_ts', zsshu_a, 'U', 1._wp, zsshv_a, 'V', 1._wp ) ! Boundary conditions 
     771#endif 
    754772         ! 
    755773         DO jk=1,jpkm1 
     
    11141132            END_2D 
    11151133         END SELECT 
     1134#if defined key_mpi3 
     1135         CALL lbc_lnk_nc_multi( 'dynspg_ts', zwz, 'F', 1._wp ) 
     1136#else 
    11161137         CALL lbc_lnk( 'dynspg_ts', zwz, 'F', 1._wp ) 
     1138#endif 
    11171139         ! 
    11181140         ftne(1,:) = 0._wp ; ftnw(1,:) = 0._wp ; ftse(1,:) = 0._wp ; ftsw(1,:) = 0._wp 
     
    11761198            END DO 
    11771199         END DO 
     1200#if defined key_mpi3 
     1201         CALL lbc_lnk_nc_multi( 'dynspg_ts', zhf, 'F', 1._wp ) 
     1202#else 
    11781203         CALL lbc_lnk( 'dynspg_ts', zhf, 'F', 1._wp ) 
     1204#endif 
    11791205         ! JC: TBC. hf should be greater than 0  
    11801206         DO_2D( 1, 1, 1, 1 ) 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/DYN/dynvor.F90

    r13553 r13906  
    242242         END DO 
    243243 
     244#if defined key_mpi3 
     245         CALL lbc_lnk_nc_multi( 'dynvor', zwz, 'F', 1.0_wp ) 
     246#else 
    244247         CALL lbc_lnk( 'dynvor', zwz, 'F', 1.0_wp ) 
     248#endif 
    245249 
    246250      CASE ( np_CRV )                           !* Coriolis + relative vorticity 
     
    257261         END DO 
    258262 
     263#if defined key_mpi3 
     264         CALL lbc_lnk_nc_multi( 'dynvor', zwz, 'F', 1.0_wp ) 
     265#else 
    259266         CALL lbc_lnk( 'dynvor', zwz, 'F', 1.0_wp ) 
     267#endif 
    260268 
    261269      END SELECT 
     
    610618      END DO                                           !   End of slab 
    611619         ! 
     620#if defined key_mpi3 
     621      CALL lbc_lnk_nc_multi( 'dynvor', zwz, 'F', 1.0_wp ) 
     622#else 
    612623      CALL lbc_lnk( 'dynvor', zwz, 'F', 1.0_wp ) 
     624#endif 
    613625 
    614626      DO jk = 1, jpkm1                                 ! Horizontal slab 
     
    731743      END DO 
    732744      ! 
     745#if defined key_mpi3 
     746      CALL lbc_lnk_nc_multi( 'dynvor', zwz, 'F', 1.0_wp ) 
     747#else 
    733748      CALL lbc_lnk( 'dynvor', zwz, 'F', 1.0_wp ) 
     749#endif 
    734750      ! 
    735751      DO jk = 1, jpkm1                                 ! Horizontal slab 
     
    823839         END_3D 
    824840         ! 
     841#if defined key_mpi3 
     842         CALL lbc_lnk_nc_multi( 'dynvor', fmask, 'F', 1._wp )      ! Lateral boundary conditions on fmask 
     843#else 
    825844         CALL lbc_lnk( 'dynvor', fmask, 'F', 1._wp )      ! Lateral boundary conditions on fmask 
     845#endif 
    826846         ! 
    827847      ENDIF 
     
    861881               dj_e1v_2(ji,jj) = ( e1v(ji,jj) - e1v(ji  ,jj-1) ) * 0.5_wp 
    862882            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 
    863886            CALL lbc_lnk_multi( 'dynvor', di_e2u_2, 'T', -1.0_wp , dj_e1v_2, 'T', -1.0_wp )   ! Lateral boundary conditions 
     887#endif 
    864888            ! 
    865889         CASE DEFAULT                        !* F-point metric term :   pre-compute di(e2u)/(2*e1e2f) and dj(e1v)/(2*e1e2f) 
     
    869893               dj_e1u_2e1e2f(ji,jj) = ( e1u(ji  ,jj+1) - e1u(ji,jj) )  * 0.5 * r1_e1e2f(ji,jj) 
    870894            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 
    871898            CALL lbc_lnk_multi( 'dynvor', di_e2v_2e1e2f, 'F', -1.0_wp , dj_e1u_2e1e2f, 'F', -1.0_wp )   ! Lateral boundary conditions 
     899#endif 
    872900         END SELECT 
    873901         ! 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/DYN/sshwzv.F90

    r13553 r13906  
    119119      IF ( .NOT.ln_dynspg_ts ) THEN 
    120120         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 
    121124            CALL lbc_lnk( 'sshwzv', pssh(:,:,Kaa), 'T', 1.0_wp )    ! Not sure that's necessary 
     125#endif 
    122126            CALL bdy_ssh( pssh(:,:,Kaa) )             ! Duplicate sea level across open boundaries 
    123127         ENDIF 
     
    182186            END_2D 
    183187         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 
    184191         CALL lbc_lnk('sshwzv', zhdiv, 'T', 1.0_wp)  ! - ML - Perhaps not necessary: not used for horizontal "connexions" 
     192#endif 
    185193         !                             ! Is it problematic to have a wrong vertical velocity in boundary cells? 
    186194         !                             ! Same question holds for hdiv. Perhaps just for security 
     
    388396         END_3D 
    389397      ENDIF 
     398#if defined key_mpi3 
     399      CALL lbc_lnk_nc_multi( 'sshwzv', Cu_adv, 'T', 1.0_wp ) 
     400#else 
    390401      CALL lbc_lnk( 'sshwzv', Cu_adv, 'T', 1.0_wp ) 
     402#endif 
    391403      ! 
    392404      CALL iom_put("Courant",Cu_adv) 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/DYN/wet_dry.F90

    r13741 r13906  
    241241            ENDIF 
    242242         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 
    243246         CALL lbc_lnk_multi( 'wet_dry', zwdlmtu, 'U', 1.0_wp, zwdlmtv, 'V', 1.0_wp ) 
     247#endif 
    244248         ! 
    245249         CALL mpp_max('wet_dry', jflag)   !max over the global domain 
     
    257261      ! 
    258262!!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 
    259267      CALL lbc_lnk_multi( 'wet_dry', puu(:,:,:,Kmm)  , 'U', -1.0_wp, pvv(:,:,:,Kmm)  , 'V', -1.0_wp ) 
    260268      CALL lbc_lnk_multi( 'wet_dry', uu_b(:,:,Kmm), 'U', -1.0_wp, vv_b(:,:,Kmm), 'V', -1.0_wp ) 
     269#endif 
    261270!!gm 
    262271      ! 
     
    366375         END_2D 
    367376         ! 
     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 
    368380         CALL lbc_lnk_multi( 'wet_dry', zwdlmtu, 'U', 1.0_wp, zwdlmtv, 'V', 1.0_wp ) 
     381#endif 
    369382         ! 
    370383         CALL mpp_max('wet_dry', jflag)   !max over the global domain 
     
    378391      ! 
    379392!!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 
    380396      CALL lbc_lnk_multi( 'wet_dry', zflxu, 'U', -1.0_wp, zflxv, 'V', -1.0_wp ) 
     397#endif 
    381398!!gm end 
    382399      ! 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/ICB/icbclv.F90

    r13295 r13906  
    173173      ! 
    174174      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 
    175178         CALL lbc_lnk( 'icbclv', berg_grid%stored_ice(:,:,jn), 'T', 1._wp ) 
     179#endif 
    176180      END DO 
     181#if defined key_mpi3 
     182      CALL lbc_lnk_nc_multi( 'icbclv', berg_grid%stored_heat, 'T', 1._wp ) 
     183#else 
    177184      CALL lbc_lnk( 'icbclv', berg_grid%stored_heat, 'T', 1._wp ) 
     185#endif 
    178186      ! 
    179187      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  
    127127         src_calving     (ji,jj) = nicbpack * mjg(jj) + mig(ji) 
    128128      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 
    129133      CALL lbc_lnk( 'icbini', src_calving_hflx, 'T', 1._wp ) 
    130134      CALL lbc_lnk( 'icbini', src_calving     , 'T', 1._wp ) 
     135#endif 
    131136 
    132137      ! work out interior of processor from exchange array 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/IOM/iom.F90

    r13831 r13906  
    13421342               !--- overlap areas and extra hallows (mpp) 
    13431343               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 
    13441347                  CALL lbc_lnk( 'iom', pv_r2d, cl_type, zsgn, kfillmode = kfill ) 
     1348#endif 
    13451349               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 
    13461353                  CALL lbc_lnk( 'iom', pv_r3d, cl_type, zsgn, kfillmode = kfill ) 
     1354#endif 
    13471355               ENDIF 
    13481356               ! 
     
    13631371            IF(lwp) WRITE(numout,*) 'XIOS RST READ (3D): ',TRIM(cdvar) 
    13641372            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 
    13651376            IF(idom /= jpdom_unknown )   CALL lbc_lnk( 'iom', pv_r3d,'Z', -999., kfillmode = jpfillnothing) 
     1377#endif 
    13661378         ELSEIF( PRESENT(pv_r2d) ) THEN 
    13671379            IF(lwp) WRITE(numout,*) 'XIOS RST READ (2D): ', TRIM(cdvar) 
    13681380            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 
    13691384            IF(idom /= jpdom_unknown )   CALL lbc_lnk('iom', pv_r2d,'Z',-999., kfillmode = jpfillnothing) 
     1385#endif 
    13701386         ELSEIF( PRESENT(pv_r1d) ) THEN 
    13711387            IF(lwp) WRITE(numout,*) 'XIOS RST READ (1D): ', TRIM(cdvar) 
     
    13801396!some final adjustments 
    13811397      ! 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 
    13821402      IF( lk_c1d .AND. PRESENT(pv_r2d) )   CALL lbc_lnk( 'iom', pv_r2d,'Z',1.0_wp ) 
    13831403      IF( lk_c1d .AND. PRESENT(pv_r3d) )   CALL lbc_lnk( 'iom', pv_r3d,'Z',1.0_wp ) 
     1404#endif 
    13841405 
    13851406      !--- Apply scale_factor and offset 
     
    22322253      ! 
    22332254      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 
    22342258      CALL lbc_lnk( 'iom', z_fld, cdgrd, -1.0_wp )    ! Working array for location of northfold 
     2259#endif 
    22352260      ! 
    22362261      ! Cell vertices that can be defined 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/ISF/isfcav.F90

    r13226 r13906  
    136136      ! 
    137137      ! 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 
    138141      CALL lbc_lnk_multi( 'isfmlt', zqh, 'T', 1.0_wp, pqfwf, 'T', 1.0_wp) 
     142#endif 
    139143      ! 
    140144      ! output fluxes 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/ISF/isfcpl.F90

    r13295 r13906  
    212212         zssmask0(:,:) = zssmask_b(:,:) 
    213213         ! 
     214#if defined key_mpi3 
     215         CALL lbc_lnk_nc_multi( 'iscplrst', zssh, 'T', 1.0_wp, zssmask0, 'T', 1.0_wp ) 
     216#else 
    214217         CALL lbc_lnk_multi( 'iscplrst', zssh, 'T', 1.0_wp, zssmask0, 'T', 1.0_wp ) 
     218#endif 
    215219         ! 
    216220      END DO 
     
    367371         ztmask0(:,:,:) = ztmask1(:,:,:) 
    368372         ! 
     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 
    369376         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 
    370378         ! 
    371379      END DO  ! nn_drown 
     
    458466      END_2D 
    459467      ! 
     468#if defined key_mpi3 
     469      CALL lbc_lnk_nc_multi( 'iscpl', risfcpl_vol, 'T', 1.0_wp ) 
     470#else 
    460471      CALL lbc_lnk( 'iscpl', risfcpl_vol, 'T', 1.0_wp ) 
     472#endif 
    461473      ! 
    462474      ! 3.0: set total correction (div, tr(:,:,:,:,Krhs), ssh) 
     
    693705      ! 
    694706      ! 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 
    695711      CALL lbc_lnk_multi( 'iscplrst', risfcpl_cons_tsc(:,:,:,jp_tem), 'T', 1.0_wp, risfcpl_cons_tsc(:,:,:,jp_sal), 'T', 1.0_wp, & 
    696712         &                            risfcpl_cons_vol(:,:,:)       , 'T', 1.0_wp) 
     713#endif 
    697714      ! 
    698715      ! ssh correction (for dynspg_ts) 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/ISF/isfpar.F90

    r13226 r13906  
    8282      ! 
    8383      ! 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 
    8487      CALL lbc_lnk_multi( 'isfmlt', zqh, 'T', 1.0_wp, pqfwf, 'T', 1.0_wp) 
     88#endif 
    8589      ! 
    8690      ! output fluxes 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/LBC/halo_mng.F90

    r13286 r13906  
    9292            zpta = pta(offset+1 : offset+jpi, offset+1 : offset+jpj) 
    9393         END IF 
     94#if defined key_mpi3 
     95         CALL lbc_lnk_nc_multi( 'halo_mng_resize_2D', zpta, cdna, psgn, pfillval=fillval) 
     96#else 
    9497         CALL lbc_lnk( 'halo_mng_resize_2D', zpta, cdna, psgn, pfillval=fillval) 
     98#endif 
    9599         DEALLOCATE(pta) 
    96100         pta => zpta 
     
    122126            zpta = pta(offset+1 : offset+jpi, offset+1 : offset+jpj, :) 
    123127         END IF 
     128#if defined key_mpi3 
     129         CALL lbc_lnk_nc_multi( 'halo_mng_resize_3D', zpta, cdna, psgn, pfillval=fillval) 
     130#else 
    124131         CALL lbc_lnk( 'halo_mng_resize_3D', zpta, cdna, psgn, pfillval=fillval) 
     132#endif 
    125133         DEALLOCATE(pta) 
    126134         pta => zpta 
     
    153161            zpta = pta(offset+1 : offset+jpi, offset+1 : offset+jpj, :, :) 
    154162         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 
    155166         CALL lbc_lnk( 'halo_mng_resize_4D', zpta(:,:,:,fjpt), cdna, psgn, pfillval=fillval) 
     167#endif 
    156168         DEALLOCATE(pta) 
    157169         pta => zpta 
     
    185197            zpta = pta(offset+1 : offset+jpi, offset+1 : offset+jpj, :, :, :) 
    186198         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 
    187202         CALL lbc_lnk( 'halo_mng_resize_5D', zpta(:,:,:,:,fjpt), cdna, psgn, pfillval=fillval) 
     203#endif 
    188204         DEALLOCATE(pta) 
    189205         pta => zpta 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/LBC/lbclnk.F90

    r13226 r13906  
    3939      MODULE PROCEDURE   lbc_lnk_2d_multi_dp , lbc_lnk_3d_multi_dp, lbc_lnk_4d_multi_dp 
    4040   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 
    4149   ! 
    4250   INTERFACE lbc_lnk_icb 
     
    5260   END INTERFACE 
    5361 
    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) 
    5767 
    5868#if   defined key_mpp_mpi 
     
    250260#  undef DIM_4d 
    251261 
     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 
    252404 
    253405   !!---------------------------------------------------------------------- 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/LBC/lib_mpp.F90

    r13741 r13906  
    6666   PUBLIC   mppscatter, mppgather 
    6767   PUBLIC   mpp_ini_znl 
     68   PUBLIC   mpp_ini_nc 
    6869   PUBLIC   mppsend, mpprecv                          ! needed by TAM and ICB routines 
    6970   PUBLIC   mppsend_sp, mpprecv_sp                          ! needed by TAM and ICB routines 
     
    137138   INTEGER         ::   ndim_rank_znl   !  number of processors on the same zonal average 
    138139   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) 
    139144 
    140145   ! North fold condition in mpp_mpi with jpni > 1 (PUBLIC for TAM) 
     
    10671072 
    10681073   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 
    10691221 
    10701222 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/LBC/mppini.F90

    r13556 r13906  
    542542      ij = ijn(narea) 
    543543      ! 
    544       ! set default neighbours 
    545       noso = ii_noso(narea) 
    546       nowe = ii_nowe(narea) 
    547       noea = ii_noea(narea) 
    548       nono = ii_nono(narea) 
    549544      jpi    = ijpi(ii,ij)   
    550545!!$      Nis0  = iis0(ii,ij) 
     
    558553      njmpp = ijmppt(ii,ij) 
    559554      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 
    560614      ! 
    561615      CALL init_doloop                          ! set start/end indices of do-loop, depending on the halo width value (nn_hls)  
     
    648702         ENDIF 
    649703      ENDIF 
     704 
     705      ! 
     706      CALL mpp_ini_nc        ! Initialize communicator for neighbourhood collective communications 
    650707      ! 
    651708      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  
    8585            pah2(ji,jj,jk) = pahs2(ji,jj) * (  zratio + zc * ( 1._wp + TANH( - ( zdep2 - zh ) * zw) )  ) 
    8686         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 
    8790         CALL lbc_lnk( 'ldfc1d_c2d', pah2, 'F', 1.0_wp )   ! Lateral boundary conditions 
     91#endif 
    8892         ! 
    8993      CASE( 'TRA' )                     ! U- and V-points (zdep1 & 2 are an approximation in zps-coord.) 
     
    9599         END_3D 
    96100         ! 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 
    97104         CALL lbc_lnk_multi( 'ldfc1d_c2d', pah1, 'U', 1.0_wp , pah2, 'V', 1.0_wp )    
     105#endif 
    98106         ! 
    99107      CASE DEFAULT                        ! error 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/LDF/ldfdyn.F90

    r13553 r13906  
    398398         ENDIF 
    399399         ! 
     400#if defined key_mpi3 
     401         CALL lbc_lnk_nc_multi( 'ldfdyn', ahmt, 'T', 1.0_wp,  ahmf, 'F', 1.0_wp ) 
     402#else 
    400403         CALL lbc_lnk_multi( 'ldfdyn', ahmt, 'T', 1.0_wp,  ahmf, 'F', 1.0_wp ) 
     404#endif 
    401405         ! 
    402406         ! 
     
    430434            END DO 
    431435            ! 
     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 
    432439            CALL lbc_lnk_multi( 'ldfdyn', dtensq, 'T', 1.0_wp )  ! lbc_lnk on dshesq not needed 
     440#endif 
    433441            ! 
    434442            DO jk = 1, jpkm1 
     
    481489         ENDIF 
    482490         ! 
     491#if defined key_mpi3 
     492         CALL lbc_lnk_nc_multi( 'ldfdyn', ahmt, 'T', 1.0_wp , ahmf, 'F', 1.0_wp ) 
     493#else 
    483494         CALL lbc_lnk_multi( 'ldfdyn', ahmt, 'T', 1.0_wp , ahmf, 'F', 1.0_wp ) 
     495#endif 
    484496         ! 
    485497      END SELECT 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/LDF/ldfslp.F90

    r13553 r13906  
    229229!!gm end modif 
    230230      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  
    231234      CALL lbc_lnk_multi( 'ldfslp', zwz, 'U', -1.0_wp,  zww, 'V', -1.0_wp )      ! lateral boundary conditions 
     235#endif 
    232236      ! 
    233237      !                                    !* horizontal Shapiro filter 
     
    303307!!gm end modif 
    304308      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 
    305312      CALL lbc_lnk_multi( 'ldfslp', zwz, 'T', -1.0_wp,  zww, 'T', -1.0_wp )      ! lateral boundary conditions 
     313#endif 
    306314      ! 
    307315      !                                           !* horizontal Shapiro filter 
     
    348356      ! IV. Lateral boundary conditions 
    349357      ! =============================== 
     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 
    350361      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 
    351363 
    352364      IF(sn_cfctl%l_prtctl) THEN 
     
    580592      wslp2(:,:,1) = 0._wp                ! force the surface wslp to zero 
    581593 
     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 
    582597      CALL lbc_lnk( 'ldfslp', wslp2, 'W', 1.0_wp )      ! lateral boundary confition on wslp2 only   ==>>> gm : necessary ? to be checked 
     598#endif 
    583599      ! 
    584600      IF( ln_timing )   CALL timing_stop('ldf_slp_triad') 
     
    689705      END_2D 
    690706      !!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 
    691710      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 
    692712      ! 
    693713   END SUBROUTINE ldf_slp_mxl 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/LDF/ldftra.F90

    r13898 r13906  
    692692         zaeiw(ji,jj) = MIN( zzaei , paei0 )                                  ! Max value = paei0 
    693693      END_2D 
     694#if defined key_mpi3 
     695      CALL lbc_lnk_nc_multi( 'ldftra', zaeiw(:,:), 'W', 1.0_wp )       ! lateral boundary condition 
     696#else 
    694697      CALL lbc_lnk( 'ldftra', zaeiw(:,:), 'W', 1.0_wp )       ! lateral boundary condition 
     698#endif 
    695699      !                
    696700      DO_2D( 0, 0, 0, 0 )                       !== aei at u- and v-points  ==! 
     
    698702         paeiv(ji,jj,1) = 0.5_wp * ( zaeiw(ji,jj) + zaeiw(ji  ,jj+1) ) * vmask(ji,jj,1) 
    699703      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 
    700707      CALL lbc_lnk_multi( 'ldftra', paeiu(:,:,1), 'U', 1.0_wp , paeiv(:,:,1), 'V', 1.0_wp )      ! lateral boundary condition 
     708#endif 
    701709 
    702710      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  
    418418         !--- we must call lbc_lnk to fill the halos that where not received. 
    419419         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 
    420423            CALL lbc_lnk( 'cpl_oasis3', pdata(:,:,jc), srcv(kid)%clgrid, srcv(kid)%nsgn )    
     424#endif 
    421425         ENDIF 
    422426  
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/SBC/fldread.F90

    r13553 r13906  
    372372         CALL wgt_list( sdjf, iw ) 
    373373         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 
    374377         CALL lbc_lnk( 'fldread', dta_alias(:,:,:), sdjf%cltype, sdjf%zsgn, kfillmode = jpfillcopy ) 
     378#endif 
    375379      ELSE                                          ! default case 
    376380         ! C1D case: If product of spatial dimensions == ipk, then x,y are of 
     
    383387         IF( lk_c1d .AND. lmoor ) THEN 
    384388            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 
    385392            CALL lbc_lnk( 'fldread', dta_alias(:,:,:), 'T', 1., kfillmode = jpfillcopy ) 
     393#endif 
    386394         ELSE 
    387395            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  
    272272      ! =========================== ! 
    273273      !           ! 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 
    274278      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, &  
    275279                      &   gcosv, 'V', -1.0_wp, gsinv, 'V', -1.0_wp, gcosf, 'F', -1.0_wp, gsinf, 'F', -1.0_wp  ) 
     280#endif 
    276281      ! 
    277282   END SUBROUTINE angle 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/SBC/sbc_oce.F90

    r13553 r13906  
    224224         wndm(ji,jj) = SQRT ( ztau * zcoef ) * tmask(ji,jj,1) 
    225225      END_2D 
     226#if defined key_mpi3 
     227      CALL lbc_lnk_nc_multi( 'sbc_oce', wndm(:,:) , 'T', 1.0_wp ) 
     228#else 
    226229      CALL lbc_lnk( 'sbc_oce', wndm(:,:) , 'T', 1.0_wp ) 
     230#endif 
    227231      ! 
    228232   END SUBROUTINE sbc_tau2wnd 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/SBC/sbcblk.F90

    r13553 r13906  
    757757 
    758758         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 
    759762            CALL lbc_lnk_multi( 'sbcblk', utau, 'U', -1., vtau, 'V', -1., taum, 'T', -1. ) 
     763#endif 
    760764         ELSE 
     765#if defined key_mpi3 
     766            CALL lbc_lnk_nc_multi( 'sbcblk', utau, 'U', -1., vtau, 'V', -1. ) 
     767#else 
    761768            CALL lbc_lnk_multi( 'sbcblk', utau, 'U', -1., vtau, 'V', -1. ) 
     769#endif 
    762770         ENDIF 
    763771 
     
    981989            pvtaui(ji,jj) = zztmp2 * ( pvtaui(ji,jj) + pvtaui(ji  ,jj+1) ) 
    982990         END_2D 
     991#if defined key_mpi3 
     992         CALL lbc_lnk_nc_multi( 'sbcblk', putaui, 'U', -1._wp, pvtaui, 'V', -1._wp ) 
     993#else 
    983994         CALL lbc_lnk_multi( 'sbcblk', putaui, 'U', -1._wp, pvtaui, 'V', -1._wp ) 
     995#endif 
    984996         ! 
    985997         IF(sn_cfctl%l_prtctl)  CALL prt_ctl( tab2d_1=putaui  , clinfo1=' blk_ice: putaui : '   & 
     
    14591471         ! 
    14601472      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 
    14611476      CALL lbc_lnk_multi( 'sbcblk', pcd, 'T',  1.0_wp, pch, 'T', 1.0_wp ) 
     1477#endif 
    14621478      ! 
    14631479   END SUBROUTINE Cdn10_Lupkes2015 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/SBC/sbccpl.F90

    r13553 r13906  
    11991199                  frcv(jpr_oty1)%z3(ji,jj,1) = 0.5 * ( frcv(jpr_oty1)%z3(ji  ,jj+1,1) + frcv(jpr_oty1)%z3(ji,jj,1) ) 
    12001200               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 
    12011204               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 
    12021206            ENDIF 
    12031207            llnewtx = .TRUE. 
     
    12241228               frcv(jpr_taum)%z3(ji,jj,1) = 0.5 * SQRT( zzx * zzx + zzy * zzy ) 
    12251229            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 
    12261233            CALL lbc_lnk( 'sbccpl', frcv(jpr_taum)%z3(:,:,1), 'T', 1.0_wp ) 
     1234#endif 
    12271235            llnewtau = .TRUE. 
    12281236         ELSE 
     
    15931601               p_tauj(ji,jj) = zztmp2 * ( frcv(jpr_ity1)%z3(ji  ,jj+1,1) + frcv(jpr_ity1)%z3(ji,jj,1) ) 
    15941602            END_2D 
     1603#if defined key_mpi3 
     1604            CALL lbc_lnk_nc_multi( 'sbccpl', p_taui, 'U',  -1., p_tauj, 'V',  -1. ) 
     1605#else 
    15951606            CALL lbc_lnk_multi( 'sbccpl', p_taui, 'U',  -1., p_tauj, 'V',  -1. ) 
     1607#endif 
    15961608         END SELECT 
    15971609          
     
    24832495                  zity1(ji,jj) = 0.5 * ( v_ice(ji,jj  )     + v_ice(ji  ,jj-1  )     ) *  fr_i(ji,jj) 
    24842496               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 
    24852500               CALL lbc_lnk_multi( 'sbccpl', zitx1, 'T', -1.0_wp, zity1, 'T', -1.0_wp ) 
     2501#endif 
    24862502            CASE( 'mixed oce-ice'        )      ! Ocean and Ice on C-grid ==> T 
    24872503               DO_2D( 0, 0, 0, 0 ) 
     
    24922508               END_2D 
    24932509            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 
    24942513            CALL lbc_lnk_multi( 'sbccpl', zotx1, ssnd(jps_ocx1)%clgrid, -1.0_wp,  zoty1, ssnd(jps_ocy1)%clgrid, -1.0_wp ) 
     2514#endif 
    24952515            ! 
    24962516         ENDIF 
     
    25602580                zity1(ji,jj) = 0.5 * ( v_ice(ji,jj  ) + v_ice(ji  ,jj-1  ) ) *  fr_i(ji,jj)  
    25612581             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 
    25622585             CALL lbc_lnk_multi( 'sbccpl', zitx1, 'T', -1.0_wp,  zity1, 'T', -1.0_wp )  
     2586#endif 
    25632587          CASE( 'mixed oce-ice'        )      ! Ocean and Ice on C-grid ==> T   
    25642588             DO_2D( 0, 0, 0, 0 ) 
     
    25692593             END_2D 
    25702594          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 
    25712598         CALL lbc_lnk_multi( 'sbccpl', zotx1, ssnd(jps_ocxw)%clgrid, -1.0_wp, zoty1, ssnd(jps_ocyw)%clgrid, -1.0_wp )  
     2599#endif 
    25722600         !  
    25732601         !  
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/SBC/sbcflx.F90

    r13898 r13906  
    145145         ! 
    146146         ! 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 
    147151         CALL lbc_lnk_multi( 'sbcflx', utau, 'U', -1._wp, vtau, 'V', -1._wp, & 
    148152            &                           qns, 'T',  1._wp, emp , 'T',  1._wp, qsr, 'T', 1._wp ) !! sfx, 'T', 1._wp  ) 
     153#endif 
    149154         ! 
    150155         IF( nitend-nit000 <= 100 .AND. lwp ) THEN                ! control print (if less than 100 time-step asked) 
     
    172177      END_2D 
    173178      ! 
     179#if defined key_mpi3 
     180      CALL lbc_lnk_nc_multi( 'sbcflx', taum, 'T', 1._wp, wndm, 'T', 1._wp ) 
     181#else 
    174182      CALL lbc_lnk_multi( 'sbcflx', taum, 'T', 1._wp, wndm, 'T', 1._wp ) 
     183#endif 
    175184      ! 
    176185   END SUBROUTINE sbc_flx 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/SBC/sbcfwb.F90

    r13741 r13906  
    181181            ! 
    182182!!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 
    183186            CALL lbc_lnk( 'sbcfwb', zerp_cor, 'T', 1.0_wp ) 
     187#endif 
    184188            ! 
    185189            emp(:,:) = emp(:,:) + zerp_cor(:,:) 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/SBC/sbcice_cice.F90

    r13295 r13906  
    222222      END_2D 
    223223 
     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 
    224227      CALL lbc_lnk_multi( 'sbcice_cice', fr_iu , 'U', 1.0_wp,  fr_iv , 'V', 1.0_wp ) 
     228#endif 
    225229 
    226230      ! set the snow+ice mass 
     
    506510         ss_iou(ji,jj) = 0.5 * ( ztmp1(ji,jj-1) + ztmp1(ji,jj) ) * umask(ji,jj,1) 
    507511      END_2D 
     512#if defined key_mpi3 
     513      CALL lbc_lnk_nc_multi( 'sbcice_cice', ss_iou , 'U', -1.0_wp ) 
     514#else 
    508515      CALL lbc_lnk( 'sbcice_cice', ss_iou , 'U', -1.0_wp ) 
     516#endif 
    509517 
    510518! y comp of ocean-ice stress  
     
    516524         ss_iov(ji,jj) = 0.5 * ( ztmp1(ji-1,jj) + ztmp1(ji,jj) ) * vmask(ji,jj,1) 
    517525      END_2D 
     526#if defined key_mpi3 
     527      CALL lbc_lnk_nc_multi( 'sbcice_cice', ss_iov , 'V', -1.0_wp ) 
     528#else 
    518529      CALL lbc_lnk( 'sbcice_cice', ss_iov , 'V', -1.0_wp ) 
     530#endif 
    519531 
    520532! x and y comps of surface stress 
     
    569581      fmmflx(:,:) = ztmp1(:,:) !!Joakim edit 
    570582       
     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 
    571586      CALL lbc_lnk_multi( 'sbcice_cice', emp , 'T', 1.0_wp, sfx , 'T', 1.0_wp ) 
     587#endif 
    572588 
    573589! Solar penetrative radiation and non solar surface heat flux 
     
    595611#endif 
    596612      qsr(:,:)=qsr(:,:)+ztmp1(:,:) 
     613#if defined key_mpi3 
     614      CALL lbc_lnk_nc_multi( 'sbcice_cice', qsr , 'T', 1.0_wp ) 
     615#else 
    597616      CALL lbc_lnk( 'sbcice_cice', qsr , 'T', 1.0_wp ) 
     617#endif 
    598618 
    599619      DO_2D( 1, 1, 1, 1 ) 
     
    608628      qns(:,:)=qns(:,:)+nfrzmlt(:,:)+ztmp1(:,:) 
    609629 
     630#if defined key_mpi3 
     631      CALL lbc_lnk_nc_multi( 'sbcice_cice', qns , 'T', 1.0_wp ) 
     632#else 
    610633      CALL lbc_lnk( 'sbcice_cice', qns , 'T', 1.0_wp ) 
     634#endif 
    611635 
    612636! Prepare for the following CICE time-step 
     
    626650      END_2D 
    627651 
     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 
    628655      CALL lbc_lnk_multi( 'sbcice_cice', fr_iu , 'U', 1.0_wp, fr_iv , 'V', 1.0_wp ) 
     656#endif 
    629657 
    630658      ! set the snow+ice mass 
     
    848876!     A. Ensure all haloes are filled in NEMO field (pn) 
    849877 
     878#if defined key_mpi3 
     879      CALL lbc_lnk_nc_multi( 'sbcice_cice', pn , cd_type, psgn ) 
     880#else 
    850881      CALL lbc_lnk( 'sbcice_cice', pn , cd_type, psgn ) 
     882#endif 
    851883 
    852884#if defined key_nemocice_decomp 
     
    10231055!     D. Ensure all haloes are filled in pn 
    10241056 
     1057#if defined key_mpi3 
     1058      CALL lbc_lnk_nc_multi( 'sbcice_cice', pn , cd_type, psgn ) 
     1059#else 
    10251060      CALL lbc_lnk( 'sbcice_cice', pn , cd_type, psgn ) 
     1061#endif 
    10261062 
    10271063   END SUBROUTINE cice2nemo 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/SBC/sbcmod.F90

    r13831 r13906  
    464464         ! A lbc_lnk is therefore needed to ensure reproducibility and restartability. 
    465465         ! 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 
    466469         IF( .NOT. ln_passive_mode ) CALL lbc_lnk( 'sbcmod', emp, 'T', 1.0_wp ) ! ensure restartability with icebergs 
     470#endif 
    467471      ENDIF 
    468472 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/SBC/sbcwave.F90

    r13553 r13906  
    199199      ENDIF 
    200200 
     201#if defined key_mpi3 
     202      CALL lbc_lnk_nc_multi( 'sbcwave', usd, 'U', -1.0_wp, vsd, 'V', -1.0_wp ) 
     203#else 
    201204      CALL lbc_lnk_multi( 'sbcwave', usd, 'U', -1.0_wp, vsd, 'V', -1.0_wp ) 
     205#endif 
    202206 
    203207      ! 
     
    212216      END_3D 
    213217      ! 
     218#if defined key_mpi3 
     219      CALL lbc_lnk_nc_multi( 'sbcwave', ze3divh, 'T', 1.0_wp ) 
     220#else 
    214221      CALL lbc_lnk( 'sbcwave', ze3divh, 'T', 1.0_wp ) 
     222#endif 
    215223      ! 
    216224      IF( ln_linssh ) THEN   ;   ik = 1   ! none zero velocity through the sea surface 
     
    271279            taum(ji,jj) = SQRT( tauw_x(ji,jj)*tauw_x(ji,jj) + tauw_y(ji,jj)*tauw_y(ji,jj) ) 
    272280         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 
    273284         CALL lbc_lnk_multi( 'sbcwave', utau(:,:), 'U', -1.0_wp , vtau(:,:), 'V', -1.0_wp , taum(:,:) , 'T', -1.0_wp ) 
     285#endif 
    274286      ENDIF 
    275287      ! 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/STO/stopar.F90

    r13295 r13906  
    174174          ! Apply horizontal Laplacian filter to w 
    175175          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 
    176179            CALL lbc_lnk( 'stopar', sto2d(:,:,jsto), sto2d_typ(jsto), sto2d_sgn(jsto) ) 
     180#endif 
    177181            CALL sto_par_flt( sto2d(:,:,jsto) ) 
    178182          END DO 
     
    197201 
    198202        ! 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 
    199206        CALL lbc_lnk( 'stopar', sto2d(:,:,jsto), sto2d_typ(jsto), sto2d_sgn(jsto) ) 
     207#endif 
    200208      END DO 
    201209      ! 
     
    212220             ! Apply horizontal Laplacian filter to w 
    213221             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 
    214225               CALL lbc_lnk( 'stopar', sto3d(:,:,jk,jsto), sto3d_typ(jsto), sto3d_sgn(jsto) ) 
     226#endif 
    215227               CALL sto_par_flt( sto3d(:,:,jk,jsto) ) 
    216228             END DO 
     
    235247         END DO 
    236248         ! 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 
    237252         CALL lbc_lnk( 'stopar', sto3d(:,:,:,jsto), sto3d_typ(jsto), sto3d_sgn(jsto) ) 
     253#endif 
    238254      END DO 
    239255      ! 
     
    642658         ! Apply horizontal Laplacian filter to w 
    643659         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 
    644663            CALL lbc_lnk( 'stopar', sto2d(:,:,jsto), sto2d_typ(jsto), sto2d_sgn(jsto) ) 
     664#endif 
    645665            CALL sto_par_flt( sto2d(:,:,jsto) ) 
    646666         END DO 
     
    659679            ! Apply horizontal Laplacian filter to w 
    660680            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 
    661684               CALL lbc_lnk( 'stopar', sto3d(:,:,jk,jsto), sto3d_typ(jsto), sto3d_sgn(jsto) ) 
     685#endif 
    662686               CALL sto_par_flt( sto3d(:,:,jk,jsto) ) 
    663687            END DO 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/STO/stopts.F90

    r13295 r13906  
    5454 
    5555      DO jts = 1, jpts 
     56#if defined key_mpi3 
     57        CALL lbc_lnk_nc_multi( 'stopts', pts(:,:,:,jts), 'T' , 1._wp ) 
     58#else 
    5659        CALL lbc_lnk( 'stopts', pts(:,:,:,jts), 'T' , 1._wp ) 
     60#endif 
    5761      ENDDO 
    5862 
     
    119123      DO jdof = 1, nn_sto_eos 
    120124         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 
    121128            CALL lbc_lnk( 'stopts', pts_ran(:,:,:,jts,jdof), 'T' , 1._wp ) 
     129#endif 
    122130         END DO 
    123131      END DO 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/TRA/traadv.F90

    r13898 r13906  
    179179            CALL tra_adv_cen    ( kt, nit000, 'TRA',         zuu, zvv, zww, Kmm, pts, jpts, Krhs, nn_cen_h, nn_cen_v ) 
    180180         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 
    183190            CALL tra_adv_fct    ( kt, nit000, 'TRA', rDt, zuu, zvv, zww, Kbb, Kmm, pts, jpts, Krhs, nn_fct_h, nn_fct_v ) 
    184191         CASE ( np_MUS )                                 ! MUSCL 
    185192            ! 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 
    186196            IF (nn_hls.EQ.2) CALL lbc_lnk_multi( 'traadv', pts(:,:,:,:,Kbb), 'T', 1.) 
     197#endif 
    187198            CALL tra_adv_mus    ( kt, nit000, 'TRA', rDt, zuu, zvv, zww, Kbb, Kmm, pts, jpts, Krhs, ln_mus_ups ) 
    188199         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 
    189203            IF (nn_hls.EQ.2) CALL lbc_lnk_multi( 'traadv', pts(:,:,:,:,Kbb), 'T', 1.) 
     204#endif 
    190205            CALL tra_adv_ubs    ( kt, nit000, 'TRA', rDt, zuu, zvv, zww, Kbb, Kmm, pts, jpts, Krhs, nn_ubs_v   ) 
    191206         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 
    194216            CALL tra_adv_qck    ( kt, nit000, 'TRA', rDt, zuu, zvv, zww, Kbb, Kmm, pts, jpts, Krhs ) 
    195217         ! 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/TRA/traadv_cen.F90

    r13898 r13906  
    119119               ztv(ji,jj,jk) = ( pt(ji  ,jj+1,jk,jn,Kmm) - pt(ji,jj,jk,jn,Kmm) ) * vmask(ji,jj,jk) 
    120120            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 
    121124            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 
    122126            ! 
    123127            DO_3D( nn_hls-1, 0, nn_hls-1, 0, 1, jpkm1 )           ! Horizontal advective fluxes 
     
    131135               zwy(ji,jj,jk) =  0.5_wp * pV(ji,jj,jk) * zC4t_v 
    132136            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 
    133140            IF (nn_hls.EQ.1) CALL lbc_lnk_multi( 'traadv_cen', zwx, 'U', -1. , zwy, 'V', -1. ) 
     141#endif 
    134142            ! 
    135143         CASE DEFAULT 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/TRA/traadv_fct.F90

    r13903 r13906  
    112112         ! 
    113113      ENDIF 
     114 
    114115      !! -- init to 0 
    115116      zwi(:,:,:) = 0._wp 
     
    237238               END_2D 
    238239            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 
    239243            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 
    242247               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 
    243248               zC2t_v = pt(ji,jj,jk,jn,Kmm) + pt(ji  ,jj+1,jk,jn,Kmm) 
     
    255260               ztv(ji,jj,jk) = ( pt(ji  ,jj+1,jk,jn,Kmm) - pt(ji,jj,jk,jn,Kmm) ) * vmask(ji,jj,jk) 
    256261            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 
    257265            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 
    258267            ! 
    259268            DO_3D( 0, 0, 0, 0, 1, jpkm1 )    ! Horizontal advective fluxes 
     
    452461         END_2D 
    453462      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 
    454466      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 
    455468 
    456469      ! 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  
    140140         END_3D 
    141141         ! 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 
    142145         IF ( nn_hls.EQ.1 ) CALL lbc_lnk_multi( 'traadv_mus', zwx, 'U', -1.0_wp , zwy, 'V', -1.0_wp ) 
     146#endif 
    143147         !                                !-- Slopes of tracer 
    144148         zslpx(:,:,jpk) = 0._wp                 ! bottom values 
     
    176180            zwy(ji,jj,jk) = pV(ji,jj,jk) * ( zalpha * zzwx + (1.-zalpha) * zzwy ) 
    177181         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 
    178185         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 
    179187         ! 
    180188         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  
    150150            zfd(ji,jj,jk) = pt(ji+1,jj,jk,jn,Kbb)        ! Downstream in the x-direction for the tracer 
    151151         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 
    152155         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 
    153157          
    154158         ! 
     
    168172         END_3D 
    169173         !--- 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 
    170177         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 
    171179 
    172180         !--- QUICKEST scheme 
     
    177185            zfu(ji,jj,jk) = tmask(ji-1,jj,jk) + tmask(ji,jj,jk) + tmask(ji+1,jj,jk) - 2. 
    178186         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 
    179190         IF (nn_hls.EQ.1) CALL lbc_lnk( 'traadv_qck', zfu(:,:,:), 'T', 1.0_wp )      ! Lateral boundary conditions 
     191#endif 
    180192 
    181193         ! 
     
    240252            END_2D 
    241253         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 
    242257         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 
    244259          
    245260         ! 
     
    261276 
    262277         !--- 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 
    263281         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 
    264283 
    265284         !--- QUICKEST scheme 
     
    270289            zfu(ji,jj,jk) = tmask(ji,jj-1,jk) + tmask(ji,jj,jk) + tmask(ji,jj+1,jk) - 2. 
    271290         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 
    272294         IF (nn_hls.EQ.1) CALL lbc_lnk( 'traadv_qck', zfu(:,:,:), 'T', 1.0_wp )    !--- Lateral boundary conditions 
     295#endif 
    273296         ! 
    274297         ! Tracer flux on the x-direction 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/TRA/traadv_ubs.F90

    r13898 r13906  
    140140            !                                     
    141141         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 
    142145         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 
    143147         !     
    144148         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  
    110110#endif 
    111111      !                                              ! 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 
    112115      CALL lbc_lnk_multi( 'traatf', pts(:,:,:,jp_tem,Kaa), 'T', 1.0_wp, pts(:,:,:,jp_sal,Kaa), 'T', 1.0_wp ) 
     116#endif 
    113117      ! 
    114118      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  
    142142            ! lateral boundary conditions ; just need for outputs 
    143143            ! 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 
    144147            CALL lbc_lnk_multi( 'trabbl', utr_bbl, 'U', 1.0_wp , vtr_bbl, 'V', 1.0_wp ) 
     148#endif 
    145149            CALL iom_put( "uoce_bbl", utr_bbl )  ! bbl i-transport 
    146150            CALL iom_put( "voce_bbl", vtr_bbl )  ! bbl j-transport 
     
    524528      ! converte into REAL to use lbc_lnk ; impose a min value of 1 as a zero can be set in lbclnk 
    525529      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 
    526533      CALL lbc_lnk_multi( 'trabbl', zmbku,'U',1.0_wp, zmbkv,'V',1.0_wp)  
     534#endif 
    527535      mbku_d(:,:) = MAX( INT( zmbku(:,:) ), 1 ) ;  mbkv_d(:,:) = MAX( NINT( zmbkv(:,:) ), 1 ) 
    528536      ! 
     
    543551         e3v_bbl_0(ji,jj) = MIN( e3v_0(ji,jj,mbkt(ji  ,jj+1)), e3v_0(ji,jj,mbkt(ji,jj)) ) 
    544552      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 
    545556      CALL lbc_lnk_multi( 'trabbl', e3u_bbl_0, 'U', 1.0_wp , e3v_bbl_0, 'V', 1.0_wp )      ! lateral boundary conditions 
     557#endif 
    546558      ! 
    547559      !                             !* masked diffusive flux coefficients 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/TRA/traldf_lap_blp.F90

    r13898 r13906  
    237237      ! 
    238238      ! 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 
    239242      CALL lbc_lnk( 'traldf_lap_blp', zlap(:,:,:,:) , 'T', 1.0_wp )     ! Lateral boundary conditions (unchanged sign) 
     243#endif 
    240244      !                                               ! Partial top/bottom cell: GRADh( zlap )   
    241245      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  
    307307               rfv(ji,jj) = SQRT(  zfv * zfv + z1_t2 ) 
    308308            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 
    309312            IF (nn_hls.EQ.1) CALL lbc_lnk_multi( 'tramle', rfu, 'U', 1.0_wp , rfv, 'V', 1.0_wp ) 
     313#endif 
    310314            ! 
    311315         ELSEIF( nn_mle == 1 ) THEN           ! MLE array allocation & initialisation 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/TRA/trazdf.F90

    r13898 r13906  
    9898         ! NOTE: [tiling-comms-merge] The diagnostic results change along the north fold if this is removed 
    9999!!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 
    100103         CALL lbc_lnk_multi( 'trazdf', ztrdt, 'T', 1.0_wp , ztrds, 'T', 1.0_wp ) 
     104#endif 
    101105!!gm 
    102106         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  
    172172      END DO 
    173173      ! 
     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 
    174177      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 
    175179      !                 
    176180      IF( PRESENT( prd ) ) THEN    !==  horizontal derivative of density anomalies (rd)  ==!    (optional part) 
     
    205209            ENDIF 
    206210         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 
    207214         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 
    208216         ! 
    209217      END IF 
     
    356364      END DO 
    357365      ! 
     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 
    358369      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 
    359371 
    360372      ! horizontal derivative of density anomalies (rd) 
     
    398410         END_2D 
    399411 
     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 
    400415         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 
    401417         ! 
    402418      END IF 
     
    449465         ! 
    450466      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 
    451470      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 
    452472 
    453473      IF( PRESENT( prd ) ) THEN    !==  horizontal derivative of density anomalies (rd)  ==!    (optional part) 
     
    488508 
    489509         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 
    490513         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 
    491515         ! 
    492516      END IF   
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/TRD/trddyn.F90

    r13553 r13906  
    128128                                 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) ) 
    129129                              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 
    130133                              CALL lbc_lnk_multi( 'trddyn', z3dx, 'U', -1.0_wp, z3dy, 'V', -1.0_wp ) 
     134#endif 
    131135                              CALL iom_put( "utrd_udx", z3dx  ) 
    132136                              CALL iom_put( "vtrd_vdy", z3dy  ) 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/TRD/trdken.F90

    r13295 r13906  
    9090      !!---------------------------------------------------------------------- 
    9191      ! 
     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 
    9295      CALL lbc_lnk_multi( 'trdken', putrd, 'U', -1.0_wp , pvtrd, 'V', -1.0_wp )      ! lateral boundary conditions 
     96#endif 
    9397      ! 
    9498      nkstp = kt 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/TRD/trdmxl.F90

    r13553 r13906  
    472472         !-- Lateral boundary conditions 
    473473         !         ... 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 
    474479         CALL lbc_lnk_multi( 'trdmxl', ztmltot , 'T', 1.0_wp, zsmltot , 'T', 1.0_wp, & 
    475480                  &          ztmlres , 'T', 1.0_wp, zsmlres , 'T', 1.0_wp, & 
    476481                  &          ztmlatf , 'T', 1.0_wp, zsmlatf , 'T', 1.0_wp ) 
     482#endif 
    477483 
    478484 
     
    523529         !-- Lateral boundary conditions 
    524530         !         ... 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 
    525537         CALL lbc_lnk_multi( 'trdmxl', ztmltot2, 'T', 1.0_wp, zsmltot2, 'T', 1.0_wp, & 
    526538                  &          ztmlres2, 'T', 1.0_wp, zsmlres2, 'T', 1.0_wp ) 
    527539         ! 
    528540         CALL lbc_lnk_multi( 'trdmxl', ztmltrd2(:,:,:), 'T', 1.0_wp, zsmltrd2(:,:,:), 'T', 1.0_wp ) ! /  in the NetCDF trends file 
     541#endif 
    529542          
    530543         ! III.3 Time evolution array swap 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/TRD/trdtra.F90

    r13553 r13906  
    210210      !!---------------------------------------------------------------------- 
    211211      ! 
    212       SELECT CASE( cdir )      ! shift depending on the direction 
     212      SELECT CASE( cdir )             ! shift depending on the direction 
    213213      CASE( 'X' )   ;   ii = 1   ;   ij = 0   ;   ik = 0      ! i-trend 
    214214      CASE( 'Y' )   ;   ii = 0   ;   ij = 1   ;   ik = 0      ! j-trend 
     
    216216      END SELECT 
    217217      ! 
    218       !                        ! set to zero uncomputed values 
     218      !                               ! set to zero uncomputed values 
    219219      ptrd(jpi,:,:) = 0._wp   ;   ptrd(1,:,:) = 0._wp 
    220220      ptrd(:,jpj,:) = 0._wp   ;   ptrd(:,1,:) = 0._wp 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/TRD/trdvor.F90

    r13553 r13906  
    162162 
    163163      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 
    164167      CALL lbc_lnk_multi( 'trdvor', putrdvor, 'U', -1.0_wp , pvtrdvor, 'V', -1.0_wp )      ! lateral boundary condition 
     168#endif 
    165169       
    166170 
     
    251255      zvdpvor(:,:) = 0._wp 
    252256      !                            ! 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 
    253260      CALL lbc_lnk_multi( 'trdvor', putrdvor, 'U', -1.0_wp , pvtrdvor, 'V', -1.0_wp ) 
     261#endif 
    254262 
    255263      !  ===================================== 
     
    400408 
    401409         ! 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 
    402413         CALL lbc_lnk_multi( 'trdvor', vor_avrtot, 'F', 1.0_wp , vor_avrres, 'F', 1.0_wp ) 
     414#endif 
    403415 
    404416 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/USR/usrdef_fmask.F90

    r13553 r13906  
    153153      ENDIF 
    154154      ! 
     155#if defined key_mpi3 
     156      CALL lbc_lnk_nc_multi( 'usrdef_fmask', pfmsk, 'F', 1._wp )      ! Lateral boundary conditions on fmask 
     157#else 
    155158      CALL lbc_lnk( 'usrdef_fmask', pfmsk, 'F', 1._wp )      ! Lateral boundary conditions on fmask 
     159#endif 
    156160      ! 
    157161   END SUBROUTINE usr_def_fmask 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/USR/usrdef_sbc.F90

    r13295 r13906  
    181181         wndm(ji,jj) = SQRT( zmod * zcoef ) 
    182182      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 
    183186      CALL lbc_lnk_multi( 'usrdef_sbc', taum(:,:), 'T', 1.0_wp , wndm(:,:), 'T', 1.0_wp ) 
     187#endif 
    184188 
    185189      ! ---------------------------------- ! 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/ZDF/zdfosm.F90

    r13553 r13906  
    12231223 
    12241224       ! 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 
    12251228       CALL lbc_lnk( 'zdfosm', zviscos(:,:,:), 'W', 1.0_wp ) 
     1229#endif 
    12261230 
    12271231       ! GN 25/8: need to change tmask --> wmask 
     
    12321236     END_3D 
    12331237      ! 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 
    12341242     CALL lbc_lnk_multi( 'zdfosm', p_avt, 'W', 1.0_wp , p_avm, 'W', 1.0_wp,   & 
    12351243      &                  ghamu, 'W', 1.0_wp , ghamv, 'W', 1.0_wp ) 
     1244#endif 
    12361245       DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
    12371246            ghamu(ji,jj,jk) = ( ghamu(ji,jj,jk) + ghamu(ji+1,jj,jk) ) & 
     
    12461255        ! Lateral boundary conditions on final outputs for gham[ts],  on W-grid  (sign unchanged) 
    12471256        ! 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 
    12481261        CALL lbc_lnk_multi( 'zdfosm', ghamt, 'W', 1.0_wp , ghams, 'W', 1.0_wp,   & 
    12491262         &                  ghamu, 'U', 1.0_wp , ghamv, 'V', 1.0_wp ) 
     1263#endif 
    12501264 
    12511265       IF(ln_dia_osm) THEN 
     
    12871301      END IF 
    12881302      ! 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 
    12891306      CALL lbc_lnk( 'zdfosm', p_avt(:,:,:), 'W', 1.0_wp ) 
     1307#endif 
    12901308      ! 
    12911309   END SUBROUTINE zdf_osm 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/ZDF/zdfphy.F90

    r13741 r13906  
    313313      !                                         !* Lateral boundary conditions (sign unchanged) 
    314314      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 
    315319         CALL lbc_lnk_multi( 'zdfphy', avm_k, 'W', 1.0_wp , avt_k, 'W', 1.0_wp,   & 
    316320            &                avm  , 'W', 1.0_wp , avt  , 'W', 1.0_wp , avs , 'W', 1.0_wp ) 
     321#endif 
    317322      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 
    318326         CALL lbc_lnk_multi( 'zdfphy', avm  , 'W', 1.0_wp , avt  , 'W', 1.0_wp , avs , 'W', 1.0_wp ) 
     327#endif 
    319328      ENDIF 
    320329      ! 
    321330      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 
    322336         IF( ln_isfcav ) THEN   ;  CALL lbc_lnk_multi( 'zdfphy', rCdU_top, 'T', 1.0_wp , rCdU_bot, 'T', 1.0_wp )   ! top & bot drag 
    323337         ELSE                   ;  CALL lbc_lnk      ( 'zdfphy', rCdU_bot, 'T', 1.0_wp )                       ! bottom drag only 
    324338         ENDIF 
     339#endif 
    325340      ENDIF 
    326341      ! 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/lib_fortran.F90

    r13327 r13906  
    229229         ENDIF 
    230230      END_2D 
     231#if defined key_mpi3 
     232      CALL lbc_lnk_nc_multi( 'lib_fortran', p2d, 'T', 1.0_wp ) 
     233#else 
    231234      CALL lbc_lnk( 'lib_fortran', p2d, 'T', 1.0_wp ) 
     235#endif 
    232236      ! no need for 2nd exchange when nn_hls = 2 
    233237      IF( nn_hls /= 2 ) THEN 
     
    248252            IF( MOD(mjg(jpj-2), 3) == 0 )   p2d(:,jpj-1) = p2d(:,  jpj) 
    249253         ENDIF 
     254#if defined key_mpi3 
     255         CALL lbc_lnk_nc_multi( 'lib_fortran', p2d, 'T', 1.0_wp ) 
     256#else 
    250257         CALL lbc_lnk( 'lib_fortran', p2d, 'T', 1.0_wp ) 
     258#endif 
    251259      ENDIF 
    252260 
     
    284292         END_2D 
    285293      END DO 
     294#if defined key_mpi3 
     295      CALL lbc_lnk_nc_multi( 'lib_fortran', p3d, 'T', 1.0_wp ) 
     296#else 
    286297      CALL lbc_lnk( 'lib_fortran', p3d, 'T', 1.0_wp ) 
     298#endif 
    287299      ! no need for 2nd exchange when nn_hls = 2 
    288300      IF( nn_hls /= 2 ) THEN 
     
    303315            IF( MOD(mjg(jpj-2), 3) == 0 )   p3d(:,jpj-1,:) = p3d(:,  jpj,:) 
    304316         ENDIF 
     317#if defined key_mpi3 
     318         CALL lbc_lnk_nc_multi( 'lib_fortran', p3d, 'T', 1.0_wp ) 
     319#else 
    305320         CALL lbc_lnk( 'lib_fortran', p3d, 'T', 1.0_wp ) 
     321#endif 
    306322      ENDIF 
    307323 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/module_example

    r13553 r13906  
    127127      END SELECT 
    128128      ! 
     129#if defined key_mpi3 
     130      CALL lbc_lnk_nc_multi( 'module_example', avm, 'T', 1. )              ! Lateral boundary conditions (unchanged sign) 
     131#else 
    129132      CALL lbc_lnk( 'module_example', avm, 'T', 1. )              ! Lateral boundary conditions (unchanged sign) 
     133#endif 
    130134      ! 
    131135   END SUBROUTINE exa_mpl 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/OCE/stpMLF.F90

    r13237 r13906  
    457457#endif 
    458458      !                                        ! 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 
    459463      CALL lbc_lnk_multi( 'finalize_sbc', puu(:,:,:,       Kaa), 'U', -1., pvv(:,:,:       ,Kaa), 'V', -1.   & 
    460464                       &                , pts(:,:,:,jp_tem,Kaa), 'T',  1., pts(:,:,:,jp_sal,Kaa), 'T',  1. )     !* local domain boundaries 
     465#endif 
    461466      ! 
    462467      !                                        !* BDY open boundaries 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/SWE/asminc.F90

    r13553 r13906  
    423423                     &            / e3t(ji,jj,jk,Kmm) 
    424424               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 
    425428               CALL lbc_lnk( 'asminc', zhdiv, 'T', 1. )   ! lateral boundary cond. (no sign change) 
     429#endif 
    426430               ! 
    427431               DO_2D( 0, 0, 0, 0 ) 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/SWE/diawri.F90

    r13295 r13906  
    184184               &                  + e3t(ji+1,jj,1,Kmm) * e1e2t(ji+1,jj)  ) * r1_e1e2u(ji,jj) 
    185185         END_2D 
     186#if defined key_mpi3 
     187         CALL lbc_lnk_nc_multi( 'diawri', z2d, 'U', 1._wp ) 
     188#else 
    186189         CALL lbc_lnk( 'diawri', z2d, 'U', 1._wp ) 
     190#endif 
    187191         CALL iom_put( "hu", z2d )  
    188192      ENDIF 
     
    194198              &                    + e3t(ji,jj  ,1,Kmm) * e1e2t(ji,jj  )   ) * r1_e1e2v(ji,jj) 
    195199         END_2D 
     200#if defined key_mpi3 
     201         CALL lbc_lnk_nc_multi( 'diawri', z2d, 'V', 1._wp ) 
     202#else 
    196203         CALL lbc_lnk( 'diawri', z2d, 'V', 1._wp ) 
     204#endif 
    197205         CALL iom_put( "hv", z2d )     
    198206      ENDIF              
     
    205213         END_2D 
    206214         z2d(:,:) = z2d(:,:) * ssfmask(:,:) 
     215#if defined key_mpi3 
     216         CALL lbc_lnk_nc_multi( 'diawri', z2d, 'F', 1._wp ) 
     217#else 
    207218         CALL lbc_lnk( 'diawri', z2d, 'F', 1._wp ) 
     219#endif 
    208220         CALL iom_put( "hf", z2d )    
    209221      ENDIF               
     
    224236            ! 
    225237         END_2D 
     238#if defined key_mpi3 
     239         CALL lbc_lnk_nc_multi( 'diawri', z2d, 'T', 1. ) 
     240#else 
    226241         CALL lbc_lnk( 'diawri', z2d, 'T', 1. ) 
     242#endif 
    227243         CALL iom_put( "taubot", z2d )            
    228244      ENDIF 
     
    243259         END_2D 
    244260         ! 
     261#if defined key_mpi3 
     262         CALL lbc_lnk_nc_multi( 'diawri', z2d, 'T', 1. ) 
     263#else 
    245264         CALL lbc_lnk( 'diawri', z2d, 'T', 1. ) 
     265#endif 
    246266         IF ( iom_use("sKE" ) )  CALL iom_put( "sKE" , z2d )    
    247267                            
     
    259279         END_2D 
    260280         ! 
     281#if defined key_mpi3 
     282         CALL lbc_lnk_nc_multi( 'diawri', z2d, 'F', 1. ) 
     283#else 
    261284         CALL lbc_lnk( 'diawri', z2d, 'F', 1. ) 
     285#endif 
    262286         CALL iom_put( "sKEf", z2d )                      
    263287      ENDIF 
     
    277301            &              - e1u(ji  ,jj+1) * uu(ji  ,jj+1,1,Kmm) + e1u(ji,jj) * uu(ji,jj,1,Kmm)  ) * r1_e1e2f(ji,jj) 
    278302         END_2D 
     303#if defined key_mpi3 
     304         CALL lbc_lnk_nc_multi( 'diawri', z2d, 'F', 1. ) 
     305#else 
    279306         CALL lbc_lnk( 'diawri', z2d, 'F', 1. ) 
     307#endif 
    280308         CALL iom_put( "relvor", z2d )                  ! relative vorticity ( zeta )  
    281309         ! 
     
    290318            z2d(ji,jj) = ze3 * z2d(ji,jj)  
    291319         END_2D 
     320#if defined key_mpi3 
     321         CALL lbc_lnk_nc_multi( 'diawri', z2d, 'F', 1. ) 
     322#else 
    292323         CALL lbc_lnk( 'diawri', z2d, 'F', 1. ) 
     324#endif 
    293325         CALL iom_put( "relpotvor", z2d )                  ! relative potential vorticity (zeta/h) 
    294326         ! 
     
    301333            z2d(ji,jj) = ze3 * ff_f(ji,jj) + z2d(ji,jj)  
    302334         END_2D 
     335#if defined key_mpi3 
     336         CALL lbc_lnk_nc_multi( 'diawri', z2d, 'F', 1. ) 
     337#else 
    303338         CALL lbc_lnk( 'diawri', z2d, 'F', 1. ) 
     339#endif 
    304340         CALL iom_put( "abspotvor", z2d )                  ! absolute potential vorticity ( q ) 
    305341         ! 
     
    307343            z2d(ji,jj) = 0.5_wp * z2d(ji,jj)  * z2d(ji,jj)  
    308344         END_2D 
     345#if defined key_mpi3 
     346         CALL lbc_lnk_nc_multi( 'diawri', z2d, 'F', 1. ) 
     347#else 
    309348         CALL lbc_lnk( 'diawri', z2d, 'F', 1. ) 
     349#endif 
    310350         CALL iom_put( "Ens", z2d )                        ! potential enstrophy ( 1/2*q2 ) 
    311351         ! 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/SWE/dommsk.F90

    r13295 r13906  
    141141      ! the following call is mandatory 
    142142      ! 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 
    143146      CALL lbc_lnk( 'dommsk', tmask  , 'T', 1._wp )      ! Lateral boundary conditions 
     147#endif 
    144148 
    145149     ! Mask corrections for bdy (read in mppini2) 
     
    173177         END DO 
    174178      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 
    175182      CALL lbc_lnk_multi( 'dommsk', umask, 'U', 1., vmask, 'V', 1., fmask, 'F', 1. )      ! Lateral boundary conditions 
     183#endif 
    176184  
    177185      ! Ocean/land mask at wu-, wv- and w points    (computed from tmask) 
     
    198206            &                   tmask(ji,jj  ,1), tmask(ji+1,jj  ,1)   ) 
    199207      END_2D 
     208#if defined key_mpi3 
     209      CALL lbc_lnk_nc_multi( 'dommsk', ssfmask, 'F', 1._wp )    
     210#else 
    200211      CALL lbc_lnk( 'dommsk', ssfmask, 'F', 1._wp )    
     212#endif 
    201213 
    202214!!an 
     
    279291         DEALLOCATE( zwf ) 
    280292         ! 
     293#if defined key_mpi3 
     294         CALL lbc_lnk_nc_multi( 'dommsk', fmask, 'F', 1._wp )      ! Lateral boundary conditions on fmask 
     295#else 
    281296         CALL lbc_lnk( 'dommsk', fmask, 'F', 1._wp )      ! Lateral boundary conditions on fmask 
     297#endif 
    282298         ! 
    283299         ! 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  
    520520         !                       ! d - thickness diffusion transport: boundary conditions 
    521521         !                             (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 
    522525         CALL lbc_lnk_multi( 'domvvl', un_td , 'U' , -1._wp, vn_td , 'V' , -1._wp) 
     526#endif 
    523527 
    524528         ! 4 - Time stepping of baroclinic scale factors 
    525529         ! --------------------------------------------- 
     530#if defined key_mpi3 
     531         CALL lbc_lnk_nc_multi( 'domvvl', tilde_e3t_a(:,:,:), 'T', 1._wp ) 
     532#else 
    526533         CALL lbc_lnk( 'domvvl', tilde_e3t_a(:,:,:), 'T', 1._wp ) 
     534#endif 
    527535         tilde_e3t_a(:,:,:) = tilde_e3t_b(:,:,:) + rDt * tmask(:,:,:) * tilde_e3t_a(:,:,:) 
    528536 
     
    10161024               &                   + e1e2t(ji+1,jj) * pssh(ji+1,jj)  ) * r1_hu_0(ji,jj) * r1_e1e2u(ji,jj) 
    10171025         END_2D 
     1026#if defined key_mpi3 
     1027         CALL lbc_lnk_nc_multi( 'domvvl', zc3(:,:), 'U', 1._wp ) 
     1028#else 
    10181029         CALL lbc_lnk( 'domvvl', zc3(:,:), 'U', 1._wp ) 
     1030#endif 
    10191031         ! 
    10201032         DO jk = 1, jpkm1 
     
    10271039               &                   + e1e2t(ji,jj+1) * pssh(ji,jj+1)  ) * r1_hv_0(ji,jj) * r1_e1e2v(ji,jj) 
    10281040         END_2D 
     1041#if defined key_mpi3 
     1042         CALL lbc_lnk_nc_multi( 'domvvl', zc3(:,:), 'V', 1._wp ) 
     1043#else 
    10291044         CALL lbc_lnk( 'domvvl', zc3(:,:), 'V', 1._wp ) 
     1045#endif 
    10301046         ! 
    10311047         DO jk = 1, jpkm1 
     
    10401056               &                    + e1e2t(ji+1,jj+1) * pssh(ji+1,jj+1)  ) * r1_hf_0(ji,jj) * r1_e1e2f(ji,jj) 
    10411057         END_2D 
     1058#if defined key_mpi3 
     1059         CALL lbc_lnk_nc_multi( 'domvvl', zc3(:,:), 'F', 1._wp ) 
     1060#else 
    10421061         CALL lbc_lnk( 'domvvl', zc3(:,:), 'F', 1._wp ) 
     1062#endif 
    10431063         ! 
    10441064         DO jk = 1, jpkm1                    ! Horizontal interpolation of e3f from ssh 
     
    10591079               &                   + e1e2t(ji+1,jj) * pssh(ji+1,jj)  ) * r1_hu_0(ji,jj) * r1_e1e2u(ji,jj) 
    10601080         END_2D 
     1081#if defined key_mpi3 
     1082         CALL lbc_lnk_nc_multi( 'domvvl', zc3(:,:), 'U', 1._wp ) 
     1083#else 
    10611084         CALL lbc_lnk( 'domvvl', zc3(:,:), 'U', 1._wp ) 
     1085#endif 
    10621086         ! 
    10631087         DO jk = 1, jpk 
     
    10701094               &                   + e1e2t(ji,jj+1) * pssh(ji,jj+1)  ) * r1_hv_0(ji,jj) * r1_e1e2v(ji,jj) 
    10711095         END_2D 
     1096#if defined key_mpi3 
     1097         CALL lbc_lnk_nc_multi( 'domvvl', zc3(:,:), 'V', 1._wp ) 
     1098#else 
    10721099         CALL lbc_lnk( 'domvvl', zc3(:,:), 'V', 1._wp ) 
     1100#endif 
    10731101          ! 
    10741102         DO jk = 1, jpk 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/SWE/dynatf.F90

    r13295 r13906  
    165165# endif 
    166166      ! 
     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 
    167170      CALL lbc_lnk_multi( 'dynatf', puu(:,:,:,Kaa), 'U', -1., pvv(:,:,:,Kaa), 'V', -1. )     !* local domain boundaries 
     171#endif 
    168172      ! 
    169173      !                                !* BDY open boundaries 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/SWE/dynkeg.F90

    r13295 r13906  
    133133            zhke(ji,jj,jk) = r1_48 * ( zv + zu ) 
    134134         END_3D 
     135#if defined key_mpi3 
     136         CALL lbc_lnk_nc_multi( 'dynkeg', zhke, 'T', 1. ) 
     137#else 
    135138         CALL lbc_lnk( 'dynkeg', zhke, 'T', 1. ) 
     139#endif 
    136140         ! 
    137141      END SELECT  
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/SWE/dynldf_lap_blp.F90

    r13295 r13906  
    232232      CALL dyn_ldf_lap( kt, Kbb, Kmm, pu, pv, zulap, zvlap, 1 )   ! rotated laplacian applied to pt (output in zlap,Kbb) 
    233233      ! 
     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 
    234237      CALL lbc_lnk_multi( 'dynldf_lap_blp', zulap, 'U', -1., zvlap, 'V', -1. )             ! Lateral boundary conditions 
     238#endif 
    235239      ! 
    236240      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  
    242242            ENDIF 
    243243         END DO 
     244#if defined key_mpi3 
     245         CALL lbc_lnk_nc_multi( 'dynvor', zwz, 'F', 1. ) 
     246#else 
    244247         CALL lbc_lnk( 'dynvor', zwz, 'F', 1. ) 
     248#endif 
    245249         ! 
    246250      END SELECT 
     
    599603      END DO                                           !   End of slab 
    600604         ! 
     605#if defined key_mpi3 
     606      CALL lbc_lnk_nc_multi( 'dynvor', zwz, 'F', 1. ) 
     607#else 
    601608      CALL lbc_lnk( 'dynvor', zwz, 'F', 1. ) 
     609#endif 
    602610 
    603611      DO jk = 1, jpkm1                                 ! Horizontal slab 
     
    720728      END DO 
    721729      ! 
     730#if defined key_mpi3 
     731      CALL lbc_lnk_nc_multi( 'dynvor', zwz, 'F', 1. ) 
     732#else 
    722733      CALL lbc_lnk( 'dynvor', zwz, 'F', 1. ) 
     734#endif 
    723735      ! 
    724736      DO jk = 1, jpkm1                                 ! Horizontal slab 
     
    812824         END_3D 
    813825         ! 
     826#if defined key_mpi3 
     827         CALL lbc_lnk_nc_multi( 'dynvor', fmask, 'F', 1._wp )      ! Lateral boundary conditions on fmask 
     828#else 
    814829         CALL lbc_lnk( 'dynvor', fmask, 'F', 1._wp )      ! Lateral boundary conditions on fmask 
     830#endif 
    815831         ! 
    816832      ENDIF 
     
    850866               dj_e1v_2(ji,jj) = ( e1v(ji,jj) - e1v(ji  ,jj-1) ) * 0.5_wp 
    851867            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 
    852871            CALL lbc_lnk_multi( 'dynvor', di_e2u_2, 'T', -1. , dj_e1v_2, 'T', -1. )   ! Lateral boundary conditions 
     872#endif 
    853873            ! 
    854874         CASE DEFAULT                        !* F-point metric term :   pre-compute di(e2u)/(2*e1e2f) and dj(e1v)/(2*e1e2f) 
     
    858878               dj_e1u_2e1e2f(ji,jj) = ( e1u(ji  ,jj+1) - e1u(ji,jj) )  * 0.5 * r1_e1e2f(ji,jj) 
    859879            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 
    860883            CALL lbc_lnk_multi( 'dynvor', di_e2v_2e1e2f, 'F', -1. , dj_e1u_2e1e2f, 'F', -1. )   ! Lateral boundary conditions 
     884#endif 
    861885         END SELECT 
    862886         ! 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/SWE/ldfdyn.F90

    r13295 r13906  
    426426         ENDIF 
    427427         ! 
     428#if defined key_mpi3 
     429         CALL lbc_lnk_nc_multi( 'ldfdyn', ahmt, 'T', 1.,  ahmf, 'F', 1. ) 
     430#else 
    428431         CALL lbc_lnk_multi( 'ldfdyn', ahmt, 'T', 1.,  ahmf, 'F', 1. ) 
     432#endif 
    429433         ! 
    430434         ! 
     
    458462            END DO 
    459463            ! 
     464#if defined key_mpi3 
     465            CALL lbc_lnk_nc_multi( 'ldfdyn', dtensq, 'T', 1. )  ! lbc_lnk on dshesq not needed 
     466#else 
    460467            CALL lbc_lnk_multi( 'ldfdyn', dtensq, 'T', 1. )  ! lbc_lnk on dshesq not needed 
     468#endif 
    461469            ! 
    462470            DO jk = 1, jpkm1 
     
    509517         ENDIF 
    510518         ! 
     519#if defined key_mpi3 
     520         CALL lbc_lnk_nc_multi( 'ldfdyn', ahmt, 'T', 1. , ahmf, 'F', 1. ) 
     521#else 
    511522         CALL lbc_lnk_multi( 'ldfdyn', ahmt, 'T', 1. , ahmf, 'F', 1. ) 
     523#endif 
    512524         ! 
    513525      END SELECT 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/SWE/sbcice_cice.F90

    r13295 r13906  
    224224      END_2D 
    225225 
     226#if defined key_mpi3 
     227      CALL lbc_lnk_nc_multi( 'sbcice_cice', fr_iu , 'U', 1.,  fr_iv , 'V', 1. ) 
     228#else 
    226229      CALL lbc_lnk_multi( 'sbcice_cice', fr_iu , 'U', 1.,  fr_iv , 'V', 1. ) 
     230#endif 
    227231 
    228232      ! set the snow+ice mass 
     
    510514         ss_iou(ji,jj) = 0.5 * ( ztmp1(ji,jj-1) + ztmp1(ji,jj) ) * umask(ji,jj,1) 
    511515      END_2D 
     516#if defined key_mpi3 
     517      CALL lbc_lnk_nc_multi( 'sbcice_cice', ss_iou , 'U', -1. ) 
     518#else 
    512519      CALL lbc_lnk( 'sbcice_cice', ss_iou , 'U', -1. ) 
     520#endif 
    513521 
    514522! y comp of ocean-ice stress  
     
    520528         ss_iov(ji,jj) = 0.5 * ( ztmp1(ji-1,jj) + ztmp1(ji,jj) ) * vmask(ji,jj,1) 
    521529      END_2D 
     530#if defined key_mpi3 
     531      CALL lbc_lnk_nc_multi( 'sbcice_cice', ss_iov , 'V', -1. ) 
     532#else 
    522533      CALL lbc_lnk( 'sbcice_cice', ss_iov , 'V', -1. ) 
     534#endif 
    523535 
    524536! x and y comps of surface stress 
     
    573585      fmmflx(:,:) = ztmp1(:,:) !!Joakim edit 
    574586       
     587#if defined key_mpi3 
     588      CALL lbc_lnk_nc_multi( 'sbcice_cice', emp , 'T', 1., sfx , 'T', 1. ) 
     589#else 
    575590      CALL lbc_lnk_multi( 'sbcice_cice', emp , 'T', 1., sfx , 'T', 1. ) 
     591#endif 
    576592 
    577593! Solar penetrative radiation and non solar surface heat flux 
     
    599615#endif 
    600616      qsr(:,:)=qsr(:,:)+ztmp1(:,:) 
     617#if defined key_mpi3 
     618      CALL lbc_lnk_nc_multi( 'sbcice_cice', qsr , 'T', 1. ) 
     619#else 
    601620      CALL lbc_lnk( 'sbcice_cice', qsr , 'T', 1. ) 
     621#endif 
    602622 
    603623      DO_2D( 1, 1, 1, 1 ) 
     
    612632      qns(:,:)=qns(:,:)+nfrzmlt(:,:)+ztmp1(:,:) 
    613633 
     634#if defined key_mpi3 
     635      CALL lbc_lnk_nc_multi( 'sbcice_cice', qns , 'T', 1. ) 
     636#else 
    614637      CALL lbc_lnk( 'sbcice_cice', qns , 'T', 1. ) 
     638#endif 
    615639 
    616640! Prepare for the following CICE time-step 
     
    630654      END_2D 
    631655 
     656#if defined key_mpi3 
     657      CALL lbc_lnk_nc_multi( 'sbcice_cice', fr_iu , 'U', 1., fr_iv , 'V', 1. ) 
     658#else 
    632659      CALL lbc_lnk_multi( 'sbcice_cice', fr_iu , 'U', 1., fr_iv , 'V', 1. ) 
     660#endif 
    633661 
    634662      ! set the snow+ice mass 
     
    852880!     A. Ensure all haloes are filled in NEMO field (pn) 
    853881 
     882#if defined key_mpi3 
     883      CALL lbc_lnk_nc_multi( 'sbcice_cice', pn , cd_type, psgn ) 
     884#else 
    854885      CALL lbc_lnk( 'sbcice_cice', pn , cd_type, psgn ) 
     886#endif 
    855887 
    856888#if defined key_nemocice_decomp 
     
    10271059!     D. Ensure all haloes are filled in pn 
    10281060 
     1061#if defined key_mpi3 
     1062      CALL lbc_lnk_nc_multi( 'sbcice_cice', pn , cd_type, psgn ) 
     1063#else 
    10291064      CALL lbc_lnk( 'sbcice_cice', pn , cd_type, psgn ) 
     1065#endif 
    10301066 
    10311067   END SUBROUTINE cice2nemo 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/SWE/step.F90

    r13553 r13906  
    237237 
    238238 
     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 
    239243      CALL lbc_lnk_multi( 'stp', uu(:,:,:,Nnn), 'U', -1., vv(:,:,:,Nnn), 'V', -1.,   &   !* local domain boundaries 
    240244         &                       uu(:,:,:,Naa), 'U', -1., vv(:,:,:,Naa), 'V', -1.    )      
     245#endif 
    241246 
    242247!!an          
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/SWE/stepLF.F90

    r13295 r13906  
    248248 
    249249 
     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 
    250254      CALL lbc_lnk_multi( 'stp', uu(:,:,:,Nnn), 'U', -1., vv(:,:,:,Nnn), 'V', -1.,   &   !* local domain boundaries 
    251255         &                       uu(:,:,:,Naa), 'U', -1., vv(:,:,:,Naa), 'V', -1.    )      
     256#endif 
    252257 
    253258!!an          
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/SWE/stpRK3.F90

    r13295 r13906  
    308308 
    309309 
     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 
    310314      CALL lbc_lnk_multi( 'stp_RK3', uu(:,:,:,Nnn), 'U', -1., vv(:,:,:,Nnn), 'V', -1.,   &   !* local domain boundaries 
    311315         &                       uu(:,:,:,Naa), 'U', -1., vv(:,:,:,Naa), 'V', -1.    )      
     316#endif 
    312317 
    313318!!an          
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/TOP/PISCES/P2Z/p2zbio.F90

    r13295 r13906  
    339339      ! 
    340340      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 
    341345         CALL lbc_lnk( 'p2zbio', zw2d(:,:,:),'T', 1.0_wp ) 
    342346         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 
    343348         ! Save diagnostics 
    344349         CALL iom_put( "TNO3PHY", zw2d(:,:,1) ) 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/TOP/PISCES/P2Z/p2zexp.F90

    r13295 r13906  
    107107      END_2D 
    108108 
     109#if defined key_mpi3 
     110      CALL lbc_lnk_nc_multi( 'p2zexp', sedpocn, 'T', 1.0_wp ) 
     111#else 
    109112      CALL lbc_lnk( 'p2zexp', sedpocn, 'T', 1.0_wp ) 
     113#endif 
    110114  
    111115      ! Oa & Ek: diagnostics depending on jpdia2d !          left as example 
     
    210214         END IF 
    211215      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 
    212219      CALL lbc_lnk( 'p2zexp', cmask , 'T', 1.0_wp )      ! lateral boundary conditions on cmask   (sign unchanged) 
     220#endif 
    213221      areacot = glob_sum( 'p2zexp', e1e2t(:,:) * cmask(:,:) ) 
    214222      ! 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/TOP/PISCES/P4Z/p4zbc.F90

    r13295 r13906  
    311311         END_3D 
    312312         ! 
     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 
    313316         CALL lbc_lnk( 'p4zbc', zcmask , 'T', 1.0_wp )      ! lateral boundary conditions on cmask   (sign unchanged) 
     317#endif 
    314318         ! 
    315319         DO_3D( 1, 1, 1, 1, 1, jpk ) 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/TOP/TRP/trcadv.F90

    r13898 r13906  
    124124      ! 
    125125      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 
    126129         IF (nn_hls.EQ.2) CALL lbc_lnk_multi( 'trcadv', ptr(:,:,:,:,Kmm), 'T', 1.) 
     130#endif 
    127131         CALL tra_adv_cen( kt, nittrc000,'TRC',          zuu, zvv, zww,      Kmm, ptr, jptra, Krhs, nn_cen_h, nn_cen_v ) 
    128132      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 
    131142         CALL tra_adv_fct( kt, nittrc000,'TRC', rDt_trc, zuu, zvv, zww, Kbb, Kmm, ptr, jptra, Krhs, nn_fct_h, nn_fct_v ) 
    132143      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 
    133149         CALL tra_adv_mus( kt, nittrc000,'TRC', rDt_trc, zuu, zvv, zww, Kbb, Kmm, ptr, jptra, Krhs, ln_mus_ups         )  
    134150      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 
    135154         IF (nn_hls.EQ.2) CALL lbc_lnk_multi( 'trcadv', ptr(:,:,:,:,Kbb), 'T', 1.) 
     155#endif 
    136156         CALL tra_adv_ubs( kt, nittrc000,'TRC', rDt_trc, zuu, zvv, zww, Kbb, Kmm, ptr, jptra, Krhs, nn_ubs_v           ) 
    137157      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 
    140167         CALL tra_adv_qck( kt, nittrc000,'TRC', rDt_trc, zuu, zvv, zww, Kbb, Kmm, ptr, jptra, Krhs                     ) 
    141168      ! 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/TOP/TRP/trcatf.F90

    r13295 r13906  
    102102#endif 
    103103      ! 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 
    104107      CALL lbc_lnk( 'trcatf', ptr(:,:,:,:,Kaa), 'T', 1. )    
     108#endif 
    105109 
    106110      IF( ln_bdy )  CALL trc_bdy( kt, Kbb, Kmm, Kaa ) 
     
    168172         ENDIF 
    169173         ! 
     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 
    170177         CALL lbc_lnk_multi( 'trcatf', ptr(:,:,:,:,Kmm), 'T', 1._wp, ptr(:,:,:,:,Kaa), 'T', 1._wp, ptr(:,:,:,:,Kaa), 'T', 1._wp ) 
     178#endif 
    171179      ENDIF 
    172180      ! 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/TOP/TRP/trcsbc.F90

    r13295 r13906  
    155155      END SELECT 
    156156      ! 
     157#if defined key_mpi3 
     158      CALL lbc_lnk_nc_multi( 'trcsbc', sbc_trc(:,:,:), 'T', 1.0_wp ) 
     159#else 
    157160      CALL lbc_lnk( 'trcsbc', sbc_trc(:,:,:), 'T', 1.0_wp ) 
     161#endif 
    158162      !                                       Concentration dilution effect on tracers due to evaporation & precipitation  
    159163      DO jn = 1, jptra 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/TOP/TRP/trdmxl_trc.F90

    r13553 r13906  
    284284            IF( ln_trdtrc(jn) ) THEN 
    285285               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 
    286289                  CALL lbc_lnk( 'trdmxl_trc', tmltrd_trc(:,:,jl,jn), 'T', 1. )        ! lateral boundary conditions 
     290#endif 
    287291               END DO 
    288292            ENDIF 
     
    419423         !-- Lateral boundary conditions 
    420424               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 
    421429                  CALL lbc_lnk_multi( 'trdmxl_trc', ztmltot(:,:,jn) , 'T', 1. , ztmlres(:,:,jn) , 'T', 1., & 
    422430                     &                ztmlatf(:,:,jn) , 'T', 1. , ztmlrad(:,:,jn) , 'T', 1. ) 
     431#endif 
    423432               ENDIF 
    424433 
     
    470479         !-- Lateral boundary conditions  
    471480               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 
    472484                  CALL lbc_lnk_multi( 'trdmxl_trc', ztmltot2(:,:,jn), 'T', 1., ztmlres2(:,:,jn), 'T', 1. ) 
     485#endif 
    473486                  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 
    474490                     CALL lbc_lnk( 'trdmxl_trc', ztmltrd2(:,:,jl,jn), 'T', 1. )       ! will be output in the NetCDF trends file 
     491#endif 
    475492                  END DO 
    476493               ENDIF 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/src/TOP/trcbdy.F90

    r13553 r13906  
    103103         END DO 
    104104         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 
    105108            CALL lbc_lnk( 'trcbdy', tr(:,:,:,:,Krhs), 'T',  1.0_wp, kfillmode=jpfillnothing ,lsend=llsend1, lrecv=llrecv1 ) 
     109#endif 
    106110         ENDIF 
    107111         ! 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/tests/BENCH/MY_SRC/usrdef_istate.F90

    r13295 r13906  
    9595      pv( :,:,jpk  ) = 0._wp 
    9696      ! 
     97#if defined key_mpi3 
     98      CALL lbc_lnk_nc_multi('usrdef_istate', pssh, 'T',  1. )            ! apply boundary conditions 
     99      CALL lbc_lnk_nc_multi('usrdef_istate',  pts, 'T',  1. )            ! apply boundary conditions 
     100      CALL lbc_lnk_nc_multi('usrdef_istate',   pu, 'U', -1. )            ! apply boundary conditions 
     101      CALL lbc_lnk_nc_multi('usrdef_istate',   pv, 'V', -1. )            ! apply boundary conditions 
     102#else 
    97103      CALL lbc_lnk('usrdef_istate', pssh, 'T',  1. )            ! apply boundary conditions 
    98104      CALL lbc_lnk('usrdef_istate',  pts, 'T',  1. )            ! apply boundary conditions 
    99105      CALL lbc_lnk('usrdef_istate',   pu, 'U', -1. )            ! apply boundary conditions 
    100106      CALL lbc_lnk('usrdef_istate',   pv, 'V', -1. )            ! apply boundary conditions 
     107#endif 
    101108       
    102109   END SUBROUTINE usr_def_istate 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/tests/BENCH/MY_SRC/usrdef_sbc.F90

    r13742 r13906  
    120120      vtau_ice(:,:) = 0.1_wp + z2d(:,:) 
    121121 
     122#if defined key_mpi3 
     123      CALL lbc_lnk_nc_multi( 'usrdef_sbc', utau_ice, 'U', -1., vtau_ice, 'V', -1. ) 
     124#else 
    122125      CALL lbc_lnk_multi( 'usrdef_sbc', utau_ice, 'U', -1., vtau_ice, 'V', -1. ) 
     126#endif 
    123127#endif 
    124128      ! 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/tests/BENCH/MY_SRC/usrdef_zgr.F90

    r13286 r13906  
    210210 
    211211      ! 
     212#if defined key_mpi3 
     213      CALL lbc_lnk_nc_multi( 'usrdef_zgr', z2d, 'T', 1. )           ! set surrounding land to zero (here jperio=0 ==>> closed) 
     214#else 
    212215      CALL lbc_lnk( 'usrdef_zgr', z2d, 'T', 1. )           ! set surrounding land to zero (here jperio=0 ==>> closed) 
     216#endif 
    213217      ! 
    214218      k_bot(:,:) = INT( z2d(:,:) )           ! =jpkm1 over the ocean point, =0 elsewhere 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/tests/CANAL/MY_SRC/domvvl.F90

    r13742 r13906  
    439439         !                       ! d - thickness diffusion transport: boundary conditions 
    440440         !                             (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 
    441444         CALL lbc_lnk_multi( 'domvvl', un_td , 'U' , -1._wp, vn_td , 'V' , -1._wp) 
     445#endif 
    442446 
    443447         ! 4 - Time stepping of baroclinic scale factors 
    444448         ! --------------------------------------------- 
     449#if defined key_mpi3 
     450         CALL lbc_lnk_nc_multi( 'domvvl', tilde_e3t_a(:,:,:), 'T', 1._wp ) 
     451#else 
    445452         CALL lbc_lnk( 'domvvl', tilde_e3t_a(:,:,:), 'T', 1._wp ) 
     453#endif 
    446454         tilde_e3t_a(:,:,:) = tilde_e3t_b(:,:,:) + rDt * tmask(:,:,:) * tilde_e3t_a(:,:,:) 
    447455 
     
    717725               &                           + e1e2t(ji+1,jj) * ( pe3_in(ji+1,jj,jk) - e3t_0(ji+1,jj,jk) ) ) 
    718726         END_3D 
     727#if defined key_mpi3 
     728         CALL lbc_lnk_nc_multi( 'domvvl', pe3_out(:,:,:), 'U', 1._wp ) 
     729#else 
    719730         CALL lbc_lnk( 'domvvl', pe3_out(:,:,:), 'U', 1._wp ) 
     731#endif 
    720732         pe3_out(:,:,:) = pe3_out(:,:,:) + e3u_0(:,:,:) 
    721733         ! 
     
    726738               &                           + e1e2t(ji,jj+1) * ( pe3_in(ji,jj+1,jk) - e3t_0(ji,jj+1,jk) ) ) 
    727739         END_3D 
     740#if defined key_mpi3 
     741         CALL lbc_lnk_nc_multi( 'domvvl', pe3_out(:,:,:), 'V', 1._wp ) 
     742#else 
    728743         CALL lbc_lnk( 'domvvl', pe3_out(:,:,:), 'V', 1._wp ) 
     744#endif 
    729745         pe3_out(:,:,:) = pe3_out(:,:,:) + e3v_0(:,:,:) 
    730746         ! 
     
    736752               &                           + e1e2u(ji,jj+1) * ( pe3_in(ji,jj+1,jk) - e3u_0(ji,jj+1,jk) ) ) 
    737753         END_3D 
     754#if defined key_mpi3 
     755         CALL lbc_lnk_nc_multi( 'domvvl', pe3_out(:,:,:), 'F', 1._wp ) 
     756#else 
    738757         CALL lbc_lnk( 'domvvl', pe3_out(:,:,:), 'F', 1._wp ) 
     758#endif 
    739759         pe3_out(:,:,:) = pe3_out(:,:,:) + e3f_0(:,:,:) 
    740760         ! 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/tests/CANAL/MY_SRC/trazdf.F90

    r13819 r13906  
    9696         END DO 
    9797!!gm this should be moved in trdtra.F90 and done on all trends 
     98#if defined key_mpi3 
     99         CALL lbc_lnk_nc_multi( 'trazdf', ztrdt, 'T', 1. , ztrds, 'T', 1. ) 
     100#else 
    98101         CALL lbc_lnk_multi( 'trazdf', ztrdt, 'T', 1. , ztrds, 'T', 1. ) 
     102#endif 
    99103!!gm 
    100104         CALL trd_tra( kt, Kmm, Krhs, 'TRA', jp_tem, jptra_zdf, ztrdt ) 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/tests/CANAL/MY_SRC/usrdef_istate.F90

    r13742 r13906  
    189189               pssh(ji,jj) = pssh(ji,jj-1) - ff_t(ji,jj) / grav * pu(ji,jj,1) * e2t(ji,jj) 
    190190            END_2D 
     191#if defined key_mpi3 
     192            CALL lbc_lnk_nc_multi( 'usrdef_istate', pssh, 'T',  1. ) 
     193#else 
    191194            CALL lbc_lnk( 'usrdef_istate', pssh, 'T',  1. ) 
     195#endif 
    192196         END DO 
    193197          
     
    305309         pssh(:,:) = pssh(:,:) + ( 0.1  * zrandom(:,:) - 0.05 ) 
    306310      END IF 
     311#if defined key_mpi3 
     312      CALL lbc_lnk_nc_multi( 'usrdef_istate', pssh, 'T',  1. ) 
     313      CALL lbc_lnk_nc_multi( 'usrdef_istate', pts , 'T',  1. ) 
     314      CALL lbc_lnk_nc_multi( 'usrdef_istate', pu, 'U', -1., pv, 'V', -1. ) 
     315#else 
    307316      CALL lbc_lnk( 'usrdef_istate', pssh, 'T',  1. ) 
    308317      CALL lbc_lnk( 'usrdef_istate', pts , 'T',  1. ) 
    309318      CALL lbc_lnk_multi( 'usrdef_istate', pu, 'U', -1., pv, 'V', -1. ) 
     319#endif 
    310320 
    311321   END SUBROUTINE usr_def_istate 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/tests/CANAL/MY_SRC/usrdef_zgr.F90

    r13742 r13906  
    202202      END SELECT 
    203203      ! 
     204#if defined key_mpi3 
     205      CALL lbc_lnk_nc_multi( 'usrdef_zgr', z2d, 'T', 1. )           ! set surrounding land to zero (here jperio=0 ==>> closed) 
     206#else 
    204207      CALL lbc_lnk( 'usrdef_zgr', z2d, 'T', 1. )           ! set surrounding land to zero (here jperio=0 ==>> closed) 
     208#endif 
    205209      ! 
    206210      k_bot(:,:) = NINT( z2d(:,:) )          ! =jpkm1 over the ocean point, =0 elsewhere 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/tests/ISOMIP+/MY_SRC/sbcfwb.F90

    r13742 r13906  
    206206            ! 
    207207!!gm   ===>>>>  lbc_lnk should be useless as all the computation is done over the whole domain ! 
     208#if defined key_mpi3 
     209            CALL lbc_lnk_nc_multi( 'sbcfwb', zerp_cor, 'T', 1.0_wp ) 
     210#else 
    208211            CALL lbc_lnk( 'sbcfwb', zerp_cor, 'T', 1.0_wp ) 
     212#endif 
    209213            ! 
    210214            emp(:,:) = emp(:,:) + zerp_cor(:,:) 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/tests/ISOMIP/MY_SRC/usrdef_zgr.F90

    r13295 r13906  
    164164            pe3f (ji,jj,jk) = pe3v(ji,jj,jk) 
    165165         END_3D 
     166#if defined key_mpi3 
     167         CALL lbc_lnk_nc_multi( 'usrdef_zgr', pe3v , 'V', 1._wp )   ;   CALL lbc_lnk_nc_multi( 'usrdef_zgr', pe3vw, 'V', 1._wp ) 
     168         CALL lbc_lnk_nc_multi( 'usrdef_zgr', pe3f , 'F', 1._wp ) 
     169#else 
    166170         CALL lbc_lnk( 'usrdef_zgr', pe3v , 'V', 1._wp )   ;   CALL lbc_lnk( 'usrdef_zgr', pe3vw, 'V', 1._wp ) 
    167171         CALL lbc_lnk( 'usrdef_zgr', pe3f , 'F', 1._wp ) 
     172#endif 
    168173         DO jk = 1, jpk 
    169174            ! set to z-scale factor if zero (i.e. along closed boundaries) because of lbclnk 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/tests/LOCK_EXCHANGE/MY_SRC/usrdef_zgr.F90

    r12377 r13906  
    8686      ! the ocean basin surrounded by land (1 grid-point) set through lbc_lnk call as jperio=0  
    8787      z2d(:,:) = 1._wp                    ! surface ocean is the 1st level 
     88#if defined key_mpi3 
     89      CALL lbc_lnk_nc_multi( 'usrdef_zgr', z2d, 'T', 1. )        ! closed basin since jperio = 0 (see userdef_nam.F90) 
     90#else 
    8891      CALL lbc_lnk( 'usrdef_zgr', z2d, 'T', 1. )        ! closed basin since jperio = 0 (see userdef_nam.F90) 
     92#endif 
    8993      k_top(:,:) = NINT( z2d(:,:) ) 
    9094      ! 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/tests/OVERFLOW/MY_SRC/usrdef_zgr.F90

    r13295 r13906  
    9393         zhu(ji,:) = 0.5_wp * ( zht(ji,:) + zht(ji+1,:) ) 
    9494      END DO 
     95#if defined key_mpi3 
     96      CALL lbc_lnk_nc_multi( 'usrdef_zgr', zhu, 'U', 1. )     ! boundary condition: this mask the surrouding grid-points 
     97#else 
    9598      CALL lbc_lnk( 'usrdef_zgr', zhu, 'U', 1. )     ! boundary condition: this mask the surrouding grid-points 
     99#endif 
    96100      !                                ! ==>>>  set by hand non-zero value on first/last columns & rows  
    97101      DO ji = mi0(1), mi1(1)              ! first row of global domain only 
     
    112116      ! the ocean basin surrounded by land (1 grid-point) set through lbc_lnk call as jperio=0  
    113117      z2d(:,:) = 1._wp                    ! surface ocean is the 1st level 
     118#if defined key_mpi3 
     119      CALL lbc_lnk_nc_multi( 'usrdef_zgr', z2d, 'T', 1. )        ! closed basin since jperio = 0 (see userdef_nam.F90) 
     120#else 
    114121      CALL lbc_lnk( 'usrdef_zgr', z2d, 'T', 1. )        ! closed basin since jperio = 0 (see userdef_nam.F90) 
     122#endif 
    115123      k_top(:,:) = NINT( z2d(:,:) ) 
    116124      ! 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/tests/VORTEX/MY_SRC/domvvl.F90

    r13742 r13906  
    439439         !                       ! d - thickness diffusion transport: boundary conditions 
    440440         !                             (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 
    441444         CALL lbc_lnk_multi( 'domvvl', un_td , 'U' , -1._wp, vn_td , 'V' , -1._wp) 
     445#endif 
    442446 
    443447         ! 4 - Time stepping of baroclinic scale factors 
    444448         ! --------------------------------------------- 
     449#if defined key_mpi3 
     450         CALL lbc_lnk_nc_multi( 'domvvl', tilde_e3t_a(:,:,:), 'T', 1._wp ) 
     451#else 
    445452         CALL lbc_lnk( 'domvvl', tilde_e3t_a(:,:,:), 'T', 1._wp ) 
     453#endif 
    446454         tilde_e3t_a(:,:,:) = tilde_e3t_b(:,:,:) + rDt * tmask(:,:,:) * tilde_e3t_a(:,:,:) 
    447455 
     
    717725               &                           + e1e2t(ji+1,jj) * ( pe3_in(ji+1,jj,jk) - e3t_0(ji+1,jj,jk) ) ) 
    718726         END_3D 
     727#if defined key_mpi3 
     728         CALL lbc_lnk_nc_multi( 'domvvl', pe3_out(:,:,:), 'U', 1._wp ) 
     729#else 
    719730         CALL lbc_lnk( 'domvvl', pe3_out(:,:,:), 'U', 1._wp ) 
     731#endif 
    720732         pe3_out(:,:,:) = pe3_out(:,:,:) + e3u_0(:,:,:) 
    721733         ! 
     
    726738               &                           + e1e2t(ji,jj+1) * ( pe3_in(ji,jj+1,jk) - e3t_0(ji,jj+1,jk) ) ) 
    727739         END_3D 
     740#if defined key_mpi3 
     741         CALL lbc_lnk_nc_multi( 'domvvl', pe3_out(:,:,:), 'V', 1._wp ) 
     742#else 
    728743         CALL lbc_lnk( 'domvvl', pe3_out(:,:,:), 'V', 1._wp ) 
     744#endif 
    729745         pe3_out(:,:,:) = pe3_out(:,:,:) + e3v_0(:,:,:) 
    730746         ! 
     
    736752               &                           + e1e2u(ji,jj+1) * ( pe3_in(ji,jj+1,jk) - e3u_0(ji,jj+1,jk) ) ) 
    737753         END_3D 
     754#if defined key_mpi3 
     755         CALL lbc_lnk_nc_multi( 'domvvl', pe3_out(:,:,:), 'F', 1._wp ) 
     756#else 
    738757         CALL lbc_lnk( 'domvvl', pe3_out(:,:,:), 'F', 1._wp ) 
     758#endif 
    739759         pe3_out(:,:,:) = pe3_out(:,:,:) + e3f_0(:,:,:) 
    740760         ! 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/tests/VORTEX/MY_SRC/usrdef_istate.F90

    r13295 r13906  
    130130      END_2D 
    131131      ! 
     132#if defined key_mpi3 
     133      CALL lbc_lnk_nc_multi( 'usrdef_istate', pu, 'U', -1., pv, 'V', -1. ) 
     134#else 
    132135      CALL lbc_lnk_multi( 'usrdef_istate', pu, 'U', -1., pv, 'V', -1. ) 
     136#endif 
    133137      !    
    134138   END SUBROUTINE usr_def_istate 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/tests/VORTEX/MY_SRC/usrdef_zgr.F90

    r12740 r13906  
    190190      z2d(:,:) = REAL( jpkm1 , wp )          ! flat bottom 
    191191      ! 
     192#if defined key_mpi3 
     193      CALL lbc_lnk_nc_multi( 'usrdef_zgr', z2d, 'T', 1. )           ! set surrounding land to zero (here jperio=0 ==>> closed) 
     194#else 
    192195      CALL lbc_lnk( 'usrdef_zgr', z2d, 'T', 1. )           ! set surrounding land to zero (here jperio=0 ==>> closed) 
     196#endif 
    193197      ! 
    194198      k_bot(:,:) = NINT( z2d(:,:) )          ! =jpkm1 over the ocean point, =0 elsewhere 
  • NEMO/branches/2020/dev_r13898_Tiling_Cleanup_MPI3/tests/WAD/MY_SRC/usrdef_zgr.F90

    r13295 r13906  
    233233         zhu(ji,:) = 0.5_wp * ( zht(ji,:) + zht(ji+1,:) ) 
    234234      END DO 
     235#if defined key_mpi3 
     236      CALL lbc_lnk_nc_multi( 'usrdef_zgr', zhu, 'U', 1. )     ! boundary condition: this mask the surrounding grid-points 
     237#else 
    235238      CALL lbc_lnk( 'usrdef_zgr', zhu, 'U', 1. )     ! boundary condition: this mask the surrounding grid-points 
     239#endif 
    236240      !                                ! ==>>>  set by hand non-zero value on first/last columns & rows  
    237241      DO ji = mi0(1), mi1(1)              ! first row of global domain only 
     
    246250         zhv(ji,jj) = 0.5_wp * ( zht(ji,jj) + zht(ji,jj+1) ) 
    247251      END_2D 
     252#if defined key_mpi3 
     253      CALL lbc_lnk_nc_multi( 'usrdef_zgr', zhv, 'V', 1. )     ! boundary condition: this mask the surrounding grid-points 
     254#else 
    248255      CALL lbc_lnk( 'usrdef_zgr', zhv, 'V', 1. )     ! boundary condition: this mask the surrounding grid-points 
     256#endif 
    249257      DO jj = mj0(1), mj1(1)   ! first  row of global domain only 
    250258         zhv(:,jj) = zht(:,jj) 
     
    271279 
    272280 
     281#if defined key_mpi3 
     282      CALL lbc_lnk_nc_multi( 'usrdef_zgr', z2d, 'T', 1. )        ! closed basin since jperio = 0 (see userdef_nam.F90) 
     283#else 
    273284      CALL lbc_lnk( 'usrdef_zgr', z2d, 'T', 1. )        ! closed basin since jperio = 0 (see userdef_nam.F90) 
     285#endif 
    274286      k_top(:,:) = NINT( z2d(:,:) ) 
    275287      ! 
     
    306318            END DO 
    307319         END_2D      
     320#if defined key_mpi3 
     321         CALL lbc_lnk_nc_multi( 'usrdef_zgr', pdept, 'T', 1. ) 
     322         CALL lbc_lnk_nc_multi( 'usrdef_zgr', pdepw, 'T', 1. ) 
     323         CALL lbc_lnk_nc_multi( 'usrdef_zgr', pe3t , 'T', 1. ) 
     324         CALL lbc_lnk_nc_multi( 'usrdef_zgr', pe3w , 'T', 1. ) 
     325         CALL lbc_lnk_nc_multi( 'usrdef_zgr', pe3u , 'U', 1. ) 
     326         CALL lbc_lnk_nc_multi( 'usrdef_zgr', pe3uw, 'U', 1. ) 
     327         CALL lbc_lnk_nc_multi( 'usrdef_zgr', pe3f , 'F', 1. ) 
     328         CALL lbc_lnk_nc_multi( 'usrdef_zgr', pe3v , 'V', 1. ) 
     329         CALL lbc_lnk_nc_multi( 'usrdef_zgr', pe3vw, 'V', 1. ) 
     330#else 
    308331         CALL lbc_lnk( 'usrdef_zgr', pdept, 'T', 1. ) 
    309332         CALL lbc_lnk( 'usrdef_zgr', pdepw, 'T', 1. ) 
     
    315338         CALL lbc_lnk( 'usrdef_zgr', pe3v , 'V', 1. ) 
    316339         CALL lbc_lnk( 'usrdef_zgr', pe3vw, 'V', 1. ) 
     340#endif 
    317341         WHERE( pe3t (:,:,:) == 0._wp )   pe3t (:,:,:) = 1._wp 
    318342         WHERE( pe3u (:,:,:) == 0._wp )   pe3u (:,:,:) = 1._wp 
Note: See TracChangeset for help on using the changeset viewer.