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 13630 for NEMO/branches/2020/dev_r13296_HPC-07_mocavero_mpi3/src/OCE – NEMO

Ignore:
Timestamp:
2020-10-19T10:48:19+02:00 (4 years ago)
Author:
mocavero
Message:

Add neighborhood collectives calls in the NEMO src - ticket #2496

Location:
NEMO/branches/2020/dev_r13296_HPC-07_mocavero_mpi3/src/OCE
Files:
68 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2020/dev_r13296_HPC-07_mocavero_mpi3/src/OCE/ASM/asminc.F90

    r13295 r13630  
    421421                     &            / e3t(ji,jj,jk,Kmm) 
    422422               END_2D 
     423#if defined key_mpi3 
     424               CALL lbc_lnk_nc_multi( 'asminc', zhdiv, 'T', 1.0_wp )   ! lateral boundary cond. (no sign change) 
     425#else 
    423426               CALL lbc_lnk( 'asminc', zhdiv, 'T', 1.0_wp )   ! lateral boundary cond. (no sign change) 
     427#endif 
    424428               ! 
    425429               DO_2D( 0, 0, 0, 0 ) 
  • NEMO/branches/2020/dev_r13296_HPC-07_mocavero_mpi3/src/OCE/BDY/bdydyn2d.F90

    r13226 r13630  
    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_r13296_HPC-07_mocavero_mpi3/src/OCE/BDY/bdydyn3d.F90

    r13226 r13630  
    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_r13296_HPC-07_mocavero_mpi3/src/OCE/BDY/bdyice.F90

    r13571 r13630  
    9494         IF( ANY(llsend1) .OR. ANY(llrecv1) ) THEN   ! if need to send/recv in at least one direction 
    9595            ! exchange 3d arrays 
     96#if defined key_mpi3 
     97            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                   & 
     98               &                       , 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 & 
     99               &                       , a_ip, 'T', 1._wp, v_ip, 'T', 1._wp, v_il, 'T', 1._wp                                     & 
     100               &                       , kfillmode=jpfillnothing ,lsend=llsend1, lrecv=llrecv1 ) 
     101            ! exchange 4d arrays :   third dimension = 1   and then   third dimension = jpk 
     102            CALL lbc_lnk_nc_multi('bdyice', t_s , 'T', 1._wp, e_s , 'T', 1._wp, kfillmode=jpfillnothing ,lsend=llsend1, lrecv=llrecv1 ) 
     103            CALL lbc_lnk_nc_multi('bdyice', t_i , 'T', 1._wp, e_i , 'T', 1._wp, kfillmode=jpfillnothing ,lsend=llsend1, lrecv=llrecv1 ) 
     104#else 
    96105            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                   & 
    97106               &                       , 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 & 
     
    101110            CALL lbc_lnk_multi('bdyice', t_s , 'T', 1._wp, e_s , 'T', 1._wp, kfillmode=jpfillnothing ,lsend=llsend1, lrecv=llrecv1 ) 
    102111            CALL lbc_lnk_multi('bdyice', t_i , 'T', 1._wp, e_i , 'T', 1._wp, kfillmode=jpfillnothing ,lsend=llsend1, lrecv=llrecv1 ) 
     112#endif 
    103113         END IF 
    104114      END DO   ! ir 
     
    438448            END DO 
    439449            IF( ANY(llsend2) .OR. ANY(llrecv2) ) THEN   ! if need to send/recv in at least one direction 
     450#if defined key_mpi3 
     451               CALL lbc_lnk_nc_multi( 'bdyice', u_ice, 'U', -1.0_wp, kfillmode=jpfillnothing ,lsend=llsend2, lrecv=llrecv2 ) 
     452#else 
    440453               CALL lbc_lnk( 'bdyice', u_ice, 'U', -1.0_wp, kfillmode=jpfillnothing ,lsend=llsend2, lrecv=llrecv2 ) 
     454#endif 
    441455            END IF 
    442456         CASE ( 'V' ) 
     
    452466            END DO 
    453467            IF( ANY(llsend3) .OR. ANY(llrecv3) ) THEN   ! if need to send/recv in at least one direction 
     468#if defined key_mpi3 
     469               CALL lbc_lnk_nc_multi( 'bdyice', v_ice, 'V', -1.0_wp, kfillmode=jpfillnothing ,lsend=llsend3, lrecv=llrecv3 ) 
     470#else 
    454471               CALL lbc_lnk( 'bdyice', v_ice, 'V', -1.0_wp, kfillmode=jpfillnothing ,lsend=llsend3, lrecv=llrecv3 ) 
     472#endif 
    455473            END IF 
    456474         END SELECT 
  • NEMO/branches/2020/dev_r13296_HPC-07_mocavero_mpi3/src/OCE/BDY/bdyini.F90

    r13571 r13630  
    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_r13296_HPC-07_mocavero_mpi3/src/OCE/BDY/bdytra.F90

    r13571 r13630  
    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_r13296_HPC-07_mocavero_mpi3/src/OCE/CRS/crsfld.F90

    r13571 r13630  
    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_r13296_HPC-07_mocavero_mpi3/src/OCE/DIA/diaar5.F90

    r13571 r13630  
    325325         z2d(ji,jj) = z2d(ji,jj) + puflx(ji,jj,jk)  
    326326      END_3D 
     327#if defined key_mpi3 
     328       CALL lbc_lnk_nc_multi( 'diaar5', z2d, 'U', -1.0_wp ) 
     329#else 
    327330       CALL lbc_lnk( 'diaar5', z2d, 'U', -1.0_wp ) 
     331#endif 
    328332       IF( cptr == 'adv' ) THEN 
    329333          IF( ktra == jp_tem ) CALL iom_put( 'uadv_heattr' , rho0_rcp * z2d )  ! advective heat transport in i-direction 
     
    339343          z2d(ji,jj) = z2d(ji,jj) + pvflx(ji,jj,jk)  
    340344       END_3D 
     345#if defined key_mpi3 
     346       CALL lbc_lnk_nc_multi( 'diaar5', z2d, 'V', -1.0_wp ) 
     347#else 
    341348       CALL lbc_lnk( 'diaar5', z2d, 'V', -1.0_wp ) 
     349#endif 
    342350       IF( cptr == 'adv' ) THEN 
    343351          IF( ktra == jp_tem ) CALL iom_put( 'vadv_heattr' , rho0_rcp * z2d )  ! advective heat transport in j-direction 
  • NEMO/branches/2020/dev_r13296_HPC-07_mocavero_mpi3/src/OCE/DIA/diaptr.F90

    r13571 r13630  
    588588            p_fval(ji,jj) = p_fval(ji,jj-1) + pva(ji,jj) * tmask_i(ji,jj) 
    589589         END_2D 
     590#if defined key_mpi3 
     591         CALL lbc_lnk_nc_multi( 'diaptr', p_fval, 'U', -1.0_wp ) 
     592#else 
    590593         CALL lbc_lnk( 'diaptr', p_fval, 'U', -1.0_wp ) 
     594#endif 
    591595      END DO 
    592596      !  
  • NEMO/branches/2020/dev_r13296_HPC-07_mocavero_mpi3/src/OCE/DOM/dommsk.F90

    r13571 r13630  
    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_r13296_HPC-07_mocavero_mpi3/src/OCE/DOM/domqco.F90

    r13295 r13630  
    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_r13296_HPC-07_mocavero_mpi3/src/OCE/DOM/domvvl.F90

    r13571 r13630  
    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 
  • NEMO/branches/2020/dev_r13296_HPC-07_mocavero_mpi3/src/OCE/DOM/domwri.F90

    r13295 r13630  
    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_r13296_HPC-07_mocavero_mpi3/src/OCE/DOM/domzgr.F90

    r13295 r13630  
    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_r13296_HPC-07_mocavero_mpi3/src/OCE/DYN/divhor.F90

    r13571 r13630  
    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_r13296_HPC-07_mocavero_mpi3/src/OCE/DYN/dynhpg.F90

    r13295 r13630  
    448448          END IF 
    449449        END_2D 
     450#if defined key_mpi3 
     451        CALL lbc_lnk_nc_multi( 'dynhpg', zcpx, 'U', 1.0_wp, zcpy, 'V', 1.0_wp ) 
     452#else 
    450453        CALL lbc_lnk_multi( 'dynhpg', zcpx, 'U', 1.0_wp, zcpy, 'V', 1.0_wp ) 
     454#endif 
    451455      END IF 
    452456 
     
    679683          END IF 
    680684        END_2D 
     685#if defined key_mpi3 
     686        CALL lbc_lnk_nc_multi( 'dynhpg', zcpx, 'U', 1.0_wp, zcpy, 'V', 1.0_wp ) 
     687#else 
    681688        CALL lbc_lnk_multi( 'dynhpg', zcpx, 'U', 1.0_wp, zcpy, 'V', 1.0_wp ) 
     689#endif 
    682690      END IF 
    683691 
     
    825833 
    826834      END_3D 
     835#if defined key_mpi3 
     836      CALL lbc_lnk_nc_multi( 'dynhpg', rho_k, 'W', 1.0_wp, rho_i, 'U', 1.0_wp, rho_j, 'V', 1.0_wp ) 
     837#else 
    827838      CALL lbc_lnk_multi( 'dynhpg', rho_k, 'W', 1.0_wp, rho_i, 'U', 1.0_wp, rho_j, 'V', 1.0_wp ) 
     839#endif 
    828840 
    829841      ! --------------- 
     
    952964            ENDIF 
    953965         END_2D 
     966#if defined key_mpi3 
     967         CALL lbc_lnk_nc_multi( 'dynhpg', zcpx, 'U', 1.0_wp, zcpy, 'V', 1.0_wp ) 
     968#else 
    954969         CALL lbc_lnk_multi( 'dynhpg', zcpx, 'U', 1.0_wp, zcpy, 'V', 1.0_wp ) 
     970#endif 
    955971      ENDIF 
    956972 
     
    10221038      END_2D 
    10231039 
     1040#if defined key_mpi3 
     1041      CALL lbc_lnk_nc_multi ('dynhpg', zsshu_n, 'U', 1.0_wp, zsshv_n, 'V', 1.0_wp ) 
     1042#else 
    10241043      CALL lbc_lnk_multi ('dynhpg', zsshu_n, 'U', 1.0_wp, zsshv_n, 'V', 1.0_wp ) 
     1044#endif 
    10251045 
    10261046      DO_2D( 0, 0, 0, 0 ) 
  • NEMO/branches/2020/dev_r13296_HPC-07_mocavero_mpi3/src/OCE/DYN/dynkeg.F90

    r13571 r13630  
    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_r13296_HPC-07_mocavero_mpi3/src/OCE/DYN/dynldf_iso.F90

    r13571 r13630  
    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_r13296_HPC-07_mocavero_mpi3/src/OCE/DYN/dynspg_ts.F90

    r13571 r13630  
    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_r13296_HPC-07_mocavero_mpi3/src/OCE/DYN/dynvor.F90

    r13571 r13630  
    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 
     
    823831         END_3D 
    824832         ! 
     833#if defined key_mpi3 
     834         CALL lbc_lnk_nc_multi( 'dynvor', fmask, 'F', 1._wp )      ! Lateral boundary conditions on fmask 
     835#else 
    825836         CALL lbc_lnk( 'dynvor', fmask, 'F', 1._wp )      ! Lateral boundary conditions on fmask 
     837#endif 
    826838         ! 
    827839      ENDIF 
     
    861873               dj_e1v_2(ji,jj) = ( e1v(ji,jj) - e1v(ji  ,jj-1) ) * 0.5_wp 
    862874            END_2D 
     875#if defined key_mpi3 
     876            CALL lbc_lnk_nc_multi( 'dynvor', di_e2u_2, 'T', -1.0_wp , dj_e1v_2, 'T', -1.0_wp )   ! Lateral boundary conditions 
     877#else 
    863878            CALL lbc_lnk_multi( 'dynvor', di_e2u_2, 'T', -1.0_wp , dj_e1v_2, 'T', -1.0_wp )   ! Lateral boundary conditions 
     879#endif 
    864880            ! 
    865881         CASE DEFAULT                        !* F-point metric term :   pre-compute di(e2u)/(2*e1e2f) and dj(e1v)/(2*e1e2f) 
     
    869885               dj_e1u_2e1e2f(ji,jj) = ( e1u(ji  ,jj+1) - e1u(ji,jj) )  * 0.5 * r1_e1e2f(ji,jj) 
    870886            END_2D 
     887#if defined key_mpi3 
     888            CALL lbc_lnk_nc_multi( 'dynvor', di_e2v_2e1e2f, 'F', -1.0_wp , dj_e1u_2e1e2f, 'F', -1.0_wp )   ! Lateral boundary conditions 
     889#else 
    871890            CALL lbc_lnk_multi( 'dynvor', di_e2v_2e1e2f, 'F', -1.0_wp , dj_e1u_2e1e2f, 'F', -1.0_wp )   ! Lateral boundary conditions 
     891#endif 
    872892         END SELECT 
    873893         ! 
  • NEMO/branches/2020/dev_r13296_HPC-07_mocavero_mpi3/src/OCE/DYN/sshwzv.F90

    r13571 r13630  
    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_r13296_HPC-07_mocavero_mpi3/src/OCE/DYN/wet_dry.F90

    r13571 r13630  
    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_r13296_HPC-07_mocavero_mpi3/src/OCE/ICB/icbclv.F90

    r13295 r13630  
    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_r13296_HPC-07_mocavero_mpi3/src/OCE/ICB/icbini.F90

    r13295 r13630  
    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_r13296_HPC-07_mocavero_mpi3/src/OCE/IOM/iom.F90

    r13571 r13630  
    13801380!some final adjustments 
    13811381      ! C1D case : always call lbc_lnk to replicate the central value over the whole 3X3 domain 
     1382#if defined key_mpi3 
     1383      IF( lk_c1d .AND. PRESENT(pv_r2d) )   CALL lbc_lnk_nc_multi( 'iom', pv_r2d,'Z',1.0_wp ) 
     1384      IF( lk_c1d .AND. PRESENT(pv_r3d) )   CALL lbc_lnk_nc_multi( 'iom', pv_r3d,'Z',1.0_wp ) 
     1385#else 
    13821386      IF( lk_c1d .AND. PRESENT(pv_r2d) )   CALL lbc_lnk( 'iom', pv_r2d,'Z',1.0_wp ) 
    13831387      IF( lk_c1d .AND. PRESENT(pv_r3d) )   CALL lbc_lnk( 'iom', pv_r3d,'Z',1.0_wp ) 
     1388#endif 
    13841389 
    13851390      !--- Apply scale_factor and offset 
     
    22562261      ! 
    22572262      z_fld(:,:) = 1._wp 
     2263#if defined key_mpi3 
     2264      CALL lbc_lnk_nc_multi( 'iom', z_fld, cdgrd, -1.0_wp )    ! Working array for location of northfold 
     2265#else 
    22582266      CALL lbc_lnk( 'iom', z_fld, cdgrd, -1.0_wp )    ! Working array for location of northfold 
     2267#endif 
    22592268      ! 
    22602269      ! Cell vertices that can be defined 
  • NEMO/branches/2020/dev_r13296_HPC-07_mocavero_mpi3/src/OCE/ISF/isfcav.F90

    r13226 r13630  
    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_r13296_HPC-07_mocavero_mpi3/src/OCE/ISF/isfcpl.F90

    r13295 r13630  
    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_r13296_HPC-07_mocavero_mpi3/src/OCE/ISF/isfpar.F90

    r13226 r13630  
    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_r13296_HPC-07_mocavero_mpi3/src/OCE/LBC/halo_mng.F90

    r13286 r13630  
    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_r13296_HPC-07_mocavero_mpi3/src/OCE/LBC/lbc_lnk_nc_generic.h90

    r13561 r13630  
    3636 
    3737   SUBROUTINE ROUTINE_MULTI_NC( cdname                                                                             & 
    38       &                    , pt1, cdna1, psgn1, pt2 , cdna2 , psgn2 , pt3 , cdna3 , psgn3 , pt4, cdna4, psgn4   & 
    39       &                    , pt5, cdna5, psgn5, pt6 , cdna6 , psgn6 , pt7 , cdna7 , psgn7 , pt8, cdna8, psgn8   & 
    40       &                    , pt9, cdna9, psgn9, pt10, cdna10, psgn10, pt11, cdna11, psgn11                      & 
     38      &                    , pt1 , cdna1 , psgn1 , pt2 , cdna2 , psgn2 , pt3 , cdna3 , psgn3 , pt4 , cdna4 , psgn4   & 
     39      &                    , pt5 , cdna5 , psgn5 , pt6 , cdna6 , psgn6 , pt7 , cdna7 , psgn7 , pt8 , cdna8 , psgn8   & 
     40      &                    , pt9 , cdna9 , psgn9 , pt10, cdna10, psgn10, pt11, cdna11, psgn11, pt12, cdna12, psgn12  & 
     41      &                    , pt13, cdna13, psgn13, pt14, cdna14, psgn14, pt15, cdna15, psgn15, pt16, cdna16, psgn16  & 
    4142      &                    , kfillmode, pfillval, lsend, lrecv, ncsten ) 
    4243      !!--------------------------------------------------------------------- 
    4344      CHARACTER(len=*)   ,                   INTENT(in   ) :: cdname  ! name of the calling subroutine 
    4445      ARRAY_TYPE(:,:,:,:)          , TARGET, INTENT(inout) :: pt1     ! arrays on which the lbc is applied 
    45       ARRAY_TYPE(:,:,:,:), OPTIONAL, TARGET, INTENT(inout) :: pt2  , pt3  , pt4  , pt5  , pt6  , pt7  , pt8  , pt9  , pt10  , pt11 
     46      ARRAY_TYPE(:,:,:,:), OPTIONAL, TARGET, INTENT(inout) :: pt2  , pt3  , pt4  , pt5  , pt6  , pt7  , pt8  , pt9  , & 
     47         &                                                    pt10  , pt11  , pt12  , pt13  , pt14  , pt15  , pt16 
    4648      CHARACTER(len=1)                     , INTENT(in   ) :: cdna1   ! nature of pt2D. array grid-points 
    47       CHARACTER(len=1)   , OPTIONAL        , INTENT(in   ) :: cdna2, cdna3, cdna4, cdna5, cdna6, cdna7, cdna8, cdna9, cdna10, cdna11 
     49      CHARACTER(len=1)   , OPTIONAL        , INTENT(in   ) :: cdna2, cdna3, cdna4, cdna5, cdna6, cdna7, cdna8, cdna9, & 
     50         &                                                    cdna10, cdna11, cdna12, cdna13, cdna14, cdna15, cdna16 
    4851      REAL(wp)                             , INTENT(in   ) :: psgn1   ! sign used across the north fold 
    49       REAL(wp)           , OPTIONAL        , INTENT(in   ) :: psgn2, psgn3, psgn4, psgn5, psgn6, psgn7, psgn8, psgn9, psgn10, psgn11 
     52      REAL(wp)           , OPTIONAL        , INTENT(in   ) :: psgn2, psgn3, psgn4, psgn5, psgn6, psgn7, psgn8, psgn9, & 
     53         &                                                    psgn10, psgn11, psgn12, psgn13, psgn14, psgn15, psgn16 
    5054      INTEGER            , OPTIONAL        , INTENT(in   ) :: kfillmode   ! filling method for halo over land (default = constant) 
    5155      REAL(wp)           , OPTIONAL        , INTENT(in   ) :: pfillval    ! background value (used at closed boundaries) 
     
    7579      IF( PRESENT(psgn10) )   CALL ROUTINE_NC_LOAD( pt10, cdna10, psgn10, ptab_ptr, cdna_ptr, psgn_ptr, kfld ) 
    7680      IF( PRESENT(psgn11) )   CALL ROUTINE_NC_LOAD( pt11, cdna11, psgn11, ptab_ptr, cdna_ptr, psgn_ptr, kfld ) 
     81      IF( PRESENT(psgn11) )   CALL ROUTINE_NC_LOAD( pt12, cdna12, psgn12, ptab_ptr, cdna_ptr, psgn_ptr, kfld ) 
     82      IF( PRESENT(psgn11) )   CALL ROUTINE_NC_LOAD( pt13, cdna13, psgn13, ptab_ptr, cdna_ptr, psgn_ptr, kfld ) 
     83      IF( PRESENT(psgn11) )   CALL ROUTINE_NC_LOAD( pt14, cdna14, psgn14, ptab_ptr, cdna_ptr, psgn_ptr, kfld ) 
     84      IF( PRESENT(psgn11) )   CALL ROUTINE_NC_LOAD( pt15, cdna15, psgn15, ptab_ptr, cdna_ptr, psgn_ptr, kfld ) 
     85      IF( PRESENT(psgn11) )   CALL ROUTINE_NC_LOAD( pt16, cdna16, psgn16, ptab_ptr, cdna_ptr, psgn_ptr, kfld ) 
    7786      ! 
    7887      CALL lbc_lnk_nc    ( cdname,               ptab_ptr, cdna_ptr, psgn_ptr, kfld, kfillmode, pfillval, lsend, lrecv, ncsten ) 
  • NEMO/branches/2020/dev_r13296_HPC-07_mocavero_mpi3/src/OCE/LDF/ldfc1d_c2d.F90

    r13571 r13630  
    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_r13296_HPC-07_mocavero_mpi3/src/OCE/LDF/ldfdyn.F90

    r13571 r13630  
    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_r13296_HPC-07_mocavero_mpi3/src/OCE/LDF/ldfslp.F90

    r13571 r13630  
    348348      ! IV. Lateral boundary conditions 
    349349      ! =============================== 
     350#if defined key_mpi3 
     351      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 ) 
     352#else 
    350353      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 ) 
     354#endif 
    351355 
    352356      IF(sn_cfctl%l_prtctl) THEN 
     
    580584      wslp2(:,:,1) = 0._wp                ! force the surface wslp to zero 
    581585 
     586#if defined key_mpi3 
     587      CALL lbc_lnk_nc_multi( 'ldfslp', wslp2, 'W', 1.0_wp )      ! lateral boundary confition on wslp2 only   ==>>> gm : necessary ? to be checked 
     588#else 
    582589      CALL lbc_lnk( 'ldfslp', wslp2, 'W', 1.0_wp )      ! lateral boundary confition on wslp2 only   ==>>> gm : necessary ? to be checked 
     590#endif 
    583591      ! 
    584592      IF( ln_timing )   CALL timing_stop('ldf_slp_triad') 
     
    689697      END_2D 
    690698      !!gm this lbc_lnk should be useless.... 
     699#if defined key_mpi3 
     700      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 )  
     701#else 
    691702      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 )  
     703#endif 
    692704      ! 
    693705   END SUBROUTINE ldf_slp_mxl 
  • NEMO/branches/2020/dev_r13296_HPC-07_mocavero_mpi3/src/OCE/LDF/ldftra.F90

    r13571 r13630  
    691691         zaeiw(ji,jj) = MIN( zzaei , paei0 )                                  ! Max value = paei0 
    692692      END_2D 
     693#if defined key_mpi3 
     694      CALL lbc_lnk_nc_multi( 'ldftra', zaeiw(:,:), 'W', 1.0_wp )       ! lateral boundary condition 
     695#else 
    693696      CALL lbc_lnk( 'ldftra', zaeiw(:,:), 'W', 1.0_wp )       ! lateral boundary condition 
     697#endif 
    694698      !                
    695699      DO_2D( 0, 0, 0, 0 )                       !== aei at u- and v-points  ==! 
     
    697701         paeiv(ji,jj,1) = 0.5_wp * ( zaeiw(ji,jj) + zaeiw(ji  ,jj+1) ) * vmask(ji,jj,1) 
    698702      END_2D 
     703#if defined key_mpi3 
     704      CALL lbc_lnk_nc_multi( 'ldftra', paeiu(:,:,1), 'U', 1.0_wp , paeiv(:,:,1), 'V', 1.0_wp )      ! lateral boundary condition 
     705#else 
    699706      CALL lbc_lnk_multi( 'ldftra', paeiu(:,:,1), 'U', 1.0_wp , paeiv(:,:,1), 'V', 1.0_wp )      ! lateral boundary condition 
     707#endif 
    700708 
    701709      DO jk = 2, jpkm1                          !==  deeper values equal the surface one  ==! 
     
    793801!!gm     to be redesigned....    
    794802      !                                                  !==  eiv stream function: output  ==! 
     803#if defined key_mpi3 
     804      CALL lbc_lnk_nc_multi( 'ldftra', psi_uw, 'U', -1.0_wp , psi_vw, 'V', -1.0_wp ) 
     805#else 
    795806      CALL lbc_lnk_multi( 'ldftra', psi_uw, 'U', -1.0_wp , psi_vw, 'V', -1.0_wp ) 
     807#endif 
    796808      ! 
    797809!!gm      CALL iom_put( "psi_eiv_uw", psi_uw )                 ! output 
     
    816828            &              + psi_uw(ji,jj,jk) - psi_uw(ji-1,jj  ,jk)  ) / e1e2t(ji,jj) 
    817829      END_3D 
     830#if defined key_mpi3 
     831      CALL lbc_lnk_nc_multi( 'ldftra', zw3d, 'T', 1.0_wp )      ! lateral boundary condition 
     832#else 
    818833      CALL lbc_lnk( 'ldftra', zw3d, 'T', 1.0_wp )      ! lateral boundary condition 
     834#endif 
    819835      CALL iom_put( "woce_eiv", zw3d ) 
    820836      ! 
     
    844860           zw2d(ji,jj) = zw2d(ji,jj) + zw3d(ji,jj,jk) 
    845861        END_3D 
     862#if defined key_mpi3 
     863        CALL lbc_lnk_nc_multi( 'ldftra', zw2d, 'U', -1.0_wp ) 
     864        CALL lbc_lnk_nc_multi( 'ldftra', zw3d, 'U', -1.0_wp ) 
     865#else 
    846866        CALL lbc_lnk( 'ldftra', zw2d, 'U', -1.0_wp ) 
    847867        CALL lbc_lnk( 'ldftra', zw3d, 'U', -1.0_wp ) 
     868#endif 
    848869        CALL iom_put( "ueiv_heattr"  , zztmp * zw2d )                  ! heat transport in i-direction 
    849870        CALL iom_put( "ueiv_heattr3d", zztmp * zw3d )                  ! heat transport in i-direction 
     
    865886         zw2d(ji,jj) = zw2d(ji,jj) + zw3d(ji,jj,jk) 
    866887      END_3D 
     888#if defined key_mpi3 
     889      CALL lbc_lnk_nc_multi( 'ldftra', zw2d, 'V', -1.0_wp ) 
     890#else 
    867891      CALL lbc_lnk( 'ldftra', zw2d, 'V', -1.0_wp ) 
     892#endif 
    868893      CALL iom_put( "veiv_heattr", zztmp * zw2d )                  !  heat transport in j-direction 
    869894      CALL iom_put( "veiv_heattr", zztmp * zw3d )                  !  heat transport in j-direction 
     
    880905           zw2d(ji,jj) = zw2d(ji,jj) + zw3d(ji,jj,jk) 
    881906        END_3D 
     907#if defined key_mpi3 
     908        CALL lbc_lnk_nc_multi( 'ldftra', zw2d, 'U', -1.0_wp ) 
     909        CALL lbc_lnk_nc_multi( 'ldftra', zw3d, 'U', -1.0_wp ) 
     910#else 
    882911        CALL lbc_lnk( 'ldftra', zw2d, 'U', -1.0_wp ) 
    883912        CALL lbc_lnk( 'ldftra', zw3d, 'U', -1.0_wp ) 
     913#endif 
    884914        CALL iom_put( "ueiv_salttr", zztmp * zw2d )                  ! salt transport in i-direction 
    885915        CALL iom_put( "ueiv_salttr3d", zztmp * zw3d )                ! salt transport in i-direction 
     
    892922         zw2d(ji,jj) = zw2d(ji,jj) + zw3d(ji,jj,jk) 
    893923      END_3D 
     924#if defined key_mpi3 
     925      CALL lbc_lnk_nc_multi( 'ldftra', zw2d, 'V', -1.0_wp ) 
     926#else 
    894927      CALL lbc_lnk( 'ldftra', zw2d, 'V', -1.0_wp ) 
     928#endif 
    895929      CALL iom_put( "veiv_salttr", zztmp * zw2d )                  !  salt transport in j-direction 
    896930      CALL iom_put( "veiv_salttr", zztmp * zw3d )                  !  salt transport in j-direction 
  • NEMO/branches/2020/dev_r13296_HPC-07_mocavero_mpi3/src/OCE/SBC/cpl_oasis3.F90

    r13571 r13630  
    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_r13296_HPC-07_mocavero_mpi3/src/OCE/SBC/sbc_oce.F90

    r13571 r13630  
    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_r13296_HPC-07_mocavero_mpi3/src/OCE/SBC/sbcblk.F90

    r13571 r13630  
    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_r13296_HPC-07_mocavero_mpi3/src/OCE/SBC/sbccpl.F90

    r13571 r13630  
    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_r13296_HPC-07_mocavero_mpi3/src/OCE/SBC/sbcflx.F90

    r13571 r13630  
    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_r13296_HPC-07_mocavero_mpi3/src/OCE/SBC/sbcfwb.F90

    r13286 r13630  
    180180            ! 
    181181!!gm   ===>>>>  lbc_lnk should be useless as all the computation is done over the whole domain ! 
     182#if defined key_mpi3 
     183            CALL lbc_lnk_nc_multi( 'sbcfwb', zerp_cor, 'T', 1.0_wp ) 
     184#else 
    182185            CALL lbc_lnk( 'sbcfwb', zerp_cor, 'T', 1.0_wp ) 
     186#endif 
    183187            ! 
    184188            emp(:,:) = emp(:,:) + zerp_cor(:,:) 
  • NEMO/branches/2020/dev_r13296_HPC-07_mocavero_mpi3/src/OCE/SBC/sbcice_cice.F90

    r13295 r13630  
    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_r13296_HPC-07_mocavero_mpi3/src/OCE/SBC/sbcmod.F90

    r13571 r13630  
    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_r13296_HPC-07_mocavero_mpi3/src/OCE/SBC/sbcwave.F90

    r13571 r13630  
    212212      END_3D 
    213213      ! 
     214#if defined key_mpi3 
     215      CALL lbc_lnk_nc_multi( 'sbcwave', ze3divh, 'T', 1.0_wp ) 
     216#else 
    214217      CALL lbc_lnk( 'sbcwave', ze3divh, 'T', 1.0_wp ) 
     218#endif 
    215219      ! 
    216220      IF( ln_linssh ) THEN   ;   ik = 1   ! none zero velocity through the sea surface 
     
    271275            taum(ji,jj) = SQRT( tauw_x(ji,jj)*tauw_x(ji,jj) + tauw_y(ji,jj)*tauw_y(ji,jj) ) 
    272276         END_2D 
     277#if defined key_mpi3 
     278         CALL lbc_lnk_nc_multi( 'sbcwave', utau(:,:), 'U', -1.0_wp , vtau(:,:), 'V', -1.0_wp , taum(:,:) , 'T', -1.0_wp ) 
     279#else 
    273280         CALL lbc_lnk_multi( 'sbcwave', utau(:,:), 'U', -1.0_wp , vtau(:,:), 'V', -1.0_wp , taum(:,:) , 'T', -1.0_wp ) 
     281#endif 
    274282      ENDIF 
    275283      ! 
  • NEMO/branches/2020/dev_r13296_HPC-07_mocavero_mpi3/src/OCE/STO/stopar.F90

    r13295 r13630  
    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_r13296_HPC-07_mocavero_mpi3/src/OCE/STO/stopts.F90

    r13295 r13630  
    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_r13296_HPC-07_mocavero_mpi3/src/OCE/TRA/traadv_cen.F90

    r13571 r13630  
    116116               ztv(ji,jj,jk) = ( pt(ji  ,jj+1,jk,jn,Kmm) - pt(ji,jj,jk,jn,Kmm) ) * vmask(ji,jj,jk) 
    117117            END_3D 
     118#if defined key_mpi3 
     119            CALL lbc_lnk_nc_multi( 'traadv_cen', ztu, 'U', -1.0_wp , ztv, 'V', -1.0_wp )   ! Lateral boundary cond. 
     120#else 
    118121            CALL lbc_lnk_multi( 'traadv_cen', ztu, 'U', -1.0_wp , ztv, 'V', -1.0_wp )   ! Lateral boundary cond. 
     122#endif 
    119123            ! 
    120124            DO_3D( 0, 0, 0, 0, 1, jpkm1 )           ! Horizontal advective fluxes 
     
    128132               zwy(ji,jj,jk) =  0.5_wp * pV(ji,jj,jk) * zC4t_v 
    129133            END_3D 
     134#if defined key_mpi3 
     135            CALL lbc_lnk_nc_multi( 'traadv_cen', zwx, 'U', -1. , zwy, 'V', -1. ) 
     136#else 
    130137            CALL lbc_lnk_multi( 'traadv_cen', zwx, 'U', -1. , zwy, 'V', -1. ) 
     138#endif 
    131139            ! 
    132140         CASE DEFAULT 
  • NEMO/branches/2020/dev_r13296_HPC-07_mocavero_mpi3/src/OCE/TRA/traadv_mus.F90

    r13571 r13630  
    137137         END_3D 
    138138         ! lateral boundary conditions   (changed sign) 
     139#if defined key_mpi3 
     140         CALL lbc_lnk_nc_multi( 'traadv_mus', zwx, 'U', -1.0_wp , zwy, 'V', -1.0_wp ) 
     141#else 
    139142         CALL lbc_lnk_multi( 'traadv_mus', zwx, 'U', -1.0_wp , zwy, 'V', -1.0_wp ) 
     143#endif 
    140144         !                                !-- Slopes of tracer 
    141145         zslpx(:,:,jpk) = 0._wp                 ! bottom values 
     
    173177            zwy(ji,jj,jk) = pV(ji,jj,jk) * ( zalpha * zzwx + (1.-zalpha) * zzwy ) 
    174178         END_3D 
     179#if defined key_mpi3 
     180         CALL lbc_lnk_nc_multi( 'traadv_mus', zwx, 'U', -1.0_wp , zwy, 'V', -1.0_wp )   ! lateral boundary conditions   (changed sign) 
     181#else 
    175182         CALL lbc_lnk_multi( 'traadv_mus', zwx, 'U', -1.0_wp , zwy, 'V', -1.0_wp )   ! lateral boundary conditions   (changed sign) 
     183#endif 
    176184         ! 
    177185         DO_3D( 0, 0, 0, 0, 1, jpkm1 )    !-- Tracer advective trend 
  • NEMO/branches/2020/dev_r13296_HPC-07_mocavero_mpi3/src/OCE/TRA/traadv_qck.F90

    r13571 r13630  
    146146            zfd(ji,jj,jk) = pt(ji+1,jj,jk,jn,Kbb)        ! Downstream in the x-direction for the tracer 
    147147         END_3D 
     148#if defined key_mpi3 
     149         CALL lbc_lnk_nc_multi( 'traadv_qck', zfc(:,:,:), 'T', 1.0_wp , zfd(:,:,:), 'T', 1.0_wp )   ! Lateral boundary conditions  
     150#else 
    148151         CALL lbc_lnk_multi( 'traadv_qck', zfc(:,:,:), 'T', 1.0_wp , zfd(:,:,:), 'T', 1.0_wp )   ! Lateral boundary conditions  
     152#endif 
    149153          
    150154         ! 
     
    164168         END_3D 
    165169         !--- Lateral boundary conditions  
     170#if defined key_mpi3 
     171         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 ) 
     172#else 
    166173         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 ) 
     174#endif 
    167175 
    168176         !--- QUICKEST scheme 
     
    173181            zfu(ji,jj,jk) = tmask(ji-1,jj,jk) + tmask(ji,jj,jk) + tmask(ji+1,jj,jk) - 2. 
    174182         END_3D 
     183#if defined key_mpi3 
     184         CALL lbc_lnk_nc_multi( 'traadv_qck', zfu(:,:,:), 'T', 1.0_wp )      ! Lateral boundary conditions  
     185#else 
    175186         CALL lbc_lnk( 'traadv_qck', zfu(:,:,:), 'T', 1.0_wp )      ! Lateral boundary conditions  
     187#endif 
    176188 
    177189         ! 
     
    189201         END DO 
    190202         ! 
     203#if defined key_mpi3 
     204         CALL lbc_lnk_nc_multi( 'traadv_qck', zwx(:,:,:), 'T', 1.0_wp ) ! Lateral boundary conditions 
     205#else 
    191206         CALL lbc_lnk( 'traadv_qck', zwx(:,:,:), 'T', 1.0_wp ) ! Lateral boundary conditions 
     207#endif 
    192208         ! 
    193209         ! Computation of the trend 
     
    240256            END_2D 
    241257         END DO 
     258#if defined key_mpi3 
     259         CALL lbc_lnk_nc_multi( 'traadv_qck', zfc(:,:,:), 'T', 1.0_wp , zfd(:,:,:), 'T', 1.0_wp )   ! Lateral boundary conditions  
     260#else 
    242261         CALL lbc_lnk_multi( 'traadv_qck', zfc(:,:,:), 'T', 1.0_wp , zfd(:,:,:), 'T', 1.0_wp )   ! Lateral boundary conditions  
     262#endif 
    243263 
    244264          
     
    261281 
    262282         !--- Lateral boundary conditions  
     283#if defined key_mpi3 
     284         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 ) 
     285#else 
    263286         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 ) 
     287#endif 
    264288 
    265289         !--- QUICKEST scheme 
     
    270294            zfu(ji,jj,jk) = tmask(ji,jj-1,jk) + tmask(ji,jj,jk) + tmask(ji,jj+1,jk) - 2. 
    271295         END_3D 
     296#if defined key_mpi3 
     297         CALL lbc_lnk_nc_multi( 'traadv_qck', zfu(:,:,:), 'T', 1.0_wp )    !--- Lateral boundary conditions  
     298#else 
    272299         CALL lbc_lnk( 'traadv_qck', zfu(:,:,:), 'T', 1.0_wp )    !--- Lateral boundary conditions  
     300#endif 
    273301         ! 
    274302         ! Tracer flux on the x-direction 
     
    285313         END DO 
    286314         ! 
     315#if defined key_mpi3 
     316         CALL lbc_lnk_nc_multi( 'traadv_qck', zwy(:,:,:), 'T', 1.0_wp ) ! Lateral boundary conditions 
     317#else 
    287318         CALL lbc_lnk( 'traadv_qck', zwy(:,:,:), 'T', 1.0_wp ) ! Lateral boundary conditions 
     319#endif 
    288320         ! 
    289321         ! Computation of the trend 
  • NEMO/branches/2020/dev_r13296_HPC-07_mocavero_mpi3/src/OCE/TRA/traadv_ubs.F90

    r13571 r13630  
    138138            !                                     
    139139         END DO          
     140#if defined key_mpi3 
     141         CALL lbc_lnk_nc_multi( 'traadv_ubs', zltu, 'T', 1.0_wp )   ;    CALL lbc_lnk_nc_multi( 'traadv_ubs', zltv, 'T', 1.0_wp )   ! Lateral boundary cond. (unchanged sgn) 
     142#else 
    140143         CALL lbc_lnk( 'traadv_ubs', zltu, 'T', 1.0_wp )   ;    CALL lbc_lnk( 'traadv_ubs', zltv, 'T', 1.0_wp )   ! Lateral boundary cond. (unchanged sgn) 
     144#endif 
    141145         !     
    142146         DO_3D( 1, 0, 1, 0, 1, jpkm1 )   !==  Horizontal advective fluxes  ==!     (UBS) 
     
    209213               zti(ji,jj,jk)    = ( pt(ji,jj,jk,jn,Kbb) + p2dt * ( ztak + zltu(ji,jj,jk) ) ) * tmask(ji,jj,jk) 
    210214            END_3D 
     215#if defined key_mpi3 
     216            CALL lbc_lnk_nc_multi( 'traadv_ubs', zti, 'T', 1.0_wp )      ! Lateral boundary conditions on zti, zsi   (unchanged sign) 
     217#else 
    211218            CALL lbc_lnk( 'traadv_ubs', zti, 'T', 1.0_wp )      ! Lateral boundary conditions on zti, zsi   (unchanged sign) 
     219#endif 
    212220            ! 
    213221            !                          !*  anti-diffusive flux : high order minus low order 
  • NEMO/branches/2020/dev_r13296_HPC-07_mocavero_mpi3/src/OCE/TRA/traatf_qco.F90

    r13295 r13630  
    149149         ENDIF 
    150150         ! 
     151#if defined key_mpi3 
     152         CALL lbc_lnk_nc_multi( 'traatfqco', pts(:,:,:,jp_tem,Kbb) , 'T', 1., pts(:,:,:,jp_sal,Kbb) , 'T', 1., & 
     153                  &                    pts(:,:,:,jp_tem,Kmm) , 'T', 1., pts(:,:,:,jp_sal,Kmm) , 'T', 1., & 
     154                  &                    pts(:,:,:,jp_tem,Kaa), 'T', 1., pts(:,:,:,jp_sal,Kaa), 'T', 1.  ) 
     155#else 
    151156         CALL lbc_lnk_multi( 'traatfqco', pts(:,:,:,jp_tem,Kbb) , 'T', 1., pts(:,:,:,jp_sal,Kbb) , 'T', 1., & 
    152157                  &                    pts(:,:,:,jp_tem,Kmm) , 'T', 1., pts(:,:,:,jp_sal,Kmm) , 'T', 1., & 
    153158                  &                    pts(:,:,:,jp_tem,Kaa), 'T', 1., pts(:,:,:,jp_sal,Kaa), 'T', 1.  ) 
     159#endif 
    154160         ! 
    155161      ENDIF 
  • NEMO/branches/2020/dev_r13296_HPC-07_mocavero_mpi3/src/OCE/TRA/trabbc.F90

    r13295 r13630  
    9696      END_2D 
    9797      ! 
     98#if defined key_mpi3 
     99      CALL lbc_lnk_nc_multi( 'trabbc', pts(:,:,:,jp_tem,Krhs) , 'T', 1.0_wp ) 
     100#else 
    98101      CALL lbc_lnk( 'trabbc', pts(:,:,:,jp_tem,Krhs) , 'T', 1.0_wp ) 
     102#endif 
    99103      ! 
    100104      IF( l_trdtra ) THEN        ! Send the trend for diagnostics 
  • NEMO/branches/2020/dev_r13296_HPC-07_mocavero_mpi3/src/OCE/TRA/trabbl.F90

    r13571 r13630  
    126126            &          tab3d_2=pts(:,:,:,jp_sal,Krhs), clinfo2=           ' Sa: ', mask2=tmask, clinfo3='tra' ) 
    127127         ! lateral boundary conditions ; just need for outputs 
     128#if defined key_mpi3 
     129         CALL lbc_lnk_nc_multi( 'trabbl', ahu_bbl, 'U', 1.0_wp , ahv_bbl, 'V', 1.0_wp ) 
     130#else 
    128131         CALL lbc_lnk_multi( 'trabbl', ahu_bbl, 'U', 1.0_wp , ahv_bbl, 'V', 1.0_wp ) 
     132#endif 
    129133         CALL iom_put( "ahu_bbl", ahu_bbl )   ! bbl diffusive flux i-coef 
    130134         CALL iom_put( "ahv_bbl", ahv_bbl )   ! bbl diffusive flux j-coef 
     
    139143            &          tab3d_2=pts(:,:,:,jp_sal,Krhs), clinfo2=           ' Sa: ', mask2=tmask, clinfo3='tra' ) 
    140144         ! lateral boundary conditions ; just need for outputs 
     145#if defined key_mpi3 
     146         CALL lbc_lnk_nc_multi( 'trabbl', utr_bbl, 'U', 1.0_wp , vtr_bbl, 'V', 1.0_wp ) 
     147#else 
    141148         CALL lbc_lnk_multi( 'trabbl', utr_bbl, 'U', 1.0_wp , vtr_bbl, 'V', 1.0_wp ) 
     149#endif 
    142150         CALL iom_put( "uoce_bbl", utr_bbl )  ! bbl i-transport 
    143151         CALL iom_put( "voce_bbl", vtr_bbl )  ! bbl j-transport 
     
    517525      ! converte into REAL to use lbc_lnk ; impose a min value of 1 as a zero can be set in lbclnk 
    518526      zmbku(:,:) = REAL( mbku_d(:,:), wp )   ;     zmbkv(:,:) = REAL( mbkv_d(:,:), wp )   
     527#if defined key_mpi3 
     528      CALL lbc_lnk_nc_multi( 'trabbl', zmbku,'U',1.0_wp, zmbkv,'V',1.0_wp)  
     529#else 
    519530      CALL lbc_lnk_multi( 'trabbl', zmbku,'U',1.0_wp, zmbkv,'V',1.0_wp)  
     531#endif 
    520532      mbku_d(:,:) = MAX( INT( zmbku(:,:) ), 1 ) ;  mbkv_d(:,:) = MAX( NINT( zmbkv(:,:) ), 1 ) 
    521533      ! 
     
    536548         e3v_bbl_0(ji,jj) = MIN( e3v_0(ji,jj,mbkt(ji  ,jj+1)), e3v_0(ji,jj,mbkt(ji,jj)) ) 
    537549      END_2D 
     550#if defined key_mpi3 
     551      CALL lbc_lnk_nc_multi( 'trabbl', e3u_bbl_0, 'U', 1.0_wp , e3v_bbl_0, 'V', 1.0_wp )      ! lateral boundary conditions 
     552#else 
    538553      CALL lbc_lnk_multi( 'trabbl', e3u_bbl_0, 'U', 1.0_wp , e3v_bbl_0, 'V', 1.0_wp )      ! lateral boundary conditions 
     554#endif 
    539555      ! 
    540556      !                             !* masked diffusive flux coefficients 
  • NEMO/branches/2020/dev_r13296_HPC-07_mocavero_mpi3/src/OCE/TRA/traldf_lap_blp.F90

    r13571 r13630  
    200200      END SELECT 
    201201      ! 
     202#if defined key_mpi3 
     203      CALL lbc_lnk_nc_multi( 'traldf_lap_blp', zlap(:,:,:,:) , 'T', 1.0_wp )     ! Lateral boundary conditions (unchanged sign) 
     204#else 
    202205      CALL lbc_lnk( 'traldf_lap_blp', zlap(:,:,:,:) , 'T', 1.0_wp )     ! Lateral boundary conditions (unchanged sign) 
     206#endif 
    203207      !                                               ! Partial top/bottom cell: GRADh( zlap )   
    204208      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_r13296_HPC-07_mocavero_mpi3/src/OCE/TRA/tramle.F90

    r13571 r13630  
    289289               rfv(ji,jj) = SQRT(  zfv * zfv + z1_t2 ) 
    290290            END_2D 
     291#if defined key_mpi3 
     292            CALL lbc_lnk_nc_multi( 'tramle', rfu, 'U', 1.0_wp , rfv, 'V', 1.0_wp ) 
     293#else 
    291294            CALL lbc_lnk_multi( 'tramle', rfu, 'U', 1.0_wp , rfv, 'V', 1.0_wp ) 
     295#endif 
    292296            ! 
    293297         ELSEIF( nn_mle == 1 ) THEN           ! MLE array allocation & initialisation 
  • NEMO/branches/2020/dev_r13296_HPC-07_mocavero_mpi3/src/OCE/TRA/tranpc.F90

    r13571 r13630  
    310310         ENDIF 
    311311         ! 
     312#if defined key_mpi3 
     313         CALL lbc_lnk_nc_multi( 'tranpc', pts(:,:,:,jp_tem,Kaa), 'T', 1.0_wp, pts(:,:,:,jp_sal,Kaa), 'T', 1.0_wp ) 
     314#else 
    312315         CALL lbc_lnk_multi( 'tranpc', pts(:,:,:,jp_tem,Kaa), 'T', 1.0_wp, pts(:,:,:,jp_sal,Kaa), 'T', 1.0_wp ) 
     316#endif 
    313317         ! 
    314318         IF( lwp .AND. l_LB_debug ) THEN 
  • NEMO/branches/2020/dev_r13296_HPC-07_mocavero_mpi3/src/OCE/TRA/traqsr.F90

    r13571 r13630  
    279279         ENDIF 
    280280      END_2D 
     281#if defined key_mpi3 
     282      CALL lbc_lnk_nc_multi( 'traqsr', fraqsr_1lev(:,:), 'T', 1._wp ) 
     283#else 
    281284      CALL lbc_lnk( 'traqsr', fraqsr_1lev(:,:), 'T', 1._wp ) 
     285#endif 
    282286      ! 
    283287      IF( iom_use('qsr3d') ) THEN      ! output the shortwave Radiation distribution 
  • NEMO/branches/2020/dev_r13296_HPC-07_mocavero_mpi3/src/OCE/TRA/trazdf.F90

    r13571 r13630  
    9595         END DO 
    9696!!gm this should be moved in trdtra.F90 and done on all trends 
     97#if defined key_mpi3 
     98         CALL lbc_lnk_nc_multi( 'trazdf', ztrdt, 'T', 1.0_wp , ztrds, 'T', 1.0_wp ) 
     99#else 
    97100         CALL lbc_lnk_multi( 'trazdf', ztrdt, 'T', 1.0_wp , ztrds, 'T', 1.0_wp ) 
     101#endif 
    98102!!gm 
    99103         CALL trd_tra( kt, Kmm, Krhs, 'TRA', jp_tem, jptra_zdf, ztrdt ) 
  • NEMO/branches/2020/dev_r13296_HPC-07_mocavero_mpi3/src/OCE/TRA/zpshde.F90

    r13571 r13630  
    146146      END DO 
    147147      ! 
     148#if defined key_mpi3 
     149      CALL lbc_lnk_nc_multi( 'zpshde', pgtu(:,:,:), 'U', -1.0_wp , pgtv(:,:,:), 'V', -1.0_wp )   ! Lateral boundary cond. 
     150#else 
    148151      CALL lbc_lnk_multi( 'zpshde', pgtu(:,:,:), 'U', -1.0_wp , pgtv(:,:,:), 'V', -1.0_wp )   ! Lateral boundary cond. 
     152#endif 
    149153      !                 
    150154      IF( PRESENT( prd ) ) THEN    !==  horizontal derivative of density anomalies (rd)  ==!    (optional part) 
     
    179183            ENDIF 
    180184         END_2D 
     185#if defined key_mpi3 
     186         CALL lbc_lnk_nc_multi( 'zpshde', pgru , 'U', -1.0_wp , pgrv , 'V', -1.0_wp )   ! Lateral boundary conditions 
     187#else 
    181188         CALL lbc_lnk_multi( 'zpshde', pgru , 'U', -1.0_wp , pgrv , 'V', -1.0_wp )   ! Lateral boundary conditions 
     189#endif 
    182190         ! 
    183191      END IF 
     
    302310      END DO 
    303311      ! 
     312#if defined key_mpi3 
     313      CALL lbc_lnk_nc_multi( 'zpshde', pgtu(:,:,:), 'U', -1.0_wp , pgtv(:,:,:), 'V', -1.0_wp )   ! Lateral boundary cond. 
     314#else 
    304315      CALL lbc_lnk_multi( 'zpshde', pgtu(:,:,:), 'U', -1.0_wp , pgtv(:,:,:), 'V', -1.0_wp )   ! Lateral boundary cond. 
     316#endif 
    305317 
    306318      ! horizontal derivative of density anomalies (rd) 
     
    344356         END_2D 
    345357 
     358#if defined key_mpi3 
     359         CALL lbc_lnk_nc_multi( 'zpshde', pgru , 'U', -1.0_wp , pgrv , 'V', -1.0_wp )   ! Lateral boundary conditions 
     360#else 
    346361         CALL lbc_lnk_multi( 'zpshde', pgru , 'U', -1.0_wp , pgrv , 'V', -1.0_wp )   ! Lateral boundary conditions 
     362#endif 
    347363         ! 
    348364      END IF 
     
    395411         ! 
    396412      END DO 
     413#if defined key_mpi3 
     414      CALL lbc_lnk_nc_multi( 'zpshde', pgtui(:,:,:), 'U', -1.0_wp , pgtvi(:,:,:), 'V', -1.0_wp )   ! Lateral boundary cond. 
     415#else 
    397416      CALL lbc_lnk_multi( 'zpshde', pgtui(:,:,:), 'U', -1.0_wp , pgtvi(:,:,:), 'V', -1.0_wp )   ! Lateral boundary cond. 
     417#endif 
    398418 
    399419      IF( PRESENT( prd ) ) THEN    !==  horizontal derivative of density anomalies (rd)  ==!    (optional part) 
     
    434454 
    435455         END_2D 
     456#if defined key_mpi3 
     457         CALL lbc_lnk_nc_multi( 'zpshde', pgrui, 'U', -1.0_wp , pgrvi, 'V', -1.0_wp )   ! Lateral boundary conditions 
     458#else 
    436459         CALL lbc_lnk_multi( 'zpshde', pgrui, 'U', -1.0_wp , pgrvi, 'V', -1.0_wp )   ! Lateral boundary conditions 
     460#endif 
    437461         ! 
    438462      END IF   
  • NEMO/branches/2020/dev_r13296_HPC-07_mocavero_mpi3/src/OCE/TRD/trddyn.F90

    r13571 r13630  
    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_r13296_HPC-07_mocavero_mpi3/src/OCE/TRD/trdken.F90

    r13295 r13630  
    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_r13296_HPC-07_mocavero_mpi3/src/OCE/TRD/trdmxl.F90

    r13571 r13630  
    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_r13296_HPC-07_mocavero_mpi3/src/OCE/TRD/trdvor.F90

    r13571 r13630  
    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_r13296_HPC-07_mocavero_mpi3/src/OCE/USR/usrdef_fmask.F90

    r13571 r13630  
    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_r13296_HPC-07_mocavero_mpi3/src/OCE/USR/usrdef_sbc.F90

    r13295 r13630  
    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_r13296_HPC-07_mocavero_mpi3/src/OCE/ZDF/zdfosm.F90

    r13571 r13630  
    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_r13296_HPC-07_mocavero_mpi3/src/OCE/ZDF/zdfphy.F90

    r13571 r13630  
    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_r13296_HPC-07_mocavero_mpi3/src/OCE/module_example

    r13571 r13630  
    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_r13296_HPC-07_mocavero_mpi3/src/OCE/stpMLF.F90

    r13237 r13630  
    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 
Note: See TracChangeset for help on using the changeset viewer.