33
34
35
36#include "implicit_f.inc"
37
38
39
40
41
42
43 INTEGER NSEG0,NSEG,FLAG,LINE_NSEG0
44 INTEGER BUFTMP(6,*),SLIN_NODES(LINE_NSEG0,*),SLIN_ELTYP(*),
45 . SLIN_ELEM(*)
46 CHARACTER(LEN=NCHARKEY) :: KEY
47
48
49
50 INTEGER I,J,K,J1,J2
51 INTEGER IW1(4*NSEG0),IW2(4*NSEG0),IW5(4*NSEG0),IW6(4*NSEG0),
52 . INDEX(8*NSEG0),IWORK(70000), IPERM(4)
53 DATA iperm /2,3,4,1/
54
55 k=0
56 iw1 = 0
57 iw2 = 0
58 iw5 = 0
59 iw6 = 0
60 index = 0
61 DO i = 1,nseg0
62 DO j1=1,4
63 j2=iperm(j1)
64 IF(buftmp(j2,i)/=0.AND.
65 . buftmp(j1,i)>buftmp(j2,i))THEN
66 k=k+1
67 iw1(k)=buftmp(j2,i)
68 iw2(k)=buftmp(j1,i)
69 iw5(k)=buftmp(5,i)
70 iw6(k)=buftmp(6,i)
71 ELSEIF(buftmp(j1,i)/=0.AND.
72 . buftmp(j1,i)<buftmp(j2,i))THEN
73 k=k+1
74 iw1(k)=buftmp(j1,i)
75 iw2(k)=buftmp(j2,i)
76 iw5(k)=buftmp(5,i)
77 iw6(k)=buftmp(6,i)
78 ENDIF
79 ENDDO
80 ENDDO
81
84
85 IF (key(1:4) == 'SURF') THEN
86
87
88
89 nseg=1
90 IF (flag == 0) THEN
91 DO i=2,k
92 IF(iw1(index(i-1))/=iw1(index(i)).OR.
93 . iw2(index(i-1))/=iw2(index(i))) nseg=nseg+1
94 ENDDO
95 ELSEIF (flag == 1) THEN
96 slin_nodes(1,1) = iw1(index(1))
97 slin_nodes(1,2) = iw2(index(1))
98 slin_eltyp(1) = iw5(index(1))
99 slin_elem(1) = iw6(index(1))
100 DO i=2,k
101 IF(iw1(index(i-1))/=iw1(index(i)).OR.
102 . iw2(index(i-1))/=iw2(index(i)))THEN
103 nseg=nseg+1
104 slin_nodes(nseg,1) = iw1(index(i))
105 slin_nodes(nseg,2) = iw2(index(i))
106 slin_eltyp(nseg) = iw5(index(i))
107 slin_elem(nseg) = iw6(index(i))
108 ENDIF
109 ENDDO
110 ENDIF
111 ELSEIF (key(1:4) == 'EDGE') THEN
112
113
114
115 nseg=0
116 IF (flag == 0) THEN
117 IF(iw1(index(1))/=iw1(index(2)).OR.
118 . iw2(index(1))/=iw2(index(2))) nseg=1
119 DO i=2,k-1
120 IF((iw1(index(i-1))/=iw1(index(i)).OR.
121 . iw2(index(i-1))/=iw2(index(i))).AND.
122 .
123 . iw2(index(i+1))/=iw2(index(i)))) nseg=nseg
124 ENDDO
125 IF(iw1(index(k-1))/=iw1(index(k)).OR.
126 . iw2(index(k-1))/=iw2(index(k))) nseg=nseg+1
127
128 ELSEIF (flag == 1) THEN
129 IF(iw1(index(1))/=iw1(index(2)).OR.
130 . iw2(index(1))/=iw2(index(2)))THEN
131 nseg=1
132 slin_nodes(nseg,1) = iw1(index(1))
133 slin_nodes(nseg,2) = iw2(index(1))
134 slin_eltyp(nseg) = iw5(index(1))
135 slin_elem(nseg) = iw6(index(1))
136 ENDIF
137 DO i=2,k-1
138 IF((iw1(index(i-1))/=iw1(index(i)).OR.
139 . iw2(index(i-1))/=iw2(index(i))).AND.
140 . (iw1(index(i+1))/=iw1(index(i)).OR.
141 . iw2(index(i+1))/=iw2(index(i))))THEN
142 nseg=nseg+1
143 slin_nodes(nseg,1) = iw1(index(i))
144 slin_nodes(nseg,2) = iw2(index(i))
145 slin_eltyp(nseg) = iw5(index(i))
146 slin_elem(nseg) = iw6(index(i))
147 ENDIF
148 ENDDO
149 IF(iw1(index(k-1))/=iw1(index(k)).OR.
150 . iw2(index(k-1))/=iw2(index(k)))THEN
151 nseg=nseg+1
152 slin_nodes(nseg,1) = iw1(index(k))
153 slin_nodes(nseg,2) = iw2(index(k))
154 slin_eltyp(nseg) = iw5(index(k))
155 slin_elem(nseg) = iw6(index(k))
156 ENDIF
157 ENDIF
158
159 ENDIF
160
161 RETURN
void my_orders(int *mode, int *iwork, int *data, int *index, int *n, int *irecl)
integer, parameter ncharkey