Changeset 11071 for NEMO/branches/2019/dev_r10984_HPC-13_IRRMANN_BDY_optimization/src/OCE/BDY/bdydyn3d.F90
- Timestamp:
- 2019-06-04T14:58:06+02:00 (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/dev_r10984_HPC-13_IRRMANN_BDY_optimization/src/OCE/BDY/bdydyn3d.F90
r11067 r11071 43 43 ! 44 44 INTEGER :: ib_bdy ! loop index 45 LOGICAL, DIMENSION(4) :: l send2, lrecv2, lsend3,lrecv3 ! indicate how communications are to be carried out45 LOGICAL, DIMENSION(4) :: llsend2, llrecv2, llsend3, llrecv3 ! indicate how communications are to be carried out 46 46 47 47 !!---------------------------------------------------------------------- … … 61 61 END DO 62 62 ! 63 l send2(:) = .false.64 l recv2(:) = .false.65 l send3(:) = .false.66 l recv3(:) = .false.63 llsend2(:) = .false. 64 llrecv2(:) = .false. 65 llsend3(:) = .false. 66 llrecv3(:) = .false. 67 67 DO ib_bdy=1, nb_bdy 68 68 SELECT CASE( cn_dyn3d(ib_bdy) ) 69 CASE('orlanski') 70 lsend2(:) = lsend2(:) .OR. lsend_bdy(ib_bdy,2,:) ! to every bdy neighbour, U points 71 lrecv2(:) = lrecv2(:) .OR. lrecv_bdy(ib_bdy,2,:) ! from every bdy neighbour, U points 72 lsend3(:) = lsend3(:) .OR. lsend_bdy(ib_bdy,3,:) ! to every bdy neighbour, V points 73 lrecv3(:) = lrecv3(:) .OR. lrecv_bdy(ib_bdy,3,:) ! from every bdy neighbour, V points 74 CASE('orlanski_npo') 75 lsend2(:) = lsend2(:) .OR. lsend_bdy(ib_bdy,2,:) ! to every bdy neighbour, U points 76 lrecv2(:) = lrecv2(:) .OR. lrecv_bdy(ib_bdy,2,:) ! from every bdy neighbour, U points 77 lsend3(:) = lsend3(:) .OR. lsend_bdy(ib_bdy,3,:) ! to every bdy neighbour, V points 78 lrecv3(:) = lrecv3(:) .OR. lrecv_bdy(ib_bdy,3,:) ! from every bdy neighbour, V points 69 CASE('orlanski', 'orlanski_npo') 70 llsend2(:) = llsend2(:) .OR. lsend_bdy(ib_bdy,2,:) ! possibly every direction, U points 71 llrecv2(:) = llrecv2(:) .OR. lrecv_bdy(ib_bdy,2,:) ! possibly every direction, U points 72 llsend3(:) = llsend3(:) .OR. lsend_bdy(ib_bdy,3,:) ! possibly every direction, V points 73 llrecv3(:) = llrecv3(:) .OR. lrecv_bdy(ib_bdy,3,:) ! possibly every direction, V points 79 74 CASE('zerograd') 80 l send2(:) = lsend2(:) .OR. lsend_bdy(ib_bdy,2,:) ! to every bdy neighbour, U points81 l recv2(:) = lrecv2(:) .OR. lrecv_bdy(ib_bdy,2,:) ! from every bdy neighbour, U points82 l send3(:) = lsend3(:) .OR. lsend_bdy(ib_bdy,3,:) ! to every bdy neighbour, V points83 l recv3(:) = lrecv3(:) .OR. lrecv_bdy(ib_bdy,3,:) ! from every bdy neighbour, V points75 llsend2(3:4) = llsend2(3:4) .OR. lsend_bdyint(ib_bdy,2,3:4) ! north/south, U points 76 llrecv2(3:4) = llrecv2(3:4) .OR. lrecv_bdyint(ib_bdy,2,3:4) ! north/south, U points 77 llsend3(1:2) = llsend3(1:2) .OR. lsend_bdyint(ib_bdy,3,1:2) ! west/east, V points 78 llrecv3(1:2) = llrecv3(1:2) .OR. lrecv_bdyint(ib_bdy,3,1:2) ! west/east, V points 84 79 CASE('neumann') 85 l send2(:) = lsend2(:) .OR. lsend_bdy(ib_bdy,2,:) ! to every bdy neighbour, U points86 l recv2(:) = lrecv2(:) .OR. lrecv_bdy(ib_bdy,2,:) ! from every bdy neighbour, U points87 l send3(:) = lsend3(:) .OR. lsend_bdy(ib_bdy,3,:) ! to every bdy neighbour, V points88 l recv3(:) = lrecv3(:) .OR. lrecv_bdy(ib_bdy,3,:) ! from every bdy neighbour, V points80 llsend2(:) = llsend2(:) .OR. lsend_bdyint(ib_bdy,2,:) ! possibly every direction, U points 81 llrecv2(:) = llrecv2(:) .OR. lrecv_bdyint(ib_bdy,2,:) ! possibly every direction, U points 82 llsend3(:) = llsend3(:) .OR. lsend_bdyint(ib_bdy,3,:) ! possibly every direction, V points 83 llrecv3(:) = llrecv3(:) .OR. lrecv_bdyint(ib_bdy,3,:) ! possibly every direction, V points 89 84 END SELECT 90 85 END DO 91 86 ! 92 IF( ANY(l send2) .OR. ANY(lrecv2) ) THEN ! if need to send/recv in at least one direction93 CALL lbc_bdy_lnk( 'bdydyn2d', l send2,lrecv2, ua, 'U', -1. )87 IF( ANY(llsend2) .OR. ANY(llrecv2) ) THEN ! if need to send/recv in at least one direction 88 CALL lbc_bdy_lnk( 'bdydyn2d', llsend2, llrecv2, ua, 'U', -1. ) 94 89 END IF 95 IF( ANY(l send3) .OR. ANY(lrecv3) ) THEN ! if need to send/recv in at least one direction96 CALL lbc_bdy_lnk( 'bdydyn2d', l send3,lrecv3, va, 'V', -1. )90 IF( ANY(llsend3) .OR. ANY(llrecv3) ) THEN ! if need to send/recv in at least one direction 91 CALL lbc_bdy_lnk( 'bdydyn2d', llsend3, llrecv3, va, 'V', -1. ) 97 92 END IF 98 93 ! … … 363 358 TYPE(OBC_INDEX), INTENT(in) :: idx ! OBC indices 364 359 INTEGER, INTENT(in) :: ib_bdy ! BDY set index 365 366 INTEGER :: jb, igrd ! dummy loop indices 367 LOGICAL, DIMENSION(4) :: lsend2, lrecv2, lsend3, lrecv3 ! indicate how communications are to be carried out 360 INTEGER :: igrd ! dummy indice 368 361 !!---------------------------------------------------------------------- 369 362 !
Note: See TracChangeset
for help on using the changeset viewer.