22 & (inode, n, iwhdlr, npiv_global, nslaves,
25 & ld_wcbpiv, ld_wcbcb,
26 & ppiv_init, pcb_init,
27 & rhscomp, lrhscomp, nrhs,
28 & posinrhscomp_fwd, jbdeb, jbfin,
29 & mtype, keep, keep8, oocwrite_compatible_with_blr,
31 INTEGER,
INTENT(IN) :: INODE, N, IWHDLR, NPIV_GLOBAL, NSLAVES
32 INTEGER,
INTENT(IN) :: MTYPE, LIELL, KEEP(500)
33 INTEGER(8),
INTENT(IN) :: KEEP8(150)
34 INTEGER,
INTENT(IN) :: LIW, IPOS_INIT, LRHSCOMP
35 INTEGER,
INTENT(IN) :: IW(LIW), POSINRHSCOMP_FWD(N)
36 INTEGER(8),
INTENT(IN) :: LWCB, PPIV_INIT, PCB_INIT
37 INTEGER,
INTENT(IN) :: LD_WCBPIV, LD_WCBCB, NRHS, JBDEB, JBFIN
38 DOUBLE PRECISION,
INTENT(INOUT) :: WCB(LWCB)
39 INTEGER,
INTENT(INOUT) :: IFLAG, IERROR
40 DOUBLE PRECISION,
INTENT(INOUT) :: RHSCOMP(LRHSCOMP, NRHS)
41 LOGICAL,
INTENT(IN) :: OOCWRITE_COMPATIBLE_WITH_BLR
42 INTEGER :: I, NPARTSASS, NB_BLR , NELIM, LDADIAG,
43 & DIAGSIZ_DYN, DIAGSIZ_STA, IBEG_BLR, IEND_BLR,
44 & LD_CB, NELIM_GLOBAL, NRHS_B, IPOS, KCB
45 INTEGER(8) :: PPIV, PCB
47 DOUBLE PRECISION,
POINTER,
DIMENSION(:) ::
48 TYPE(
lrb_type),
POINTER,
DIMENSION(:) :: BLR_PANEL
49 DOUBLE PRECISION :: ONE, MONE, ZERO
50 parameter(one = 1.0d0, mone=-1.0d0)
52 nrhs_b = jbfin-jbdeb+1
54 IF (
associated(
blr_array(iwhdlr)%PANELS_L))
56 npartsass=
size(
blr_array(iwhdlr)%PANELS_L)
57 nb_blr =
size(
blr_array(iwhdlr)%BEGS_BLR_STATIC) -1
59 WRITE(6,*)
" Internal error in DMUMPS_SOL_FWD_SU_MASTER"
62 IF (
associated(
blr_array(iwhdlr)%PANELS_U))
64 npartsass=
size(
blr_array(iwhdlr)%PANELS_U)
65 nb_blr =
size(
blr_array(iwhdlr)%BEGS_BLR_STATIC) -1
68 IF (nslaves.EQ.0 .OR. (keep(50).eq.0 .and. mtype .NE.1))
THEN
76 &
blr_array(iwhdlr)%BEGS_BLR_STATIC(npartsass+1)
77 & -
blr_array(iwhdlr)%BEGS_BLR_DYNAMIC(npartsass+1)
79 ibeg_blr =
blr_array(iwhdlr)%BEGS_BLR_DYNAMIC(i)
80 iend_blr =
blr_array(iwhdlr)%BEGS_BLR_DYNAMIC(i+1) -1
81 diagsiz_dyn =
blr_array(iwhdlr)%BEGS_BLR_DYNAMIC(i+1) -
83 diagsiz_sta =
blr_array(iwhdlr)%BEGS_BLR_STATIC(i+1) -
85 IF (keep(50).NE.0)
THEN
90 IF (iend_blr.EQ.npiv_global)
THEN
93 pcb = ppiv + int(diagsiz_dyn,8)
95 IF ( diagsiz_dyn.EQ.0) cycle
96 nelim = diagsiz_sta - diagsiz_dyn
97 IF ( mtype .EQ. 1 )
THEN
98 blr_panel =>
blr_array(iwhdlr)%PANELS_L(i)%LRB_PANEL
100 blr_panel =>
blr_array(iwhdlr)%PANELS_U(i)%LRB_PANEL
102 diag =>
blr_array(iwhdlr)%DIAG_BLOCKS(i)%DIAG_BLOCK
104 & diagsiz_dyn , ldadiag, nrhs_b, wcb, lwcb, npiv_global,
107 kcb = int(pcb-ppiv_init+1)
108 IF (iend_blr.EQ.npiv_global)
THEN
114 IF (kcb.LE.npiv_global .AND.
115 & kcb+nelim-1.GT.npiv_global)
THEN
116 CALL dgemm(
'T',
'N', npiv_global-kcb+1, nrhs_b,
118 & diag(1+diagsiz_dyn*ldadiag), diagsiz_dyn,
119 & wcb(ppiv), ld_wcbpiv,
120 & one, wcb(pcb), ld_cb)
121 CALL dgemm(
'T',
'N', kcb+nelim-npiv_global-1,
122 & nrhs_b, diagsiz_dyn, mone,
123 & diag(1+diagsiz_dyn*ldadiag +
124 & (npiv_global-kcb+1)*diagsiz_dyn),
126 & wcb(ppiv), ld_wcbpiv,
127 & one, wcb(pcb_init), ld_wcbcb)
129 CALL dgemm(
'T',
'N', nelim, nrhs_b, diagsiz_dyn, mone,
130 & diag(1+diagsiz_dyn*ldadiag), diagsiz_dyn,
131 & wcb(ppiv), ld_wcbpiv,
132 & one, wcb(pcb), ld_cb)
135 IF (kcb.LE.npiv_global .AND.
136 & kcb+nelim-1.GT.npiv_global)
THEN
137 CALL dgemm(
'N',
'N', npiv_global-kcb+1,
138 & nrhs_b, diagsiz_dyn, mone,
139 & diag(1+diagsiz_dyn), diagsiz_sta,
140 & wcb(ppiv), ld_wcbpiv,
141 & one, wcb(pcb), ld_cb)
142 CALL dgemm(
'N',
'N', kcb+nelim-npiv_global-1,
143 & nrhs_b, diagsiz_dyn, mone,
144 & diag(1+diagsiz_dyn+npiv_global-kcb+1),
146 & wcb(ppiv), ld_wcbpiv,
147 & one, wcb(pcb_init), ld_wcbcb)
149 CALL dgemm(
'N', 'n
', NELIM, NRHS_B, DIAGSIZ_DYN, MONE,
150 & DIAG(1+DIAGSIZ_DYN), DIAGSIZ_STA,
151 & WCB(PPIV), LD_WCBPIV,
152 & ONE, WCB(PCB), LD_CB)
156 CALL DMUMPS_SOL_FWD_BLR_UPDATE (
157 & WCB, LWCB, 1, LD_WCBPIV, PPIV_INIT, 1,
158 & WCB, LWCB, LD_WCBCB, PCB_INIT,
160 & NRHS_B, NPIV_GLOBAL,
161 & BLR_PANEL, LAST_BLR, I,
162 & BLR_ARRAY(IWHDLR)%BEGS_BLR_STATIC,
163 & KEEP8, KEEP(34), KEEP(450), .FALSE.,
165.LT.
IF (IFLAG0) RETURN
166 CALL DMUMPS_SOL_LD_AND_RELOAD_PANEL (
167 & INODE, N, DIAGSIZ_DYN, LIELL, NELIM, NSLAVES,
170 & DIAG(1), int(size(DIAG),8), 1_8,
171 & WCB, LWCB, LD_WCBPIV,
172 & RHSCOMP, LRHSCOMP, NRHS,
173 & POSINRHSCOMP_FWD, JBDEB, JBFIN,
174 & MTYPE, KEEP, OOCWRITE_COMPATIBLE_WITH_BLR,
177 PPIV = PPIV + int(DIAGSIZ_DYN,8)
178 IPOS = IPOS + DIAGSIZ_DYN
379 SUBROUTINE DMUMPS_SOL_BWD_LR_SU
380 & ( INODE, IWHDLR, NPIV_GLOBAL, NSLAVES,
381 & LIELL, WCB, LWCB, NRHS_B, PTWCB,
382 & RHSCOMP, LRHSCOMP, NRHS,
383 & IPOSINRHSCOMP, JBDEB,
384 & MTYPE, KEEP, KEEP8,
386 INTEGER, INTENT(IN) :: INODE, IWHDLR, NPIV_GLOBAL, NSLAVES
387 INTEGER, INTENT(IN) :: MTYPE, LIELL, KEEP(500)
388 INTEGER(8), INTENT(IN) :: KEEP8(150)
389 INTEGER, INTENT(IN) :: IPOSINRHSCOMP, JBDEB, LRHSCOMP, NRHS
390 INTEGER(8), INTENT(IN) :: LWCB, PTWCB
391 INTEGER, INTENT(IN) :: NRHS_B
392 INTEGER, INTENT(INOUT) :: IFLAG, IERROR
393 DOUBLE PRECISION, INTENT(INOUT) :: WCB(LWCB)
394 DOUBLE PRECISION RHSCOMP(LRHSCOMP,NRHS)
395 INTEGER :: I, NPARTSASS, NB_BLR, LAST_BLR,
396 & NELIM_PANEL, LD_WCB,
397 & DIAGSIZ_DYN, DIAGSIZ_STA, LDADIAG,
398 & IEND_BLR, IBEG_BLR, PCBINRHSCOMP
399 INTEGER(8) :: PCB_LAST, PWCB
400 INTEGER :: IPIV_PANEL
401 DOUBLE PRECISION, POINTER, DIMENSION(:) :: DIAG
402 TYPE(LRB_TYPE), POINTER, DIMENSION(:) :: BLR_PANEL
403 DOUBLE PRECISION :: ONE, MONE, ZERO
404 PARAMETER (ONE = 1.0D0, MONE=-1.0D0)
405 PARAMETER (ZERO=0.0D0)
406.EQ..AND..EQ.
IF ((MTYPE1)(KEEP(50)0)) THEN
407 IF (associated(BLR_ARRAY(IWHDLR)%PANELS_U))
409 NPARTSASS=size(BLR_ARRAY(IWHDLR)%PANELS_U)
410 NB_BLR = size(BLR_ARRAY(IWHDLR)%BEGS_BLR_STATIC) -1
413 IF (associated(BLR_ARRAY(IWHDLR)%PANELS_L))
415 NPARTSASS=size(BLR_ARRAY(IWHDLR)%PANELS_L)
416 NB_BLR = size(BLR_ARRAY(IWHDLR)%BEGS_BLR_STATIC) -1
418 WRITE(6,*) " Internal error in DMUMPS_SOL_FWD_SU_MASTER"
421 PCBINRHSCOMP= IPOSINRHSCOMP + NPIV_GLOBAL
422 PCB_LAST = PTWCB + int(LIELL ,8)
423 PWCB = PTWCB + int(NPIV_GLOBAL,8)
426 IBEG_BLR = BLR_ARRAY(IWHDLR)%BEGS_BLR_DYNAMIC(I)
427 IEND_BLR = BLR_ARRAY(IWHDLR)%BEGS_BLR_DYNAMIC(I+1) -1
428 DIAGSIZ_DYN = BLR_ARRAY(IWHDLR)%BEGS_BLR_DYNAMIC(I+1) -
430 DIAGSIZ_STA = BLR_ARRAY(IWHDLR)%BEGS_BLR_STATIC(I+1) -
432.NE.
IF (KEEP(50)0) THEN
433 LDADIAG = DIAGSIZ_DYN
435 LDADIAG = DIAGSIZ_STA
437.EQ.
IF (DIAGSIZ_DYN0) CYCLE
438 NELIM_PANEL = DIAGSIZ_STA - DIAGSIZ_DYN
439 IPIV_PANEL = IPOSINRHSCOMP + IBEG_BLR -1
440.EQ..AND..EQ.
IF ( MTYPE 1 KEEP(50)0) THEN
441 BLR_PANEL => BLR_ARRAY(IWHDLR)%PANELS_U(I)%LRB_PANEL
443 BLR_PANEL => BLR_ARRAY(IWHDLR)%PANELS_L(I)%LRB_PANEL
445.EQ..AND..GT..AND..NE.
IF (KEEP(50)0 NSLAVES0 MTYPE1) THEN
450 CALL DMUMPS_SOL_BWD_BLR_UPDATE (
451 & RHSCOMP, int(LRHSCOMP,8), NRHS, LRHSCOMP,
452 & int(IPOSINRHSCOMP,8), JBDEB,
453 & WCB, LWCB, LD_WCB, PWCB,
455 & NRHS_B, NPIV_GLOBAL,
456 & BLR_PANEL, LAST_BLR,
457 & I, BLR_ARRAY(IWHDLR)%BEGS_BLR_STATIC,
458 & KEEP8, KEEP(34), KEEP(450), .FALSE., IFLAG, IERROR)
459.LT.
IF (IFLAG0) RETURN
460 DIAG => BLR_ARRAY(IWHDLR)%DIAG_BLOCKS(I)%DIAG_BLOCK
461.GT.
IF (NELIM_PANEL0) THEN
462.EQ..AND..EQ.
IF (MTYPE1KEEP(50)0) THEN
463.EQ.
IF (IEND_BLRNPIV_GLOBAL) THEN
464 CALL dgemm('t
', 'n
', DIAGSIZ_DYN, NRHS_B, NELIM_PANEL,
465 & MONE, DIAG(1+DIAGSIZ_DYN), DIAGSIZ_STA, WCB(PWCB),
466 & LD_WCB, ONE , RHSCOMP(IPIV_PANEL,JBDEB),LRHSCOMP)
468.LE..AND.
IF (IEND_BLR+1NPIV_GLOBAL
469.GT.
& IEND_BLR+NELIM_PANELNPIV_GLOBAL) THEN
470 CALL dgemm('t
', 'n', diagsiz_dyn, nrhs_b,
471 & npiv_global-iend_blr,
472 & mone, diag(1+diagsiz_dyn), diagsiz_sta,
473 & rhscomp(ipiv_panel+diagsiz_dyn,jbdeb), lrhscomp,
474 & one, rhscomp(ipiv_panel,jbdeb), lrhscomp)
475 CALL dgemm(
'T',
'N', diagsiz_dyn, nrhs_b,
476 & iend_blr+nelim_panel-npiv_global,
477 & mone, diag(1+diagsiz_dyn+npiv_global-iend_blr),
480 & one, rhscomp(ipiv_panel,jbdeb), lrhscomp)
482 CALL dgemm(
'T',
'N', diagsiz_dyn, nrhs_b, nelim_panel,
483 & mone, diag(1+diagsiz_dyn), diagsiz_sta,
484 & rhscomp(ipiv_panel+diagsiz_dyn,jbdeb), lrhscomp,
485 & one, rhscomp(ipiv_panel,jbdeb), lrhscomp)
489 IF (iend_blr.EQ.npiv_global)
THEN
490 CALL dgemm(
'N',
'N', diagsiz_dyn, nrhs_b, nelim_panel,
491 & mone, diag(1+diagsiz_dyn*ldadiag), diagsiz_dyn,
492 & wcb(pwcb), ld_wcb, one,
493 & rhscomp(ipiv_panel,jbdeb), lrhscomp)
495 IF (iend_blr+1.LE.npiv_global .AND.
496 & iend_blr+nelim_panel.GT.npiv_global)
THEN
497 CALL dgemm(
'N', 'n
', DIAGSIZ_DYN, NRHS_B,
498 & NPIV_GLOBAL-IEND_BLR,
499 & MONE, DIAG(1+DIAGSIZ_DYN*LDADIAG), DIAGSIZ_DYN,
500 & RHSCOMP(IPIV_PANEL+DIAGSIZ_DYN,JBDEB), LRHSCOMP,
501 & ONE, RHSCOMP(IPIV_PANEL,JBDEB), LRHSCOMP)
502 CALL dgemm('n
', 'n
', DIAGSIZ_DYN, NRHS_B,
503 & IEND_BLR+NELIM_PANEL-NPIV_GLOBAL,
504 & MONE, DIAG(1+DIAGSIZ_DYN*LDADIAG +
505 & (NPIV_GLOBAL-IEND_BLR)*DIAGSIZ_DYN),
508 & ONE, RHSCOMP(IPIV_PANEL,JBDEB), LRHSCOMP)
510 CALL dgemm('n
', 'n
', DIAGSIZ_DYN, NRHS_B, NELIM_PANEL,
511 & MONE, DIAG(1+DIAGSIZ_DYN*LDADIAG), DIAGSIZ_DYN,
512 & RHSCOMP(IPIV_PANEL+DIAGSIZ_DYN,JBDEB), LRHSCOMP,
513 & ONE, RHSCOMP(IPIV_PANEL,JBDEB), LRHSCOMP)
518.LT.
IF (IFLAG0) RETURN
519 CALL DMUMPS_SOLVE_BWD_LR_TRSOLVE (
520 & DIAG(1), size(DIAG), DIAGSIZ_DYN, NELIM_PANEL, LIELL,
522 & RHSCOMP, LRHSCOMP, NRHS,
528 SUBROUTINE DMUMPS_SOL_BWD_BLR_UPDATE (
529 & ARRAYPIV, LPIV, LPIVCOL, LDPIV, POSPIV, POSPIVCOL,
530 & ARRAYCB, LCB, LDCB, POSCB,
533 & BLR_PANEL, LAST_BLR, CURRENT_BLR,
535 & KEEP8, K34, K450, IS_T2_SLAVE,
538 INTEGER(8), INTENT(IN) :: LPIV, LCB, POSPIV, POSCB, POSDIAG
539 INTEGER,INTENT(IN) :: LPIVCOL, POSPIVCOL
540 DOUBLE PRECISION, INTENT(INOUT) :: ARRAYPIV(LPIV,LPIVCOL)
541 DOUBLE PRECISION, INTENT(INOUT) :: ARRAYCB(LCB)
542 INTEGER, INTENT(IN) :: LAST_BLR, NRHS_B, LDPIV, LDCB,
543 & CURRENT_BLR, NPIV, K34, K450
544 TYPE(LRB_TYPE), TARGET,INTENT(IN) ::
546 INTEGER(8), INTENT(IN) :: KEEP8(150)
547 LOGICAL, INTENT(IN) :: IS_T2_SLAVE
548 INTEGER :: BEGS_BLR_STATIC(:)
549 INTEGER, INTENT(INOUT) :: IFLAG, IERROR
550 INTEGER :: I, K, M, N, IBEG_BLOCK, IEND_BLOCK
552 INTEGER(8) :: POSBLOCK
553 TYPE(LRB_TYPE), POINTER :: LRB
554 DOUBLE PRECISION, ALLOCATABLE, DIMENSION(:) :: TEMP_BLOCK
555 DOUBLE PRECISION, ALLOCATABLE, DIMENSION(:) :: DEST_ARRAY
557 DOUBLE PRECISION :: ONE, MONE, ZERO
558 PARAMETER (ONE = 1.0D0, MONE=-1.0D0)
559 PARAMETER (ZERO=0.0D0)
561 DO I = CURRENT_BLR+1, LAST_BLR
562 KMAX = max(KMAX, BLR_PANEL(I-CURRENT_BLR)%K)
564.LT.
IF (CURRENT_BLRLAST_BLR) THEN
569 allocate(DEST_ARRAY(N*NRHS_B),stat=allocok)
570.GT.
IF (allocok 0) THEN
577!$OMP PARALLEL PRIVATE(TEMP_BLOCK,allocok)
580 allocate(TEMP_BLOCK(KMAX*NRHS_B), stat=allocok )
581.GT.
IF (allocok 0) THEN
583 IERROR = NRHS_B * KMAX
584 write(*,*) 'allocation problem in blr routine
586 &
'not enough memory? memory requested = ', ierror
598 DO i = current_blr+1, last_blr
599 IF (iflag.LT.0) cycle
600 ibeg_block = begs_blr_static(i)
601 iend_block = begs_blr_static(i+1)-1
602 lrb => blr_panel(i-current_blr)
607 IF (is_t2_slave)
THEN
608 posblock = poscb +int(ibeg_block-1,8)
609 CALL dgemm(
'T',
'N', k, nrhs_b, m, one,
611 & arraycb(posblock), ldcb, zero,
613 ELSE IF (ibeg_block.LE.npiv.AND.iend_block.GT.npiv)
THEN
614 posblock = pospiv+int(ibeg_block-1,8)
615 CALL dgemm(
'T',
'N', k, nrhs_b, npiv-ibeg_block+1, one,
617 & arraypiv(posblock,pospivcol), ldpiv,
618 & zero, temp_block(1), k)
619 CALL dgemm(
'T',
'N', k, nrhs_b, ibeg_block+m-npiv-1,
620 & one, lrb%Q(npiv-ibeg_block+2,1), m,
621 & arraycb(poscb), ldcb,
624 ELSEIF (ibeg_block.LE.npiv)
THEN
625 posblock = pospiv+int(ibeg_block-1,8)
626 CALL dgemm(
'T',
'N', k, nrhs_b, m, one,
628 & arraypiv(posblock,pospivcol), ldpiv,
629 & zero, temp_block(1), k)
631 posblock = poscb+int(ibeg_block-1-npiv,8)
632 CALL dgemm(
'T',
'N', k, nrhs_b, m, one,
634 & arraycb(posblock), ldcb, zero,
637 CALL dgemm(
'T',
'N', n, nrhs_b, k, mone,
639 & temp_block(1), k, one,
643 IF (is_t2_slave)
THEN
644 posblock = poscb+int(ibeg_block-1,8)
645 CALL dgemm(
'T',
'N', n, nrhs_b, m, mone,
646 & lrb%Q(1,1), m, arraycb(posblock), ldcb,
647 & one, dest_array(1), n)
648 ELSE IF (ibeg_block.LE.npiv.AND.iend_block.GT.npiv)
THEN
649 posblock = pospiv+int(ibeg_block-1,8)
650 CALL dgemm(
'T',
'N', n, nrhs_b, npiv-ibeg_block+1, mone,
651 & lrb%Q(1,1), m, arraypiv(posblock,pospivcol), ldpiv,
652 & one, dest_array(1), n)
653 CALL dgemm(
'T',
'N', n, nrhs_b, ibeg_block+m-npiv-1, mone,
654 & lrb%Q(npiv-ibeg_block+2,1), m, arraycb(poscb),
655 & ldcb, one, dest_array(1), n)
656 ELSEIF (ibeg_block.LE.npiv)
THEN
657 posblock = pospiv+int(ibeg_block-1,8)
658 CALL dgemm(
'T',
'N', n, nrhs_b, m, mone,
659 & lrb%Q(1,1), m, arraypiv(posblock,pospivcol), ldpiv,
660 & one, dest_array(1), n)
662 posblock = poscb+int(ibeg_block-1-npiv,8)
663 CALL dgemm(
'T',
'N', n, nrhs_b, m, mone,
664 & lrb%Q(1,1), m, arraycb(posblock), ldcb,
665 & one, dest_array(1), n)
673 IF (
allocated(temp_block))
deallocate(temp_block)
678 IF (is_t2_slave)
THEN
680 call daxpy(n, one, dest_array((i-1)*n+1), 1,
681 & arraypiv(posdiag+(i-1)*ldpiv,pospivcol), 1
685 call daxpy(n, one, dest_array((i-1)*n+1), 1,
686 & arraypiv(posdiag,pospivcol
690 IF (
allocated(dest_array))
DEALLOCATE(dest_array)
695 & DIAG, LDIAG, NPIV, NELIM, LIELL,
697 & RHSCOMP, LRHSCOMP, NRHS,
698 & PPIVINRHSCOMP, JBDEB,
700 INTEGER,
INTENT(IN) :: MTYPE, LIELL, NPIV, NELIM, KEEP(500)
701 INTEGER,
INTENT(IN) :: NRHS_B, LDIAG
702 INTEGER,
INTENT(IN) :: PPIVINRHSCOMP, JBDEB, , NRHS
703 INTEGER(8),
INTENT(IN) :: LWC
704 DOUBLE PRECISION,
INTENT(IN) :: DIAG(LDIAG)
705 DOUBLE PRECISION,
INTENT(INOUT) :: W(LWC)
706 DOUBLE PRECISION RHSCOMP(LRHSCOMP,NRHS)
709 parameter(one = 1.0d0)
710 IF ( mtype .eq. 1 )
THEN
712 CALL dtrsm(
'L',
'L',
'T',
'N', npiv, nrhs_b, one, diag(1),
713 & ldaj, rhscomp(ppivinrhscomp,jbdeb),
716 IF ( keep(50) .EQ. 0 )
THEN
721 CALL dtrsm(
'L',
'U',
'N',
'U', npiv, nrhs_b, one, diag(1),
722 & ldaj, rhscomp(ppivinrhscomp,jbdeb), lrhscomp)
subroutine dmumps_sol_fwd_blr_update(arraypiv, lpiv, lpivcol, ldpiv, pospiv, pospivcol, arraycb, lcb, ldcb, poscb, posdiag, nrhs_b, npiv, blr_panel, last_blr, current_blr, begs_blr_static, keep8, k34, k450, is_t2_slave, iflag, ierror)
subroutine dmumps_sol_fwd_lr_su(inode, n, iwhdlr, npiv_global, nslaves, iw, ipos_init, liw, liell, wcb, lwcb, ld_wcbpiv, ld_wcbcb, ppiv_init, pcb_init, rhscomp, lrhscomp, nrhs, posinrhscomp_fwd, jbdeb, jbfin, mtype, keep, keep8, oocwrite_compatible_with_blr, iflag, ierror)
subroutine dmumps_sol_bwd_blr_update(arraypiv, lpiv, lpivcol, ldpiv, pospiv, pospivcol, arraycb, lcb, ldcb, poscb, posdiag, nrhs_b, npiv, blr_panel, last_blr, current_blr, begs_blr_static, keep8, k34, k450, is_t2_slave, iflag, ierror)