Changeset 15360
- Timestamp:
- 2021-10-13T12:01:55+02:00 (3 years ago)
- Location:
- NEMO/trunk/src/OCE/BDY
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/trunk/src/OCE/BDY/bdydta.F90
r13472 r15360 243 243 ! If full velocities in boundary data, then split it into barotropic and baroclinic component 244 244 IF( bf_alias(jp_bdyu3d)%ltotvel ) THEN ! if we read 3D total velocity (can be true only if u3d was read) 245 !246 245 igrd = 2 ! zonal velocity 247 246 DO ib = 1, idx_bdy(jbdy)%nblen(igrd) … … 258 257 END DO 259 258 END DO 259 ENDIF ! ltotvel 260 IF( bf_alias(jp_bdyv3d)%ltotvel ) THEN ! if we read 3D total velocity (can be true only if u3d was read) 260 261 igrd = 3 ! meridional velocity 261 262 DO ib = 1, idx_bdy(jbdy)%nblen(igrd) -
NEMO/trunk/src/OCE/BDY/bdydyn2d.F90
r15354 r15360 51 51 !! 52 52 INTEGER :: ib_bdy, ir ! BDY set index, rim index 53 INTEGER, DIMENSION(3) :: idir354 INTEGER, DIMENSION(6) :: idir655 53 LOGICAL :: llrim0 ! indicate if rim 0 is treated 56 54 LOGICAL, DIMENSION(8) :: llsend2, llrecv2, llsend3, llrecv3 ! indicate how communications are to be carried out … … 90 88 SELECT CASE( cn_dyn2d(ib_bdy) ) 91 89 CASE('flather') 92 idir6 = (/ jpwe, jpea, jpsw, jpse, jpnw, jpne /) 93 llsend2(idir6) = llsend2(idir6) .OR. lsend_bdyint(ib_bdy,2,idir6,ir) ! west/east, U points 94 idir3 = (/ jpwe, jpsw, jpnw /) 95 llsend2(idir3) = llsend2(idir3) .OR. lsend_bdyext(ib_bdy,2,idir3,ir) ! nei might search point towards its east bdy 96 llrecv2(idir6) = llrecv2(idir6) .OR. lrecv_bdyint(ib_bdy,2,idir6,ir) ! west/east, U points 97 idir3 = (/ jpea, jpse, jpne /) 98 llrecv2(idir3) = llrecv2(idir3) .OR. lrecv_bdyext(ib_bdy,2,idir3,ir) ! might search point towards bdy on the east 99 idir6 = (/ jpso, jpno, jpsw, jpse, jpnw, jpne /) 100 llsend3(idir6) = llsend3(idir6) .OR. lsend_bdyint(ib_bdy,3,idir6,ir) ! north/south, V points 101 idir3 = (/ jpso, jpsw, jpse /) 102 llsend3(idir3) = llsend3(idir3) .OR. lsend_bdyext(ib_bdy,3,idir3,ir) ! nei might search point towards its north bdy 103 llrecv3(idir6) = llrecv3(idir6) .OR. lrecv_bdyint(ib_bdy,3,idir6,ir) ! north/south, V points 104 idir3 = (/ jpno, jpnw, jpne /) 105 llrecv3(idir3) = llrecv3(idir3) .OR. lrecv_bdyext(ib_bdy,3,idir3,ir) ! might search point towards bdy on the north 90 llsend2(:) = llsend2(:) .OR. lsend_bdyext(ib_bdy,2,:,ir) .OR. lsend_bdyint(ib_bdy,2,:,ir) 91 llrecv2(:) = llrecv2(:) .OR. lrecv_bdyext(ib_bdy,2,:,ir) .OR. lrecv_bdyint(ib_bdy,2,:,ir) 92 llsend3(:) = llsend3(:) .OR. lsend_bdyext(ib_bdy,3,:,ir) .OR. lsend_bdyint(ib_bdy,3,:,ir) 93 llrecv3(:) = llrecv3(:) .OR. lrecv_bdyext(ib_bdy,3,:,ir) .OR. lrecv_bdyint(ib_bdy,3,:,ir) 106 94 CASE('orlanski', 'orlanski_npo') 107 95 llsend2(:) = llsend2(:) .OR. lsend_bdyolr(ib_bdy,2,:,ir) ! possibly every direction, U points -
NEMO/trunk/src/OCE/BDY/bdydyn3d.F90
r15354 r15360 46 46 ! 47 47 INTEGER :: ib_bdy, ir ! BDY set index, rim index 48 INTEGER, DIMENSION(6) :: idir649 48 LOGICAL :: llrim0 ! indicate if rim 0 is treated 50 49 LOGICAL, DIMENSION(8) :: llsend2, llrecv2, llsend3, llrecv3 ! indicate how communications are to be carried out … … 88 87 llrecv3(:) = llrecv3(:) .OR. lrecv_bdyolr(ib_bdy,3,:,ir) ! possibly every direction, V points 89 88 CASE('zerograd') 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 89 llsend2(:) = llsend2(:) .OR. lsend_bdyint(ib_bdy,2,:,ir) 90 llrecv2(:) = llrecv2(:) .OR. lrecv_bdyint(ib_bdy,2,:,ir) 91 llsend3(:) = llsend3(:) .OR. lsend_bdyint(ib_bdy,3,:,ir) 92 llrecv3(:) = llrecv3(:) .OR. lrecv_bdyint(ib_bdy,3,:,ir) 96 93 CASE('neumann') 97 94 llsend2(:) = llsend2(:) .OR. lsend_bdyint(ib_bdy,2,:,ir) ! possibly every direction, U points -
NEMO/trunk/src/OCE/BDY/bdyice.F90
r15354 r15360 331 331 INTEGER :: jbdy, ir ! BDY set index, rim index 332 332 INTEGER :: ibeg, iend ! length of rim to be treated (rim 0 or rim 1) 333 INTEGER, DIMENSION(3) :: idir3334 333 REAL(wp) :: zmsk1, zmsk2, zflag 335 334 LOGICAL, DIMENSION(8) :: llsend2, llrecv2, llsend3, llrecv3 ! indicate how communications are to be carried out … … 431 430 DO jbdy = 1, nb_bdy 432 431 IF( cn_ice(jbdy) == 'frs' .AND. nn_ice_dta(jbdy) /= 0 ) THEN 433 llsend2( : ) = llsend2( : ) .OR. lsend_bdyint(jbdy,2, : ,ir) ! possibly every direction, U points 434 idir3 = (/ jpwe, jpsw, jpnw /) 435 llsend2(idir3) = llsend2(idir3) .OR. lsend_bdyext(jbdy,2,idir3,ir) ! nei might search point towards its ea bdy 436 llrecv2( : ) = llrecv2( : ) .OR. lrecv_bdyint(jbdy,2, : ,ir) ! possibly every direction, U points 437 idir3 = (/ jpea, jpse, jpne /) 438 llrecv2(idir3) = llrecv2(idir3) .OR. lrecv_bdyext(jbdy,2,idir3,ir) ! might search point towards east bdy 432 llsend2(:) = llsend2(:) .OR. lsend_bdyext(ib_bdy,2,:,ir) .OR. lsend_bdyint(ib_bdy,2,:,ir) 433 llrecv2(:) = llrecv2(:) .OR. lrecv_bdyext(ib_bdy,2,:,ir) .OR. lrecv_bdyint(ib_bdy,2,:,ir) 439 434 END IF 440 435 END DO … … 447 442 DO jbdy = 1, nb_bdy 448 443 IF( cn_ice(jbdy) == 'frs' .AND. nn_ice_dta(jbdy) /= 0 ) THEN 449 llsend3( : ) = llsend3( : ) .OR. lsend_bdyint(jbdy,3, : ,ir) ! possibly every direction, V points 450 idir3 = (/ jpso, jpsw, jpse /) 451 llsend3(idir3) = llsend3(idir3) .OR. lsend_bdyext(jbdy,3,idir3,ir) ! nei might search point towards its no bdy 452 llrecv3( : ) = llrecv3( : ) .OR. lrecv_bdyint(jbdy,3, : ,ir) ! possibly every direction, V points 453 idir3 = (/ jpno, jpnw, jpne /) 454 llrecv3(idir3) = llrecv3(idir3) .OR. lrecv_bdyext(jbdy,3,idir3,ir) ! might search point towards north bdy 444 llsend3(:) = llsend3(:) .OR. lsend_bdyext(ib_bdy,3,:,ir) .OR. lsend_bdyint(ib_bdy,3,:,ir) 445 llrecv3(:) = llrecv3(:) .OR. lrecv_bdyext(ib_bdy,3,:,ir) .OR. lrecv_bdyint(ib_bdy,3,:,ir) 455 446 END IF 456 447 END DO -
NEMO/trunk/src/OCE/BDY/bdyini.F90
r15354 r15360 593 593 ENDIF 594 594 ENDIF 595 IF( ( ( ii >= Nis0 .AND. ii <= Nie0 ) .OR. nn_comm == 1 ) & 596 & .AND. ij >= Njs0 .AND. ij < Njs0 + nn_hls ) THEN ! so inner side 595 IF( ii >= Nis0 .AND. ii <= Nie0 .AND. ij >= Njs0 .AND. ij < Njs0 + nn_hls ) THEN ! so inner side 597 596 IF( mpiSnei(nn_hls,jpso) > -1 ) THEN ; lsend_bdyolr(ib_bdy,igrd,jpso,ir) = .TRUE. ! send to so neighbourg 598 597 ELSE ; CALL ctl_stop( 'bdyini send olr so-side' ) 599 598 ENDIF 600 599 ENDIF 601 IF( ( ( ii >= Nis0 .AND. ii <= Nie0 ) .OR. nn_comm == 1 ) & 602 & .AND. ij <= Nje0 .AND. ij > Nje0 - nn_hls ) THEN ! no inner side 600 IF( ii < Nis0 .AND. ij >= Njs0 .AND. ij < Njs0 + nn_hls ) THEN ! so side we-halo 601 IF( nn_comm == 1 .AND. mpiSnei(nn_hls,jpso) > -1 ) lsend_bdyolr(ib_bdy,igrd,jpso,ir) = .TRUE. 602 ENDIF 603 IF( ii > Nie0 .AND. ij >= Njs0 .AND. ij < Njs0 + nn_hls ) THEN ! so side ea-halo 604 IF( nn_comm == 1 .AND. mpiSnei(nn_hls,jpso) > -1 ) lsend_bdyolr(ib_bdy,igrd,jpso,ir) = .TRUE. 605 ENDIF 606 IF( ii >= Nis0 .AND. ii <= Nie0 .AND. ij <= Nje0 .AND. ij > Nje0 - nn_hls ) THEN ! no inner side 603 607 IF( mpiSnei(nn_hls,jpno) > -1 ) THEN ; lsend_bdyolr(ib_bdy,igrd,jpno,ir) = .TRUE. ! send to no neighbourg 604 608 ELSE ; CALL ctl_stop( 'bdyini send olr no-side' ) 605 609 ENDIF 610 ENDIF 611 IF( ii < Nis0 .AND. ij <= Nje0 .AND. ij > Nje0 - nn_hls ) THEN ! no side we-halo 612 IF( nn_comm == 1 .AND. mpiSnei(nn_hls,jpno) > -1 ) lsend_bdyolr(ib_bdy,igrd,jpno,ir) = .TRUE. 613 ENDIF 614 IF( ii > Nie0 .AND. ij <= Nje0 .AND. ij > Nje0 - nn_hls ) THEN ! no side ea-halo 615 IF( nn_comm == 1 .AND. mpiSnei(nn_hls,jpno) > -1 ) lsend_bdyolr(ib_bdy,igrd,jpno,ir) = .TRUE. 606 616 ENDIF 607 617 IF( ii >= Nis0 .AND. ii < Nis0 + nn_hls .AND. ij >= Njs0 .AND. ij < Njs0 + nn_hls ) THEN ! sw inner corner … … 675 685 END DO ! igrd 676 686 677 !!$! Comment out for debug687 ! Comment out for debug 678 688 !!$ DO ir = 0,1 679 689 !!$ zzbdy(:,:) = narea ; CALL lbc_lnk('bdy debug', zzbdy, 'T', 1._wp, kfillmode = jpfillnothing, & 680 690 !!$ & lsend = lsend_bdyolr(ib_bdy,1,:,ir), lrecv = lrecv_bdyolr(ib_bdy,1,:,ir) ) 691 !!$ IF(lwp) WRITE(numout,*) ' seb bdy debug olr T', ir ; CALL FLUSH(numout) 681 692 !!$ zzbdy(:,:) = narea ; CALL lbc_lnk('bdy debug', zzbdy, 'U', 1._wp, kfillmode = jpfillnothing, & 682 693 !!$ & lsend = lsend_bdyolr(ib_bdy,2,:,ir), lrecv = lrecv_bdyolr(ib_bdy,2,:,ir) ) 694 !!$ IF(lwp) WRITE(numout,*) ' seb bdy debug olr U', ir ; CALL FLUSH(numout) 683 695 !!$ zzbdy(:,:) = narea ; CALL lbc_lnk('bdy debug', zzbdy, 'V', 1._wp, kfillmode = jpfillnothing, & 684 696 !!$ & lsend = lsend_bdyolr(ib_bdy,3,:,ir), lrecv = lrecv_bdyolr(ib_bdy,3,:,ir) ) 697 !!$ IF(lwp) WRITE(numout,*) ' seb bdy debug olr V', ir ; CALL FLUSH(numout) 685 698 !!$ END DO 686 699 … … 1015 1028 END DO ! igrd 1016 1029 1017 !!$! Comment out for debug1030 ! Comment out for debug 1018 1031 !!$ DO ir = 0,1 1019 1032 !!$ zzbdy(:,:) = narea ; CALL lbc_lnk('bdy debug', zzbdy, 'T', 1._wp, kfillmode = jpfillnothing, & 1020 1033 !!$ & lsend = lsend_bdyint(ib_bdy,1,:,ir), lrecv = lrecv_bdyint(ib_bdy,1,:,ir) ) 1034 !!$ IF(lwp) WRITE(numout,*) ' seb bdy debug int T', ir ; CALL FLUSH(numout) 1021 1035 !!$ zzbdy(:,:) = narea ; CALL lbc_lnk('bdy debug', zzbdy, 'U', 1._wp, kfillmode = jpfillnothing, & 1022 1036 !!$ & lsend = lsend_bdyint(ib_bdy,2,:,ir), lrecv = lrecv_bdyint(ib_bdy,2,:,ir) ) 1037 !!$ IF(lwp) WRITE(numout,*) ' seb bdy debug int U', ir ; CALL FLUSH(numout) 1023 1038 !!$ zzbdy(:,:) = narea ; CALL lbc_lnk('bdy debug', zzbdy, 'V', 1._wp, kfillmode = jpfillnothing, & 1024 1039 !!$ & lsend = lsend_bdyint(ib_bdy,3,:,ir), lrecv = lrecv_bdyint(ib_bdy,3,:,ir) ) 1040 !!$ IF(lwp) WRITE(numout,*) ' seb bdy debug int V', ir ; CALL FLUSH(numout) 1025 1041 !!$ zzbdy(:,:) = narea ; CALL lbc_lnk('bdy debug', zzbdy, 'T', 1._wp, kfillmode = jpfillnothing, & 1026 1042 !!$ & lsend = lsend_bdyext(ib_bdy,1,:,ir), lrecv = lrecv_bdyext(ib_bdy,1,:,ir) ) 1043 !!$ IF(lwp) WRITE(numout,*) ' seb bdy debug ext T', ir ; CALL FLUSH(numout) 1027 1044 !!$ zzbdy(:,:) = narea ; CALL lbc_lnk('bdy debug', zzbdy, 'U', 1._wp, kfillmode = jpfillnothing, & 1028 1045 !!$ & lsend = lsend_bdyext(ib_bdy,2,:,ir), lrecv = lrecv_bdyext(ib_bdy,2,:,ir) ) 1046 !!$ IF(lwp) WRITE(numout,*) ' seb bdy debug ext U', ir ; CALL FLUSH(numout) 1029 1047 !!$ zzbdy(:,:) = narea ; CALL lbc_lnk('bdy debug', zzbdy, 'V', 1._wp, kfillmode = jpfillnothing, & 1030 1048 !!$ & lsend = lsend_bdyext(ib_bdy,3,:,ir), lrecv = lrecv_bdyext(ib_bdy,3,:,ir) ) 1049 !!$ IF(lwp) WRITE(numout,*) ' seb bdy debug ext V', ir ; CALL FLUSH(numout) 1031 1050 !!$ END DO 1032 1051
Note: See TracChangeset
for help on using the changeset viewer.