38 IMPLICIT NONE
39 INTEGER, INTENT(IN) :: N, NV, NSTEPS, LNA, F, VLIST(NV)
40 INTEGER :: FILS(:), FRERE_STEPS(:),
41 & DAD_STEPS(:), STEP(:), NE_STEPS(:), NA(:)
42 INTEGER, INTENT(INOUT) :: PVS(NSTEPS), LPTR, RPTR
43 INTEGER, INTENT(INOUT) :: K38
44 INTEGER, INTENT(IN) :: STEP_SCALAPACK_ROOT
45 LOGICAL :: FIRST
46 INTEGER :: PV, NODE, I
47 pv = vlist(1)
48 node = abs(step(pv))
49 pvs(node) = pv
50 IF(first) THEN
51 i = dad_steps(node)
52 DO WHILE(fils(i).GT.0)
53 i = fils(i)
54 END DO
55 fils(i) = -pv
56 END IF
57 IF(frere_steps(node) .GT. 0) THEN
58 frere_steps(node) = pvs(abs(step(frere_steps(node))))
59 ELSE IF(frere_steps(node) .LT. 0) THEN
60 frere_steps(node) = -pvs(abs(step(dad_steps(node))))
61 END IF
62 IF(dad_steps(node) .EQ. 0) THEN
63 na(rptr) = pv
64 rptr = rptr -1
65 ELSE
66 dad_steps(node) = pvs(abs(step(dad_steps(node))))
67 END IF
68 IF(ne_steps(node) .EQ. 0) THEN
69 na(lptr) = pv
70 lptr = lptr -1
71 END IF
72 step(vlist(1)) = abs(step(vlist(1)))
73 IF (step(vlist(1)).EQ.step_scalapack_root) THEN
74 k38 = vlist(1)
75 ENDIF
76 DO i=1, nv-1
77 IF(step(vlist(i+1)).GT.0) step(vlist(i+1)) = -step(vlist(i+1))
78 fils(vlist(i)) = vlist(i+1)
79 END DO
80 fils(vlist(nv)) = f
81 RETURN