35
37
38
39
40#include "implicit_f.inc"
41
42
43
44#include "assert.inc"
45
46
47
48#include "param_c.inc"
49
50
51
52
53
54
55
56
57 INTEGER I_STOK,NEDGE,NIN,NEDGE_L,IFQ
58 INTEGER CAND_S(I_STOK),CAND_M(I_STOK),CAND_A(*),IFPEN(*)
59 INTEGER LEDGE(NLEDGE,NEDGE)
61 . cand_p(4,*),cand_fx(4,*) ,cand_fy(4,*) ,cand_fz(4,*)
62
63
64
65 INTEGER I, I_ST0,N,,K,E,CAND_X,
66 . IGET(I_STOK),IPUT(I_STOK)
68 . cand_xf
69 INTEGER EIDS
70
71
72
73 DO n=1,nedge+3
74 cand_a(n) = 0
75 ENDDO
76
77 DO i=1,i_stok
78 nn = cand_s(i)
79 e = cand_m(i)
80
81 assert(cand_s(i) > 0)
82 assert(cand_s(i) <= nedge)
83 debug_e2e(eids == d_es,cand_p(1,i))
84 debug_e2e(eids == d_es,cand_p(2,i))
85 debug_e2e(eids == d_es,cand_p(3,i))
86 debug_e2e(eids == d_es,cand_p(4,i))
87
88
89 IF (ifq == 0) THEN
90 IF(cand_p(1,i)==zero.AND.
91 . cand_p(2,i)==zero.AND.
92 . cand_p(3,i)==zero.AND.
93 . cand_p(4,i)==zero)THEN
94 cand_s(i) = nedge+1
95 ENDIF
96 ELSE
97 IF(ifpen(i)==0.AND.cand_p(1,i)==zero.AND.
98 . cand_p(2,i)==zero.AND.
99 . cand_p(3,i)==zero.AND.
100 . cand_p(4,i)==zero)THEN
101 cand_s(i) = nedge+1
102 ENDIF
103 ENDIF
104
105
106 ENDDO
107
108
109
110
111
112 DO i=1,i_stok
113 nn = cand_s(i) + 2
114 cand_a(nn) = cand_a(nn) + 1
115 ENDDO
116
117
118
119
120
121 cand_a(1) = 1
122 cand_a(2) = 1
123 DO n=3,nedge+2
124 cand_a(n) = cand_a(n) + cand_a(n-1)
125 ENDDO
126
127
128
129
130
131 DO i=1,i_stok
132 nn = cand_s(i) + 1
133 k = cand_a(nn)
134 assert(k > 0)
135 assert(nn > 0)
136 iput(i) = k
137 iget(k) = i
138 cand_a(nn) = cand_a(nn) + 1
139 ENDDO
140
141
142
143
144
145 DO k=1,i_stok
146 i = iget(k)
147 assert(i > 0)
148
149 cand_x = cand_s(k)
150 cand_s(k) = cand_s(i)
151 cand_s(i) = cand_x
152
153 cand_x = cand_m(k)
154 cand_m(k) = cand_m(i)
155 cand_m(i) = cand_x
156
157 cand_xf = cand_p(1,k)
158 cand_p(1,k) = cand_p(1,i)
159 cand_p(1,i) = cand_xf
160
161 cand_xf = cand_p(2,k)
162 cand_p(2,k) = cand_p(2,i)
163 cand_p(2,i) = cand_xf
164
165 cand_xf = cand_p(3,k)
166 cand_p(3,k) = cand_p(3,i)
167 cand_p(3,i) = cand_xf
168
169 cand_xf = cand_p(4,k)
170 cand_p(4,k) = cand_p(4,i)
171 cand_p(4,i) = cand_xf
172
173 cand_xf = cand_fx(1,k)
174 cand_fx(1,k) = cand_fx(1,i)
175 cand_fx(1,i) = cand_xf
176
177 cand_xf = cand_fx(2,k)
178 cand_fx(2,k) = cand_fx(2,i)
179 cand_fx(2,i) = cand_xf
180
181 cand_xf = cand_fx(3,k)
182 cand_fx(3,k) = cand_fx(3,i)
183 cand_fx(3,i) = cand_xf
184
185 cand_xf = cand_fx(4,k)
186 cand_fx(4,k) = cand_fx(4,i)
187 cand_fx(4,i) = cand_xf
188
189 cand_xf = cand_fy(1,k)
190 cand_fy(1,k) = cand_fy(1,i)
191 cand_fy(1,i) = cand_xf
192
193 cand_xf = cand_fy(2,k)
194 cand_fy(2,k) = cand_fy(2,i)
195 cand_fy(2,i) = cand_xf
196
197 cand_xf = cand_fy(3,k)
198 cand_fy(3,k) = cand_fy(3,i)
199 cand_fy(3,i) = cand_xf
200
201 cand_xf = cand_fy(4,k)
202 cand_fy(4,k) = cand_fy(4,i)
203 cand_fy(4,i) = cand_xf
204
205 cand_xf = cand_fz(1,k)
206 cand_fz(1,k) = cand_fz(1,i)
207 cand_fz(1,i) = cand_xf
208
209 cand_xf = cand_fz(2,k)
210 cand_fz(2,k) = cand_fz(2,i)
211 cand_fz(2,i) = cand_xf
212
213 cand_xf = cand_fz(3,k)
214 cand_fz(3,k) = cand_fz(3,i)
215 cand_fz(3,i) = cand_xf
216
217 cand_xf = cand_fz(4,k)
218 cand_fz(4,k) = cand_fz(4,i)
219 cand_fz(4,i) = cand_xf
220
221 cand_x = ifpen(k)
222 ifpen(k) = ifpen(i)
223 ifpen(i) = cand_x
224
225 iput(i) = iput(k)
226
227 assert(iput(i) > 0)
228 assert(iput(i) <= i_stok)
229
230 iget(iput(i)) = i
231 ENDDO
232
233
234
235 i_stok = cand_a(nedge+1) - 1
236 cand_a(nedge+2) = cand_a(nedge+1)
237
238 RETURN