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 (SMUMPS_ROOT_STRUC) :: ROOT
31 INTEGER INODE, NELIM, NSLAVES
35 INTEGER ROW_LIST(*), COL_LIST(*),
37 INTEGER(8) :: IPTRLU, LRLU, LRLUS, LA
38 INTEGER IWPOS, IWPOSCB
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 REAL :: RHS_MUMPS(KEEP(255))
50 INTEGER PROCNODE_STEPS( KEEP(28) )
53 INTEGER IPOOL( LPOOL )
55 INTEGER COMM, COMM_LOAD, ND(KEEP(28)), FILS(N), (KEEP(28))
56 INTEGER , 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
68 IF (type_inode.EQ.1)
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)
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 IF ( iflag .LT. 0 )
THEN
94 WRITE(*,*)
' Failure in int space allocation in CB area ',
95 &
' during assembly of root : SMUMPS_PROCESS_RTNELIND',
96 &
' size required was :', noint,
97 &
'INODE=',inode,
' NELIM=',nelim, ' nslaves=
', 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 SMUMPS_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 SMUMPS_LOAD_POOL_UPD_NEW_POOL(
125 & PROCNODE_STEPS, KEEP,KEEP8, SLAVEF, COMM_LOAD,
126 & MYID, STEP, N, ND, FILS )
subroutine smumps_alloc_cb(inplace, min_space_in_place, ssarbr, process_bande, myid, n, keep, keep8, dkeep, iw, liw, a, la, lrlu, iptrlu, iwpos, iwposcb, slavef, procnode_steps, dad, ptrist, ptrast, step, pimaster, pamaster, lreq, lreqcb, node_arg, state_arg, set_header, comp, lrlus, lrlusm, iflag, ierror)
subroutine smumps_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)