7 subroutine ims_odrv(n, nja, nsp, ia, ja, p, ip, isp, flag)
145 integer(I4B),
intent(in) :: n
146 integer(I4B),
intent(in) :: nja
147 integer(I4B),
intent(in) :: nsp
148 integer(I4B),
dimension(n + 1),
intent(in) :: ia
149 integer(I4B),
dimension(nja),
intent(in) :: ja
150 integer(I4B),
dimension(n),
intent(inout) :: p
151 integer(I4B),
dimension(n),
intent(inout) :: ip
152 integer(I4B),
dimension(nsp),
intent(inout) :: isp
153 integer(I4B),
intent(inout) :: flag
170 if (path < 1 .or. 5 < path)
go to 111
178 if (mmax < n)
go to 110
180 call ims_md(n, nja, ia, ja, mmax, isp(v), isp(l), isp(head), p, &
182 if (flag .ne. 0)
go to 100
191 110 flag = 10 * n + 1
194 111 flag = 11 * n + 1
198 subroutine ims_md(n, nja, ia, ja, mmax, v, l, head, last, next, &
287 integer(I4B),
intent(in) :: n
288 integer(I4B),
intent(in) :: nja
289 integer(I4B),
dimension(n + 1),
intent(in) :: ia
290 integer(I4B),
dimension(nja),
intent(in) :: ja
291 integer(I4B),
intent(in) :: mmax
292 integer(I4B),
dimension(mmax),
intent(inout) :: v
293 integer(I4B),
dimension(mmax),
intent(inout) :: l
294 integer(I4B),
dimension(n),
intent(inout) :: head
295 integer(I4B),
dimension(n),
intent(inout) :: last
296 integer(I4B),
dimension(n),
intent(inout) :: next
297 integer(I4B),
dimension(n),
intent(inout) :: mark
298 integer(I4B),
intent(inout) :: flag
312 call ims_mdi(n, nja, ia, ja, mmax, v, l, head, last, next, &
314 if (flag .ne. 0)
return
320 1
if (k >= n)
go to 4
323 2
if (head(dmin) > 0)
go to 3
329 head(dmin) = next(vk)
330 if (head(dmin) > 0) last(head(dmin)) = -dmin
340 call ims_mdm(n, mmax, vk, tail, v, l, last, next, mark)
343 call ims_mdp(n, mmax, k, ek, tail, v, l, head, last, next, mark)
346 call ims_mdu(n, mmax, ek, dmin, v, l, head, last, next, mark)
359 subroutine ims_mdi(n, nja, ia, ja, mmax, v, l, head, last, next, &
368 integer(I4B),
intent(in) :: n
369 integer(I4B),
intent(in) :: nja
370 integer(I4B),
dimension(n + 1),
intent(in) :: ia
371 integer(I4B),
dimension(nja),
intent(in) :: ja
372 integer(I4B),
intent(in) :: mmax
373 integer(I4B),
dimension(mmax),
intent(inout) :: v
374 integer(I4B),
dimension(mmax),
intent(inout) :: l
375 integer(I4B),
dimension(n),
intent(inout) :: head
376 integer(I4B),
dimension(n),
intent(inout) :: last
377 integer(I4B),
dimension(n),
intent(inout) :: next
378 integer(I4B),
dimension(n),
intent(inout) :: mark
379 integer(I4B),
intent(in) :: tag
380 integer(I4B),
intent(inout) :: flag
393 integer(I4B) :: nextvi
394 integer(I4B) :: ieval
408 jmax = ia(vi + 1) - 1
409 if (jmin > jmax) cycle louter
410 linner1:
do j = jmin, jmax
414 if (ieval == 0) cycle linner1
415 if (ieval > 0)
go to 4
421 if (kmax == 0)
go to 4
422 linner2:
do k = 1, kmax
424 if (v(lvk) == vj) cycle linner1
427 4
if (sfs >= mmax)
go to 101
430 mark(vi) = mark(vi) + 1
437 mark(vj) = mark(vj) + 1
452 if (nextvi > 0) last(nextvi) = vi
459 101 flag = 9 * n + vi
463 subroutine ims_mdm(n, mmax, vk, tail, v, l, last, next, mark)
471 integer(I4B),
intent(in) :: n
472 integer(I4B),
intent(in) :: mmax
473 integer(I4B),
intent(in) :: vk
474 integer(I4B),
intent(inout) :: tail
475 integer(I4B),
dimension(mmax),
intent(inout) :: v
476 integer(I4B),
dimension(mmax),
intent(inout) :: l
477 integer(I4B),
dimension(n),
intent(inout) :: last
478 integer(I4B),
dimension(n),
intent(inout) :: next
479 integer(I4B),
dimension(n),
intent(inout) :: mark
491 integer(I4B) :: blpmax
505 if (next(vs) < 0)
go to 2
518 louter:
do blp = 1, blpmax
525 if (mark(vb) >= tag) cycle louter
542 subroutine ims_mdp(n, mmax, k, ek, tail, v, l, head, last, next, mark)
550 integer(I4B),
intent(in) :: n
551 integer(I4B),
intent(in) :: mmax
552 integer(I4B),
intent(inout) :: k
553 integer(I4B),
intent(in) :: ek
554 integer(I4B),
intent(inout) :: tail
555 integer(I4B),
dimension(mmax),
intent(inout) :: v
556 integer(I4B),
dimension(mmax),
intent(inout) :: l
557 integer(I4B),
dimension(n),
intent(inout) :: head
558 integer(I4B),
dimension(n),
intent(inout) :: last
559 integer(I4B),
dimension(n),
intent(inout) :: next
560 integer(I4B),
dimension(n),
intent(inout) :: mark
573 integer(I4B) :: ilpmax
582 if (ilpmax <= 0)
go to 12
583 louter:
do ilp = 1, ilpmax
589 if (last(vi) == 0)
go to 3
590 if (last(vi) > 0)
go to 1
591 head(-last(vi)) = next(vi)
593 1 next(last(vi)) = next(vi)
594 2
if (next(vi) > 0) last(next(vi)) = last(vi)
602 if (mark(es) < tag)
go to 5
611 if (lvi .ne. 0)
go to 7
617 last(ek) = last(ek) - 1
622 7
if (l(lvi) .ne. 0)
go to 9
624 if (next(evi) >= 0)
go to 9
625 if (mark(evi) < 0)
go to 8
641 mark(evi) = mark(evi) - 1
659 subroutine ims_mdu(n, mmax, ek, dmin, v, l, head, last, next, mark)
667 integer(I4B),
intent(in) :: n
668 integer(I4B),
intent(in) :: mmax
669 integer(I4B),
intent(in) :: ek
670 integer(I4B),
intent(inout) :: dmin
671 integer(I4B),
dimension(mmax),
intent(inout) :: v
672 integer(I4B),
dimension(mmax),
intent(inout) :: l
673 integer(I4B),
dimension(n),
intent(inout) :: head
674 integer(I4B),
dimension(n),
intent(inout) :: last
675 integer(I4B),
dimension(n),
intent(inout) :: next
676 integer(I4B),
dimension(n),
intent(inout) :: mark
689 integer(I4B) :: ilpmax
691 integer(I4B) :: blpmax
697 tag = mark(ek) - last(ek)
702 if (ilpmax <= 0)
go to 11
703 louter:
do ilp = 1, ilpmax
707 if (last(vi) == 0) cycle louter
708 if (last(vi) > 0)
goto 8
720 if (next(vs) < 0)
go to 3
729 3
if (mark(es) < 0)
go to 6
734 linner:
do blp = 1, blpmax
739 if (mark(vb) >= tag) cycle linner
749 mark(es) = mark(es) - 1
751 if (s == 0) cycle louter
753 if (mark(es) < 0) mark(es) = mark(es) - 1
759 dvi = last(ek) + last(evi) + mark(evi)
763 9 next(vi) = head(dvi)
766 if (next(vi) > 0) last(next(vi)) = vi
767 if (dvi < dmin) dmin = dvi
subroutine ims_mdm(n, mmax, vk, tail, v, l, last, next, mark)
subroutine ims_mdu(n, mmax, ek, dmin, v, l, head, last, next, mark)
subroutine ims_md(n, nja, ia, ja, mmax, v, l, head, last, next, mark, flag)
subroutine ims_mdi(n, nja, ia, ja, mmax, v, l, head, last, next, mark, tag, flag)
subroutine ims_mdp(n, mmax, k, ek, tail, v, l, head, last, next, mark)
subroutine, public ims_odrv(n, nja, nsp, ia, ja, p, ip, isp, flag)
This module defines variable data types.