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 – NEMO

Changeset 13630


Ignore:
Timestamp:
2020-10-19T10:48:19+02:00 (3 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
Files:
102 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2020/dev_r13296_HPC-07_mocavero_mpi3/src/ABL/ablmod.F90

    r13295 r13630  
    529529      !                            !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
    530530      ! 
     531#if defined key_mpi3 
     532      CALL lbc_lnk_nc_multi( 'ablmod',  u_abl(:,:,:,nt_a      ), 'T', -1._wp,  v_abl(:,:,:,nt_a)      , 'T', -1._wp                            ) 
     533      CALL lbc_lnk_nc_multi( 'ablmod', tq_abl(:,:,:,nt_a,jp_ta), 'T', 1._wp , tq_abl(:,:,:,nt_a,jp_qa), 'T',  1._wp , kfillmode = jpfillnothing )   ! ++++ this should not be needed... 
     534#else 
    531535      CALL lbc_lnk_multi( 'ablmod',  u_abl(:,:,:,nt_a      ), 'T', -1._wp,  v_abl(:,:,:,nt_a)      , 'T', -1._wp                            ) 
    532536      CALL lbc_lnk_multi( 'ablmod', tq_abl(:,:,:,nt_a,jp_ta), 'T', 1._wp , tq_abl(:,:,:,nt_a,jp_qa), 'T',  1._wp , kfillmode = jpfillnothing )   ! ++++ this should not be needed... 
     537#endif 
    533538      ! 
    534539#if defined key_iomput 
     
    594599      END_2D 
    595600      ! 
     601#if defined key_mpi3 
     602      CALL lbc_lnk_nc_multi( 'ablmod', zwnd_i(:,:) , 'T', -1.0_wp, zwnd_j(:,:) , 'T', -1.0_wp ) 
     603#else 
    596604      CALL lbc_lnk_multi( 'ablmod', zwnd_i(:,:) , 'T', -1.0_wp, zwnd_j(:,:) , 'T', -1.0_wp ) 
     605#endif 
    597606      ! 
    598607      ! ... scalar wind ( = | U10m - U_oce | ) at T-point (masked) 
     
    619628      END_2D 
    620629      ! 
     630#if defined key_mpi3 
     631      CALL lbc_lnk_nc_multi( 'ablmod', ptaui(:,:), 'U', -1.0_wp, ptauj(:,:), 'V', -1.0_wp ) 
     632#else 
    621633      CALL lbc_lnk_multi( 'ablmod', ptaui(:,:), 'U', -1.0_wp, ptauj(:,:), 'V', -1.0_wp ) 
     634#endif 
    622635 
    623636      CALL iom_put( "taum_oce", ptaum ) 
     
    639652            &                      * ( 0.5_wp * ( v_abl(ji,jj+1,2,nt_a) + v_abl(ji,jj,2,nt_a) ) - pssv_ice(ji,jj) ) 
    640653      END_2D 
     654#if defined key_mpi3 
     655      CALL lbc_lnk_nc_multi( 'ablmod', ptaui_ice, 'U', -1.0_wp, ptauj_ice, 'V', -1.0_wp ) 
     656#else 
    641657      CALL lbc_lnk_multi( 'ablmod', ptaui_ice, 'U', -1.0_wp, ptauj_ice, 'V', -1.0_wp ) 
     658#endif 
    642659      ! 
    643660      IF(sn_cfctl%l_prtctl)   CALL prt_ctl( tab2d_1=ptaui_ice  , clinfo1=' abl_stp: putaui : '   & 
     
    658675            &         * ( zztmp2 - pssv_ice(ji,jj) ) 
    659676      END_2D 
     677#if defined key_mpi3 
     678      CALL lbc_lnk_nc_multi( 'ablmod', ptaui_ice, 'U', -1.0_wp, ptauj_ice,'V', -1.0_wp ) 
     679#else 
    660680      CALL lbc_lnk_multi( 'ablmod', ptaui_ice, 'U', -1.0_wp, ptauj_ice,'V', -1.0_wp ) 
     681#endif 
    661682      ! 
    662683      IF(sn_cfctl%l_prtctl) THEN 
     
    865886      ! Optional : could add pblh smoothing if pblh is noisy horizontally ... 
    866887      IF(ln_smth_pblh) THEN 
     888#if defined key_mpi3 
     889         CALL lbc_lnk_nc_multi( 'ablmod', pblh, 'T', 1.0_wp) !, kfillmode = jpfillnothing) 
     890#else 
    867891         CALL lbc_lnk( 'ablmod', pblh, 'T', 1.0_wp) !, kfillmode = jpfillnothing) 
     892#endif 
    868893         CALL smooth_pblh( pblh, msk_abl ) 
     894#if defined key_mpi3 
     895         CALL lbc_lnk_nc_multi( 'ablmod', pblh, 'T', 1.0_wp) !, kfillmode = jpfillnothing) 
     896#else 
    869897         CALL lbc_lnk( 'ablmod', pblh, 'T', 1.0_wp) !, kfillmode = jpfillnothing) 
     898#endif 
    870899      ENDIF 
    871900      !                            !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
  • NEMO/branches/2020/dev_r13296_HPC-07_mocavero_mpi3/src/ICE/icecor.F90

    r13571 r13630  
    113113            ENDIF 
    114114         END_2D 
     115#if defined key_mpi3 
     116         CALL lbc_lnk_nc_multi( 'icecor', u_ice, 'U', -1.0_wp, v_ice, 'V', -1.0_wp ) 
     117#else 
    115118         CALL lbc_lnk_multi( 'icecor', u_ice, 'U', -1.0_wp, v_ice, 'V', -1.0_wp ) 
     119#endif 
    116120      ENDIF 
    117121 
  • NEMO/branches/2020/dev_r13296_HPC-07_mocavero_mpi3/src/ICE/icedyn.F90

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

    r13571 r13630  
    158158         END_3D 
    159159      END DO 
     160#if defined key_mpi3 
     161      CALL lbc_lnk_nc_multi( 'icedyn_adv_pra', zei_max, 'T', 1. ) 
     162      CALL lbc_lnk_nc_multi( 'icedyn_adv_pra', zes_max, 'T', 1. ) 
     163#else 
    160164      CALL lbc_lnk( 'icedyn_adv_pra', zei_max, 'T', 1. ) 
    161165      CALL lbc_lnk( 'icedyn_adv_pra', zes_max, 'T', 1. ) 
     166#endif 
    162167      ! 
    163168      ! 
     
    311316               &                          - ( zudy(ji,jj) - zudy(ji-1,jj) + zvdx(ji,jj) - zvdx(ji,jj-1) ) * r1_e1e2t(ji,jj) * zdt 
    312317         END_2D 
     318#if defined key_mpi3 
     319         CALL lbc_lnk_nc_multi( 'icedyn_adv_pra', pato_i, 'T',  1.0_wp ) 
     320#else 
    313321         CALL lbc_lnk( 'icedyn_adv_pra', pato_i, 'T',  1.0_wp ) 
     322#endif 
    314323         ! 
    315324         ! --- Ensure non-negative fields --- ! 
  • NEMO/branches/2020/dev_r13296_HPC-07_mocavero_mpi3/src/ICE/icedyn_adv_umx.F90

    r13571 r13630  
    162162         END_3D 
    163163      END DO 
     164#if defined key_mpi3 
     165      CALL lbc_lnk_nc_multi( 'icedyn_adv_pra', zei_max, 'T', 1. ) 
     166      CALL lbc_lnk_nc_multi( 'icedyn_adv_pra', zes_max, 'T', 1. ) 
     167#else 
    164168      CALL lbc_lnk( 'icedyn_adv_pra', zei_max, 'T', 1. ) 
    165169      CALL lbc_lnk( 'icedyn_adv_pra', zes_max, 'T', 1. ) 
     170#endif 
    166171      ! 
    167172      ! 
     
    384389               &                          - ( zudy(ji,jj) - zudy(ji-1,jj) + zvdx(ji,jj) - zvdx(ji,jj-1) ) * r1_e1e2t(ji,jj) * zdt 
    385390         END_2D 
     391#if defined key_mpi3 
     392         CALL lbc_lnk_nc_multi( 'icedyn_adv_umx', pato_i, 'T',  1.0_wp ) 
     393#else 
    386394         CALL lbc_lnk( 'icedyn_adv_umx', pato_i, 'T',  1.0_wp ) 
     395#endif 
    387396         ! 
    388397         ! 
     
    518527            END_2D 
    519528         END DO 
     529#if defined key_mpi3 
     530         CALL lbc_lnk_nc_multi( 'icedyn_adv_umx', zt_ups, 'T',  1.0_wp ) 
     531#else 
    520532         CALL lbc_lnk( 'icedyn_adv_umx', zt_ups, 'T',  1.0_wp ) 
     533#endif 
    521534         ! 
    522535         IF    ( np_limiter == 1 ) THEN 
     
    601614               END_2D 
    602615            END DO 
     616#if defined key_mpi3 
     617            CALL lbc_lnk_nc_multi( 'icedyn_adv_umx', zpt, 'T', 1.0_wp ) 
     618#else 
    603619            CALL lbc_lnk( 'icedyn_adv_umx', zpt, 'T', 1.0_wp ) 
     620#endif 
    604621            ! 
    605622            DO jl = 1, jpl              !-- flux in y-direction 
     
    625642               END_2D 
    626643            END DO 
     644#if defined key_mpi3 
     645            CALL lbc_lnk_nc_multi( 'icedyn_adv_umx', zpt, 'T', 1.0_wp ) 
     646#else 
    627647            CALL lbc_lnk( 'icedyn_adv_umx', zpt, 'T', 1.0_wp ) 
     648#endif 
    628649            ! 
    629650            DO jl = 1, jpl              !-- flux in x-direction 
     
    647668         END_2D 
    648669      END DO 
     670#if defined key_mpi3 
     671      CALL lbc_lnk_nc_multi( 'icedyn_adv_umx', pt_ups, 'T', 1.0_wp ) 
     672#else 
    649673      CALL lbc_lnk( 'icedyn_adv_umx', pt_ups, 'T', 1.0_wp ) 
     674#endif 
    650675 
    651676   END SUBROUTINE upstream 
     
    709734               END_2D 
    710735            END DO 
     736#if defined key_mpi3 
     737            CALL lbc_lnk_nc_multi( 'icedyn_adv_umx', zpt, 'T', 1.0_wp ) 
     738#else 
    711739            CALL lbc_lnk( 'icedyn_adv_umx', zpt, 'T', 1.0_wp ) 
     740#endif 
    712741 
    713742            DO jl = 1, jpl              !-- flux in y-direction 
     
    735764               END_2D 
    736765            END DO 
     766#if defined key_mpi3 
     767            CALL lbc_lnk_nc_multi( 'icedyn_adv_umx', zpt, 'T', 1.0_wp ) 
     768#else 
    737769            CALL lbc_lnk( 'icedyn_adv_umx', zpt, 'T', 1.0_wp ) 
     770#endif 
    738771            ! 
    739772            DO jl = 1, jpl              !-- flux in x-direction 
     
    793826            END_2D 
    794827         END DO 
     828#if defined key_mpi3 
     829         CALL lbc_lnk_nc_multi( 'icedyn_adv_umx', zpt, 'T', 1.0_wp ) 
     830#else 
    795831         CALL lbc_lnk( 'icedyn_adv_umx', zpt, 'T', 1.0_wp ) 
     832#endif 
    796833         ! 
    797834         !                                                        !--  ultimate interpolation of pt at v-point  --! 
     
    820857            END_2D 
    821858         END DO 
     859#if defined key_mpi3 
     860         CALL lbc_lnk_nc_multi( 'icedyn_adv_umx', zpt, 'T', 1.0_wp ) 
     861#else 
    822862         CALL lbc_lnk( 'icedyn_adv_umx', zpt, 'T', 1.0_wp ) 
     863#endif 
    823864         ! 
    824865         !                                                        !--  ultimate interpolation of pt at u-point  --! 
     
    873914         END DO 
    874915      END DO 
     916#if defined key_mpi3 
     917      CALL lbc_lnk_nc_multi( 'icedyn_adv_umx', ztu2, 'T', 1.0_wp ) 
     918#else 
    875919      CALL lbc_lnk( 'icedyn_adv_umx', ztu2, 'T', 1.0_wp ) 
     920#endif 
    876921      ! 
    877922      !                                                     !--  BiLaplacian in i-direction  --! 
     
    887932         END DO 
    888933      END DO 
     934#if defined key_mpi3 
     935      CALL lbc_lnk_nc_multi( 'icedyn_adv_umx', ztu4, 'T', 1.0_wp ) 
     936#else 
    889937      CALL lbc_lnk( 'icedyn_adv_umx', ztu4, 'T', 1.0_wp ) 
     938#endif 
    890939      ! 
    891940      ! 
     
    10131062         END_2D 
    10141063      END DO 
     1064#if defined key_mpi3 
     1065      CALL lbc_lnk_nc_multi( 'icedyn_adv_umx', ztv2, 'T', 1.0_wp ) 
     1066#else 
    10151067      CALL lbc_lnk( 'icedyn_adv_umx', ztv2, 'T', 1.0_wp ) 
     1068#endif 
    10161069      ! 
    10171070      !                                                     !--  BiLaplacian in j-direction  --! 
     
    10241077         END_2D 
    10251078      END DO 
     1079#if defined key_mpi3 
     1080      CALL lbc_lnk_nc_multi( 'icedyn_adv_umx', ztv4, 'T', 1.0_wp ) 
     1081#else 
    10261082      CALL lbc_lnk( 'icedyn_adv_umx', ztv4, 'T', 1.0_wp ) 
     1083#endif 
    10271084      ! 
    10281085      ! 
     
    11631220            END_2D 
    11641221         END DO 
     1222#if defined key_mpi3 
     1223         CALL lbc_lnk_nc_multi( 'icedyn_adv_umx', zti_ups, 'T', 1.0_wp, ztj_ups, 'T', 1.0_wp ) 
     1224#else 
    11651225         CALL lbc_lnk_multi( 'icedyn_adv_umx', zti_ups, 'T', 1.0_wp, ztj_ups, 'T', 1.0_wp ) 
     1226#endif 
    11661227 
    11671228         DO jl = 1, jpl 
     
    11851246            END_2D 
    11861247         END DO 
     1248#if defined key_mpi3 
     1249         CALL lbc_lnk_nc_multi( 'icedyn_adv_umx', pfu_ho, 'U', -1.0_wp, pfv_ho, 'V', -1.0_wp )   ! lateral boundary cond. 
     1250#else 
    11871251         CALL lbc_lnk_multi( 'icedyn_adv_umx', pfu_ho, 'U', -1.0_wp, pfv_ho, 'V', -1.0_wp )   ! lateral boundary cond. 
     1252#endif 
    11881253 
    11891254      ENDIF 
     
    12421307         END_2D 
    12431308      END DO 
     1309#if defined key_mpi3 
     1310      CALL lbc_lnk_nc_multi( 'icedyn_adv_umx', zbetup, 'T', 1.0_wp, zbetdo, 'T', 1.0_wp )   ! lateral boundary cond. (unchanged sign) 
     1311#else 
    12441312      CALL lbc_lnk_multi( 'icedyn_adv_umx', zbetup, 'T', 1.0_wp, zbetdo, 'T', 1.0_wp )   ! lateral boundary cond. (unchanged sign) 
     1313#endif 
    12451314 
    12461315       
     
    12971366         END_2D 
    12981367      END DO 
     1368#if defined key_mpi3 
     1369      CALL lbc_lnk_nc_multi( 'icedyn_adv_umx', zslpx, 'U', -1.0_wp)   ! lateral boundary cond. 
     1370#else 
    12991371      CALL lbc_lnk( 'icedyn_adv_umx', zslpx, 'U', -1.0_wp)   ! lateral boundary cond. 
     1372#endif 
    13001373       
    13011374      DO jl = 1, jpl 
     
    13611434         END_2D 
    13621435      END DO 
     1436#if defined key_mpi3 
     1437      CALL lbc_lnk_nc_multi( 'icedyn_adv_umx', pfu_ho, 'U', -1.0_wp)   ! lateral boundary cond. 
     1438#else 
    13631439      CALL lbc_lnk( 'icedyn_adv_umx', pfu_ho, 'U', -1.0_wp)   ! lateral boundary cond. 
     1440#endif 
    13641441      ! 
    13651442   END SUBROUTINE limiter_x 
     
    13881465         END_2D 
    13891466      END DO 
     1467#if defined key_mpi3 
     1468      CALL lbc_lnk_nc_multi( 'icedyn_adv_umx', zslpy, 'V', -1.0_wp)   ! lateral boundary cond. 
     1469#else 
    13901470      CALL lbc_lnk( 'icedyn_adv_umx', zslpy, 'V', -1.0_wp)   ! lateral boundary cond. 
     1471#endif 
    13911472 
    13921473      DO jl = 1, jpl 
     
    14531534         END_2D 
    14541535      END DO 
     1536#if defined key_mpi3 
     1537      CALL lbc_lnk_nc_multi( 'icedyn_adv_umx', pfv_ho, 'V', -1.0_wp)   ! lateral boundary cond. 
     1538#else 
    14551539      CALL lbc_lnk( 'icedyn_adv_umx', pfv_ho, 'V', -1.0_wp)   ! lateral boundary cond. 
     1540#endif 
    14561541      ! 
    14571542   END SUBROUTINE limiter_y 
  • NEMO/branches/2020/dev_r13296_HPC-07_mocavero_mpi3/src/ICE/icedyn_rdgrft.F90

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

    r13571 r13630  
    322322 
    323323      END_2D 
    324 #if defined key_mpi3 
    325       CALL lbc_lnk_nc_multi( 'icedyn_rhg_evp', zmf, 'T', 1.0_wp, zdt_m, 'T', 1.0_wp ) 
    326 #else 
    327324      CALL lbc_lnk_multi( 'icedyn_rhg_evp', zmf, 'T', 1.0_wp, zdt_m, 'T', 1.0_wp ) 
    328 #endif 
    329325      ! 
    330326      !                                  !== Landfast ice parameterization ==! 
     
    408404 
    409405         END_2D 
     406#if defined key_mpi3 
     407         CALL lbc_lnk_nc_multi( 'icedyn_rhg_evp', zdelta, 'T', 1.0_wp ) 
     408#else 
    410409         CALL lbc_lnk( 'icedyn_rhg_evp', zdelta, 'T', 1.0_wp ) 
    411  
     410#endif 
    412411         ! P/delta at T points 
    413412         DO_2D( 1, 1, 1, 1 ) 
  • NEMO/branches/2020/dev_r13296_HPC-07_mocavero_mpi3/src/ICE/icesbc.F90

    r13571 r13630  
    8686            vtau_ice(ji,jj) = vtau_ice(ji,jj) * xcplmask(ji,jj,0) + zvtau_ice(ji,jj) * ( 1. - xcplmask(ji,jj,0) ) 
    8787         END_2D 
     88#if defined key_mpi3 
     89         CALL lbc_lnk_nc_multi( 'icesbc', utau_ice, 'U', -1.0_wp, vtau_ice, 'V', -1.0_wp ) 
     90#else 
    8891         CALL lbc_lnk_multi( 'icesbc', utau_ice, 'U', -1.0_wp, vtau_ice, 'V', -1.0_wp ) 
     92#endif 
    8993      ENDIF 
    9094      ! 
  • NEMO/branches/2020/dev_r13296_HPC-07_mocavero_mpi3/src/ICE/icethd.F90

    r13571 r13630  
    132132         END_2D 
    133133      ENDIF 
     134#if defined key_mpi3 
     135      CALL lbc_lnk_nc_multi( 'icethd', zfric, 'T',  1.0_wp ) 
     136#else 
    134137      CALL lbc_lnk( 'icethd', zfric, 'T',  1.0_wp ) 
     138#endif 
    135139      ! 
    136140      !--------------------------------------------------------------------! 
  • NEMO/branches/2020/dev_r13296_HPC-07_mocavero_mpi3/src/ICE/icethd_do.F90

    r13571 r13630  
    191191         END_2D 
    192192         !  
     193#if defined key_mpi3 
     194         CALL lbc_lnk_nc_multi( 'icethd_do', zvrel, 'T', 1.0_wp, ht_i_new, 'T', 1.0_wp  ) 
     195#else 
    193196         CALL lbc_lnk_multi( 'icethd_do', zvrel, 'T', 1.0_wp, ht_i_new, 'T', 1.0_wp  ) 
     197#endif 
    194198 
    195199      ENDIF 
  • NEMO/branches/2020/dev_r13296_HPC-07_mocavero_mpi3/src/ICE/iceupdate.F90

    r13571 r13630  
    342342            tmod_io(ji,jj) = zrhoco * SQRT( zmodt )          ! rhoco * |U_ice-U_oce| at T-point 
    343343         END_2D 
     344#if defined key_mpi3 
     345         CALL lbc_lnk_nc_multi( 'iceupdate', taum, 'T', 1.0_wp, tmod_io, 'T', 1.0_wp ) 
     346#else 
    344347         CALL lbc_lnk_multi( 'iceupdate', taum, 'T', 1.0_wp, tmod_io, 'T', 1.0_wp ) 
     348#endif 
    345349         ! 
    346350         utau_oce(:,:) = utau(:,:)                    !* save the air-ocean stresses at ice time-step 
     
    371375         vtau(ji,jj) = ( 1._wp - zat_v ) * vtau_oce(ji,jj) + zat_v * zvtau_ice 
    372376      END_2D 
     377#if defined key_mpi3 
     378      CALL lbc_lnk_nc_multi( 'iceupdate', utau, 'U', -1.0_wp, vtau, 'V', -1.0_wp )   ! lateral boundary condition 
     379#else 
    373380      CALL lbc_lnk_multi( 'iceupdate', utau, 'U', -1.0_wp, vtau, 'V', -1.0_wp )   ! lateral boundary condition 
     381#endif 
    374382      ! 
    375383      IF( ln_timing )   CALL timing_stop('ice_update_tau') 
  • NEMO/branches/2020/dev_r13296_HPC-07_mocavero_mpi3/src/ICE/icewri.F90

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

    r13571 r13630  
    290290       
    291291      IF( .NOT. spongedoneT .AND. .NOT. spongedoneU ) THEN 
     292#if defined key_mpi3 
     293         CALL lbc_lnk_nc_multi( 'agrif_Sponge', fspu, 'U', 1._wp, fspv, 'V', 1._wp, fspt, 'T', 1._wp, fspf, 'F', 1._wp ) 
     294#else 
    292295         CALL lbc_lnk_multi( 'agrif_Sponge', fspu, 'U', 1._wp, fspv, 'V', 1._wp, fspt, 'T', 1._wp, fspf, 'F', 1._wp ) 
     296#endif 
    293297         spongedoneT = .TRUE. 
    294298         spongedoneU = .TRUE. 
    295299      ENDIF 
    296300      IF( .NOT. spongedoneT ) THEN 
     301#if defined key_mpi3 
     302         CALL lbc_lnk_nc_multi( 'agrif_Sponge', fspu, 'U', 1._wp, fspv, 'V', 1._wp ) 
     303#else 
    297304         CALL lbc_lnk_multi( 'agrif_Sponge', fspu, 'U', 1._wp, fspv, 'V', 1._wp ) 
     305#endif 
    298306         spongedoneT = .TRUE. 
    299307      ENDIF 
    300308      IF( .NOT. spongedoneT .AND. .NOT. spongedoneU ) THEN 
     309#if defined key_mpi3 
     310         CALL lbc_lnk_nc_multi( 'agrif_Sponge', fspt, 'T', 1._wp, fspf, 'F', 1._wp ) 
     311#else 
    301312         CALL lbc_lnk_multi( 'agrif_Sponge', fspt, 'T', 1._wp, fspf, 'F', 1._wp ) 
     313#endif 
    302314         spongedoneU = .TRUE. 
    303315      ENDIF 
     
    323335      ztabrampu(:,:) = REAL( mbku_parent(:,:), wp ) 
    324336      ztabrampv(:,:) = REAL( mbkv_parent(:,:), wp ) 
     337#if defined key_mpi3 
     338      CALL lbc_lnk_nc_multi( 'Agrif_Sponge', ztabramp, 'T', 1._wp, ztabrampu, 'U', 1._wp, ztabrampv, 'V', 1._wp ) 
     339#else 
    325340      CALL lbc_lnk_multi( 'Agrif_Sponge', ztabramp, 'T', 1._wp, ztabrampu, 'U', 1._wp, ztabrampv, 'V', 1._wp ) 
     341#endif 
    326342      mbkt_parent(:,:) = NINT( ztabramp (:,:) ) 
    327343      mbku_parent(:,:) = NINT( ztabrampu(:,:) ) 
  • NEMO/branches/2020/dev_r13296_HPC-07_mocavero_mpi3/src/NST/agrif_user.F90

    r13571 r13630  
    9999 
    100100 
     101#if defined key_mpi3 
     102      CALL lbc_lnk_nc_multi( 'agrif_istate', uu(:,:,:  ,Kbb), 'U', -1.0_wp , vv(:,:,:,Kbb), 'V', -1.0_wp ) 
     103      CALL lbc_lnk_nc_multi(       'agrif_istate', ts(:,:,:,:,Kbb), 'T',  1.0_wp ) 
     104#else 
    101105      CALL lbc_lnk_multi( 'agrif_istate', uu(:,:,:  ,Kbb), 'U', -1.0_wp , vv(:,:,:,Kbb), 'V', -1.0_wp ) 
    102106      CALL lbc_lnk(       'agrif_istate', ts(:,:,:,:,Kbb), 'T',  1.0_wp ) 
     107#endif 
    103108 
    104109   END SUBROUTINE Agrif_Istate 
     
    273278      ENDIF 
    274279      ! 
     280#if defined key_mpi3 
     281      CALL lbc_lnk_nc_multi( 'Agrif_Init_Domain', hu0_parent, 'U', 1.0_wp, hv0_parent, 'V', 1.0_wp ) 
     282#else 
    275283      CALL lbc_lnk_multi( 'Agrif_Init_Domain', hu0_parent, 'U', 1.0_wp, hv0_parent, 'V', 1.0_wp ) 
     284#endif 
    276285      DO_2D( 0, 0, 0, 0 ) 
    277286         zk(ji,jj) = REAL( mbku_parent(ji,jj), wp ) 
    278287      END_2D 
     288#if defined key_mpi3 
     289      CALL lbc_lnk_nc_multi( 'Agrif_InitValues_cont', zk, 'U', 1.0_wp ) 
     290#else 
    279291      CALL lbc_lnk( 'Agrif_InitValues_cont', zk, 'U', 1.0_wp ) 
     292#endif 
    280293      mbku_parent(:,:) = MAX( NINT( zk(:,:) ), 1 ) 
    281294      DO_2D( 0, 0, 0, 0 ) 
    282295         zk(ji,jj) = REAL( mbkv_parent(ji,jj), wp ) 
    283296      END_2D 
     297#if defined key_mpi3 
     298      CALL lbc_lnk_nc_multi( 'Agrif_InitValues_cont', zk, 'V', 1.0_wp ) 
     299#else 
    284300      CALL lbc_lnk( 'Agrif_InitValues_cont', zk, 'V', 1.0_wp ) 
     301#endif 
    285302      mbkv_parent(:,:) = MAX( NINT( zk(:,:) ), 1 )    
    286303 
    287304      IF ( ln_init_chfrpar ) THEN  
    288305         CALL Agrif_Init_Variable(sshini_id, procname=agrif_initssh) 
     306#if defined key_mpi3 
     307         CALL lbc_lnk_nc_multi( 'Agrif_Init_Domain', ssh(:,:,Kbb), 'T', 1. ) 
     308#else 
    289309         CALL lbc_lnk( 'Agrif_Init_Domain', ssh(:,:,Kbb), 'T', 1. ) 
     310#endif 
    290311         DO jk = 1, jpk 
    291312               e3t(:,:,jk,Kbb) =  e3t_0(:,:,jk) * ( ht_0(:,:) + ssh(:,:,Kbb)  ) & 
  • NEMO/branches/2020/dev_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 
  • NEMO/branches/2020/dev_r13296_HPC-07_mocavero_mpi3/src/SWE/asminc.F90

    r13571 r13630  
    423423                     &            / e3t(ji,jj,jk,Kmm) 
    424424               END_2D 
     425#if defined key_mpi3 
     426               CALL lbc_lnk_nc_multi( 'asminc', zhdiv, 'T', 1. )   ! lateral boundary cond. (no sign change) 
     427#else 
    425428               CALL lbc_lnk( 'asminc', zhdiv, 'T', 1. )   ! lateral boundary cond. (no sign change) 
     429#endif 
    426430               ! 
    427431               DO_2D( 0, 0, 0, 0 ) 
  • NEMO/branches/2020/dev_r13296_HPC-07_mocavero_mpi3/src/SWE/diawri.F90

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

    r13295 r13630  
    141141      ! the following call is mandatory 
    142142      ! it masks boundaries (bathy=0) where needed depending on the configuration (closed, periodic...)   
     143#if defined key_mpi3 
     144      CALL lbc_lnk_nc_multi( 'dommsk', tmask  , 'T', 1._wp )      ! Lateral boundary conditions 
     145#else 
    143146      CALL lbc_lnk( 'dommsk', tmask  , 'T', 1._wp )      ! Lateral boundary conditions 
     147#endif 
    144148 
    145149     ! Mask corrections for bdy (read in mppini2) 
     
    173177         END DO 
    174178      END DO 
     179#if defined key_mpi3 
     180      CALL lbc_lnk_nc_multi( 'dommsk', umask, 'U', 1., vmask, 'V', 1., fmask, 'F', 1. )      ! Lateral boundary conditions 
     181#else 
    175182      CALL lbc_lnk_multi( 'dommsk', umask, 'U', 1., vmask, 'V', 1., fmask, 'F', 1. )      ! Lateral boundary conditions 
     183#endif 
    176184  
    177185      ! Ocean/land mask at wu-, wv- and w points    (computed from tmask) 
     
    198206            &                   tmask(ji,jj  ,1), tmask(ji+1,jj  ,1)   ) 
    199207      END_2D 
     208#if defined key_mpi3 
     209      CALL lbc_lnk_nc_multi( 'dommsk', ssfmask, 'F', 1._wp )    
     210#else 
    200211      CALL lbc_lnk( 'dommsk', ssfmask, 'F', 1._wp )    
     212#endif 
    201213 
    202214!!an 
     
    279291         DEALLOCATE( zwf ) 
    280292         ! 
     293#if defined key_mpi3 
     294         CALL lbc_lnk_nc_multi( 'dommsk', fmask, 'F', 1._wp )      ! Lateral boundary conditions on fmask 
     295#else 
    281296         CALL lbc_lnk( 'dommsk', fmask, 'F', 1._wp )      ! Lateral boundary conditions on fmask 
     297#endif 
    282298         ! 
    283299         ! CAUTION : The fmask may be further modified in dyn_vor_init ( dynvor.F90 ) depending on ln_vorlat 
  • NEMO/branches/2020/dev_r13296_HPC-07_mocavero_mpi3/src/SWE/domvvl.F90

    r13571 r13630  
    520520         !                       ! d - thickness diffusion transport: boundary conditions 
    521521         !                             (stored for tracer advction and continuity equation) 
     522#if defined key_mpi3 
     523         CALL lbc_lnk_nc_multi( 'domvvl', un_td , 'U' , -1._wp, vn_td , 'V' , -1._wp) 
     524#else 
    522525         CALL lbc_lnk_multi( 'domvvl', un_td , 'U' , -1._wp, vn_td , 'V' , -1._wp) 
     526#endif 
    523527 
    524528         ! 4 - Time stepping of baroclinic scale factors 
    525529         ! --------------------------------------------- 
     530#if defined key_mpi3 
     531         CALL lbc_lnk_nc_multi( 'domvvl', tilde_e3t_a(:,:,:), 'T', 1._wp ) 
     532#else 
    526533         CALL lbc_lnk( 'domvvl', tilde_e3t_a(:,:,:), 'T', 1._wp ) 
     534#endif 
    527535         tilde_e3t_a(:,:,:) = tilde_e3t_b(:,:,:) + rDt * tmask(:,:,:) * tilde_e3t_a(:,:,:) 
    528536 
     
    10161024               &                   + e1e2t(ji+1,jj) * pssh(ji+1,jj)  ) * r1_hu_0(ji,jj) * r1_e1e2u(ji,jj) 
    10171025         END_2D 
     1026#if defined key_mpi3 
     1027         CALL lbc_lnk_nc_multi( 'domvvl', zc3(:,:), 'U', 1._wp ) 
     1028#else 
    10181029         CALL lbc_lnk( 'domvvl', zc3(:,:), 'U', 1._wp ) 
     1030#endif 
    10191031         ! 
    10201032         DO jk = 1, jpkm1 
     
    10271039               &                   + e1e2t(ji,jj+1) * pssh(ji,jj+1)  ) * r1_hv_0(ji,jj) * r1_e1e2v(ji,jj) 
    10281040         END_2D 
     1041#if defined key_mpi3 
     1042         CALL lbc_lnk_nc_multi( 'domvvl', zc3(:,:), 'V', 1._wp ) 
     1043#else 
    10291044         CALL lbc_lnk( 'domvvl', zc3(:,:), 'V', 1._wp ) 
     1045#endif 
    10301046         ! 
    10311047         DO jk = 1, jpkm1 
     
    10401056               &                    + e1e2t(ji+1,jj+1) * pssh(ji+1,jj+1)  ) * r1_hf_0(ji,jj) * r1_e1e2f(ji,jj) 
    10411057         END_2D 
     1058#if defined key_mpi3 
     1059         CALL lbc_lnk_nc_multi( 'domvvl', zc3(:,:), 'F', 1._wp ) 
     1060#else 
    10421061         CALL lbc_lnk( 'domvvl', zc3(:,:), 'F', 1._wp ) 
     1062#endif 
    10431063         ! 
    10441064         DO jk = 1, jpkm1                    ! Horizontal interpolation of e3f from ssh 
     
    10591079               &                   + e1e2t(ji+1,jj) * pssh(ji+1,jj)  ) * r1_hu_0(ji,jj) * r1_e1e2u(ji,jj) 
    10601080         END_2D 
     1081#if defined key_mpi3 
     1082         CALL lbc_lnk_nc_multi( 'domvvl', zc3(:,:), 'U', 1._wp ) 
     1083#else 
    10611084         CALL lbc_lnk( 'domvvl', zc3(:,:), 'U', 1._wp ) 
     1085#endif 
    10621086         ! 
    10631087         DO jk = 1, jpk 
     
    10701094               &                   + e1e2t(ji,jj+1) * pssh(ji,jj+1)  ) * r1_hv_0(ji,jj) * r1_e1e2v(ji,jj) 
    10711095         END_2D 
     1096#if defined key_mpi3 
     1097         CALL lbc_lnk_nc_multi( 'domvvl', zc3(:,:), 'V', 1._wp ) 
     1098#else 
    10721099         CALL lbc_lnk( 'domvvl', zc3(:,:), 'V', 1._wp ) 
     1100#endif 
    10731101          ! 
    10741102         DO jk = 1, jpk 
  • NEMO/branches/2020/dev_r13296_HPC-07_mocavero_mpi3/src/SWE/dynatf.F90

    r13295 r13630  
    165165# endif 
    166166      ! 
     167#if defined key_mpi3 
     168      CALL lbc_lnk_nc_multi( 'dynatf', puu(:,:,:,Kaa), 'U', -1., pvv(:,:,:,Kaa), 'V', -1. )     !* local domain boundaries 
     169#else 
    167170      CALL lbc_lnk_multi( 'dynatf', puu(:,:,:,Kaa), 'U', -1., pvv(:,:,:,Kaa), 'V', -1. )     !* local domain boundaries 
     171#endif 
    168172      ! 
    169173      !                                !* BDY open boundaries 
  • NEMO/branches/2020/dev_r13296_HPC-07_mocavero_mpi3/src/SWE/dynkeg.F90

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

    r13295 r13630  
    232232      CALL dyn_ldf_lap( kt, Kbb, Kmm, pu, pv, zulap, zvlap, 1 )   ! rotated laplacian applied to pt (output in zlap,Kbb) 
    233233      ! 
     234#if defined key_mpi3 
     235      CALL lbc_lnk_nc_multi( 'dynldf_lap_blp', zulap, 'U', -1., zvlap, 'V', -1. )             ! Lateral boundary conditions 
     236#else 
    234237      CALL lbc_lnk_multi( 'dynldf_lap_blp', zulap, 'U', -1., zvlap, 'V', -1. )             ! Lateral boundary conditions 
     238#endif 
    235239      ! 
    236240      CALL dyn_ldf_lap( kt, Kbb, Kmm, zulap, zvlap, pu_rhs, pv_rhs, 2 )   ! rotated laplacian applied to zlap (output in pt(:,:,:,:,Krhs)) 
  • NEMO/branches/2020/dev_r13296_HPC-07_mocavero_mpi3/src/SWE/dynvor.F90

    r13295 r13630  
    242242            ENDIF 
    243243         END DO 
     244#if defined key_mpi3 
     245         CALL lbc_lnk_nc_multi( 'dynvor', zwz, 'F', 1. ) 
     246#else 
    244247         CALL lbc_lnk( 'dynvor', zwz, 'F', 1. ) 
     248#endif 
    245249         ! 
    246250      END SELECT 
     
    599603      END DO                                           !   End of slab 
    600604         ! 
     605#if defined key_mpi3 
     606      CALL lbc_lnk_nc_multi( 'dynvor', zwz, 'F', 1. ) 
     607#else 
    601608      CALL lbc_lnk( 'dynvor', zwz, 'F', 1. ) 
     609#endif 
    602610 
    603611      DO jk = 1, jpkm1                                 ! Horizontal slab 
     
    720728      END DO 
    721729      ! 
     730#if defined key_mpi3 
     731      CALL lbc_lnk_nc_multi( 'dynvor', zwz, 'F', 1. ) 
     732#else 
    722733      CALL lbc_lnk( 'dynvor', zwz, 'F', 1. ) 
     734#endif 
    723735      ! 
    724736      DO jk = 1, jpkm1                                 ! Horizontal slab 
     
    812824         END_3D 
    813825         ! 
     826#if defined key_mpi3 
     827         CALL lbc_lnk_nc_multi( 'dynvor', fmask, 'F', 1._wp )      ! Lateral boundary conditions on fmask 
     828#else 
    814829         CALL lbc_lnk( 'dynvor', fmask, 'F', 1._wp )      ! Lateral boundary conditions on fmask 
     830#endif 
    815831         ! 
    816832      ENDIF 
     
    850866               dj_e1v_2(ji,jj) = ( e1v(ji,jj) - e1v(ji  ,jj-1) ) * 0.5_wp 
    851867            END_2D 
     868#if defined key_mpi3 
     869            CALL lbc_lnk_nc_multi( 'dynvor', di_e2u_2, 'T', -1. , dj_e1v_2, 'T', -1. )   ! Lateral boundary conditions 
     870#else 
    852871            CALL lbc_lnk_multi( 'dynvor', di_e2u_2, 'T', -1. , dj_e1v_2, 'T', -1. )   ! Lateral boundary conditions 
     872#endif 
    853873            ! 
    854874         CASE DEFAULT                        !* F-point metric term :   pre-compute di(e2u)/(2*e1e2f) and dj(e1v)/(2*e1e2f) 
     
    858878               dj_e1u_2e1e2f(ji,jj) = ( e1u(ji  ,jj+1) - e1u(ji,jj) )  * 0.5 * r1_e1e2f(ji,jj) 
    859879            END_2D 
     880#if defined key_mpi3 
     881            CALL lbc_lnk_nc_multi( 'dynvor', di_e2v_2e1e2f, 'F', -1. , dj_e1u_2e1e2f, 'F', -1. )   ! Lateral boundary conditions 
     882#else 
    860883            CALL lbc_lnk_multi( 'dynvor', di_e2v_2e1e2f, 'F', -1. , dj_e1u_2e1e2f, 'F', -1. )   ! Lateral boundary conditions 
     884#endif 
    861885         END SELECT 
    862886         ! 
  • NEMO/branches/2020/dev_r13296_HPC-07_mocavero_mpi3/src/SWE/ldfdyn.F90

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

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

    r13571 r13630  
    237237 
    238238 
     239#if defined key_mpi3 
     240      CALL lbc_lnk_nc_multi( 'stp', uu(:,:,:,Nnn), 'U', -1., vv(:,:,:,Nnn), 'V', -1.,   &   !* local domain boundaries 
     241         &                       uu(:,:,:,Naa), 'U', -1., vv(:,:,:,Naa), 'V', -1.    )      
     242#else 
    239243      CALL lbc_lnk_multi( 'stp', uu(:,:,:,Nnn), 'U', -1., vv(:,:,:,Nnn), 'V', -1.,   &   !* local domain boundaries 
    240244         &                       uu(:,:,:,Naa), 'U', -1., vv(:,:,:,Naa), 'V', -1.    )      
     245#endif 
    241246 
    242247!!an          
  • NEMO/branches/2020/dev_r13296_HPC-07_mocavero_mpi3/src/SWE/stepLF.F90

    r13295 r13630  
    248248 
    249249 
     250#if defined key_mpi3 
     251      CALL lbc_lnk_nc_multi( 'stp', uu(:,:,:,Nnn), 'U', -1., vv(:,:,:,Nnn), 'V', -1.,   &   !* local domain boundaries 
     252         &                       uu(:,:,:,Naa), 'U', -1., vv(:,:,:,Naa), 'V', -1.    )      
     253#else 
    250254      CALL lbc_lnk_multi( 'stp', uu(:,:,:,Nnn), 'U', -1., vv(:,:,:,Nnn), 'V', -1.,   &   !* local domain boundaries 
    251255         &                       uu(:,:,:,Naa), 'U', -1., vv(:,:,:,Naa), 'V', -1.    )      
     256#endif 
    252257 
    253258!!an          
  • NEMO/branches/2020/dev_r13296_HPC-07_mocavero_mpi3/src/SWE/stpRK3.F90

    r13295 r13630  
    308308 
    309309 
     310#if defined key_mpi3 
     311      CALL lbc_lnk_nc_multi( 'stp_RK3', uu(:,:,:,Nnn), 'U', -1., vv(:,:,:,Nnn), 'V', -1.,   &   !* local domain boundaries 
     312         &                       uu(:,:,:,Naa), 'U', -1., vv(:,:,:,Naa), 'V', -1.    )      
     313#else 
    310314      CALL lbc_lnk_multi( 'stp_RK3', uu(:,:,:,Nnn), 'U', -1., vv(:,:,:,Nnn), 'V', -1.,   &   !* local domain boundaries 
    311315         &                       uu(:,:,:,Naa), 'U', -1., vv(:,:,:,Naa), 'V', -1.    )      
     316#endif 
    312317 
    313318!!an          
  • NEMO/branches/2020/dev_r13296_HPC-07_mocavero_mpi3/src/TOP/PISCES/P2Z/p2zbio.F90

    r13295 r13630  
    339339      ! 
    340340      IF( lk_iomput ) THEN 
     341#if defined key_mpi3 
     342         CALL lbc_lnk_nc_multi( 'p2zbio', zw2d(:,:,:),'T', 1.0_wp ) 
     343         CALL lbc_lnk_nc_multi( 'p2zbio', zw3d(:,:,:,1),'T', 1.0_wp, zw3d(:,:,:,2),'T', 1.0_wp, zw3d(:,:,:,3),'T', 1.0_wp ) 
     344#else 
    341345         CALL lbc_lnk( 'p2zbio', zw2d(:,:,:),'T', 1.0_wp ) 
    342346         CALL lbc_lnk_multi( 'p2zbio', zw3d(:,:,:,1),'T', 1.0_wp, zw3d(:,:,:,2),'T', 1.0_wp, zw3d(:,:,:,3),'T', 1.0_wp ) 
     347#endif 
    343348         ! Save diagnostics 
    344349         CALL iom_put( "TNO3PHY", zw2d(:,:,1) ) 
  • NEMO/branches/2020/dev_r13296_HPC-07_mocavero_mpi3/src/TOP/PISCES/P2Z/p2zexp.F90

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

    r13295 r13630  
    311311         END_3D 
    312312         ! 
     313#if defined key_mpi3 
     314         CALL lbc_lnk_nc_multi( 'p4zbc', zcmask , 'T', 1.0_wp )      ! lateral boundary conditions on cmask   (sign unchanged) 
     315#else 
    313316         CALL lbc_lnk( 'p4zbc', zcmask , 'T', 1.0_wp )      ! lateral boundary conditions on cmask   (sign unchanged) 
     317#endif 
    314318         ! 
    315319         DO_3D( 1, 1, 1, 1, 1, jpk ) 
  • NEMO/branches/2020/dev_r13296_HPC-07_mocavero_mpi3/src/TOP/TRP/trcatf.F90

    r13295 r13630  
    102102#endif 
    103103      ! Update after tracer on domain lateral boundaries 
     104#if defined key_mpi3 
     105      CALL lbc_lnk_nc_multi( 'trcatf', ptr(:,:,:,:,Kaa), 'T', 1. )    
     106#else 
    104107      CALL lbc_lnk( 'trcatf', ptr(:,:,:,:,Kaa), 'T', 1. )    
     108#endif 
    105109 
    106110      IF( ln_bdy )  CALL trc_bdy( kt, Kbb, Kmm, Kaa ) 
     
    168172         ENDIF 
    169173         ! 
     174#if defined key_mpi3 
     175         CALL lbc_lnk_nc_multi( 'trcatf', ptr(:,:,:,:,Kmm), 'T', 1._wp, ptr(:,:,:,:,Kaa), 'T', 1._wp, ptr(:,:,:,:,Kaa), 'T', 1._wp ) 
     176#else 
    170177         CALL lbc_lnk_multi( 'trcatf', ptr(:,:,:,:,Kmm), 'T', 1._wp, ptr(:,:,:,:,Kaa), 'T', 1._wp, ptr(:,:,:,:,Kaa), 'T', 1._wp ) 
     178#endif 
    171179      ENDIF 
    172180      ! 
  • NEMO/branches/2020/dev_r13296_HPC-07_mocavero_mpi3/src/TOP/TRP/trcsbc.F90

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

    r13571 r13630  
    284284            IF( ln_trdtrc(jn) ) THEN 
    285285               DO jl = 1, jpltrd_trc 
     286#if defined key_mpi3 
     287                  CALL lbc_lnk_nc_multi( 'trdmxl_trc', tmltrd_trc(:,:,jl,jn), 'T', 1. )        ! lateral boundary conditions 
     288#else 
    286289                  CALL lbc_lnk( 'trdmxl_trc', tmltrd_trc(:,:,jl,jn), 'T', 1. )        ! lateral boundary conditions 
     290#endif 
    287291               END DO 
    288292            ENDIF 
     
    419423         !-- Lateral boundary conditions 
    420424               IF ( cn_cfg .NE. 'gyre' ) THEN 
     425#if defined key_mpi3 
     426                  CALL lbc_lnk_nc_multi( 'trdmxl_trc', ztmltot(:,:,jn) , 'T', 1. , ztmlres(:,:,jn) , 'T', 1., & 
     427                     &                ztmlatf(:,:,jn) , 'T', 1. , ztmlrad(:,:,jn) , 'T', 1. ) 
     428#else 
    421429                  CALL lbc_lnk_multi( 'trdmxl_trc', ztmltot(:,:,jn) , 'T', 1. , ztmlres(:,:,jn) , 'T', 1., & 
    422430                     &                ztmlatf(:,:,jn) , 'T', 1. , ztmlrad(:,:,jn) , 'T', 1. ) 
     431#endif 
    423432               ENDIF 
    424433 
     
    470479         !-- Lateral boundary conditions  
    471480               IF ( cn_cfg .NE. 'gyre' ) THEN            ! other than GYRE configuration     
     481#if defined key_mpi3 
     482                  CALL lbc_lnk_nc_multi( 'trdmxl_trc', ztmltot2(:,:,jn), 'T', 1., ztmlres2(:,:,jn), 'T', 1. ) 
     483#else 
    472484                  CALL lbc_lnk_multi( 'trdmxl_trc', ztmltot2(:,:,jn), 'T', 1., ztmlres2(:,:,jn), 'T', 1. ) 
     485#endif 
    473486                  DO jl = 1, jpltrd_trc 
     487#if defined key_mpi3 
     488                     CALL lbc_lnk_nc_multi( 'trdmxl_trc', ztmltrd2(:,:,jl,jn), 'T', 1. )       ! will be output in the NetCDF trends file 
     489#else 
    474490                     CALL lbc_lnk( 'trdmxl_trc', ztmltrd2(:,:,jl,jn), 'T', 1. )       ! will be output in the NetCDF trends file 
     491#endif 
    475492                  END DO 
    476493               ENDIF 
  • NEMO/branches/2020/dev_r13296_HPC-07_mocavero_mpi3/src/TOP/trcbdy.F90

    r13571 r13630  
    103103         END DO 
    104104         IF( ANY(llsend1) .OR. ANY(llrecv1) ) THEN   ! if need to send/recv in at least one direction 
     105#if defined key_mpi3 
     106            CALL lbc_lnk_nc_multi( 'trcbdy', tr(:,:,:,:,Krhs), 'T',  1.0_wp, kfillmode=jpfillnothing ,lsend=llsend1, lrecv=llrecv1 ) 
     107#else 
    105108            CALL lbc_lnk( 'trcbdy', tr(:,:,:,:,Krhs), 'T',  1.0_wp, kfillmode=jpfillnothing ,lsend=llsend1, lrecv=llrecv1 ) 
     109#endif 
    106110         ENDIF 
    107111         ! 
Note: See TracChangeset for help on using the changeset viewer.