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

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 13630 for NEMO/branches/2020/dev_r13296_HPC-07_mocavero_mpi3/src/OCE/TRA – NEMO

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

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

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

Legend:

Unmodified
Added
Removed
  • 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   
Note: See TracChangeset for help on using the changeset viewer.