2 * (k
,ek
,tail
, v
,l
, head
,last
,next
, mark
)
3 c***********************************************************************
4 c mdp -- purge inactive elements and do mass elimination
5 c***********************************************************************
6 integer ek
, tail
, v
(*), l
(*), head
(*), last
(*), next
(*),
7 * mark
(*), tag
, free
, li
,vi
,lvi
,evi
, s
,ls
,es
, ilp
,ilpmax
12 c----for each vertex vi in ek
15 if (ilpmax
.le
.0) go to 12
21 c------remove vi from degree list
22 if (last
(vi
).eq
.0) go to 3
23 if (last
(vi
).gt
.0) go to 1
24 head
(-last
(vi
)) = next
(vi
)
26 1 next
(last
(vi
)) = next
(vi
)
27 2 if (next
(vi
).gt
.0) last
(next
(vi
)) = last
(vi
)
29 c------remove inactive items from element list of vi
35 if (mark
(es
).lt
.tag
) go to 5
41 c------if vi is interior vertex, then remove from list and eliminate
49 last
(ek
) = last
(ek
) - 1
53 c--------classify vertex vi
54 7 if (l
(lvi
).ne
.0) go to 9
56 if (next
(evi
).ge
.0) go to 9
57 if (mark
(evi
).lt
.0) go to 8
59 c----------if vi is prototype vertex, then mark as such, initialize
60 c----------overlap count for corresponding element, and move vi to end
61 c----------of boundary list
70 c----------else if vi is duplicate vertex, then mark as such and adjust
71 c----------overlap count for corresponding element
73 mark
(evi
) = mark
(evi
) - 1
76 c----------else mark vi to compute degree
79 c--------insert ek in element list of vi
85 c----terminate boundary list