- Timestamp:
- 2015-12-16T10:25:22+01:00 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2015/dev_merge_2015/NEMOGCM/NEMO/OPA_SRC/LBC/lbclnk.F90
r5429 r6060 4 4 !! Ocean : lateral boundary conditions 5 5 !!===================================================================== 6 !! History : OPA ! 1997-06 (G. Madec) 7 !! NEMO 1.0 ! 2002-09 (G. Madec) 6 !! History : OPA ! 1997-06 (G. Madec) Original code 7 !! NEMO 1.0 ! 2002-09 (G. Madec) F90: Free form and module 8 8 !! 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 13 11 !!---------------------------------------------------------------------- 14 12 #if defined key_mpp_mpi … … 16 14 !! 'key_mpp_mpi' MPI massively parallel processing library 17 15 !!---------------------------------------------------------------------- 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 24 21 25 22 INTERFACE lbc_lnk_multi 26 23 MODULE PROCEDURE mpp_lnk_2d_9 27 24 END INTERFACE 28 25 ! 29 26 INTERFACE lbc_lnk 30 27 MODULE PROCEDURE mpp_lnk_3d_gather, mpp_lnk_3d, mpp_lnk_2d 31 28 END INTERFACE 32 29 ! 33 30 INTERFACE lbc_bdy_lnk 34 31 MODULE PROCEDURE mpp_lnk_bdy_2d, mpp_lnk_bdy_3d 35 32 END INTERFACE 36 33 ! 37 34 INTERFACE lbc_lnk_e 38 35 MODULE PROCEDURE mpp_lnk_2d_e 39 36 END INTERFACE 40 37 ! 41 38 INTERFACE lbc_lnk_icb 42 39 MODULE PROCEDURE mpp_lnk_2d_icb 43 40 END INTERFACE 44 41 45 PUBLIC lbc_lnk ! ocean lateral boundary conditions46 PUBLIC lbc_lnk_multi ! modified ocean lateral boundary conditions47 PUBLIC lbc_lnk_e48 PUBLIC lbc_bdy_lnk ! ocean lateral BDY boundary conditions49 PUBLIC lbc_lnk_icb42 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 ! 50 47 51 48 !!---------------------------------------------------------------------- … … 54 51 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 55 52 !!---------------------------------------------------------------------- 56 57 53 #else 58 54 !!---------------------------------------------------------------------- … … 75 71 MODULE PROCEDURE lbc_lnk_3d_gather, lbc_lnk_3d, lbc_lnk_2d 76 72 END INTERFACE 77 73 ! 78 74 INTERFACE lbc_lnk_e 79 75 MODULE PROCEDURE lbc_lnk_2d_e 80 76 END INTERFACE 81 77 ! 82 78 INTERFACE lbc_bdy_lnk 83 79 MODULE PROCEDURE lbc_bdy_lnk_2d, lbc_bdy_lnk_3d 84 80 END INTERFACE 85 81 ! 86 82 INTERFACE lbc_lnk_icb 87 83 MODULE PROCEDURE lbc_lnk_2d_e … … 89 85 90 86 PUBLIC lbc_lnk ! ocean/ice lateral boundary conditions 91 PUBLIC lbc_lnk_e 87 PUBLIC lbc_lnk_e ! 92 88 PUBLIC lbc_bdy_lnk ! ocean lateral BDY boundary conditions 93 PUBLIC lbc_lnk_icb 89 PUBLIC lbc_lnk_icb ! 94 90 95 91 !!---------------------------------------------------------------------- 96 !! NEMO/OPA 3. 3 , NEMO Consortium (2010)92 !! NEMO/OPA 3.7 , NEMO Consortium (2015) 97 93 !! $Id$ 98 94 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) … … 230 226 ! this is in mpp case. In this module, just do nothing 231 227 ELSE 232 !233 228 ! ! East-West boundaries 234 229 ! ! ====================== … … 249 244 ! 250 245 END SELECT 251 !252 246 ! ! North-South boundaries 253 247 ! ! ====================== … … 287 281 END SUBROUTINE lbc_lnk_3d 288 282 283 289 284 SUBROUTINE lbc_lnk_2d( pt2d, cd_type, psgn, cd_mpp, pval ) 290 285 !!--------------------------------------------------------------------- … … 316 311 ! this is in mpp case. In this module, just do nothing 317 312 ELSE 318 !319 313 ! ! East-West boundaries 320 314 ! ! ==================== … … 335 329 ! 336 330 END SELECT 337 !338 331 ! ! North-South boundaries 339 332 ! ! ====================== … … 375 368 #endif 376 369 377 378 370 SUBROUTINE lbc_bdy_lnk_3d( pt3d, cd_type, psgn, ib_bdy ) 379 371 !!--------------------------------------------------------------------- … … 381 373 !! 382 374 !! ** Purpose : wrapper rountine to 'lbc_lnk_3d'. This wrapper is used 383 !! to maintain the same interface with regards to the mpp384 ! case385 !! 386 !!----------------------------------------------------------------------387 CHARACTER(len=1) , INTENT(in ) :: cd_type ! nature of pt3d grid-points388 REAL(wp) , DIMENSION(jpi,jpj,jpk), INTENT(inout) :: pt3d ! 3D array on which the lbc is applied389 REAL(wp) , INTENT(in ) :: psgn ! control of the sign390 INTEGER :: ib_bdy ! BDY boundary set391 ! !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 ! 392 384 CALL lbc_lnk_3d( pt3d, cd_type, psgn) 393 385 ! 394 386 END SUBROUTINE lbc_bdy_lnk_3d 395 387 388 396 389 SUBROUTINE lbc_bdy_lnk_2d( pt2d, cd_type, psgn, ib_bdy ) 397 390 !!--------------------------------------------------------------------- … … 399 392 !! 400 393 !! ** Purpose : wrapper rountine to 'lbc_lnk_3d'. This wrapper is used 401 !! to maintain the same interface with regards to the mpp402 ! case403 !! 404 !!----------------------------------------------------------------------405 CHARACTER(len=1) , INTENT(in ) :: cd_type ! nature of pt3d grid-points406 REAL(wp) , DIMENSION(jpi,jpj), INTENT(inout) :: pt2d ! 3D array on which the lbc is applied407 REAL(wp) , INTENT(in ) :: psgn ! control of the sign408 INTEGER :: ib_bdy ! BDY boundary set409 ! !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 ! 410 403 CALL lbc_lnk_2d( pt2d, cd_type, psgn) 411 404 ! 412 405 END SUBROUTINE lbc_bdy_lnk_2d 413 406 … … 426 419 !! for closed boundaries. 427 420 !!---------------------------------------------------------------------- 428 CHARACTER(len=1) , INTENT(in ) 429 REAL(wp), DIMENSION(jpi,jpj), INTENT(inout) 430 REAL(wp) , INTENT(in ) 431 INTEGER , INTENT(in ) 432 INTEGER , INTENT(in ) 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 ! 435 428 CALL lbc_lnk_2d( pt2d, cd_type, psgn ) 436 429 !
Note: See TracChangeset
for help on using the changeset viewer.