15 & INODE, NELIM, NSLAVES, ROW_LIST,
16 & COL_LIST, SLAVE_LIST,
18 & PROCNODE_STEPS, IWPOS, IWPOSCB, IPTRLU,
19 & LRLU, LRLUS, N, IW, LIW, A, LA, PTRIST,
21 & PTRAST, STEP, PIMASTER, PAMASTER, NSTK_S,
22 & ITLOC, RHS_MUMPS, COMP,
24 & IPOOL, LPOOL, LEAF, MYID, SLAVEF,
26 & COMM, COMM_LOAD, FILS, DAD, ND )
30 TYPE (ZMUMPS_ROOT_STRUC) :: ROOT
34 DOUBLE PRECISION DKEEP(230)
35 INTEGER ROW_LIST(*), COL_LIST(*),
37 INTEGER(8) :: IPTRLU, LRLU, LRLUS, LA
38 INTEGER IWPOS, IWPOSCB
41 COMPLEX(kind=8) A( LA )
42 INTEGER PTRIST( KEEP(28) ), PTLUST_S(KEEP(28))
43 INTEGER(8) :: PTRFAC(KEEP(28))
44 INTEGER(8) :: PTRAST(KEEP(28))
45 INTEGER(8) :: PAMASTER(KEEP(28))
46 INTEGER STEP(N), PIMASTER(KEEP(28))
48 INTEGER NSTK_S(KEEP(28)), ITLOC( N + KEEP(253) )
49 COMPLEX(kind=8) :: RHS_MUMPS(KEEP(255))
50 INTEGER PROCNODE_STEPS( KEEP(28) )
53 INTEGER IPOOL( LPOOL )
55 INTEGER COMM, COMM_LOAD, ND(KEEP(28)), FILS(N), DAD(KEEP(28))
56 INTEGER IROOT, TYPE_INODE, DEB_ROW, DEB_COL,
59 include
'mumps_headers.h'
60 include 'mumps_tags.h
'
61 INTEGER MUMPS_TYPENODE
62 EXTERNAL MUMPS_TYPENODE
64 NSTK_S(STEP(IROOT))= NSTK_S(STEP(IROOT)) - 1
65 KEEP(42) = KEEP(42) + NELIM
66 TYPE_INODE= MUMPS_TYPENODE( PROCNODE_STEPS(STEP(INODE)),
68.EQ.
IF (TYPE_INODE1) THEN
70 KEEP(41) = KEEP(41) + 1
72 KEEP(41) = KEEP(41) + 3
76 KEEP(41) = KEEP(41) + NSLAVES
78 KEEP(41) = KEEP(41) + 2*NSLAVES + 1
82 PIMASTER(STEP(INODE)) = 0
84 NOINT = 6 + NSLAVES + NELIM + NELIM + KEEP(IXSZ)
86 CALL ZMUMPS_ALLOC_CB(.FALSE.,0_8,.FALSE.,.FALSE.,
87 & MYID,N,KEEP,KEEP8,DKEEP,IW,LIW, A, LA,
88 & LRLU, IPTRLU,IWPOS,IWPOSCB, SLAVEF, PROCNODE_STEPS, DAD,
89 & PTRIST,PTRAST,STEP, PIMASTER, PAMASTER,
90 & NOINT, NOREAL, INODE, S_NOTFREE, .TRUE.,
91 & COMP, LRLUS, KEEP8(67), IFLAG, IERROR
93.LT.
IF ( IFLAG 0 ) THEN
94 WRITE(*,*) ' failure in int space allocation in cb
area ',
96 & ' size required was :
', NOINT,
97 & 'inode=
',INODE,' nelim
',NELIM, '', NSLAVES
100 PIMASTER(STEP( INODE )) = IWPOSCB + 1
101 PAMASTER(STEP( INODE )) = IPTRLU + 1_8
102 IW( IWPOSCB + 1+KEEP(IXSZ) ) = 2*NELIM
103 IW( IWPOSCB + 2+KEEP(IXSZ) ) = NELIM
104 IW( IWPOSCB + 3+KEEP(IXSZ) ) = 0
105 IW( IWPOSCB + 4+KEEP(IXSZ) ) = 0
106 IW( IWPOSCB + 5+KEEP(IXSZ) ) = 1
107 IW( IWPOSCB + 6+KEEP(IXSZ) ) = NSLAVES
108.GT.
IF (NSLAVES0) THEN
109 IW( IWPOSCB+7+KEEP(IXSZ):IWPOSCB+7+KEEP(IXSZ)+NSLAVES-1) =
110 & SLAVE_LIST(1:NSLAVES)
112 DEB_ROW = IWPOSCB+7+NSLAVES+KEEP(IXSZ)
113 IW(DEB_ROW : DEB_ROW+NELIM -1) = ROW_LIST(1:NELIM)
114 DEB_COL = DEB_ROW + NELIM
115 IW(DEB_COL : DEB_COL+NELIM -1) = COL_LIST(1:NELIM)
117.EQ.
IF (NSTK_S(STEP(IROOT)) 0 ) THEN
118 CALL ZMUMPS_INSERT_POOL_N(N, IPOOL, LPOOL, PROCNODE_STEPS,
120 & KEEP(28), KEEP(76), KEEP(80), KEEP(47),
122.GE.
IF (KEEP(47) 3) THEN
123 CALL ZMUMPS_LOAD_POOL_UPD_NEW_POOL(
125 & PROCNODE_STEPS, KEEP,KEEP8, SLAVEF, COMM_LOAD,
126 & MYID, STEP, N, ND, FILS )
subroutine zmumps_process_rtnelind(root, inode, nelim, nslaves, row_list, col_list, slave_list, procnode_steps, iwpos, iwposcb, iptrlu, lrlu, lrlus, n, iw, liw, a, la, ptrist, ptlust_s, ptrfac, ptrast, step, pimaster, pamaster, nstk_s, itloc, rhs_mumps, comp, iflag, ierror, ipool, lpool, leaf, myid, slavef, keep, keep8, dkeep, comm, comm_load, fils, dad, nd)