Changeset 11067 for NEMO/branches/2019/dev_r10984_HPC-13_IRRMANN_BDY_optimization/src/OCE/BDY/bdydyn2d.F90
- Timestamp:
- 2019-05-29T11:34:32+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/bdydyn2d.F90
r11049 r11067 50 50 REAL(wp), DIMENSION(jpi,jpj), INTENT(in ) :: pssh 51 51 !! 52 INTEGER :: ib_bdy ! Loop counter 53 52 INTEGER :: ib_bdy ! Loop counter 53 LOGICAL, DIMENSION(4) :: lsend2, lrecv2, lsend3, lrecv3 ! indicate how communications are to be carried out 54 54 55 DO ib_bdy=1, nb_bdy 55 56 56 SELECT CASE( cn_dyn2d(ib_bdy) ) 57 57 CASE('none') … … 71 71 END SELECT 72 72 ENDDO 73 73 ! 74 lsend2(:) = .false. 75 lrecv2(:) = .false. 76 lsend3(:) = .false. 77 lrecv3(:) = .false. 78 DO ib_bdy=1, nb_bdy 79 SELECT CASE( cn_dyn2d(ib_bdy) ) 80 CASE('flather') 81 lsend2(:) = lsend2(:) .OR. lsend_bdy(ib_bdy,2,:) ! to every bdy neighbour, U points 82 lrecv2(:) = lrecv2(:) .OR. lrecv_bdy(ib_bdy,2,:) ! from every bdy neighbour, U points 83 lsend3(:) = lsend3(:) .OR. lsend_bdy(ib_bdy,3,:) ! to every bdy neighbour, V points 84 lrecv3(:) = lrecv3(:) .OR. lrecv_bdy(ib_bdy,3,:) ! from every bdy neighbour, V points 85 CASE('orlanski') 86 lsend2(:) = lsend2(:) .OR. lsend_bdy(ib_bdy,2,:) ! to every bdy neighbour, U points 87 lrecv2(:) = lrecv2(:) .OR. lrecv_bdy(ib_bdy,2,:) ! from every bdy neighbour, U points 88 lsend3(:) = lsend3(:) .OR. lsend_bdy(ib_bdy,3,:) ! to every bdy neighbour, V points 89 lrecv3(:) = lrecv3(:) .OR. lrecv_bdy(ib_bdy,3,:) ! from every bdy neighbour, V points 90 CASE('orlanski_npo') 91 lsend2(:) = lsend2(:) .OR. lsend_bdy(ib_bdy,2,:) ! to every bdy neighbour, U points 92 lrecv2(:) = lrecv2(:) .OR. lrecv_bdy(ib_bdy,2,:) ! from every bdy neighbour, U points 93 lsend3(:) = lsend3(:) .OR. lsend_bdy(ib_bdy,3,:) ! to every bdy neighbour, V points 94 lrecv3(:) = lrecv3(:) .OR. lrecv_bdy(ib_bdy,3,:) ! from every bdy neighbour, V points 95 END SELECT 96 END DO 97 IF( ANY(lsend2) .OR. ANY(lrecv2) ) THEN ! if need to send/recv in at least one direction 98 CALL lbc_bdy_lnk( 'bdydyn2d', lsend2, lrecv2, pua2d, 'U', -1. ) 99 END IF 100 IF( ANY(lsend3) .OR. ANY(lrecv3) ) THEN ! if need to send/recv in at least one direction 101 CALL lbc_bdy_lnk( 'bdydyn2d', lsend3, lrecv3, pva2d, 'V', -1. ) 102 END IF 103 ! 74 104 END SUBROUTINE bdy_dyn2d 75 105 … … 110 140 pva2d(ii,ij) = ( pva2d(ii,ij) + zwgt * ( dta%v2d(jb) - pva2d(ii,ij) ) ) * vmask(ii,ij,1) 111 141 END DO 112 CALL lbc_bdy_lnk( 'bdydyn2d', pua2d, 'U', -1., ib_bdy )113 CALL lbc_bdy_lnk( 'bdydyn2d', pva2d, 'V', -1., ib_bdy) ! Boundary points should be updated114 142 ! 115 143 END SUBROUTINE bdy_dyn2d_frs … … 170 198 END DO 171 199 172 CALL lbc_bdy_lnk( 'bdydyn2d', spgu(:,:), 'T', 1., ib_bdy )173 200 ! 174 201 igrd = 2 ! Flather bc on u-velocity; … … 210 237 pva2d(ii,ij) = zforc + (1._wp - z1_2*zflag) * zcorr * vmask(ii,ij,1) 211 238 END DO 212 CALL lbc_bdy_lnk( 'bdydyn2d', pua2d, 'U', -1., ib_bdy ) ! Boundary points should be updated213 CALL lbc_bdy_lnk( 'bdydyn2d', pva2d, 'V', -1., ib_bdy ) !214 239 ! 215 240 END SUBROUTINE bdy_dyn2d_fla … … 246 271 CALL bdy_orlanski_2d( idx, igrd, pvb2d, pva2d, dta%v2d, ll_npo ) 247 272 ! 248 CALL lbc_bdy_lnk( 'bdydyn2d', pua2d, 'U', -1., ib_bdy ) ! Boundary points should be updated249 CALL lbc_bdy_lnk( 'bdydyn2d', pva2d, 'V', -1., ib_bdy ) !250 !251 273 END SUBROUTINE bdy_dyn2d_orlanski 252 274 … … 262 284 !! 263 285 INTEGER :: ib_bdy ! bdy index 264 !!---------------------------------------------------------------------- 286 LOGICAL, DIMENSION(4) :: lsend1, lrecv1 ! indicate how communications are to be carried out 287 !!---------------------------------------------------------------------- 288 lsend1(:) = .false. 289 lrecv1(:) = .false. 265 290 DO ib_bdy = 1, nb_bdy 266 291 CALL bdy_nmn( idx_bdy(ib_bdy), 1, zssh ) ! zssh is masked 267 CALL lbc_bdy_lnk( 'bdydyn2d', zssh(:,:,1), 'T', 1., ib_bdy ) 268 END DO 292 lsend1(:) = lsend1(:) .OR. lsend_bdy(ib_bdy,1,:) ! to every bdy neighbour, T points 293 lrecv1(:) = lrecv1(:) .OR. lrecv_bdy(ib_bdy,1,:) ! from every bdy neighbour, T points 294 END DO 295 IF( ANY(lsend1) .OR. ANY(lrecv1) ) THEN ! if need to send/recv in at least one direction 296 CALL lbc_bdy_lnk( 'bdydyn2d', lsend1, lrecv1, zssh(:,:,1), 'T', 1. ) 297 END IF 269 298 ! 270 299 END SUBROUTINE bdy_ssh
Note: See TracChangeset
for help on using the changeset viewer.