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 11940 for NEMO/branches/2019/dev_r11470_HPC_12_mpi3/src/OCE/TRA/traadv_fct.F90 – NEMO

Ignore:
Timestamp:
2019-11-20T22:48:28+01:00 (4 years ago)
Author:
mocavero
Message:

Add MPI3 neighbourhood collectives halo exchange in LBC and call it in tracer advection FCT scheme #2011

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2019/dev_r11470_HPC_12_mpi3/src/OCE/TRA/traadv_fct.F90

    r11411 r11940  
    8989      REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::   zwinf, zwdia, zwsup 
    9090      LOGICAL  ::   ll_zAimp                                 ! flag to apply adaptive implicit vertical advection 
     91 
    9192      !!---------------------------------------------------------------------- 
    9293      ! 
     
    254255               END DO 
    255256            END DO 
    256             CALL lbc_lnk_multi( 'traadv_fct', zltu, 'T', 1. , zltv, 'T', 1. )   ! Lateral boundary cond. (unchanged sgn) 
     257 
     258            IF(jpnij .eq. jpni*jpnj) THEN 
     259               CALL lbc_lnk_nc_multi( 'traadv_fct', zltu, 'T', 1. , zltv, 'T', 1. )   ! Lateral boundary cond. (unchanged sgn) 
     260            ELSE 
     261               CALL lbc_lnk_multi( 'traadv_fct', zltu, 'T', 1. , zltv, 'T', 1. )   ! Lateral boundary cond. (unchanged sgn) 
     262            END IF 
    257263            ! 
    258264            DO jk = 1, jpkm1                 ! Horizontal advective fluxes 
     
    279285               END DO 
    280286            END DO 
    281             CALL lbc_lnk_multi( 'traadv_fct', ztu, 'U', -1. , ztv, 'V', -1. )   ! Lateral boundary cond. (unchanged sgn) 
     287 
     288            IF(jpnij .eq. jpni*jpnj) THEN 
     289               CALL lbc_lnk_nc_multi( 'traadv_fct', ztu, 'U', -1. , ztv, 'V', -1. )   ! Lateral boundary cond. (unchanged sgn) 
     290            ELSE 
     291               CALL lbc_lnk_multi( 'traadv_fct', ztu, 'U', -1. , ztv, 'V', -1. )   ! Lateral boundary cond. (unchanged sgn) 
     292            END IF 
    282293            ! 
    283294            DO jk = 1, jpkm1                 ! Horizontal advective fluxes 
     
    351362         END IF 
    352363         ! 
    353          CALL lbc_lnk_multi( 'traadv_fct', zwi, 'T', 1., zwx, 'U', -1. , zwy, 'V', -1.,  zwz, 'W',  1. ) 
     364         IF(jpnij .eq. jpni*jpnj) THEN 
     365            CALL lbc_lnk_nc_multi( 'traadv_fct', zwi, 'T', 1., zwx, 'U', -1. , zwy, 'V', -1.,  zwz, 'W',  1. ) 
     366         ELSE 
     367            CALL lbc_lnk_multi( 'traadv_fct', zwi, 'T', 1., zwx, 'U', -1. , zwy, 'V', -1.,  zwz, 'W',  1. ) 
     368         END IF 
    354369         ! 
    355370         !        !==  monotonicity algorithm  ==! 
     
    413428         ENDIF 
    414429         ! 
     430 
    415431      END DO                     ! end of tracer loop 
    416432      ! 
     
    426442      ! 
    427443   END SUBROUTINE tra_adv_fct 
    428  
    429444 
    430445   SUBROUTINE nonosc( pbef, paa, pbb, pcc, paft, p2dt ) 
     
    498513         END DO 
    499514      END DO 
    500       CALL lbc_lnk_multi( 'traadv_fct', zbetup, 'T', 1. , zbetdo, 'T', 1. )   ! lateral boundary cond. (unchanged sign) 
    501  
     515      IF(jpnij .eq. jpni*jpnj) THEN 
     516         CALL lbc_lnk_nc_multi( 'traadv_fct', zbetup, 'T', 1. , zbetdo, 'T', 1. )   ! lateral boundary cond. (unchanged sign) 
     517      ELSE 
     518         CALL lbc_lnk_multi( 'traadv_fct', zbetup, 'T', 1. , zbetdo, 'T', 1. )   ! lateral boundary cond. (unchanged sign) 
     519      END IF 
    502520      ! 3. monotonic flux in the i & j direction (paa & pbb) 
    503521      ! ---------------------------------------- 
     
    524542         END DO 
    525543      END DO 
    526       CALL lbc_lnk_multi( 'traadv_fct', paa, 'U', -1. , pbb, 'V', -1. )   ! lateral boundary condition (changed sign) 
     544      IF(jpnij .eq. jpni*jpnj) THEN 
     545         CALL lbc_lnk_nc_multi( 'traadv_fct', paa, 'U', -1. , pbb, 'V', -1. )   ! lateral boundary condition (changed sign) 
     546      ELSE 
     547         CALL lbc_lnk_multi( 'traadv_fct', paa, 'U', -1. , pbb, 'V', -1. )   ! lateral boundary condition (changed sign) 
     548      END IF 
    527549      ! 
    528550   END SUBROUTINE nonosc 
Note: See TracChangeset for help on using the changeset viewer.