26 include
'mumps_headers.h'
30 INTEGER,
INTENT(IN) :: keep201
31 INTEGER(8),
POINTER,
DIMENSION(:,:) :: size_of_block_arg
41 & DAD, NE_STEPS, FRERE, KEEP28,
43 & nodes_RHS, nb_nodes_RHS,
45 & nb_prun_nodes, nb_prun_roots, nb_prun_leaves,
46 & Pruned_List, Pruned_Roots, Pruned_Leaves
49 LOGICAL,
INTENT(IN) :: fill
50 INTEGER,
INTENT(IN) :: n, keep28
51 INTEGER,
INTENT(IN) :: dad(keep28),ne_steps(keep28),frere(keep28)
52 INTEGER,
INTENT(IN) :: fils(n), step(n)
53 INTEGER,
INTENT(IN) :: nodes_rhs(keep28), nb_nodes_rhs
54 INTEGER :: nb_prun_nodes
55 INTEGER,
OPTIONAL,
INTENT(INOUT):: pruned_list(nb_prun_nodes)
56 INTEGER :: nb_prun_roots
57 INTEGER,
OPTIONAL,
INTENT(INOUT):: pruned_roots(nb_prun_roots)
58 INTEGER :: nb_prun_leaves
59 INTEGER,
OPTIONAL,
INTENT(INOUT):: pruned_leaves(nb_prun_leaves)
60 LOGICAL :: to_process(keep28)
61 INTEGER :: in, i, istep, tmp, tmpsave
62 LOGICAL :: fils_visited
65 to_process(:) = .false.
66 DO i = 1, nb_nodes_rhs
70 DO WHILE(.NOT.to_process(istep))
71 to_process(istep) = .true.
72 nb_prun_nodes = nb_prun_nodes + 1
74 pruned_list(nb_prun_nodes) = tmp
80 fils_visited = .false.
82 fils_visited = to_process(step(-in))
84 IF ( in.LT.0.and..NOT.fils_visited)
90 nb_prun_leaves = nb_prun_leaves + 1
92 pruned_leaves(nb_prun_leaves) = tmp
98 DO WHILE (tmp.NE.tmpsave)
99 tmp = abs(frere(istep))
105 IF (.NOT.to_process(istep))
exit
114 IF(dad(istep).NE.0)
THEN
115 IF(.NOT.to_process(step(dad(istep))))
THEN
116 nb_prun_roots = nb_prun_roots + 1
118 pruned_roots(nb_prun_roots) = tmp
122 nb_prun_roots = nb_prun_roots + 1
124 pruned_roots(nb_prun_roots) = tmp
134 & nodes_RHS, nb_nodes_RHS,
135 & Pruned_SONS, TO_PROCESS,
136 & nb_prun_nodes,nb_prun_roots, nb_prun_leaves,
137 & Pruned_List, Pruned_Roots, Pruned_Leaves
140 LOGICAL,
INTENT(IN) :: fill
141 INTEGER,
INTENT(IN) :: n
142 INTEGER,
INTENT(IN) :: step(n)
143 INTEGER,
INTENT(IN) :: keep28
144 INTEGER,
INTENT(IN) :: dad(keep28)
145 INTEGER,
INTENT(IN) :: nb_nodes_rhs
146 INTEGER,
INTENT(IN) :: nodes_rhs(nb_nodes_rhs)
147 INTEGER :: nb_prun_nodes
148 INTEGER,
OPTIONAL,
INTENT(INOUT):: pruned_list(nb_prun_nodes)
149 INTEGER :: nb_prun_roots
150 INTEGER,
OPTIONAL,
INTENT(INOUT):: pruned_roots(nb_prun_roots)
151 INTEGER :: nb_prun_leaves
152 INTEGER,
OPTIONAL,
INTENT(INOUT):: pruned_leaves(nb_prun_leaves)
153 INTEGER :: pruned_sons(keep28)
154 LOGICAL :: to_process(keep28)
155 INTEGER :: in, i, istep, tmp
158 to_process(:) = .false.
160 DO i = 1, nb_nodes_rhs
163 to_process(istep) = .true.
164 IF (pruned_sons(istep) .eq. -1)
THEN
165 pruned_sons(istep) = 0
166 nb_prun_nodes = nb_prun_nodes + 1
168 pruned_list(nb_prun_nodes) = nodes_rhs(i)
173 to_process(step(in)) = .true.
174 IF (pruned_sons(step(in)).eq.-1)
THEN
175 nb_prun_nodes = nb_prun_nodes + 1
177 pruned_list(nb_prun_nodes) = in
179 pruned_sons(step(in)) = 1
183 pruned_sons(step(in)) = pruned_sons(step(in)) + 1
187 nb_prun_roots = nb_prun_roots +1
189 pruned_roots(nb_prun_roots) = tmp
195 DO i = 1, nb_nodes_rhs
198 IF (pruned_sons(istep).EQ.0)
THEN
199 nb_prun_leaves = nb_prun_leaves +1
201 pruned_leaves(nb_prun_leaves) = tmp
209 & IRHS_PTR, NBCOL, IRHS_SPARSE, NZ_RHS,
210 & JBEG_RHS, PERM_RHS, SIZE_PERM_RHS, K242, K243,
211 & UNS_PERM_INV, SIZE_UNS_PERM_INV, K23,
212 & RHS_BOUNDS, NSTEPS,
216 INTEGER,
INTENT(IN) :: myid, n, nsteps, k242, k243, k23
217 INTEGER,
INTENT(IN) :: jbeg_rhs, size_perm_rhs, nb_sparse
218 INTEGER,
INTENT(IN) :: nbcol, nz_rhs, size_uns_perm_inv
219 INTEGER,
INTENT(IN) :: (n), perm_rhs(size_perm_rhs)
220 INTEGER,
INTENT(IN) :: (nbcol+1),irhs_sparse(nz_rhs)
221 INTEGER,
INTENT(IN) :: uns_perm_inv(size_uns_perm_inv)
222 INTEGER,
INTENT(INOUT):: rhs_bounds(2*nsteps)
223 INTEGER,
INTENT(IN) :: mode
224 INTEGER :: i, icol, jptr, j, jam1, node, bound
228 IF ( (irhs_ptr(i+1)-irhs_ptr(i)).EQ.0) cycle
230 bound = icol - mod(icol, nb_sparse) + 1
231 IF(mod(icol, nb_sparse).EQ.0) bound = bound - nb_sparse
233 IF ((k242.NE.0).OR.(k243.NE.0))
THEN
234 jam1 = perm_rhs(jbeg_rhs+i-1)
238 node = abs(step(jam1))
239 IF(rhs_bounds(2*node - 1).EQ.0)
THEN
240 rhs_bounds(2*node - 1) = bound
241 rhs_bounds(2*node) = bound + nb_sparse - 1
243 rhs_bounds(2*node) = bound + nb_sparse - 1
246 DO jptr = irhs_ptr(i), irhs_ptr(i+1)-1
247 j = irhs_sparse(jptr)
248 IF ( mode .EQ. 1 )
THEN
249 IF (k23.NE.0) j = uns_perm_inv(j)
252 IF(rhs_bounds(2*node - 1).EQ.0)
THEN
253 rhs_bounds(2*node - 1) = bound
254 rhs_bounds(2*node) = bound + nb_sparse - 1
256 rhs_bounds(2*node) = bound + nb_sparse - 1
264 & pruned_leaves, nb_pruned_leaves,
265 & STEP, N, Pruned_SONS,
266 & DAD, RHS_BOUNDS, NSTEPS,
267 & MYID, COMM, KEEP485,
268 & IW, LIW, PTRIST, KIXSZ,OOC_FCT_LOC, PHASE, LDLT, K38)
271 include
'mumps_headers.h'
272 INTEGER,
INTENT(IN) :: nb_pruned_leaves, n, nsteps
273 INTEGER,
INTENT(IN) :: step(n), dad(nsteps), pruned_sons(nsteps)
274 INTEGER,
INTENT(IN) :: myid, comm, keep485
275 INTEGER,
INTENT(IN) :: pruned_leaves(nb_pruned_leaves)
276 INTEGER,
INTENT(IN) :: liw, iw(liw), (nsteps)
277 INTEGER,
INTENT(IN) :: kixsz, ooc_fct_loc, phase, ldlt, k38
278 INTEGER,
INTENT(INOUT):: rhs_bounds(2*nsteps)
279 INTEGER :: i, ,
father, size_pool, next_size_pool
281 INTEGER,
ALLOCATABLE,
DIMENSION(:) :: pool, nbsons
282 ALLOCATE(pool(nb_pruned_leaves),
286 WRITE(6,*)
'Allocation problem in SMUMPS_PROPAGATE_RHS_BOUNDS'
289 size_pool = nb_pruned_leaves
292 DO WHILE (size_pool.ne.0)
296 IF (dad(node).NE.0)
THEN
299 IF (rhs_bounds(2*
father-1).EQ.0)
THEN
300 rhs_bounds(2*
father-1) = rhs_bounds(2*node-1)
301 rhs_bounds(2*
father) = rhs_bounds(2*node)
304 & rhs_bounds(2*node-1))
306 & rhs_bounds(2*node))
308 IF(nbsons(
father).EQ.0)
THEN
309 next_size_pool = next_size_pool+1
310 pool(next_size_pool) = dad(node)
314 size_pool = next_size_pool
316 DEALLOCATE(pool, nbsons)
320 & PHASE, LDLT, IS_ROOT)
321 INTEGER,
INTENT(IN) :: liw, ptr, phase, ldlt
322 INTEGER,
INTENT(IN) :: iw(liw)
323 LOGICAL,
INTENT(IN) :: is_root
324 INTEGER(8) :: ncb, nelim, liell, npiv, nrow
326 nelim = int(iw(ptr+1),8)
327 nrow = int(iw(ptr+2),8)
328 npiv = int(iw(ptr+3),8)
332 & int(iw(ptr+2),8) / 2_8
337 & .OR. (phase.EQ.1.AND.ldlt.NE.0)
340 & npiv*(npiv-1_8)/2_8 + (nrow-npiv)*npiv
343 & npiv*(npiv+1_8)/2_8 + (liell-npiv)*npiv
352 & LRSTATUS, IWHANDLER,
353 & PHASE, LDLT, IS_ROOT)
356 INTEGER,
INTENT(IN) :: liw, ptr, phase, ldlt
357 INTEGER,
INTENT(IN) :: lrstatus, iwhandler
358 INTEGER,
INTENT(IN) :: iw(liw)
359 LOGICAL,
INTENT(IN) :: is_root
360 INTEGER(8) :: ncb, nelim, liell, npiv, nrow, factor_size
361 INTEGER :: nb_panels, ipanel, loru, iblock
362 LOGICAL :: lr_activated
363 TYPE(
lrb_type),
POINTER,
DIMENSION(:) :: lrb_panel
365 nelim = int(iw(ptr+1),8)
366 nrow = int(iw(ptr+2),8)
367 npiv = int(iw(ptr+3),8)
369 lr_activated=(lrstatus.GE.2)
370 IF (lr_activated)
THEN
378 DO ipanel=1,nb_panels
379 IF (is_root.AND.ipanel.EQ.nb_panels)
THEN
388 IF (
size(lrb_panel).GT.0)
THEN
390 factor_size = factor_size +
391 & int(lrb_panel(1)%N,8)*(int(lrb_panel(1)%N,8)-1_8)/2_8
393 factor_size = factor_size +
394 & int(lrb_panel(1)%N,8)*(int(lrb_panel(1)%N,8)+1_8)/2_8
397 DO iblock=1,
size(lrb_panel)
398 IF (lrb_panel(iblock)%ISLR)
THEN
399 factor_size = factor_size + int(lrb_panel(iblock)%K,8)*
400 & int(lrb_panel(iblock)%M+lrb_panel(iblock)%M,8)
402 factor_size = factor_size +
403 & int(lrb_panel(iblock)%M*lrb_panel(iblock)%N,8)
416 & STEP, Pruned_List, nb_prun_nodes, OOC_FCT_TYPE_LOC)
417 INTEGER,
intent(in) :: keep28, keep201, ooc_fct_type_loc, myid, n
418 INTEGER(8),
intent(in) :: fr_fact
419 INTEGER,
intent(in) :: nb_prun_nodes
420 INTEGER,
intent(in) :: pruned_list(nb_prun_nodes)
421 INTEGER,
intent(in) :: step(n)
423 INTEGER(8) :: pruned_size
424 (keep201 .GT. 0) then
426 DO i = 1, nb_prun_nodes
427 istep = step(pruned_list(i))
429 & (istep, ooc_fct_type_loc)
436 & (myid, n, keep28, keep201, keep485, fr_fact,
437 & step, pruned_list, nb_prun_nodes, ooc_fct_type_loc
440 INTEGER,
intent(in) :: keep28, keep201, ooc_fct_type_loc, n,
442 INTEGER(8),
intent(in) :: fr_fact
443 INTEGER,
intent(in) :: nb_prun_nodes, myid
444 INTEGER,
intent(in) :: pruned_list(nb_prun_nodes)
445 INTEGER,
intent(in) :: step(n)
448 INTEGER(8) :: pruned_size
450 DO i = 1, nb_prun_nodes
451 istep = step(pruned_list(i))
452 IF (keep201 .GT. 0)
THEN
454 & (istep, ooc_fct_type_loc)
457 IF (keep201.GT.0)
THEN
458 IF (fr_fact .NE. 0_8)
THEN
466 & (lp, lpok, prokg, mpg, perm_strat,
468 & irhs_ptr, size_irhs_ptr,
469 & irhs_sparse, nzrhs,
473 INTEGER,
INTENT(IN) :: LP, MPG, PERM_STRAT, N, NRHS,
476 LOGICAL,
INTENT(IN) :: LPOK, PROKG
477 INTEGER,
INTENT(IN) :: SYM_PERM(N)
478 INTEGER,
INTENT(IN) :: IRHS_PTR(SIZE_IRHS_PTR)
479 INTEGER,
INTENT(IN) :: IRHS_SPARSE(NZRHS)
480 INTEGER,
INTENT(OUT) :: PERM_RHS(NRHS)
481 INTEGER,
INTENT(OUT) :: IERR
482 INTEGER :: I,J,K, POSINPERMRHS, JJ,
484 INTEGER,
ALLOCATABLE :: ROW_REFINDEX(:)
486 IF ((perm_strat.NE.-1).AND.(perm_strat.NE.1))
THEN
489 &
WRITE(lp,*)
" INTERNAL ERROR -1 in "
490 &
" SMUMPS_PERMUTE_RHS_GS, PERM_STRAT =", perm_strat,
491 &
" is out of range "
494 IF (perm_strat.EQ.-1)
THEN
500 ALLOCATE(row_refindex(nrhs), stat=ierr)
504 WRITE(lp,*)
" ERROR -2 : ",
505 &
" ALLOCATE IN SMUMPS_PERMUTE_RHS_GS OF SIZE :",
511 IF (irhs_ptr(i+1)-irhs_ptr(i).LE.0)
THEN
514 row_refindex(i) = irhs_sparse(irhs_ptr(i))
516 row_refindex(i) = row_refindex(i-1)
519 row_refindex(i) = irhs_sparse(irhs_ptr(i))
529 IF (sym_perm(k).LT.kpos)
THEN
537 &
WRITE(lp,*)
" INTERNAL ERROR -3 in ",
538 &
" SMUMPS_PERMUTE_RHS_GS "
541 posinpermrhs = posinpermrhs + 1
542 perm_rhs(posinpermrhs) = jj
543 row_refindex(jj) = -row_refindex(jj)
545 IF (posinpermrhs.NE.nrhs)
THEN
547 &
WRITE(lp,*) " internal error -4 in
",
554 IF (allocated(ROW_REFINDEX)) DEALLOCATE(ROW_REFINDEX)
555 END SUBROUTINE SMUMPS_PERMUTE_RHS_GS
556 SUBROUTINE SMUMPS_PERMUTE_RHS_AM1
557 & (PERM_STRAT, SYM_PERM,
559 & PERM_RHS, SIZEPERM, IERR
562 INTEGER, INTENT(IN) :: PERM_STRAT, NHRS, SIZEPERM
563 INTEGER, INTENT(IN) :: SYM_PERM(SIZEPERM)
564 INTEGER, INTENT(IN) :: IRHS_PTR(NHRS)
565 INTEGER, INTENT(OUT):: IERR
566 INTEGER, INTENT(OUT):: PERM_RHS(SIZEPERM)
567 DOUBLE PRECISION :: RAND_NUM
571.NE..AND.
IF( (STRAT-3)
576.NE.
& (STRAT 6) ) THEN
577 WRITE(*,*)"warning: incorrect
value for the rhs permutation;
",
578 & "defaulting to post-order
"
581.EQ.
IF (STRAT -3) THEN
582 PERM_RHS(1:SIZEPERM)=0
584 CALL random_number(RAND_NUM)
585 RAND_NUM = RAND_NUM*dble(SIZEPERM)
586 J = ceiling(RAND_NUM)
587.NE.
DO WHILE (PERM_RHS(J)0)
588 CALL random_number(RAND_NUM)
589 RAND_NUM = RAND_NUM*dble(SIZEPERM)
590 J = ceiling(RAND_NUM)
594.EQ.
ELSEIF (STRAT -2) THEN
596 PERM_RHS(SIZEPERM -I +1) = I
598.EQ.
ELSEIF (STRAT -1) THEN
602.EQ.
ELSEIF (STRAT 1) THEN
604 PERM_RHS(SYM_PERM(I)) = I
606.EQ.
ELSEIF (STRAT 2) THEN
608 PERM_RHS(SIZEPERM-SYM_PERM(I)+1) = I
611 END SUBROUTINE SMUMPS_PERMUTE_RHS_AM1
612 SUBROUTINE SMUMPS_INTERLEAVE_RHS_AM1(
613 & PERM_RHS, SIZE_PERM,
614 & IPTR_WORKING, SIZE_IPTR_WORKING, WORKING, SIZE_WORKING,
616 & STEP, SYM_PERM, N, NBRHS,
617 & PROCNODE, NSTEPS, SLAVEF, KEEP199,
618 & behaviour_L0, reorder, n_select, PROKG, MPG
621 INTEGER, INTENT(IN) :: SIZE_PERM,
623 & IPTR_WORKING(SIZE_IPTR_WORKING),
625 & WORKING(SIZE_WORKING),
635 LOGICAL, INTENT(IN) :: behaviour_L0,
637 INTEGER, INTENT(INOUT) :: PERM_RHS(SIZE_PERM)
654 INTEGER, ALLOCATABLE, DIMENSION(:) :: TMP_RHS,
661 LOGICAL, ALLOCATABLE, DIMENSION(:) :: USED
662 LOGICAL :: allow_above_L0
663 INTEGER, EXTERNAL :: MUMPS_TYPENODE_ROUGH
664 NPROCS = SIZE_IPTR_WORKING - 1
665 ALLOCATE(TMP_RHS(SIZE_PERM),
667 & LOAD_PROCS(NPROCS),
669 & IPTR_PERM_WORKING(NPROCS+1),
670 & MYTYPENODE(NSTEPS),
673 WRITE(*,*)'Allocation error in SMUMPS_INTERLEAVE_RHS_AM1'
677 MYTYPENODE(I) = MUMPS_TYPENODE_ROUGH( PROCNODE(I), KEEP199 )
681.NE.
IF(IRHS_PTR(I+1)-IRHS_PTR(I)0) THEN
682 NB_NON_EMPTY = NB_NON_EMPTY + 1
686 IPTR_PERM_WORKING(1)=1
689 DO J=IPTR_WORKING(I),IPTR_WORKING(I+1)-1
690 USED(WORKING(J)) = .TRUE.
693.AND.
IF (USED(abs(STEP(PERM_RHS(J))))
694.NE.
& ((IRHS_PTR(PERM_RHS(J)+1)-IRHS_PTR(PERM_RHS(J)))0))
699 IPTR_PERM_WORKING(I+1) = K+1
701 SIZE_PERM_WORKING = K
702 ALLOCATE(PERM_WORKING(SIZE_PERM_WORKING),
705 WRITE(*,*)'Allocation error in SMUMPS_INTERLEAVE_RHS_AM1'
711 DO J=IPTR_WORKING(I),IPTR_WORKING(I+1)-1
712 USED(WORKING(J)) = .TRUE.
715.AND.
IF (USED(abs(STEP(PERM_RHS(J))))
716.NE.
& ((IRHS_PTR(PERM_RHS(J)+1)-IRHS_PTR(PERM_RHS(J)))0))
719 PERM_WORKING(K) = PERM_RHS(J)
723 IF(behaviour_L0) THEN
725 allow_above_L0 = .false.
728.LE..AND.
IF((MYTYPENODE(abs(STEP(I)))1)
729.NE.
& (IRHS_PTR(I+1)-IRHS_PTR(I)0))
731 to_be_found = to_be_found + 1
736 allow_above_L0 = .true.
737 to_be_found = NB_NON_EMPTY
739 PTR_PROCS(1:NPROCS) = IPTR_PERM_WORKING(1:NPROCS)
743 n_select_loc = n_select
744.LE.
IF (n_select_loc0) THEN
750.LT.
DO WHILE(selectedto_be_found)
752.LT.
DO WHILE(local_selectedn_select_loc)
753.EQ.
IF(PTR_PROCS(current_proc)
754 & IPTR_PERM_WORKING(current_proc+1))
758 entry = PERM_WORKING(PTR_PROCS(current_proc))
759 node = abs(STEP(entry))
760.NOT.
IF(USED(entry)) THEN
761.OR..LE.
IF(allow_above_L0(MYTYPENODE(node)1)) THEN
763 selected = selected + 1
764 local_selected = local_selected + 1
765 posintmprhs = posintmprhs + 1
766 TMP_RHS(posintmprhs) = entry
767.EQ.
IF(selectedto_be_found) EXIT
770 PTR_PROCS(current_proc) = PTR_PROCS(current_proc) + 1
773 current_proc = mod(current_proc,NPROCS)+1
775 to_be_found = NB_NON_EMPTY - to_be_found
776 allow_above_L0 = .true.
777 PTR_PROCS(1:NPROCS) = IPTR_PERM_WORKING(1:NPROCS)
780.EQ.
IF(IRHS_PTR(PERM_RHS(I)+1)-IRHS_PTR(PERM_RHS(I))0) THEN
781 posintmprhs = posintmprhs+1
782 TMP_RHS(posintmprhs) = PERM_RHS(I)
783.EQ.
IF(posintmprhsSIZE_PERM) EXIT
788 ALLOCATE(PERM_PO(N),STAT=IERR)
790 WRITE(*,*)'Allocation error in INTERLEAVE_RHS_AM1'
794 PERM_PO(SYM_PERM(J))=J
800 USED(TMP_RHS(NBRHS*(I-1)+J))=.TRUE.
803 IF(USED(PERM_PO(J))) THEN
804 posintmprhs = posintmprhs + 1
805 PERM_RHS(posintmprhs) = PERM_PO(J)
809.NE.
IF(mod(N,NBRHS)0) THEN
812 USED(TMP_RHS(NBRHS*nblocks+J))=.TRUE.
815 IF(USED(PERM_PO(J))) THEN
816 posintmprhs = posintmprhs + 1
817 PERM_RHS(posintmprhs) = PERM_PO(J)
833 END SUBROUTINE SMUMPS_INTERLEAVE_RHS_AM1
integer function father(nn, ixc, ipartc, ipart, sontype)
end diagonal values have been computed in the(sparse) matrix id.SOL
for(i8=*sizetab-1;i8 >=0;i8--)
subroutine, public smumps_blr_retrieve_panel_loru(iwhandler, loru, ipanel, thelrbpanel)
logical function, public smumps_blr_empty_panel_loru(iwhandler, loru, ipanel)
subroutine, public smumps_blr_retrieve_nb_panels(iwhandler, nb_panels)
subroutine, public smumps_sol_es_init(size_of_block_arg, keep201)
subroutine, public smumps_tree_prun_nodes_stats(myid, n, keep28, keep201, fr_fact, step, pruned_list, nb_prun_nodes, ooc_fct_type_loc)
subroutine, public smumps_tree_prun_nodes(fill, dad, ne_steps, frere, keep28, fils, step, n, nodes_rhs, nb_nodes_rhs, to_process, nb_prun_nodes, nb_prun_roots, nb_prun_leaves, pruned_list, pruned_roots, pruned_leaves)
subroutine, public smumps_chain_prun_nodes(fill, dad, keep28, step, n, nodes_rhs, nb_nodes_rhs, pruned_sons, to_process, nb_prun_nodes, nb_prun_roots, nb_prun_leaves, pruned_list, pruned_roots, pruned_leaves)
integer(8), dimension(:,:), pointer size_of_block
subroutine, public smumps_chain_prun_nodes_stats(myid, n, keep28, keep201, keep485, fr_fact, step, pruned_list, nb_prun_nodes, ooc_fct_type_loc)
integer(8) function smumps_local_factor_size_blr(iw, liw, ptr, lrstatus, iwhandler, phase, ldlt, is_root)
integer(8), public pruned_size_loaded
subroutine, public smumps_propagate_rhs_bounds(pruned_leaves, nb_pruned_leaves, step, n, pruned_sons, dad, rhs_bounds, nsteps, myid, comm, keep485, iw, liw, ptrist, kixsz, ooc_fct_loc, phase, ldlt, k38)
integer(8) function smumps_local_factor_size(iw, liw, ptr, phase, ldlt, is_root)
subroutine, public smumps_initialize_rhs_bounds(step, n, irhs_ptr, nbcol, irhs_sparse, nz_rhs, jbeg_rhs, perm_rhs, size_perm_rhs, k242, k243, uns_perm_inv, size_uns_perm_inv, k23, rhs_bounds, nsteps, nb_sparse, myid, mode)
subroutine smumps_permute_rhs_gs(lp, lpok, prokg, mpg, perm_strat, sym_perm, n, nrhs, irhs_ptr, size_irhs_ptr, irhs_sparse, nzrhs, perm_rhs, ierr)