Changeset 15363
- Timestamp:
- 2021-10-13T18:05:19+02:00 (20 months ago)
- Location:
- NEMO/trunk/src/OCE/BDY
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/trunk/src/OCE/BDY/bdydyn2d.F90
r15360 r15363 18 18 USE bdylib ! BDY library routines 19 19 USE phycst ! physical constants 20 USE lib_mpp , ONLY: jpfillnothing20 USE lib_mpp 21 21 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 22 22 USE wet_dry ! Use wet dry to get reference ssh level 23 23 USE in_out_manager ! 24 USE lib_mpp25 24 26 25 IMPLICIT NONE -
NEMO/trunk/src/OCE/BDY/bdydyn3d.F90
r15360 r15363 15 15 USE bdy_oce ! ocean open boundary conditions 16 16 USE bdylib ! for orlanski library routines 17 USE lib_mpp , ONLY: jpfillnothing17 USE lib_mpp 18 18 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 19 19 USE in_out_manager ! 20 USE lib_mpp21 20 Use phycst 22 21 … … 86 85 llsend3(:) = llsend3(:) .OR. lsend_bdyolr(ib_bdy,3,:,ir) ! possibly every direction, V points 87 86 llrecv3(:) = llrecv3(:) .OR. lrecv_bdyolr(ib_bdy,3,:,ir) ! possibly every direction, V points 88 CASE('zerograd' )87 CASE('zerograd', 'neumann') 89 88 llsend2(:) = llsend2(:) .OR. lsend_bdyint(ib_bdy,2,:,ir) 90 89 llrecv2(:) = llrecv2(:) .OR. lrecv_bdyint(ib_bdy,2,:,ir) 91 90 llsend3(:) = llsend3(:) .OR. lsend_bdyint(ib_bdy,3,:,ir) 92 91 llrecv3(:) = llrecv3(:) .OR. lrecv_bdyint(ib_bdy,3,:,ir) 93 CASE('neumann')94 llsend2(:) = llsend2(:) .OR. lsend_bdyint(ib_bdy,2,:,ir) ! possibly every direction, U points95 llrecv2(:) = llrecv2(:) .OR. lrecv_bdyint(ib_bdy,2,:,ir) ! possibly every direction, U points96 llsend3(:) = llsend3(:) .OR. lsend_bdyint(ib_bdy,3,:,ir) ! possibly every direction, V points97 llrecv3(:) = llrecv3(:) .OR. lrecv_bdyint(ib_bdy,3,:,ir) ! possibly every direction, V points98 92 END SELECT 99 93 END DO -
NEMO/trunk/src/OCE/BDY/bdyini.F90
r15360 r15363 164 164 INTEGER, ALLOCATABLE, DIMENSION(:,:,:) :: nbrdta ! Discrete distance from rim points 165 165 CHARACTER(LEN=1) , DIMENSION(jpbgrd) :: cgrid 166 CHARACTER(LEN=2) :: cRdir, cSdir167 166 REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: zz_read ! work space for 2D global boundary data 168 167 REAL(wp), POINTER , DIMENSION(:,:) :: zmask ! pointer to 2D mask fields … … 584 583 ! check if point has to be sent to a neighbour 585 584 IF( ii >= Nis0 .AND. ii < Nis0 + nn_hls .AND. ij >= Njs0 .AND. ij <= Nje0 ) THEN ! we inner side 586 IF( mpiSnei(nn_hls,jpwe) > -1 ) THEN ; lsend_bdyolr(ib_bdy,igrd,jpwe,ir) = .TRUE. ! send to we neighbourg 587 ELSE ; CALL ctl_stop( 'bdyini send olr we-side' ) 588 ENDIF 585 IF( mpiSnei(nn_hls,jpwe) > -1 ) lsend_bdyolr(ib_bdy,igrd,jpwe,ir) = .TRUE. 589 586 ENDIF 590 587 IF( ii <= Nie0 .AND. ii > Nie0 - nn_hls .AND. ij >= Njs0 .AND. ij <= Nje0 ) THEN ! ea inner side 591 IF( mpiSnei(nn_hls,jpea) > -1 ) THEN ; lsend_bdyolr(ib_bdy,igrd,jpea,ir) = .TRUE. ! send to ea neighbourg 592 ELSE ; CALL ctl_stop( 'bdyini send olr ea-side' ) 593 ENDIF 588 IF( mpiSnei(nn_hls,jpea) > -1 ) lsend_bdyolr(ib_bdy,igrd,jpea,ir) = .TRUE. 594 589 ENDIF 595 590 IF( ii >= Nis0 .AND. ii <= Nie0 .AND. ij >= Njs0 .AND. ij < Njs0 + nn_hls ) THEN ! so inner side 596 IF( mpiSnei(nn_hls,jpso) > -1 ) THEN ; lsend_bdyolr(ib_bdy,igrd,jpso,ir) = .TRUE. ! send to so neighbourg 597 ELSE ; CALL ctl_stop( 'bdyini send olr so-side' ) 598 ENDIF 591 IF( mpiSnei(nn_hls,jpso) > -1 ) lsend_bdyolr(ib_bdy,igrd,jpso,ir) = .TRUE. 599 592 ENDIF 600 593 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.594 IF( mpiSnei(nn_hls,jpso) > -1 .AND. nn_comm == 1 ) lsend_bdyolr(ib_bdy,igrd,jpso,ir) = .TRUE. 602 595 ENDIF 603 596 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.597 IF( mpiSnei(nn_hls,jpso) > -1 .AND. nn_comm == 1 ) lsend_bdyolr(ib_bdy,igrd,jpso,ir) = .TRUE. 605 598 ENDIF 606 599 IF( ii >= Nis0 .AND. ii <= Nie0 .AND. ij <= Nje0 .AND. ij > Nje0 - nn_hls ) THEN ! no inner side 607 IF( mpiSnei(nn_hls,jpno) > -1 ) THEN ; lsend_bdyolr(ib_bdy,igrd,jpno,ir) = .TRUE. ! send to no neighbourg 608 ELSE ; CALL ctl_stop( 'bdyini send olr no-side' ) 609 ENDIF 600 IF( mpiSnei(nn_hls,jpno) > -1 ) lsend_bdyolr(ib_bdy,igrd,jpno,ir) = .TRUE. 610 601 ENDIF 611 602 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.603 IF( mpiSnei(nn_hls,jpno) > -1 .AND. nn_comm == 1 ) lsend_bdyolr(ib_bdy,igrd,jpno,ir) = .TRUE. 613 604 ENDIF 614 605 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 IF( mpiSnei(nn_hls,jpno) > -1 .AND. nn_comm == 1 ) lsend_bdyolr(ib_bdy,igrd,jpno,ir) = .TRUE. 616 607 ENDIF 617 608 IF( ii >= Nis0 .AND. ii < Nis0 + nn_hls .AND. ij >= Njs0 .AND. ij < Njs0 + nn_hls ) THEN ! sw inner corner 618 IF( mpiSnei(nn_hls,jpsw) > -1 ) THEN ; lsend_bdyolr(ib_bdy,igrd,jpsw,ir) = .TRUE. ! send to sw neighbourg 619 ELSEIF( nn_comm /= 1 ) THEN ; CALL ctl_stop( 'bdyini send olr sw-corner' ) 620 ENDIF 609 IF( mpiSnei(nn_hls,jpsw) > -1 ) lsend_bdyolr(ib_bdy,igrd,jpsw,ir) = .TRUE. 621 610 ENDIF 622 611 IF( ii <= Nie0 .AND. ii > Nie0 - nn_hls .AND. ij >= Njs0 .AND. ij < Njs0 + nn_hls ) THEN ! se inner corner 623 IF( mpiSnei(nn_hls,jpse) > -1 ) THEN ; lsend_bdyolr(ib_bdy,igrd,jpse,ir) = .TRUE. ! send to se neighbourg 624 ELSEIF( nn_comm /= 1 ) THEN ; CALL ctl_stop( 'bdyini send olr se-corner' ) 625 ENDIF 612 IF( mpiSnei(nn_hls,jpse) > -1 ) lsend_bdyolr(ib_bdy,igrd,jpse,ir) = .TRUE. 626 613 ENDIF 627 614 IF( ii >= Nis0 .AND. ii < Nis0 + nn_hls .AND. ij <= Nje0 .AND. ij > Nje0 - nn_hls ) THEN ! nw inner corner 628 IF( mpiSnei(nn_hls,jpnw) > -1 ) THEN ; lsend_bdyolr(ib_bdy,igrd,jpnw,ir) = .TRUE. ! send to nw neighbourg 629 ELSEIF( nn_comm /= 1 ) THEN ; CALL ctl_stop( 'bdyini send olr nw-corner' ) 630 ENDIF 615 IF( mpiSnei(nn_hls,jpnw) > -1 ) lsend_bdyolr(ib_bdy,igrd,jpnw,ir) = .TRUE. 631 616 ENDIF 632 617 IF( ii <= Nie0 .AND. ii > Nie0 - nn_hls .AND. ij <= Nje0 .AND. ij > Nje0 - nn_hls ) THEN ! ne inner corner 633 IF( mpiSnei(nn_hls,jpne) > -1 ) THEN ; lsend_bdyolr(ib_bdy,igrd,jpne,ir) = .TRUE. ! send to ne neighbourg 634 ELSEIF( nn_comm /= 1 ) THEN ; CALL ctl_stop( 'bdyini send olr ne-corner' ) 635 ENDIF 618 IF( mpiSnei(nn_hls,jpne) > -1 ) lsend_bdyolr(ib_bdy,igrd,jpne,ir) = .TRUE. 636 619 ENDIF 637 620 ! 638 621 ! check if point has to be received from a neighbour 639 622 IF( ii < Nis0 .AND. ij >= Njs0 .AND. ij <= Nje0 ) THEN ! we side 640 IF( mpiRnei(nn_hls,jpwe) > -1 ) THEN ; lrecv_bdyolr(ib_bdy,igrd,jpwe,ir) = .TRUE. ! rcv from we nei 641 ELSE ; CALL ctl_stop( 'bdyini recv olr we-side ' ) 642 ENDIF 623 IF( mpiRnei(nn_hls,jpwe) > -1 ) lrecv_bdyolr(ib_bdy,igrd,jpwe,ir) = .TRUE. 643 624 ENDIF 644 625 IF( ii > Nie0 .AND. ij >= Njs0 .AND. ij <= Nje0 ) THEN ! ea side 645 IF( mpiRnei(nn_hls,jpea) > -1 ) THEN ; lrecv_bdyolr(ib_bdy,igrd,jpea,ir) = .TRUE. ! rcv from ea nei 646 ELSE ; CALL ctl_stop( 'bdyini recv olr ea-side ' ) 647 ENDIF 626 IF( mpiRnei(nn_hls,jpea) > -1 ) lrecv_bdyolr(ib_bdy,igrd,jpea,ir) = .TRUE. 648 627 ENDIF 649 628 IF( ii >= Nis0 .AND. ii <= Nie0 .AND. ij < Njs0 ) THEN ! so side 650 IF( mpiRnei(nn_hls,jpso) > -1 ) THEN ; lrecv_bdyolr(ib_bdy,igrd,jpso,ir) = .TRUE. ! rcv from so nei 651 ELSE ; CALL ctl_stop( 'bdyini recv olr so-side ' ) 652 ENDIF 629 IF( mpiRnei(nn_hls,jpso) > -1 ) lrecv_bdyolr(ib_bdy,igrd,jpso,ir) = .TRUE. 653 630 ENDIF 654 631 IF( ii >= Nis0 .AND. ii <= Nie0 .AND. ij > Nje0 ) THEN ! no side 655 IF( mpiRnei(nn_hls,jpno) > -1 ) THEN ; lrecv_bdyolr(ib_bdy,igrd,jpno,ir) = .TRUE. ! rcv from no nei 656 ELSE ; CALL ctl_stop( 'bdyini recv olr no-side ' ) 657 ENDIF 632 IF( mpiRnei(nn_hls,jpno) > -1 ) lrecv_bdyolr(ib_bdy,igrd,jpno,ir) = .TRUE. 658 633 ENDIF 659 634 IF( ii < Nis0 .AND. ij < Njs0 ) THEN ! sw corner 660 IF( mpiRnei(nn_hls,jpsw) > -1 ) THEN ; lrecv_bdyolr(ib_bdy,igrd,jpsw,ir) = .TRUE. 661 ELSEIF( mpiRnei(nn_hls,jpso) > -1 .AND. nn_comm == 1 ) THEN ; lrecv_bdyolr(ib_bdy,igrd,jpso,ir) = .TRUE. 662 ELSE ; CALL ctl_stop( 'bdyini recv olr sw-corner' ) 663 ENDIF 635 IF( mpiRnei(nn_hls,jpsw) > -1 ) lrecv_bdyolr(ib_bdy,igrd,jpsw,ir) = .TRUE. 636 IF( mpiRnei(nn_hls,jpso) > -1 .AND. nn_comm == 1 ) lrecv_bdyolr(ib_bdy,igrd,jpso,ir) = .TRUE. 664 637 ENDIF 665 638 IF( ii > Nie0 .AND. ij < Njs0 ) THEN ! se corner 666 IF( mpiRnei(nn_hls,jpse) > -1 ) THEN ; lrecv_bdyolr(ib_bdy,igrd,jpse,ir) = .TRUE. 667 ELSEIF( mpiRnei(nn_hls,jpso) > -1 .AND. nn_comm == 1 ) THEN ; lrecv_bdyolr(ib_bdy,igrd,jpso,ir) = .TRUE. 668 ELSE ; CALL ctl_stop( 'bdyini recv olr se-corner' ) 669 ENDIF 639 IF( mpiRnei(nn_hls,jpse) > -1 ) lrecv_bdyolr(ib_bdy,igrd,jpse,ir) = .TRUE. 640 IF( mpiRnei(nn_hls,jpso) > -1 .AND. nn_comm == 1 ) lrecv_bdyolr(ib_bdy,igrd,jpso,ir) = .TRUE. 670 641 ENDIF 671 642 IF( ii < Nis0 .AND. ij > Nje0 ) THEN ! nw corner 672 IF( mpiRnei(nn_hls,jpnw) > -1 ) THEN ; lrecv_bdyolr(ib_bdy,igrd,jpnw,ir) = .TRUE. 673 ELSEIF( mpiRnei(nn_hls,jpno) > -1 .AND. nn_comm == 1 ) THEN ; lrecv_bdyolr(ib_bdy,igrd,jpno,ir) = .TRUE. 674 ELSE ; CALL ctl_stop( 'bdyini recv olr nw-corner' ) 675 ENDIF 643 IF( mpiRnei(nn_hls,jpnw) > -1 ) lrecv_bdyolr(ib_bdy,igrd,jpnw,ir) = .TRUE. 644 IF( mpiRnei(nn_hls,jpno) > -1 .AND. nn_comm == 1 ) lrecv_bdyolr(ib_bdy,igrd,jpno,ir) = .TRUE. 676 645 ENDIF 677 646 IF( ii > Nie0 .AND. ij > Nje0 ) THEN ! ne corner 678 IF( mpiRnei(nn_hls,jpne) > -1 ) THEN ; lrecv_bdyolr(ib_bdy,igrd,jpne,ir) = .TRUE. 679 ELSEIF( mpiRnei(nn_hls,jpno) > -1 .AND. nn_comm == 1 ) THEN ; lrecv_bdyolr(ib_bdy,igrd,jpno,ir) = .TRUE. 680 ELSE ; CALL ctl_stop( 'bdyini recv olr ne-corner' ) 681 ENDIF 647 IF( mpiRnei(nn_hls,jpne) > -1 ) lrecv_bdyolr(ib_bdy,igrd,jpne,ir) = .TRUE. 648 IF( mpiRnei(nn_hls,jpno) > -1 .AND. nn_comm == 1 ) lrecv_bdyolr(ib_bdy,igrd,jpno,ir) = .TRUE. 682 649 ENDIF 683 650 ! … … 839 806 ! o: potential neighbour(s) o|x : 840 807 ! outside of the MPI domain ..o|__:__ 841 cRdir = 'we' ; cSdir = 'ea'842 808 iRnei = jpwe ; iSnei = jpea 843 809 iiRst = 1 ; ijRst = 2 ! Rcv we-side starting point, excluding sw-corner … … 850 816 ! o: potential neighbour(s) : x|o 851 817 ! outside of the MPI domain ___:__|o.. 852 cRdir = 'ea' ; cSdir = 'we'853 818 iRnei = jpea ; iSnei = jpwe 854 819 iiRst = jpi ; ijRst = 2 ! Rcv ea-side starting point, excluding se-corner … … 863 828 ! : o o o : 864 829 ! : : 865 cRdir = 'so' ; cSdir = 'no'866 830 iRnei = jpso ; iSnei = jpno 867 831 iiRst = 2 ; ijRst = 1 ! Rcv so-side starting point, excluding sw-corner … … 875 839 ! outside of the MPI domain | | 876 840 ! |¨¨¨¨¨¨¨| 877 cRdir = 'no' ; cSdir = 'so'878 841 iRnei = jpno ; iSnei = jpso 879 842 iiRst = 2 ; ijRst = jpj ! Rcv no-side starting point, excluding nw-corner … … 889 852 IF( iibi==iiout .OR. ii1==iiout .OR. ii2==iiout .OR. ii3==iiout .OR. & ! Neib outside of the MPI domain 890 853 & ijbi==ijout .OR. ij1==ijout .OR. ij2==ijout .OR. ij3==ijout ) THEN ! -> I cannot compute it -> recv it 891 IF( mpiRnei(nn_hls,iRnei) > -1 ) THEN ; lrecv_bdyint(ib_bdy,igrd,iRnei,ir) = .TRUE. 892 ELSE ; CALL ctl_stop( 'bdyini recv int '//cRdir//'-side ' ) 893 ENDIF 854 IF( mpiRnei(nn_hls,iRnei) > -1 ) lrecv_bdyint(ib_bdy,igrd,iRnei,ir) = .TRUE. 894 855 ENDIF 895 856 ! take care of neighbourg in the exterior of the computational domain 896 857 IF( iibe==iiout .OR. ijbe==ijout ) THEN ! Neib outside of the MPI domain -> I cannot compute it -> recv it 897 IF( mpiRnei(nn_hls,iRnei) > -1 ) THEN ; lrecv_bdyext(ib_bdy,igrd,iRnei,ir) = .TRUE. 898 ELSE ; CALL ctl_stop( 'bdyini recv ext '//cRdir//'-side ' ) 899 ENDIF 858 IF( mpiRnei(nn_hls,iRnei) > -1 ) lrecv_bdyext(ib_bdy,igrd,iRnei,ir) = .TRUE. 900 859 ENDIF 901 860 ENDIF … … 906 865 IF( iibi==iiout .OR. ii1==iiout .OR. ii2==iiout .OR. ii3==iiout .OR. & ! Neib outside of nei MPI domain 907 866 & ijbi==ijout .OR. ij1==ijout .OR. ij2==ijout .OR. ij3==ijout ) THEN ! -> nei cannot compute it 908 IF( mpiSnei(nn_hls,iSnei) > -1 ) THEN ; lsend_bdyint(ib_bdy,igrd,iSnei,ir) = .TRUE. ! -> send to nei 909 ELSE ; CALL ctl_stop( 'bdyini send int '//cSdir//'-side ' ) 910 ENDIF 867 IF( mpiSnei(nn_hls,iSnei) > -1 ) lsend_bdyint(ib_bdy,igrd,iSnei,ir) = .TRUE. ! -> send to nei 911 868 ENDIF 912 869 ! take care of neighbourg in the exterior of the computational domain 913 870 IF( iibe == iiout .OR. ijbe == ijout ) THEN ! Neib outside of the nei MPI domain -> nei cannot compute it 914 IF( mpiSnei(nn_hls,iSnei) > -1 ) THEN ; lsend_bdyext(ib_bdy,igrd,iSnei,ir) = .TRUE. ! -> send to nei 915 ELSE ; CALL ctl_stop( 'bdyini send ext '//cSdir//'-side ' ) 916 ENDIF 871 IF( mpiSnei(nn_hls,iSnei) > -1 ) lsend_bdyext(ib_bdy,igrd,iSnei,ir) = .TRUE. ! -> send to nei 917 872 ENDIF 918 873 END IF … … 929 884 ! outside of the MPI domain o o o: 930 885 ! : 931 cRdir = 'sw'932 886 iRdiag = jpsw ; iRsono = jpso ! Recv: for sw or so 933 887 iSdiag = jpne ; iSsono = jpno ! Send: to ne or no … … 941 895 ! outside of the MPI domain :o o o 942 896 ! : 943 cRdir = 'se'944 897 iRdiag = jpse ; iRsono = jpso ! Recv: for se or so 945 898 iSdiag = jpnw ; iSsono = jpno ! Send: to nw or no … … 953 906 ! o: potential neighbour(s) ..o|...: 954 907 ! outside of the MPI domain | 955 cRdir = 'nw'956 908 iRdiag = jpnw ; iRsono = jpno ! Recv: for nw or no 957 909 iSdiag = jpse ; iSsono = jpso ! Send: to se or so … … 965 917 ! o: potential neighbour(s) :...|o... 966 918 ! outside of the MPI domain | 967 cRdir = 'ne'968 919 iRdiag = jpne ; iRsono = jpno ! Recv: for ne or no 969 920 iSdiag = jpsw ; iSsono = jpso ! Send: to sw or so … … 980 931 IF( iibi==iiout .OR. ii1==iiout .OR. ii2==iiout .OR. ii3==iiout .OR. & ! Neib outside of the MPI domain 981 932 & ijbi==ijout .OR. ij1==ijout .OR. ij2==ijout .OR. ij3==ijout ) THEN ! -> I cannot compute it -> recv it 982 IF( mpiRnei(nn_hls,iRdiag) > -1 ) THEN 983 lrecv_bdyint(ib_bdy,igrd,iRdiag,ir) = .TRUE. ! Receive directly from diagonal neighbourg 984 ELSEIF( mpiRnei(nn_hls,iRsono) > -1 .AND. nn_comm == 1 ) THEN 985 lrecv_bdyint(ib_bdy,igrd,iRsono,ir) = .TRUE. ! Receive through the South/North neighbourg 986 ELSE 987 CALL ctl_stop( 'bdyini recv int '//cRdir//'-corner ' ) 988 ENDIF 933 IF( mpiRnei(nn_hls,iRdiag) > -1 ) lrecv_bdyint(ib_bdy,igrd,iRdiag,ir) = .TRUE. ! Receive directly from diagonal neighbourg 934 IF( mpiRnei(nn_hls,iRsono) > -1 .AND. nn_comm == 1 ) lrecv_bdyint(ib_bdy,igrd,iRsono,ir) = .TRUE. ! Receive through the South/North neighbourg 989 935 ENDIF 990 936 ! take care of neighbourg in the exterior of the computational domain 991 937 IF( iibe==iiout .OR. ijbe==ijout ) THEN ! Neib outside of the MPI domain -> I cannot compute it -> recv it 992 IF( mpiRnei(nn_hls,iRdiag) > -1 ) THEN 993 lrecv_bdyext(ib_bdy,igrd,iRdiag,ir) = .TRUE. ! Receive directly from diagonal neighbourg 994 ELSEIF( mpiRnei(nn_hls,iRsono) > -1 .AND. nn_comm == 1 ) THEN 995 lrecv_bdyext(ib_bdy,igrd,iRsono,ir) = .TRUE. ! Receive through the South/North neighbourg 996 ELSE 997 CALL ctl_stop( 'bdyini recv ext '//cRdir//'-corner ' ) 998 ENDIF 938 IF( mpiRnei(nn_hls,iRdiag) > -1 ) lrecv_bdyext(ib_bdy,igrd,iRdiag,ir) = .TRUE. ! Receive directly from diagonal neighbourg 939 IF( mpiRnei(nn_hls,iRsono) > -1 .AND. nn_comm == 1 ) lrecv_bdyext(ib_bdy,igrd,iRsono,ir) = .TRUE. ! Receive through the South/North neighbourg 999 940 ENDIF 1000 941 ENDIF … … 1020 961 & lsend_bdyint(ib_bdy,igrd,iSsono,ir) = .TRUE. ! send rim point data to so/no nei 1021 962 ! take care of neighbourg in the exterior of the computational domain 1022 IF( iibe==iiout .OR. ijbe==ijout ) &963 IF( iibe==iiout .OR. ijbe==ijout ) & 1023 964 & lsend_bdyext(ib_bdy,igrd,iSsono,ir) = .TRUE. 1024 965 ENDIF … … 1032 973 !!$ zzbdy(:,:) = narea ; CALL lbc_lnk('bdy debug', zzbdy, 'T', 1._wp, kfillmode = jpfillnothing, & 1033 974 !!$ & lsend = lsend_bdyint(ib_bdy,1,:,ir), lrecv = lrecv_bdyint(ib_bdy,1,:,ir) ) 1034 !!$ IF(lwp) WRITE(numout,*) ' sebbdy debug int T', ir ; CALL FLUSH(numout)975 !!$ IF(lwp) WRITE(numout,*) ' bdy debug int T', ir ; CALL FLUSH(numout) 1035 976 !!$ zzbdy(:,:) = narea ; CALL lbc_lnk('bdy debug', zzbdy, 'U', 1._wp, kfillmode = jpfillnothing, & 1036 977 !!$ & lsend = lsend_bdyint(ib_bdy,2,:,ir), lrecv = lrecv_bdyint(ib_bdy,2,:,ir) ) 1037 !!$ IF(lwp) WRITE(numout,*) ' sebbdy debug int U', ir ; CALL FLUSH(numout)978 !!$ IF(lwp) WRITE(numout,*) ' bdy debug int U', ir ; CALL FLUSH(numout) 1038 979 !!$ zzbdy(:,:) = narea ; CALL lbc_lnk('bdy debug', zzbdy, 'V', 1._wp, kfillmode = jpfillnothing, & 1039 980 !!$ & lsend = lsend_bdyint(ib_bdy,3,:,ir), lrecv = lrecv_bdyint(ib_bdy,3,:,ir) ) 1040 !!$ IF(lwp) WRITE(numout,*) ' sebbdy debug int V', ir ; CALL FLUSH(numout)981 !!$ IF(lwp) WRITE(numout,*) ' bdy debug int V', ir ; CALL FLUSH(numout) 1041 982 !!$ zzbdy(:,:) = narea ; CALL lbc_lnk('bdy debug', zzbdy, 'T', 1._wp, kfillmode = jpfillnothing, & 1042 983 !!$ & lsend = lsend_bdyext(ib_bdy,1,:,ir), lrecv = lrecv_bdyext(ib_bdy,1,:,ir) ) 1043 !!$ IF(lwp) WRITE(numout,*) ' sebbdy debug ext T', ir ; CALL FLUSH(numout)984 !!$ IF(lwp) WRITE(numout,*) ' bdy debug ext T', ir ; CALL FLUSH(numout) 1044 985 !!$ zzbdy(:,:) = narea ; CALL lbc_lnk('bdy debug', zzbdy, 'U', 1._wp, kfillmode = jpfillnothing, & 1045 986 !!$ & lsend = lsend_bdyext(ib_bdy,2,:,ir), lrecv = lrecv_bdyext(ib_bdy,2,:,ir) ) 1046 !!$ IF(lwp) WRITE(numout,*) ' sebbdy debug ext U', ir ; CALL FLUSH(numout)987 !!$ IF(lwp) WRITE(numout,*) ' bdy debug ext U', ir ; CALL FLUSH(numout) 1047 988 !!$ zzbdy(:,:) = narea ; CALL lbc_lnk('bdy debug', zzbdy, 'V', 1._wp, kfillmode = jpfillnothing, & 1048 989 !!$ & lsend = lsend_bdyext(ib_bdy,3,:,ir), lrecv = lrecv_bdyext(ib_bdy,3,:,ir) ) 1049 !!$ IF(lwp) WRITE(numout,*) ' sebbdy debug ext V', ir ; CALL FLUSH(numout)990 !!$ IF(lwp) WRITE(numout,*) ' bdy debug ext V', ir ; CALL FLUSH(numout) 1050 991 !!$ END DO 1051 992
Note: See TracChangeset
for help on using the changeset viewer.