30 SUBROUTINE linedge(NSEG0 ,NSEG ,BUFTMP ,SLIN_NODES ,KEY,
31 . FLAG ,SLIN_ELTYP ,SLIN_ELEM,LINE_NSEG0)
36#include "implicit_f.inc"
43 INTEGER NSEG0,NSEG,FLAG,LINE_NSEG0
44 INTEGER BUFTMP(6,*),SLIN_NODES(LINE_NSEG0,*),SLIN_ELTYP(*),
46 CHARACTER(LEN=NCHARKEY) :: KEY
50 INTEGER I,K,J1,J2,IPERM(4)
53 integer,
dimension(:),
allocatable :: IW1,IW2,IW5,IW6,INDEX,IWORK
56 ALLOCATE(iw1(4*nseg0), iw2(4*nseg0), iw5(4*nseg0),iw6(4*nseg0), index(8*nseg0))
57 ALLOCATE(iwork(70000))
67 IF(buftmp(j2,i)/=0.AND.
68 . buftmp(j1,i)>buftmp(j2,i))
THEN
74 ELSEIF(buftmp(j1,i)/=0.AND.
75 . buftmp(j1,i)<buftmp(j2,i))
THEN
88 IF (key(1:4) ==
'SURF')
THEN
95 IF(iw1(index(i-1))/=iw1(index(i)).OR.
96 . iw2(index(i-1))/=iw2(index(i))) nseg=nseg+1
98 ELSEIF (flag == 1)
THEN
99 slin_nodes(1,1) = iw1(index(1))
100 slin_nodes(1,2) = iw2(index(1))
101 slin_eltyp(1) = iw5(index(1))
102 slin_elem(1) = iw6(index(1))
104 IF(iw1(index(i-1))/=iw1(index(i)).OR.
105 . iw2(index(i-1))/=iw2(index(i)))
THEN
107 slin_nodes(nseg,1) = iw1(index(i))
108 slin_nodes(nseg,2) = iw2(index(i))
109 slin_eltyp(nseg) = iw5(index(i))
110 slin_elem(nseg) = iw6(index(i))
114 ELSEIF (key(1:4) ==
'EDGE')
THEN
120 IF(iw1(index(1))/=iw1(index(2)).OR.
121 . iw2(index(1))/=iw2(index(2))) nseg=1
123 IF((iw1(index(i-1))/=iw1(index(i)).OR.
124 . iw2(index(i-1))/=iw2(index(i))).AND.
125 . (iw1(index(i+1))/=iw1(index(i)).OR.
126 . iw2(index(i+1))/=iw2(index(i)))) nseg=nseg+1
128 IF(iw1(index(k-1))/=iw1(index(k)).OR.
129 . iw2(index(k-1))/=iw2(index(k))) nseg=nseg+1
131 ELSEIF (flag == 1)
THEN
132 IF(iw1(index(1))/=iw1(index(2)).OR.
133 . iw2(index(1))/=iw2(index(2)))
THEN
135 slin_nodes(nseg,1) = iw1(index(1))
136 slin_nodes(nseg,2) = iw2(index(1))
137 slin_eltyp(nseg) = iw5(index(1))
138 slin_elem(nseg) = iw6(index(1))
141 IF((iw1(index(i-1))/=iw1(index(i)).OR.
142 . iw2(index(i-1))/=iw2(index(i))).AND.
143 . (iw1(index(i+1))/=iw1(index(i)).OR.
144 . iw2(index(i+1))/=iw2(index(i))))
THEN
146 slin_nodes(nseg,1) = iw1(index(i))
147 slin_nodes(nseg,2) = iw2(index(i))
148 slin_eltyp(nseg) = iw5(index(i))
149 slin_elem(nseg) = iw6(index(i))
152 IF(iw1(index(k-1))/=iw1(index(k)).OR.
153 . iw2(index(k-1))/=iw2(index(k)))
THEN
155 slin_nodes(nseg,1) = iw1(index(k))
156 slin_nodes(nseg,2) = iw2(index(k))
157 slin_eltyp(nseg) = iw5(index(k))
158 slin_elem(nseg) = iw6(index(k))
164 DEALLOCATE(iw1 ,iw2, iw5,iw6, index,iwork)