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/LBC/lbclnk.F90 – NEMO

Ignore:
Timestamp:
2019-11-20T22:48:28+01:00 (5 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/LBC/lbclnk.F90

    r11799 r11940  
    1313   !!             -   ! 2017-04  (G. Madec) remove duplicated routines (lbc_lnk_2d_9, lbc_lnk_2d_multiple, lbc_lnk_3d_gather) 
    1414   !!             -   ! 2017-05  (G. Madec) create generic.h90 files to generate all lbc and north fold routines 
     15   !!             -   !  2019  (S. Mocavero, I. Epicoco - CMCC) create generic.h90 files to introduce MPI3 neighbourhood collectives 
     16 
    1517   !!---------------------------------------------------------------------- 
    1618   !!           define the generic interfaces of lib_mpp routines 
     
    3638      MODULE PROCEDURE   lbc_lnk_2d_multi, lbc_lnk_3d_multi, lbc_lnk_4d_multi 
    3739   END INTERFACE 
     40   INTERFACE lbc_lnk_nc_multi 
     41      MODULE PROCEDURE   lbc_lnk_nc_2d, lbc_lnk_nc_3d, lbc_lnk_nc_4d 
     42   END INTERFACE 
     43   INTERFACE lbc_lnk_nc 
     44      MODULE PROCEDURE   mpp_lnk_nc_2d, mpp_lnk_nc_3d, mpp_lnk_nc_4d 
     45   END INTERFACE 
    3846   ! 
    3947   INTERFACE lbc_lnk_icb 
     
    4654   END INTERFACE 
    4755 
    48    PUBLIC   lbc_lnk       ! ocean/ice lateral boundary conditions 
    49    PUBLIC   lbc_lnk_multi ! modified ocean/ice lateral boundary conditions 
    50    PUBLIC   lbc_lnk_icb   ! iceberg lateral boundary conditions 
     56   PUBLIC   lbc_lnk            ! ocean/ice lateral boundary conditions 
     57   PUBLIC   lbc_lnk_multi      ! modified ocean/ice lateral boundary conditions 
     58   PUBLIC   lbc_lnk_icb        ! iceberg lateral boundary conditions 
     59   PUBLIC   lbc_lnk_nc_multi   ! modified ocean/ice lateral boundary conditions 
    5160 
    5261#if   defined key_mpp_mpi 
     
    163172#     undef ROUTINE_LNK 
    164173#     undef MULTI 
     174#  undef DIM_4d 
     175 
     176   !!---------------------------------------------------------------------- 
     177   !!                   ***  routine lbc_lnk_nc_(2,3,4)d  *** 
     178   !! 
     179   !!   * Argument : dummy argument use in lbc_lnk_nc_... routines 
     180   !!                ptab   :   array or pointer of arrays on which the boundary 
     181   !condition is applied 
     182   !!                cd_nat :   nature of array grid-points 
     183   !!                psgn   :   sign used across the north fold boundary 
     184   !!                kfld   :   optional, number of pt3d arrays 
     185   !!                cd_mpp :   optional, fill the overlap area only 
     186   !!                pval   :   optional, background value (used at closed 
     187   !boundaries) 
     188   !!---------------------------------------------------------------------- 
     189   ! 
     190   !                       !==  2D array and array of 2D pointer  ==! 
     191   ! 
     192#  define DIM_2d 
     193#     define ROUTINE_NC_LOAD            load_ptr_nc_2d 
     194#     define ROUTINE_MULTI_NC           lbc_lnk_nc_2d 
     195#     include "lbc_lnk_nc_generic.h90" 
     196#     undef ROUTINE_MULTI_NC 
     197#     undef ROUTINE_NC_LOAD 
     198#  undef DIM_2d 
     199   ! 
     200   !                       !==  3D array and array of 3D pointer  ==! 
     201   ! 
     202#  define DIM_3d 
     203#     define ROUTINE_NC_LOAD            load_ptr_nc_3d 
     204#     define ROUTINE_MULTI_NC           lbc_lnk_nc_3d 
     205#     include "lbc_lnk_nc_generic.h90" 
     206#     undef ROUTINE_MULTI_NC 
     207#     undef ROUTINE_NC_LOAD 
     208#  undef DIM_3d 
     209   ! 
     210   !                       !==  4D array and array of 4D pointer  ==! 
     211   ! 
     212#  define DIM_4d 
     213#     define ROUTINE_NC_LOAD            load_ptr_nc_4d 
     214#     define ROUTINE_MULTI_NC           lbc_lnk_nc_4d 
     215#     include "lbc_lnk_nc_generic.h90" 
     216#     undef ROUTINE_LOAD 
     217#     undef ROUTINE_NC_LOAD 
     218#  undef DIM_4d 
     219 
     220   !!---------------------------------------------------------------------- 
     221   !!                   ***  routine mpp_nc_(2,3,4)d  *** 
     222   !! 
     223   !!   * Argument : dummy argument use in mpp_nc_... routines 
     224   !!                ptab   :   array or pointer of arrays on which the boundary condition is applied 
     225   !!                cd_nat :   nature of array grid-points 
     226   !!                psgn   :   sign used across the north fold boundary 
     227   !!                kfld   :   optional, number of pt3d arrays 
     228   !!                cd_mpp :   optional, fill the overlap area only 
     229   !!                pval   :   optional, background value (used at closed boundaries) 
     230   !!---------------------------------------------------------------------- 
     231   ! 
     232   !                       !==  2D array and array of 2D pointer  ==! 
     233   ! 
     234#  define DIM_2d 
     235#     define ROUTINE_NC           mpp_lnk_nc_2d 
     236#     include "mpp_nc_generic.h90" 
     237#     undef ROUTINE_NC 
     238#  undef DIM_2d 
     239   ! 
     240   !                       !==  3D array and array of 3D pointer  ==! 
     241   ! 
     242#  define DIM_3d 
     243#     define ROUTINE_NC           mpp_lnk_nc_3d 
     244#     include "mpp_nc_generic.h90" 
     245#     undef ROUTINE_NC 
     246#  undef DIM_3d 
     247   ! 
     248   !                       !==  4D array and array of 4D pointer  ==! 
     249   ! 
     250#  define DIM_4d 
     251#     define ROUTINE_NC           mpp_lnk_nc_4d 
     252#     include "mpp_nc_generic.h90" 
     253#     undef ROUTINE_NC 
    165254#  undef DIM_4d 
    166255 
Note: See TracChangeset for help on using the changeset viewer.