- Timestamp:
- 2021-03-03T16:04:57+01:00 (3 years ago)
- Location:
- NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/src/OCE/BDY
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/src/OCE/BDY/bdydyn2d.F90
r13226 r14574 18 18 USE bdylib ! BDY library routines 19 19 USE phycst ! physical constants 20 USE lib_mpp, ONLY: jpfillnothing 20 21 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 21 22 USE wet_dry ! Use wet dry to get reference ssh level -
NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/src/OCE/BDY/bdydyn3d.F90
r13226 r14574 15 15 USE bdy_oce ! ocean open boundary conditions 16 16 USE bdylib ! for orlanski library routines 17 USE lib_mpp, ONLY: jpfillnothing 17 18 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 18 19 USE in_out_manager ! -
NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/src/OCE/BDY/bdyice.F90
r13601 r14574 92 92 IF( ANY(llsend1) .OR. ANY(llrecv1) ) THEN ! if need to send/recv in at least one direction 93 93 ! exchange 3d arrays 94 CALL lbc_lnk _multi('bdyice', a_i , 'T', 1._wp, h_i , 'T', 1._wp, h_s , 'T', 1._wp, oa_i, 'T', 1._wp &95 & 96 & 97 & 94 CALL lbc_lnk('bdyice', a_i , 'T', 1._wp, h_i , 'T', 1._wp, h_s , 'T', 1._wp, oa_i, 'T', 1._wp & 95 & , s_i , 'T', 1._wp, t_su, 'T', 1._wp, v_i , 'T', 1._wp, v_s , 'T', 1._wp, sv_i, 'T', 1._wp & 96 & , a_ip, 'T', 1._wp, v_ip, 'T', 1._wp, v_il, 'T', 1._wp & 97 & , kfillmode=jpfillnothing ,lsend=llsend1, lrecv=llrecv1 ) 98 98 ! exchange 4d arrays : third dimension = 1 and then third dimension = jpk 99 CALL lbc_lnk _multi('bdyice', t_s , 'T', 1._wp, e_s , 'T', 1._wp, kfillmode=jpfillnothing ,lsend=llsend1, lrecv=llrecv1 )100 CALL lbc_lnk _multi('bdyice', t_i , 'T', 1._wp, e_i , 'T', 1._wp, kfillmode=jpfillnothing ,lsend=llsend1, lrecv=llrecv1 )99 CALL lbc_lnk('bdyice', t_s , 'T', 1._wp, e_s , 'T', 1._wp, kfillmode=jpfillnothing ,lsend=llsend1, lrecv=llrecv1 ) 100 CALL lbc_lnk('bdyice', t_i , 'T', 1._wp, e_i , 'T', 1._wp, kfillmode=jpfillnothing ,lsend=llsend1, lrecv=llrecv1 ) 101 101 END IF 102 102 END DO ! ir -
NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/src/OCE/BDY/bdyini.F90
r13541 r14574 166 166 ! Check and write out namelist parameters 167 167 ! ----------------------------------------- 168 IF( jperio /= 0 ) CALL ctl_stop( 'bdy_segs: Cyclic or symmetric,', & 169 & ' and general open boundary condition are not compatible' ) 170 168 171 169 IF(lwp) WRITE(numout,*) 'Number of open boundary sets : ', nb_bdy 172 170 … … 575 573 ! check if point has to be sent to a neighbour 576 574 ! W neighbour and on the inner left side 577 IF( ii == 2 . and. (nbondi == 0 .or. nbondi == 1) ) lsend_bdy(ib_bdy,igrd,1,ir) = .true.575 IF( ii == 2 .AND. mpiSnei(nn_hls,jpwe) > -1 ) lsend_bdy(ib_bdy,igrd,jpwe,ir) = .TRUE. 578 576 ! E neighbour and on the inner right side 579 IF( ii == jpi-1 . and. (nbondi == 0 .or. nbondi == -1) ) lsend_bdy(ib_bdy,igrd,2,ir) = .true.577 IF( ii == jpi-1 .AND. mpiSnei(nn_hls,jpea) > -1 ) lsend_bdy(ib_bdy,igrd,jpea,ir) = .TRUE. 580 578 ! S neighbour and on the inner down side 581 IF( ij == 2 . and. (nbondj == 0 .or. nbondj == 1) ) lsend_bdy(ib_bdy,igrd,3,ir) = .true.579 IF( ij == 2 .AND. mpiSnei(nn_hls,jpso) > -1 ) lsend_bdy(ib_bdy,igrd,jpso,ir) = .TRUE. 582 580 ! N neighbour and on the inner up side 583 IF( ij == jpj-1 . and. (nbondj == 0 .or. nbondj == -1) ) lsend_bdy(ib_bdy,igrd,4,ir) = .true.581 IF( ij == jpj-1 .AND. mpiSnei(nn_hls,jpno) > -1 ) lsend_bdy(ib_bdy,igrd,jpno,ir) = .TRUE. 584 582 ! 585 583 ! check if point has to be received from a neighbour 586 584 ! W neighbour and on the outter left side 587 IF( ii == 1 . and. (nbondi == 0 .or. nbondi == 1) ) lrecv_bdy(ib_bdy,igrd,1,ir) = .true.585 IF( ii == 1 .AND. mpiRnei(nn_hls,jpwe) > -1 ) lrecv_bdy(ib_bdy,igrd,jpwe,ir) = .TRUE. 588 586 ! E neighbour and on the outter right side 589 IF( ii == jpi . and. (nbondi == 0 .or. nbondi == -1) ) lrecv_bdy(ib_bdy,igrd,2,ir) = .true.587 IF( ii == jpi .AND. mpiRnei(nn_hls,jpea) > -1 ) lrecv_bdy(ib_bdy,igrd,jpea,ir) = .TRUE. 590 588 ! S neighbour and on the outter down side 591 IF( ij == 1 . and. (nbondj == 0 .or. nbondj == 1) ) lrecv_bdy(ib_bdy,igrd,3,ir) = .true.589 IF( ij == 1 .AND. mpiRnei(nn_hls,jpso) > -1 ) lrecv_bdy(ib_bdy,igrd,jpso,ir) = .TRUE. 592 590 ! N neighbour and on the outter up side 593 IF( ij == jpj . and. (nbondj == 0 .or. nbondj == -1) ) lrecv_bdy(ib_bdy,igrd,4,ir) = .true.591 IF( ij == jpj .AND. mpiRnei(nn_hls,jpno) > -1 ) lrecv_bdy(ib_bdy,igrd,jpno,ir) = .TRUE. 594 592 ! 595 593 END DO … … 654 652 END DO 655 653 END DO 656 CALL lbc_lnk _multi( 'bdyini', bdyumask, 'U', 1.0_wp , bdyvmask, 'V', 1.0_wp ) ! Lateral boundary cond.654 CALL lbc_lnk( 'bdyini', bdyumask, 'U', 1.0_wp , bdyvmask, 'V', 1.0_wp ) ! Lateral boundary cond. 657 655 658 656 ! bdy masks are now set to zero on rim 0 points: … … 739 737 ! <-- (o exterior) --> 740 738 ! (1) o|x OR (2) x|o 741 ! |___ ___| 742 IF( iibi == 0 .OR. ii1 == 0 .OR. ii2 == 0 .OR. ii3 == 0 ) lrecv_bdyint(ib_bdy,igrd,1,ir) = .true.743 IF( iibi == jpi+1 .OR. ii1 == jpi+1 .OR. ii2 == jpi+1 .OR. ii3 == jpi+1 ) lrecv_bdyint(ib_bdy,igrd,2,ir) = .true.744 IF( iibe == 0 ) lrecv_bdyext(ib_bdy,igrd,1,ir) = .true.745 IF( iibe == jpi+1 ) lrecv_bdyext(ib_bdy,igrd,2,ir) = .true.739 ! |___ ___| 740 IF( iibi==0 .OR. ii1==0 .OR. ii2==0 .OR. ii3==0 ) lrecv_bdyint(ib_bdy,igrd,jpwe,ir) = .TRUE. 741 IF( iibi==jpi+1 .OR. ii1==jpi+1 .OR. ii2==jpi+1 .OR. ii3==jpi+1 ) lrecv_bdyint(ib_bdy,igrd,jpea,ir) = .TRUE. 742 IF( iibe==0 ) lrecv_bdyext(ib_bdy,igrd,jpwe,ir) = .TRUE. 743 IF( iibe==jpi+1 ) lrecv_bdyext(ib_bdy,igrd,jpea,ir) = .TRUE. 746 744 ! Check if neighbour has its rim parallel to its mpi subdomain border and located next to its halo 747 745 ! :¨¨¨¨¨|¨¨--> | | <--¨¨|¨¨¨¨¨: 748 746 ! : | x:o | neighbour limited by ... would need o | o:x | : 749 747 ! :.....|_._:_____| (1) W neighbour E neighbour (2) |_____:_._|.....: 750 IF( ii == 2 .AND. ( nbondi == 1 .OR. nbondi == 0 ).AND. &751 & ( iibi == 3 .OR. ii1 == 3 .OR. ii2 == 3 .OR. ii3 == 3 ) ) lsend_bdyint(ib_bdy,igrd,1,ir)=.true.752 IF( ii == jpi-1 .AND. ( nbondi == -1 .OR. nbondi == 0 ).AND. &753 & ( iibi == jpi-2 .OR. ii1 == jpi-2 .OR. ii2 == jpi-2 .OR. ii3 == jpi-2) ) lsend_bdyint(ib_bdy,igrd,2,ir)=.true.754 IF( ii == 2 .AND. ( nbondi == 1 .OR. nbondi == 0 ) .AND. iibe == 3 ) lsend_bdyext(ib_bdy,igrd,1,ir)=.true.755 IF( ii == jpi-1 .AND. ( nbondi == -1 .OR. nbondi == 0 ) .AND. iibe == jpi-2 ) lsend_bdyext(ib_bdy,igrd,2,ir)=.true.748 IF( ii==2 .AND. mpiSnei(nn_hls,jpwe) > -1 .AND. & 749 & ( iibi==3 .OR. ii1==3 .OR. ii2==3 .OR. ii3==3 ) ) lsend_bdyint(ib_bdy,igrd,jpwe,ir) = .TRUE. 750 IF( ii==jpi-1 .AND. mpiSnei(nn_hls,jpea) > -1 .AND. & 751 & ( iibi==jpi-2 .OR. ii1==jpi-2 .OR. ii2==jpi-2 .OR. ii3==jpi-2) ) lsend_bdyint(ib_bdy,igrd,jpea,ir) = .TRUE. 752 IF( ii==2 .AND. mpiSnei(nn_hls,jpwe) > -1 .AND. iibe==3 ) lsend_bdyext(ib_bdy,igrd,jpwe,ir) = .TRUE. 753 IF( ii==jpi-1 .AND. mpiSnei(nn_hls,jpea) > -1 .AND. iibe==jpi-2 ) lsend_bdyext(ib_bdy,igrd,jpea,ir) = .TRUE. 756 754 ! 757 755 ! search neighbour in the north/south direction … … 760 758 ! | |___x___| OR | | x | 761 759 ! v o (4) | | 762 IF( ijbi == 0 .OR. ij1 == 0 .OR. ij2 == 0 .OR. ij3 == 0 ) lrecv_bdyint(ib_bdy,igrd,3,ir) = .true.763 IF( ijbi == jpj+1 .OR. ij1 == jpj+1 .OR. ij2 == jpj+1 .OR. ij3 == jpj+1 ) lrecv_bdyint(ib_bdy,igrd,4,ir) = .true.764 IF( ijbe == 0 ) lrecv_bdyext(ib_bdy,igrd,3,ir) = .true.765 IF( ijbe == jpj+1 ) lrecv_bdyext(ib_bdy,igrd,4,ir) = .true.760 IF( ijbi==0 .OR. ij1==0 .OR. ij2==0 .OR. ij3==0 ) lrecv_bdyint(ib_bdy,igrd,jpso,ir) = .TRUE. 761 IF( ijbi==jpj+1 .OR. ij1==jpj+1 .OR. ij2==jpj+1 .OR. ij3==jpj+1 ) lrecv_bdyint(ib_bdy,igrd,jpno,ir) = .TRUE. 762 IF( ijbe==0 ) lrecv_bdyext(ib_bdy,igrd,jpso,ir) = .TRUE. 763 IF( ijbe==jpj+1 ) lrecv_bdyext(ib_bdy,igrd,jpno,ir) = .TRUE. 766 764 ! Check if neighbour has its rim parallel to its mpi subdomain _________ border and next to its halo 767 765 ! ^ | o | : : 768 766 ! | |¨¨¨¨x¨¨¨¨| neighbour limited by ... would need o | |....x....| 769 767 ! :_________: (3) S neighbour N neighbour (4) v | o | 770 IF( ij == 2 .AND. ( nbondj == 1 .OR. nbondj == 0 ).AND. &771 & ( ijbi == 3 .OR. ij1 == 3 .OR. ij2 == 3 .OR. ij3 == 3 ) ) lsend_bdyint(ib_bdy,igrd,3,ir)=.true.772 IF( ij == jpj-1 .AND. ( nbondj == -1 .OR. nbondj == 0 ).AND. &773 & ( ijbi == jpj-2 .OR. ij1 == jpj-2 .OR. ij2 == jpj-2 .OR. ij3 == jpj-2) ) lsend_bdyint(ib_bdy,igrd,4,ir)=.true.774 IF( ij == 2 .AND. ( nbondj == 1 .OR. nbondj == 0 ) .AND. ijbe == 3 ) lsend_bdyext(ib_bdy,igrd,3,ir)=.true.775 IF( ij == jpj-1 .AND. ( nbondj == -1 .OR. nbondj == 0 ) .AND. ijbe == jpj-2 ) lsend_bdyext(ib_bdy,igrd,4,ir)=.true.768 IF( ij==2 .AND. mpiSnei(nn_hls,jpso) > -1 .AND. & 769 & ( ijbi==3 .OR. ij1==3 .OR. ij2==3 .OR. ij3==3 ) ) lsend_bdyint(ib_bdy,igrd,jpso,ir) = .TRUE. 770 IF( ij==jpj-1 .AND. mpiSnei(nn_hls,jpno) > -1 .AND. & 771 & ( ijbi==jpj-2 .OR. ij1==jpj-2 .OR. ij2==jpj-2 .OR. ij3==jpj-2) ) lsend_bdyint(ib_bdy,igrd,jpno,ir) = .TRUE. 772 IF( ij==2 .AND. mpiSnei(nn_hls,jpso) > -1 .AND. ijbe==3 ) lsend_bdyext(ib_bdy,igrd,jpso,ir) = .TRUE. 773 IF( ij==jpj-1 .AND. mpiSnei(nn_hls,jpno) > -1 .AND. ijbe==jpj-2 ) lsend_bdyext(ib_bdy,igrd,jpno,ir) = .TRUE. 776 774 END DO 777 775 END DO -
NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/src/OCE/BDY/bdytra.F90
r14537 r14574 18 18 ! 19 19 USE in_out_manager ! I/O manager 20 USE lib_mpp, ONLY: jpfillnothing 20 21 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 21 22 USE lib_mpp, ONLY: ctl_stop
Note: See TracChangeset
for help on using the changeset viewer.