5 &(nbor,kp1bor,ifabor,ikle,ncolor,trav1,nptfr,x,y,ncolfr,
6 & ndp,npoin,nelem,nelmax,mesh)
53 INTEGER,
INTENT(IN) :: NDP,NELMAX,MESH,NELEM,NPOIN
54 INTEGER,
INTENT(INOUT) :: NPTFR
55 INTEGER,
INTENT(INOUT) :: NBOR(*),KP1BOR(*),NCOLFR(*)
56 INTEGER,
INTENT(INOUT) :: TRAV1(npoin,2)
57 INTEGER,
INTENT(IN) :: IFABOR(nelmax,*),IKLE(nelmax,ndp)
58 INTEGER,
INTENT(IN) :: NCOLOR(*)
59 DOUBLE PRECISION,
INTENT(IN) :: X(npoin),Y(npoin)
63 INTEGER IILE,NILE,I,ISUIV,IELEM,IFACE,NOEUD1,NOEUD2
64 INTEGER IERROR, I1, I2
66 DOUBLE PRECISION SOM1,SOM2,Y2
70 INTEGER :: SOMSUI(4) = (/ 2 , 3 , 4 , 0 /)
71 DOUBLE PRECISION,
PARAMETER :: EPSILO = 1.d-6
78 IF (mesh.NE.2.AND.mesh.NE.3)
THEN 80 4000
FORMAT(/,1x,
'RANBO : MESH NOT ALLOWED , MESH = ',i4,/)
92 IF(ifabor(ielem,iface).LE.0)
THEN 94 trav1(nptfr,1) = ikle(ielem, iface )
95 trav1(nptfr,2) = ikle(ielem,somsui(iface))
110 IF (trav1(i,1).EQ.trav1(isuiv,2)) i1 = i1 + 1
111 IF (trav1(i,2).EQ.trav1(isuiv,1)) i2 = i2 + 1
115 WRITE(
lu,1020) x(trav1(i,1)),y(trav1(i,1)),i1
119 WRITE(
lu,1020) x(trav1(i,2)),y(trav1(i,2)),i2
123 1020
FORMAT(1x,
'ERROR ON BOUNDARY NODE :',/,
124 & 1x,
'X=',f13.3,
' Y=',f13.3,/,
125 & 1x,
'IT BELONGS TO',i2,
' BOUNDARY SEGMENT(S)')
127 IF (ierror.GT.0)
THEN 144 som1 = x(trav1(i,1)) + y(trav1(i,1))
145 IF (abs(som1-som2).LE.abs(epsilo*som1))
THEN 146 IF (y(trav1(i,1)).LE.y2)
THEN 151 ELSEIF (som1.LE.som2)
THEN 159 noeud1 = trav1(isuiv,1)
160 noeud2 = trav1(isuiv,2)
161 trav1(isuiv,1) = trav1(1,1)
162 trav1(isuiv,2) = trav1(1,2)
179 IF (trav1(isuiv,1).EQ.trav1(i-1,2))
THEN 185 noeud1 = trav1(isuiv,1)
186 noeud2 = trav1(isuiv,2)
187 trav1(isuiv,1) = trav1(i,1)
188 trav1(isuiv,2) = trav1(i,2)
191 kp1bor(i+nptfr) = i-1
207 IF (trav1(nile,1).NE.trav1(i-1,2))
THEN 213 WRITE(
lu,4500) trav1(i-1,2)
214 4500
FORMAT(1x,
'ERROR IN STORING THE EDGE SEGMENTS',/,
215 & 1x,
'FOR THE NODE ',i5)
220 kp1bor(nile+nptfr) = i-1
231 IF (trav1(nile,1).NE.trav1(nptfr,2))
THEN 232 WRITE(lu,5000) trav1(nile,1),trav1(nptfr,2)
233 5000
FORMAT(1x,
'ERROR, THE BOUNDARY IS NOT CLOSED :',/,
234 & 1x,
'FIRST POINT :',i5,2x,
'LAST POINT : ',i5)
239 kp1bor(nile+nptfr) = nptfr
244 5500
FORMAT(1x,
'NUMBER OF BOUNDARY POINTS : ',i5)
245 5600
FORMAT(1x,
'NUMBER OF ISLANDS : ',i5)
253 nbor(i ) = trav1(i,1)
254 nbor(i+nptfr) = trav1(i,2)
255 ncolfr(i) = ncolor(trav1(i,1))
subroutine ranbo(NBOR, KP1BOR, IFABOR, IKLE, NCOLOR, TRAV1, NPTFR, X, Y, NCOLFR, NDP, NPOIN, NELEM, NELMAX, MESH)