Changeset 11059
- Timestamp:
- 2019-05-27T13:05:25+02:00 (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/dev_r10984_HPC-13_IRRMANN_BDY_optimization/src/OCE/BDY/bdyini.F90
r11056 r11059 141 141 INTEGER, ALLOCATABLE, DIMENSION(:,:,:) :: nbrdta ! Discrete distance from rim points 142 142 CHARACTER(LEN=1),DIMENSION(jpbgrd) :: cgrid 143 INTEGER :: com_east, com_west, com_south, com_north, jpk_max ! Flags for boundaries sending144 INTEGER :: com_east_b, com_west_b, com_south_b, com_north_b ! Flags for boundaries receiving145 INTEGER :: iw_b(4), ie_b(4), is_b(4), in_b(4) ! Arrays for neighbours coordinates143 INTEGER :: jpk_max 144 LOGICAL :: llsend_ea, llsend_we, llsend_so, llsend_no ! Flags for boundaries sending 145 LOGICAL :: llrecv_ea, llrecv_we, llrecv_so, llrecv_no ! Flags for boundaries receiving 146 146 REAL(wp), TARGET, DIMENSION(jpi,jpj) :: zfmask ! temporary fmask array excluding coastal boundary condition (shlat) 147 147 REAL(wp) , DIMENSION(jpi,jpj) :: ztmp … … 792 792 END DO 793 793 794 ! Work out dimensions of boundary data on each processor 795 ! ------------------------------------------------------ 796 797 ! Rather assume that boundary data indices are given on global domain 798 ! TO BE DISCUSSED ? 799 ! iw = mig(1) + 1 ! if monotasking and no zoom, iw=2 800 ! ie = mig(1) + nlci-1 - 1 ! if monotasking and no zoom, ie=jpim1 801 ! is = mjg(1) + 1 ! if monotasking and no zoom, is=2 802 ! in = mjg(1) + nlcj-1 - 1 ! if monotasking and no zoom, in=jpjm1 803 iwe = mig(1) - 1 + 2 - nde ! if monotasking and no zoom, iw=2 804 ies = mig(1) + nlci-1 - 1 + nde ! if monotasking and no zoom, ie=jpim1 805 iso = mjg(1) - 1 + 2 - nde ! if monotasking and no zoom, is=2 806 ino = mjg(1) + nlcj-1 - 1 + nde ! if monotasking and no zoom, in=jpjm1 807 808 ALLOCATE( nbondi_bdy(nb_bdy)) 809 ALLOCATE( nbondj_bdy(nb_bdy)) 810 nbondi_bdy(:)=2 811 nbondj_bdy(:)=2 812 ALLOCATE( nbondi_bdy_b(nb_bdy)) 813 ALLOCATE( nbondj_bdy_b(nb_bdy)) 814 nbondi_bdy_b(:)=2 815 nbondj_bdy_b(:)=2 816 817 ! Work out dimensions of boundary data on each neighbour process 818 IF(nbondi == 0) THEN 819 iw_b(1) = 1 + nimppt(nowe+1) 820 ie_b(1) = 1 + nimppt(nowe+1)+nlcit(nowe+1)-3 821 is_b(1) = 1 + njmppt(nowe+1) 822 in_b(1) = 1 + njmppt(nowe+1)+nlcjt(nowe+1)-3 823 824 iw_b(2) = 1 + nimppt(noea+1) 825 ie_b(2) = 1 + nimppt(noea+1)+nlcit(noea+1)-3 826 is_b(2) = 1 + njmppt(noea+1) 827 in_b(2) = 1 + njmppt(noea+1)+nlcjt(noea+1)-3 828 ELSEIF(nbondi == 1) THEN 829 iw_b(1) = 1 + nimppt(nowe+1) 830 ie_b(1) = 1 + nimppt(nowe+1)+nlcit(nowe+1)-3 831 is_b(1) = 1 + njmppt(nowe+1) 832 in_b(1) = 1 + njmppt(nowe+1)+nlcjt(nowe+1)-3 833 ELSEIF(nbondi == -1) THEN 834 iw_b(2) = 1 + nimppt(noea+1) 835 ie_b(2) = 1 + nimppt(noea+1)+nlcit(noea+1)-3 836 is_b(2) = 1 + njmppt(noea+1) 837 in_b(2) = 1 + njmppt(noea+1)+nlcjt(noea+1)-3 838 ENDIF 839 840 IF(nbondj == 0) THEN 841 iw_b(3) = 1 + nimppt(noso+1) 842 ie_b(3) = 1 + nimppt(noso+1)+nlcit(noso+1)-3 843 is_b(3) = 1 + njmppt(noso+1) 844 in_b(3) = 1 + njmppt(noso+1)+nlcjt(noso+1)-3 845 846 iw_b(4) = 1 + nimppt(nono+1) 847 ie_b(4) = 1 + nimppt(nono+1)+nlcit(nono+1)-3 848 is_b(4) = 1 + njmppt(nono+1) 849 in_b(4) = 1 + njmppt(nono+1)+nlcjt(nono+1)-3 850 ELSEIF(nbondj == 1) THEN 851 iw_b(3) = 1 + nimppt(noso+1) 852 ie_b(3) = 1 + nimppt(noso+1)+nlcit(noso+1)-3 853 is_b(3) = 1 + njmppt(noso+1) 854 in_b(3) = 1 + njmppt(noso+1)+nlcjt(noso+1)-3 855 ELSEIF(nbondj == -1) THEN 856 iw_b(4) = 1 + nimppt(nono+1) 857 ie_b(4) = 1 + nimppt(nono+1)+nlcit(nono+1)-3 858 is_b(4) = 1 + njmppt(nono+1) 859 in_b(4) = 1 + njmppt(nono+1)+nlcjt(nono+1)-3 860 ENDIF 861 794 ! Find lenght of boundaries and rim on local mpi domain 795 !------------------------------------------------------ 796 ! 797 iwe = mig(1) 798 ies = mig(nlci) 799 iso = mjg(1) 800 ino = mjg(nlcj) 801 ! 862 802 DO ib_bdy = 1, nb_bdy 863 803 DO igrd = 1, jpbgrd 864 icount = 0 865 icountr = 0 804 icount = 0 ! initialization of local bdy length 805 icountr = 0 ! initialization of local rim bdy length 866 806 idx_bdy(ib_bdy)%nblen(igrd) = 0 867 807 idx_bdy(ib_bdy)%nblenrim(igrd) = 0 … … 880 820 & nbjdta(ib,igrd,ib_bdy) >= iso .AND. nbjdta(ib,igrd,ib_bdy) <= ino ) THEN 881 821 ! 882 icount = icount + 1 883 ! 884 IF( nbrdta(ib,igrd,ib_bdy) == 1 ) icountr = icountr+1 822 icount = icount + 1 823 IF( nbrdta(ib,igrd,ib_bdy) == 1 ) icountr = icountr + 1 885 824 ENDIF 886 825 END DO 887 826 idx_bdy(ib_bdy)%nblenrim(igrd) = icountr !: length of rim boundary data on each proc 888 827 idx_bdy(ib_bdy)%nblen (igrd) = icount !: length of boundary data on each proc 889 END DO ! igrd828 END DO ! igrd 890 829 891 830 ! Allocate index arrays for this boundary set … … 905 844 ! Dispatch mapping indices and discrete distances on each processor 906 845 ! ----------------------------------------------------------------- 907 908 com_east = 0909 com_west = 0910 com_south = 0911 com_north = 0912 913 com_east_b = 0914 com_west_b = 0915 com_south_b = 0916 com_north_b = 0917 918 846 DO igrd = 1, jpbgrd 919 847 icount = 0 920 ! Loop on rimwidth to ensure outermost points come first in the local arrays.848 ! Outer loop on rimwidth to ensure outermost points come first in the local arrays. 921 849 DO ir=1, nn_rimwidth(ib_bdy) 922 850 DO ib = 1, nblendta(igrd,ib_bdy) … … 927 855 ! 928 856 icount = icount + 1 929 930 ! Rather assume that boundary data indices are given on global domain 931 ! TO BE DISCUSSED ? 932 ! idx_bdy(ib_bdy)%nbi(icount,igrd) = nbidta(ib,igrd,ib_bdy)- mig(1)+1 933 ! idx_bdy(ib_bdy)%nbj(icount,igrd) = nbjdta(ib,igrd,ib_bdy)- mjg(1)+1 934 idx_bdy(ib_bdy)%nbi(icount,igrd) = nbidta(ib,igrd,ib_bdy)- mig(1)+1 935 idx_bdy(ib_bdy)%nbj(icount,igrd) = nbjdta(ib,igrd,ib_bdy)- mjg(1)+1 936 ! check if point has to be sent 937 ii = idx_bdy(ib_bdy)%nbi(icount,igrd) 938 ij = idx_bdy(ib_bdy)%nbj(icount,igrd) 939 if((ii == (nlci-1)) .and. (ij /= 1) .and. (ij /= nlcj) .and. (nbondi .le. 0)) then 940 com_east = 1 941 elseif((ii == 2) .and. (ij /= 1) .and. (ij /= nlcj) .and. (nbondi .ge. 0) .and. (nbondi .ne. 2)) then 942 com_west = 1 943 endif 944 if((ij == 2) .and. (ii /= 1) .and. (ii /= nlci) .and. (nbondj .ge. 0) .and. (nbondj .ne. 2)) then 945 com_south = 1 946 elseif((ij == (nlcj-1)) .and. (ii /= 1) .and. (ii /= nlci) .and. (nbondj .le. 0)) then 947 com_north = 1 948 endif 857 idx_bdy(ib_bdy)%nbi(icount,igrd) = nbidta(ib,igrd,ib_bdy)- mig(1)+1 ! global to local indexes 858 idx_bdy(ib_bdy)%nbj(icount,igrd) = nbjdta(ib,igrd,ib_bdy)- mjg(1)+1 ! global to local indexes 949 859 idx_bdy(ib_bdy)%nbr(icount,igrd) = nbrdta(ib,igrd,ib_bdy) 950 860 idx_bdy(ib_bdy)%nbmap(icount,igrd) = ib 951 861 ENDIF 952 ! check if point has to be received from a neighbour 953 IF(nbondi == 0) THEN 954 IF( nbidta(ib,igrd,ib_bdy) >= iw_b(1) .AND. nbidta(ib,igrd,ib_bdy) <= ie_b(1) .AND. & 955 & nbjdta(ib,igrd,ib_bdy) >= is_b(1) .AND. nbjdta(ib,igrd,ib_bdy) <= in_b(1) .AND. & 956 & nbrdta(ib,igrd,ib_bdy) == ir ) THEN 957 ii = nbidta(ib,igrd,ib_bdy)- iw_b(1)+2 958 if( ii == (nlcit(nowe+1)-1) ) then 959 ij = nbjdta(ib,igrd,ib_bdy) - is_b(1)+2 960 if((ij == 2) .and. (nbondj == 0 .or. nbondj == 1)) then 961 com_south = 1 962 elseif((ij == nlcjt(nowe+1)-1) .and. (nbondj == 0 .or. nbondj == -1)) then 963 com_north = 1 964 endif 965 com_west_b = 1 966 endif 967 ENDIF 968 IF( nbidta(ib,igrd,ib_bdy) >= iw_b(2) .AND. nbidta(ib,igrd,ib_bdy) <= ie_b(2) .AND. & 969 & nbjdta(ib,igrd,ib_bdy) >= is_b(2) .AND. nbjdta(ib,igrd,ib_bdy) <= in_b(2) .AND. & 970 & nbrdta(ib,igrd,ib_bdy) == ir ) THEN 971 ii = nbidta(ib,igrd,ib_bdy)- iw_b(2)+2 972 if( ii == 2 ) then 973 ij = nbjdta(ib,igrd,ib_bdy) - is_b(2)+2 974 if((ij == 2) .and. (nbondj == 0 .or. nbondj == 1)) then 975 com_south = 1 976 elseif((ij == nlcjt(noea+1)-1) .and. (nbondj == 0 .or. nbondj == -1)) then 977 com_north = 1 978 endif 979 com_east_b = 1 980 endif 981 ENDIF 982 ELSEIF(nbondi == 1) THEN 983 IF( nbidta(ib,igrd,ib_bdy) >= iw_b(1) .AND. nbidta(ib,igrd,ib_bdy) <= ie_b(1) .AND. & 984 & nbjdta(ib,igrd,ib_bdy) >= is_b(1) .AND. nbjdta(ib,igrd,ib_bdy) <= in_b(1) .AND. & 985 & nbrdta(ib,igrd,ib_bdy) == ir ) THEN 986 ii = nbidta(ib,igrd,ib_bdy)- iw_b(1)+2 987 if( ii == (nlcit(nowe+1)-1) ) then 988 ij = nbjdta(ib,igrd,ib_bdy) - is_b(1)+2 989 if((ij == 2) .and. (nbondj == 0 .or. nbondj == 1)) then 990 com_south = 1 991 elseif((ij == nlcjt(nowe+1)-1) .and. (nbondj == 0 .or. nbondj == -1)) then 992 com_north = 1 993 endif 994 com_west_b = 1 995 endif 996 ENDIF 997 ELSEIF(nbondi == -1) THEN 998 IF( nbidta(ib,igrd,ib_bdy) >= iw_b(2) .AND. nbidta(ib,igrd,ib_bdy) <= ie_b(2) .AND. & 999 & nbjdta(ib,igrd,ib_bdy) >= is_b(2) .AND. nbjdta(ib,igrd,ib_bdy) <= in_b(2) .AND. & 1000 & nbrdta(ib,igrd,ib_bdy) == ir ) THEN 1001 ii = nbidta(ib,igrd,ib_bdy)- iw_b(2)+2 1002 if( ii == 2 ) then 1003 ij = nbjdta(ib,igrd,ib_bdy) - is_b(2)+2 1004 if((ij == 2) .and. (nbondj == 0 .or. nbondj == 1)) then 1005 com_south = 1 1006 elseif((ij == nlcjt(noea+1)-1) .and. (nbondj == 0 .or. nbondj == -1)) then 1007 com_north = 1 1008 endif 1009 com_east_b = 1 1010 endif 1011 ENDIF 1012 ENDIF 1013 IF(nbondj == 0) THEN 1014 IF(com_north_b .ne. 1 .AND. (nbidta(ib,igrd,ib_bdy) == iw_b(4)-1 & 1015 & .OR. nbidta(ib,igrd,ib_bdy) == ie_b(4)+1) .AND. & 1016 & nbjdta(ib,igrd,ib_bdy) == is_b(4) .AND. nbrdta(ib,igrd,ib_bdy) == ir) THEN 1017 com_north_b = 1 1018 ENDIF 1019 IF(com_south_b .ne. 1 .AND. (nbidta(ib,igrd,ib_bdy) == iw_b(3)-1 & 1020 &.OR. nbidta(ib,igrd,ib_bdy) == ie_b(3)+1) .AND. & 1021 & nbjdta(ib,igrd,ib_bdy) == in_b(3) .AND. nbrdta(ib,igrd,ib_bdy) == ir) THEN 1022 com_south_b = 1 1023 ENDIF 1024 IF( nbidta(ib,igrd,ib_bdy) >= iw_b(3) .AND. nbidta(ib,igrd,ib_bdy) <= ie_b(3) .AND. & 1025 & nbjdta(ib,igrd,ib_bdy) >= is_b(3) .AND. nbjdta(ib,igrd,ib_bdy) <= in_b(3) .AND. & 1026 & nbrdta(ib,igrd,ib_bdy) == ir ) THEN 1027 ij = nbjdta(ib,igrd,ib_bdy)- is_b(3)+2 1028 if((com_south_b .ne. 1) .and. (ij == (nlcjt(noso+1)-1))) then 1029 com_south_b = 1 1030 endif 1031 ENDIF 1032 IF( nbidta(ib,igrd,ib_bdy) >= iw_b(4) .AND. nbidta(ib,igrd,ib_bdy) <= ie_b(4) .AND. & 1033 & nbjdta(ib,igrd,ib_bdy) >= is_b(4) .AND. nbjdta(ib,igrd,ib_bdy) <= in_b(4) .AND. & 1034 & nbrdta(ib,igrd,ib_bdy) == ir ) THEN 1035 ij = nbjdta(ib,igrd,ib_bdy)- is_b(4)+2 1036 if((com_north_b .ne. 1) .and. (ij == 2)) then 1037 com_north_b = 1 1038 endif 1039 ENDIF 1040 ELSEIF(nbondj == 1) THEN 1041 IF( com_south_b .ne. 1 .AND. (nbidta(ib,igrd,ib_bdy) == iw_b(3)-1 .OR. & 1042 & nbidta(ib,igrd,ib_bdy) == ie_b(3)+1) .AND. & 1043 & nbjdta(ib,igrd,ib_bdy) == in_b(3) .AND. nbrdta(ib,igrd,ib_bdy) == ir) THEN 1044 com_south_b = 1 1045 ENDIF 1046 IF( nbidta(ib,igrd,ib_bdy) >= iw_b(3) .AND. nbidta(ib,igrd,ib_bdy) <= ie_b(3) .AND. & 1047 & nbjdta(ib,igrd,ib_bdy) >= is_b(3) .AND. nbjdta(ib,igrd,ib_bdy) <= in_b(3) .AND. & 1048 & nbrdta(ib,igrd,ib_bdy) == ir ) THEN 1049 ij = nbjdta(ib,igrd,ib_bdy)- is_b(3)+2 1050 if((com_south_b .ne. 1) .and. (ij == (nlcjt(noso+1)-1))) then 1051 com_south_b = 1 1052 endif 1053 ENDIF 1054 ELSEIF(nbondj == -1) THEN 1055 IF(com_north_b .ne. 1 .AND. (nbidta(ib,igrd,ib_bdy) == iw_b(4)-1 & 1056 & .OR. nbidta(ib,igrd,ib_bdy) == ie_b(4)+1) .AND. & 1057 & nbjdta(ib,igrd,ib_bdy) == is_b(4) .AND. nbrdta(ib,igrd,ib_bdy) == ir) THEN 1058 com_north_b = 1 1059 ENDIF 1060 IF( nbidta(ib,igrd,ib_bdy) >= iw_b(4) .AND. nbidta(ib,igrd,ib_bdy) <= ie_b(4) .AND. & 1061 & nbjdta(ib,igrd,ib_bdy) >= is_b(4) .AND. nbjdta(ib,igrd,ib_bdy) <= in_b(4) .AND. & 1062 & nbrdta(ib,igrd,ib_bdy) == ir ) THEN 1063 ij = nbjdta(ib,igrd,ib_bdy)- is_b(4)+2 1064 if((com_north_b .ne. 1) .and. (ij == 2)) then 1065 com_north_b = 1 1066 endif 1067 ENDIF 1068 ENDIF 1069 ENDDO 1070 ENDDO 1071 ENDDO 862 END DO 863 END DO 864 END DO ! igrd 865 866 END DO ! ib_bdy 867 868 ! Initialize array indicating communications in bdy 869 ! ------------------------------------------------- 870 871 ! Allocate array indicating if a send instruction is needed in bdy treatment 872 ALLOCATE( nbondi_bdy(nb_bdy) ) 873 ALLOCATE( nbondj_bdy(nb_bdy) ) 874 nbondi_bdy(:)=2 875 nbondj_bdy(:)=2 876 ! Allocate array indicating if a receive instruction is needed in bdy treatment 877 ALLOCATE( nbondi_bdy_b(nb_bdy)) 878 ALLOCATE( nbondj_bdy_b(nb_bdy)) 879 nbondi_bdy_b(:)=2 880 nbondj_bdy_b(:)=2 881 882 DO ib_bdy = 1, nb_bdy 883 ! default : no send 884 llsend_ea = .false. 885 llsend_we = .false. 886 llsend_so = .false. 887 llsend_no = .false. 888 ! default : no receive 889 llrecv_ea = .false. 890 llrecv_we = .false. 891 llrecv_so = .false. 892 llrecv_no = .false. 893 DO igrd = 1, jpbgrd 894 DO ib = 1, idx_bdy(ib_bdy)%nblenrim(igrd) ! only the rim triggers communications, see bdy routines 895 ii = idx_bdy(ib_bdy)%nbi(ib,igrd) 896 ij = idx_bdy(ib_bdy)%nbj(ib,igrd) 897 ! 898 ! check if point has to be sent to a neighbour 899 ! E neighbour and on the inner right side 900 IF( ii == nlci-1 .and. (nbondi == 0 .or. nbondi == -1) ) llsend_ea = .true. 901 ! W neighbour and on the inner left side 902 IF( ii == 2 .and. (nbondi == 0 .or. nbondi == 1) ) llsend_we = .true. 903 ! N neighbour and on the inner up side 904 IF( ij == nlcj-1 .and. (nbondj == 0 .or. nbondj == -1) ) llsend_no = .true. 905 ! S neighbour and on the inner down side 906 IF( ij == 2 .and. (nbondj == 0 .or. nbondj == 1) ) llsend_so = .true. 907 ! 908 ! check if point has to be received from a neighbour 909 ! E neighbour and on the outter right side 910 IF( ii == nlci .and. (nbondi == 0 .or. nbondi == -1) ) llrecv_ea = .true. 911 ! W neighbour and on the outter left side 912 IF( ii == 1 .and. (nbondi == 0 .or. nbondi == 1) ) llrecv_we = .true. 913 ! N neighbour and on the outter up side 914 IF( ij == nlcj .and. (nbondj == 0 .or. nbondj == -1) ) llrecv_no = .true. 915 ! S neighbour and on the outter down side 916 IF( ij == 1 .and. (nbondj == 0 .or. nbondj == 1) ) llrecv_so = .true. 917 ! 918 END DO 919 END DO ! igrd 1072 920 1073 921 ! definition of the i- and j- direction local boundaries arrays used for sending the boundaries 1074 IF( (com_east == 1) .and. (com_west == 1)) THEN ; nbondi_bdy(ib_bdy) = 01075 ELSEIF( (com_east == 1) .and. (com_west == 0)) THEN ; nbondi_bdy(ib_bdy) = -11076 ELSEIF( (com_east == 0) .and. (com_west == 1)) THEN ; nbondi_bdy(ib_bdy) = 1922 IF( llsend_ea .and. llsend_we ) THEN ; nbondi_bdy(ib_bdy) = 0 923 ELSEIF( llsend_ea .and. .not. llsend_we ) THEN ; nbondi_bdy(ib_bdy) = -1 924 ELSEIF( .not. llsend_ea .and. llsend_we ) THEN ; nbondi_bdy(ib_bdy) = 1 1077 925 ENDIF 1078 IF( (com_north == 1) .and. (com_south == 1)) THEN ; nbondj_bdy(ib_bdy) = 01079 ELSEIF( (com_north == 1) .and. (com_south == 0)) THEN ; nbondj_bdy(ib_bdy) = -11080 ELSEIF( (com_north == 0) .and. (com_south == 1)) THEN ; nbondj_bdy(ib_bdy) = 1926 IF( llsend_no .and. llsend_so ) THEN ; nbondj_bdy(ib_bdy) = 0 927 ELSEIF( llsend_no .and. .not. llsend_so ) THEN ; nbondj_bdy(ib_bdy) = -1 928 ELSEIF( .not. llsend_no .and. llsend_so ) THEN ; nbondj_bdy(ib_bdy) = 1 1081 929 ENDIF 1082 930 1083 931 ! definition of the i- and j- direction local boundaries arrays used for receiving the boundaries 1084 IF( (com_east_b == 1) .and. (com_west_b == 1)) THEN ; nbondi_bdy_b(ib_bdy) = 01085 ELSEIF( (com_east_b == 1) .and. (com_west_b == 0)) THEN ; nbondi_bdy_b(ib_bdy) = -11086 ELSEIF( (com_east_b == 0) .and. (com_west_b == 1)) THEN ; nbondi_bdy_b(ib_bdy) = 1932 IF( llrecv_ea .and. llrecv_we ) THEN ; nbondi_bdy_b(ib_bdy) = 0 933 ELSEIF( llrecv_ea .and. .not. llrecv_we ) THEN ; nbondi_bdy_b(ib_bdy) = -1 934 ELSEIF( .not. llrecv_ea .and. llrecv_we ) THEN ; nbondi_bdy_b(ib_bdy) = 1 1087 935 ENDIF 1088 IF( (com_north_b == 1) .and. (com_south_b == 1)) THEN ; nbondj_bdy_b(ib_bdy) = 01089 ELSEIF( (com_north_b == 1) .and. (com_south_b == 0)) THEN ; nbondj_bdy_b(ib_bdy) = -11090 ELSEIF( (com_north_b == 0) .and. (com_south_b == 1)) THEN ; nbondj_bdy_b(ib_bdy) = 1936 IF( llrecv_no .and. llrecv_so ) THEN ; nbondj_bdy_b(ib_bdy) = 0 937 ELSEIF( llrecv_no .and. .not. llrecv_so ) THEN ; nbondj_bdy_b(ib_bdy) = -1 938 ELSEIF( .not. llrecv_no .and. llrecv_so ) THEN ; nbondj_bdy_b(ib_bdy) = 1 1091 939 ENDIF 1092 940 … … 1114 962 END DO 1115 963 1116 END DO 964 END DO ! ib_bdy 1117 965 1118 966 ! ------------------------------------------------------ … … 1336 1184 END SUBROUTINE bdy_segs 1337 1185 1186 1338 1187 SUBROUTINE bdy_ctl_seg 1339 1188 !!----------------------------------------------------------------------
Note: See TracChangeset
for help on using the changeset viewer.