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 15354 for NEMO/trunk/src/OCE/BDY/bdydyn3d.F90 – NEMO

Ignore:
Timestamp:
2021-10-12T15:44:46+02:00 (3 years ago)
Author:
smasson
Message:

trunk: BDY compliant with corner communications, see #2731

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/trunk/src/OCE/BDY/bdydyn3d.F90

    r14834 r15354  
    1818   USE lbclnk          ! ocean lateral boundary conditions (or mpp link) 
    1919   USE in_out_manager  ! 
    20    USE lib_mpp, ONLY: ctl_stop 
     20   USE lib_mpp 
    2121   Use phycst 
    2222 
     
    4545      REAL(wp), DIMENSION(jpi,jpj,jpk,jpt), INTENT( inout ) ::   puu, pvv  ! Ocean velocities (to be updated at open boundaries) 
    4646      ! 
    47       INTEGER  ::   ib_bdy, ir     ! BDY set index, rim index 
    48       LOGICAL  ::   llrim0         ! indicate if rim 0 is treated 
    49       LOGICAL, DIMENSION(4) :: llsend2, llrecv2, llsend3, llrecv3  ! indicate how communications are to be carried out 
    50  
    51       !!---------------------------------------------------------------------- 
     47      INTEGER               ::   ib_bdy, ir     ! BDY set index, rim index 
     48      INTEGER, DIMENSION(6) ::   idir6 
     49      LOGICAL               ::   llrim0         ! indicate if rim 0 is treated 
     50      LOGICAL, DIMENSION(8) ::   llsend2, llrecv2, llsend3, llrecv3  ! indicate how communications are to be carried out 
     51      !!---------------------------------------------------------------------- 
     52       
    5253      llsend2(:) = .false.   ;   llrecv2(:) = .false. 
    5354      llsend3(:) = .false.   ;   llrecv3(:) = .false. 
     
    8283            SELECT CASE( cn_dyn3d(ib_bdy) ) 
    8384            CASE('orlanski', 'orlanski_npo') 
    84                llsend2(:) = llsend2(:) .OR. lsend_bdy(ib_bdy,2,:,ir)   ! possibly every direction, U points 
    85                llrecv2(:) = llrecv2(:) .OR. lrecv_bdy(ib_bdy,2,:,ir)   ! possibly every direction, U points 
    86                llsend3(:) = llsend3(:) .OR. lsend_bdy(ib_bdy,3,:,ir)   ! possibly every direction, V points 
    87                llrecv3(:) = llrecv3(:) .OR. lrecv_bdy(ib_bdy,3,:,ir)   ! possibly every direction, V points 
     85               llsend2(:) = llsend2(:) .OR. lsend_bdyolr(ib_bdy,2,:,ir)   ! possibly every direction, U points 
     86               llrecv2(:) = llrecv2(:) .OR. lrecv_bdyolr(ib_bdy,2,:,ir)   ! possibly every direction, U points 
     87               llsend3(:) = llsend3(:) .OR. lsend_bdyolr(ib_bdy,3,:,ir)   ! possibly every direction, V points 
     88               llrecv3(:) = llrecv3(:) .OR. lrecv_bdyolr(ib_bdy,3,:,ir)   ! possibly every direction, V points 
    8889            CASE('zerograd') 
    89                llsend2(3:4) = llsend2(3:4) .OR. lsend_bdyint(ib_bdy,2,3:4,ir)   ! north/south, U points 
    90                llrecv2(3:4) = llrecv2(3:4) .OR. lrecv_bdyint(ib_bdy,2,3:4,ir)   ! north/south, U points 
    91                llsend3(1:2) = llsend3(1:2) .OR. lsend_bdyint(ib_bdy,3,1:2,ir)   ! west/east, V points 
    92                llrecv3(1:2) = llrecv3(1:2) .OR. lrecv_bdyint(ib_bdy,3,1:2,ir)   ! west/east, V points 
     90               idir6 = (/ jpso, jpno, jpsw, jpse, jpnw, jpne /) 
     91               llsend2(idir6) = llsend2(idir6) .OR. lsend_bdyint(ib_bdy,2,idir6,ir)   ! north/south, U points 
     92               llrecv2(idir6) = llrecv2(idir6) .OR. lrecv_bdyint(ib_bdy,2,idir6,ir)   ! north/south, U points 
     93               idir6 = (/ jpwe, jpea, jpsw, jpse, jpnw, jpne /) 
     94               llsend3(idir6) = llsend3(idir6) .OR. lsend_bdyint(ib_bdy,3,idir6,ir)   ! west/east, V points 
     95               llrecv3(idir6) = llrecv3(idir6) .OR. lrecv_bdyint(ib_bdy,3,idir6,ir)   ! west/east, V points 
    9396            CASE('neumann') 
    9497               llsend2(:) = llsend2(:) .OR. lsend_bdyint(ib_bdy,2,:,ir)   ! possibly every direction, U points 
Note: See TracChangeset for help on using the changeset viewer.