5 &(ifabor,nelmax,ielm,ikle,nbor,
6 & gloseg,maxseg,eltseg,oriseg,nelbor,nulone,nelmax2,
7 & nelem2,nptfr2,npoin2,nplan,knolg,nseg2d,iklbor,neleb,nelebx)
103 INTEGER,
INTENT(IN) :: NELMAX,NELMAX2,MAXSEG,IELM,NELEBX,NELEB
104 INTEGER,
INTENT(IN) :: NELEM2,NPTFR2,NPOIN2,NPLAN,NSEG2D
105 INTEGER,
INTENT(IN) :: NBOR(nptfr2)
106 INTEGER,
INTENT(IN) :: IKLBOR(nelebx,2)
107 INTEGER,
INTENT(IN) :: IFABOR(nelmax2,*),IKLE(nelmax,4)
108 INTEGER,
INTENT(IN) :: NELBOR(nelebx),NULONE(nelebx)
109 INTEGER,
INTENT(INOUT) :: GLOSEG(maxseg,2)
110 INTEGER,
INTENT(INOUT) :: ELTSEG(nelmax,6),ORISEG(nelmax,6)
111 INTEGER,
INTENT(IN) :: KNOLG(*)
115 INTEGER I1,I2,I3,I4,I5,I6,IELEM,J1,J2,I,ISEG,II1,II2,II3
116 INTEGER ISEG01,ISEG02,ISEG03,ISEG04,ISEG05,ISEG06
117 INTEGER ISEG07,ISEG08,ISEG09,ISEG10,ISEG11,ISEG12
118 INTEGER IPLAN,ISEG2D,ISEG3D,IELEM3D,NSEGH,NSEGV
128 501
FORMAT(1x,
'STOSEG51 (BIEF): UNEXPECTED ELEMENT: ',1i6)
138 nsegv=(nplan-1)*npoin2
148 CALL stoseg(ifabor,nelem2,nelmax,nelmax2,11,ikle,nbor,nptfr2,
149 & gloseg,maxseg,eltseg,oriseg,nseg2d,
150 & nelbor,nulone,knolg,iklbor,nelebx,neleb)
159 iseg3d=iseg2d+(iplan-1)*nseg2d
160 gloseg(iseg3d,1)=gloseg(iseg2d,1)+npoin2*(iplan-1)
161 gloseg(iseg3d,2)=gloseg(iseg2d,2)+npoin2*(iplan-1)
170 iseg3d=nsegh+npoin2*(iplan-1)+i
171 gloseg(iseg3d,1)=npoin2*(iplan-1)+i
172 gloseg(iseg3d,2)=npoin2*(iplan )+i
204 i1=ii1+(iplan-1)*npoin2
205 i2=ii2+(iplan-1)*npoin2
206 i3=ii3+(iplan-1)*npoin2
217 iseg01=eltseg(ielem,1)+nseg2d*(iplan-1)
218 iseg02=eltseg(ielem,2)+nseg2d*(iplan-1)
219 iseg03=eltseg(ielem,3)+nseg2d*(iplan-1)
228 iseg10=nsegh+nsegv+iseg01
229 iseg11=nsegh+nsegv+iseg02
230 iseg12=nsegh+nsegv+iseg03
240 ielem3d=3*nelem2*(iplan-1)+(i-1)*nelem2+ielem
241 j1=ikle(ielem3d,
isegt(iseg,1))
242 j2=ikle(ielem3d,
isegt(iseg,2))
244 IF((j1.EQ.i1.AND.j2.EQ.i2).OR.
245 & (j1.EQ.i2.AND.j2.EQ.i1))
THEN 246 eltseg(ielem3d,iseg)=iseg01
249 oriseg(ielem3d,iseg)=oriseg(ielem,1)
251 oriseg(ielem3d,iseg)=3-oriseg(ielem,1)
253 ELSEIF((j1.EQ.i2.AND.j2.EQ.i3).OR.
254 & (j1.EQ.i3.AND.j2.EQ.i2))
THEN 255 eltseg(ielem3d,iseg)=iseg02
257 oriseg(ielem3d,iseg)=oriseg(ielem,2)
259 oriseg(ielem3d,iseg)=3-oriseg(ielem,2)
261 ELSEIF((j1.EQ.i3.AND.j2.EQ.i1).OR.
262 & (j1.EQ.i1.AND.j2.EQ.i3))
THEN 263 eltseg(ielem3d,iseg)=iseg03
265 oriseg(ielem3d,iseg)=oriseg(ielem,3)
267 oriseg(ielem3d,iseg)=3-oriseg(ielem,3)
270 ELSEIF((j1.EQ.i4.AND.j2.EQ.i5).OR.
271 & (j1.EQ.i5.AND.j2.EQ.i4))
THEN 272 eltseg(ielem3d,iseg)=iseg04
274 oriseg(ielem3d,iseg)=oriseg(ielem,1)
276 oriseg(ielem3d,iseg)=3-oriseg(ielem,1)
278 ELSEIF((j1.EQ.i5.AND.j2.EQ.i6).OR.
279 & (j1.EQ.i6.AND.j2.EQ.i5))
THEN 280 eltseg(ielem3d,iseg)=iseg05
282 oriseg(ielem3d,iseg)=oriseg(ielem,2)
284 oriseg(ielem3d,iseg)=3-oriseg(ielem,2)
286 ELSEIF((j1.EQ.i6.AND.j2.EQ.i4).OR.
287 & (j1.EQ.i4.AND.j2.EQ.i6))
THEN 288 eltseg(ielem3d,iseg)=iseg06
290 oriseg(ielem3d,iseg)=oriseg(ielem,3)
292 oriseg(ielem3d,iseg)=3-oriseg(ielem,3)
295 ELSEIF((j1.EQ.i1.AND.j2.EQ.i4).OR.
296 & (j1.EQ.i4.AND.j2.EQ.i1))
THEN 297 eltseg(ielem3d,iseg)=iseg07
299 oriseg(ielem3d,iseg)=1
301 oriseg(ielem3d,iseg)=2
303 ELSEIF((j1.EQ.i2.AND.j2.EQ.i5).OR.
304 & (j1.EQ.i5.AND.j2.EQ.i2))
THEN 305 eltseg(ielem3d,iseg)=iseg08
307 oriseg(ielem3d,iseg)=1
309 oriseg(ielem3d,iseg)=2
311 ELSEIF((j1.EQ.i3.AND.j2.EQ.i6).OR.
312 & (j1.EQ.i6.AND.j2.EQ.i3))
THEN 313 eltseg(ielem3d,iseg)=iseg09
315 oriseg(ielem3d,iseg)=1
317 oriseg(ielem3d,iseg)=2
320 ELSEIF((j1.EQ.i1.AND.j2.EQ.i5).OR.
321 & (j1.EQ.i5.AND.j2.EQ.i1).OR.
322 & (j1.EQ.i2.AND.j2.EQ.i4).OR.
323 & (j1.EQ.i4.AND.j2.EQ.i2) )
THEN 324 eltseg(ielem3d,iseg)=iseg10
325 IF(j1.EQ.i1.OR.j1.EQ.i2)
THEN 326 oriseg(ielem3d,iseg)=1
330 oriseg(ielem3d,iseg)=2
334 ELSEIF((j1.EQ.i2.AND.j2.EQ.i6).OR.
335 & (j1.EQ.i6.AND.j2.EQ.i2).OR.
336 & (j1.EQ.i3.AND.j2.EQ.i5).OR.
337 & (j1.EQ.i5.AND.j2.EQ.i3) )
THEN 338 eltseg(ielem3d,iseg)=iseg11
339 IF(j1.EQ.i2.OR.j1.EQ.i3)
THEN 340 oriseg(ielem3d,iseg)=1
344 oriseg(ielem3d,iseg)=2
348 ELSEIF((j1.EQ.i3.AND.j2.EQ.i4).OR.
349 & (j1.EQ.i4.AND.j2.EQ.i3).OR.
350 & (j1.EQ.i1.AND.j2.EQ.i6).OR.
351 & (j1.EQ.i6.AND.j2.EQ.i1) )
THEN 352 eltseg(ielem3d,iseg)=iseg12
353 IF(j1.EQ.i3.OR.j1.EQ.i1)
THEN 354 oriseg(ielem3d,iseg)=1
358 oriseg(ielem3d,iseg)=2
363 WRITE(
lu,*)
'PROBLEM IN STOSEG51' 364 WRITE(
lu,*)
'FOR IPLAN=',iplan,
' IELEM=',ielem
365 WRITE(
lu,*)
'I=',i,
' ISEG=',iseg,
' IELEM3D=',ielem3d
366 WRITE(
lu,*)
'J1=',j1,
' J2=',j2
367 WRITE(
lu,*)
'I1=',i1,
' I2=',i2,
' I3=',i3
368 WRITE(
lu,*)
'I4=',i4,
' I5=',i5,
' I6=',i6
384 DO ielem3d=1,3*nelem2*(nplan-1)
388 j1=ikle(ielem3d,
isegt(i,1))
389 j2=ikle(ielem3d,
isegt(i,2))
391 iseg=eltseg(ielem3d,i)
394 IF(oriseg(ielem3d,i).EQ.1)
THEN 395 IF(j1.NE.i1.OR.j2.NE.i2)
THEN 397 WRITE(
lu,*)
'ERROR IN STOSEG51' 398 WRITE(
lu,*)
'ELEMENT ',ielem3d,
' SEGMENT ',i
399 WRITE(
lu,*)
'POINTS ',j1,j2
400 WRITE(
lu,*)
'GLOBAL SEGMENT ',iseg
401 WRITE(
lu,*)
'POINTS ',i1,i2
406 IF(j1.NE.i2.OR.j2.NE.i1)
THEN 408 WRITE(
lu,*)
'ERROR IN STOSEG51' 409 WRITE(
lu,*)
'ELEMENT ',ielem3d,
' SEGMENT ',i
410 WRITE(
lu,*)
'POINTS ',j1,j2
411 WRITE(
lu,*)
'GLOBAL SEGMENT ',iseg
412 WRITE(
lu,*)
'POINTS ',i1,i2
integer, dimension(6, 2) isegt
subroutine stoseg51(IFABOR, NELMAX, IELM, IKLE, NBOR, GLOSEG, MAXSEG, ELTSEG, ORISEG, NELBOR, NULONE, NELMAX2, NELEM2, NPTFR2, NPOIN2, NPLAN, KNOLG, NSEG2D, IKLBOR, NELEB, NELEBX)
subroutine stoseg(IFABOR, NELEM, NELMAX, NELMAX2, IELM, IKLE, NBOR, NPTFR, GLOSEG, MAXSEG, ELTSEG, ORISEG, NSEG, NELBOR, NULONE, KNOLG, IKLBOR, NELEBX, NELEB)