draw: avoid lisp error when region's expr doesn't evaluate to boolean
[maxima.git] / share / odepack / fortran / mdm.f
blobcde195d341822b3e9625e3e1f261017613cf47f4
1 subroutine mdm
2 * (vk,tail, v,l, last,next, mark)
3 c***********************************************************************
4 c mdm -- form element from uneliminated neighbors of vk
5 c***********************************************************************
6 integer vk, tail, v(*), l(*), last(*), next(*), mark(*),
7 * tag, s,ls,vs,es, b,lb,vb, blp,blpmax
8 equivalence (vs, es)
10 c----initialize tag and list of uneliminated neighbors
11 tag = mark(vk)
12 tail = vk
14 c----for each vertex/element vs/es in element list of vk
15 ls = l(vk)
16 1 s = ls
17 if (s.eq.0) go to 5
18 ls = l(s)
19 vs = v(s)
20 if (next(vs).lt.0) go to 2
22 c------if vs is uneliminated vertex, then tag and append to list of
23 c------uneliminated neighbors
24 mark(vs) = tag
25 l(tail) = s
26 tail = s
27 go to 4
29 c------if es is active element, then ...
30 c--------for each vertex vb in boundary list of element es
31 2 lb = l(es)
32 blpmax = last(es)
33 do 3 blp=1,blpmax
34 b = lb
35 lb = l(b)
36 vb = v(b)
38 c----------if vb is untagged vertex, then tag and append to list of
39 c----------uneliminated neighbors
40 if (mark(vb).ge.tag) go to 3
41 mark(vb) = tag
42 l(tail) = b
43 tail = b
44 3 continue
46 c--------mark es inactive
47 mark(es) = tag
49 4 go to 1
51 c----terminate list of uneliminated neighbors
52 5 l(tail) = 0
54 return
55 end