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 6060 for branches/2015/dev_merge_2015/NEMOGCM/NEMO/OPA_SRC/LBC/lbclnk.F90 – NEMO

Ignore:
Timestamp:
2015-12-16T10:25:22+01:00 (8 years ago)
Author:
timgraham
Message:

Merged dev_r5836_noc2_VVL_BY_DEFAULT into branch

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2015/dev_merge_2015/NEMOGCM/NEMO/OPA_SRC/LBC/lbclnk.F90

    r5429 r6060  
    44   !! Ocean        : lateral boundary conditions 
    55   !!===================================================================== 
    6    !! History :  OPA  ! 1997-06  (G. Madec)     Original code 
    7    !!   NEMO     1.0  ! 2002-09  (G. Madec)     F90: Free form and module 
     6   !! History :  OPA  ! 1997-06  (G. Madec)  Original code 
     7   !!   NEMO     1.0  ! 2002-09  (G. Madec)  F90: Free form and module 
    88   !!            3.2  ! 2009-03  (R. Benshila)  External north fold treatment   
    9    !!            3.5  ! 2012     (S.Mocavero, I. Epicoco) Add 'lbc_bdy_lnk'  
    10    !!                            and lbc_obc_lnk' routine to optimize   
    11    !!                            the BDY/OBC communications 
    12    !!            3.4  ! 2012-12  (R. Bourdalle-Badie and G. Reffray)  add a C1D case   
     9   !!            3.5  ! 2012     (S.Mocavero, I. Epicoco) optimization of BDY comm. via lbc_bdy_lnk and lbc_obc_lnk 
     10   !!            3.4  ! 2012-12  (R. Bourdalle-Badie, G. Reffray)  add a C1D case   
    1311   !!---------------------------------------------------------------------- 
    1412#if defined key_mpp_mpi 
     
    1614   !!   'key_mpp_mpi'             MPI massively parallel processing library 
    1715   !!---------------------------------------------------------------------- 
    18    !!   lbc_lnk      : generic interface for mpp_lnk_3d and mpp_lnk_2d routines defined in lib_mpp 
    19    !!   lbc_lnk_e    : generic interface for mpp_lnk_2d_e routine defined in lib_mpp 
    20    !!   lbc_bdy_lnk  : generic interface for mpp_lnk_bdy_2d and mpp_lnk_bdy_3d routines defined in lib_mpp 
    21    !!---------------------------------------------------------------------- 
    22    USE lib_mpp          ! distributed memory computing library 
    23  
     16   !!   lbc_lnk       : generic interface for mpp_lnk_3d and mpp_lnk_2d routines defined in lib_mpp 
     17   !!   lbc_lnk_e     : generic interface for mpp_lnk_2d_e routine defined in lib_mpp 
     18   !!   lbc_bdy_lnk   : generic interface for mpp_lnk_bdy_2d and mpp_lnk_bdy_3d routines defined in lib_mpp 
     19   !!---------------------------------------------------------------------- 
     20   USE lib_mpp        ! distributed memory computing library 
    2421 
    2522   INTERFACE lbc_lnk_multi 
    2623      MODULE PROCEDURE mpp_lnk_2d_9 
    2724   END INTERFACE 
    28  
     25   ! 
    2926   INTERFACE lbc_lnk 
    3027      MODULE PROCEDURE mpp_lnk_3d_gather, mpp_lnk_3d, mpp_lnk_2d 
    3128   END INTERFACE 
    32  
     29   ! 
    3330   INTERFACE lbc_bdy_lnk 
    3431      MODULE PROCEDURE mpp_lnk_bdy_2d, mpp_lnk_bdy_3d 
    3532   END INTERFACE 
    36  
     33   ! 
    3734   INTERFACE lbc_lnk_e 
    3835      MODULE PROCEDURE mpp_lnk_2d_e 
    3936   END INTERFACE 
    40  
     37   ! 
    4138   INTERFACE lbc_lnk_icb 
    4239      MODULE PROCEDURE mpp_lnk_2d_icb 
    4340   END INTERFACE 
    4441 
    45    PUBLIC lbc_lnk       ! ocean lateral boundary conditions 
    46    PUBLIC lbc_lnk_multi ! modified ocean lateral boundary conditions 
    47    PUBLIC lbc_lnk_e 
    48    PUBLIC lbc_bdy_lnk   ! ocean lateral BDY boundary conditions 
    49    PUBLIC lbc_lnk_icb 
     42   PUBLIC   lbc_lnk       ! ocean lateral boundary conditions 
     43   PUBLIC   lbc_lnk_multi ! modified ocean lateral boundary conditions 
     44   PUBLIC   lbc_lnk_e     ! 
     45   PUBLIC   lbc_bdy_lnk   ! ocean lateral BDY boundary conditions 
     46   PUBLIC   lbc_lnk_icb   ! 
    5047 
    5148   !!---------------------------------------------------------------------- 
     
    5451   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
    5552   !!---------------------------------------------------------------------- 
    56  
    5753#else 
    5854   !!---------------------------------------------------------------------- 
     
    7571      MODULE PROCEDURE lbc_lnk_3d_gather, lbc_lnk_3d, lbc_lnk_2d 
    7672   END INTERFACE 
    77  
     73   ! 
    7874   INTERFACE lbc_lnk_e 
    7975      MODULE PROCEDURE lbc_lnk_2d_e 
    8076   END INTERFACE 
    81  
     77   ! 
    8278   INTERFACE lbc_bdy_lnk 
    8379      MODULE PROCEDURE lbc_bdy_lnk_2d, lbc_bdy_lnk_3d 
    8480   END INTERFACE 
    85  
     81   ! 
    8682   INTERFACE lbc_lnk_icb 
    8783      MODULE PROCEDURE lbc_lnk_2d_e 
     
    8985 
    9086   PUBLIC   lbc_lnk       ! ocean/ice  lateral boundary conditions 
    91    PUBLIC   lbc_lnk_e  
     87   PUBLIC   lbc_lnk_e     ! 
    9288   PUBLIC   lbc_bdy_lnk   ! ocean lateral BDY boundary conditions 
    93    PUBLIC   lbc_lnk_icb 
     89   PUBLIC   lbc_lnk_icb   ! 
    9490    
    9591   !!---------------------------------------------------------------------- 
    96    !! NEMO/OPA 3.3 , NEMO Consortium (2010) 
     92   !! NEMO/OPA 3.7 , NEMO Consortium (2015) 
    9793   !! $Id$ 
    9894   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
     
    230226         ! this is in mpp case. In this module, just do nothing 
    231227      ELSE 
    232          ! 
    233228         !                                     !  East-West boundaries 
    234229         !                                     ! ====================== 
     
    249244            ! 
    250245         END SELECT 
    251          ! 
    252246         !                                     ! North-South boundaries 
    253247         !                                     ! ====================== 
     
    287281   END SUBROUTINE lbc_lnk_3d 
    288282 
     283 
    289284   SUBROUTINE lbc_lnk_2d( pt2d, cd_type, psgn, cd_mpp, pval ) 
    290285      !!--------------------------------------------------------------------- 
     
    316311         ! this is in mpp case. In this module, just do nothing 
    317312      ELSE       
    318          ! 
    319313         !                                     ! East-West boundaries 
    320314         !                                     ! ==================== 
     
    335329            ! 
    336330         END SELECT 
    337          ! 
    338331         !                                     ! North-South boundaries 
    339332         !                                     ! ====================== 
     
    375368#endif 
    376369 
    377  
    378370   SUBROUTINE lbc_bdy_lnk_3d( pt3d, cd_type, psgn, ib_bdy ) 
    379371      !!--------------------------------------------------------------------- 
     
    381373      !! 
    382374      !! ** Purpose :   wrapper rountine to 'lbc_lnk_3d'. This wrapper is used 
    383       !!                to maintain the same interface with regards to the mpp 
    384       !case 
    385       !! 
    386       !!---------------------------------------------------------------------- 
    387       CHARACTER(len=1)                , INTENT(in   )           ::   cd_type   ! nature of pt3d grid-points 
    388       REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(inout)           ::   pt3d      ! 3D array on which the lbc is applied 
    389       REAL(wp)                        , INTENT(in   )           ::   psgn      ! control of the sign  
    390       INTEGER                                                   ::   ib_bdy    ! BDY boundary set 
    391       !! 
     375      !!              to maintain the same interface with regards to the mpp case 
     376      !! 
     377      !!---------------------------------------------------------------------- 
     378      CHARACTER(len=1)                , INTENT(in   ) ::   cd_type   ! nature of pt3d grid-points 
     379      REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(inout) ::   pt3d      ! 3D array on which the lbc is applied 
     380      REAL(wp)                        , INTENT(in   ) ::   psgn      ! control of the sign  
     381      INTEGER                         , INTENT(in   ) ::   ib_bdy    ! BDY boundary set 
     382      !!---------------------------------------------------------------------- 
     383      ! 
    392384      CALL lbc_lnk_3d( pt3d, cd_type, psgn) 
    393  
     385      ! 
    394386   END SUBROUTINE lbc_bdy_lnk_3d 
    395387 
     388 
    396389   SUBROUTINE lbc_bdy_lnk_2d( pt2d, cd_type, psgn, ib_bdy ) 
    397390      !!--------------------------------------------------------------------- 
     
    399392      !! 
    400393      !! ** Purpose :   wrapper rountine to 'lbc_lnk_3d'. This wrapper is used 
    401       !!                to maintain the same interface with regards to the mpp 
    402       !case 
    403       !! 
    404       !!---------------------------------------------------------------------- 
    405       CHARACTER(len=1)                , INTENT(in   )           ::   cd_type   ! nature of pt3d grid-points 
    406       REAL(wp), DIMENSION(jpi,jpj),     INTENT(inout)           ::   pt2d      ! 3D array on which the lbc is applied 
    407       REAL(wp)                        , INTENT(in   )           ::   psgn      ! control of the sign  
    408       INTEGER                                                   ::   ib_bdy    ! BDY boundary set 
    409       !! 
     394      !!              to maintain the same interface with regards to the mpp case 
     395      !! 
     396      !!---------------------------------------------------------------------- 
     397      CHARACTER(len=1)            , INTENT(in   ) ::   cd_type   ! nature of pt3d grid-points 
     398      REAL(wp), DIMENSION(jpi,jpj), INTENT(inout) ::   pt2d      ! 3D array on which the lbc is applied 
     399      REAL(wp)                    , INTENT(in   ) ::   psgn      ! control of the sign  
     400      INTEGER                     , INTENT(in   ) ::   ib_bdy    ! BDY boundary set 
     401      !!---------------------------------------------------------------------- 
     402      ! 
    410403      CALL lbc_lnk_2d( pt2d, cd_type, psgn) 
    411  
     404      ! 
    412405   END SUBROUTINE lbc_bdy_lnk_2d 
    413406 
     
    426419      !!                             for closed boundaries. 
    427420      !!---------------------------------------------------------------------- 
    428       CHARACTER(len=1)            , INTENT(in   )           ::   cd_type   ! nature of pt3d grid-points 
    429       REAL(wp), DIMENSION(jpi,jpj), INTENT(inout)           ::   pt2d      ! 2D array on which the lbc is applied 
    430       REAL(wp)                    , INTENT(in   )           ::   psgn      ! control of the sign  
    431       INTEGER                     , INTENT(in   )           ::   jpri      ! size of extra halo (not needed in non-mpp) 
    432       INTEGER                     , INTENT(in   )           ::   jprj      ! size of extra halo (not needed in non-mpp) 
    433       !!---------------------------------------------------------------------- 
    434  
     421      CHARACTER(len=1)            , INTENT(in   ) ::   cd_type   ! nature of pt3d grid-points 
     422      REAL(wp), DIMENSION(jpi,jpj), INTENT(inout) ::   pt2d      ! 2D array on which the lbc is applied 
     423      REAL(wp)                    , INTENT(in   ) ::   psgn      ! control of the sign  
     424      INTEGER                     , INTENT(in   ) ::   jpri      ! size of extra halo (not needed in non-mpp) 
     425      INTEGER                     , INTENT(in   ) ::   jprj      ! size of extra halo (not needed in non-mpp) 
     426      !!---------------------------------------------------------------------- 
     427      ! 
    435428      CALL lbc_lnk_2d( pt2d, cd_type, psgn ) 
    436429      !     
Note: See TracChangeset for help on using the changeset viewer.