17 & DIAG_ORIG, SIZEDIAG_ORIG, GW_FACTCUMUL,
18 & NFRONT, NASS, IBEG_BLOCK_TO_SEND, IBEG_BLOCK, IEND_BLOCK,
20 & N, INODE, IW, LIW, A, LA, NNEGW, NB22T2W, NBTINYW,
21 & DET_EXPW, DET_MANTW, DET_SIGNW,
24 & SEUIL,KEEP,KEEP8,PIVSIZ,
25 & DKEEP,PIVNUL_LIST,LPN_LIST,
26 & PP_FIRST2SWAP_L, PP_LastPanelonDisk,
27 & PP_LastPIVRPTRIndexFilled,
29 & Inextpiv, IEND_BLR, LR_ACTIVATED,
30 & OOC_EFFECTIVE_ON_FRONT)
35 DOUBLE PRECISION (SIZEDIAG_ORIG)
36 DOUBLE PRECISION GW_FACTCUMUL
37 INTEGER NFRONT,NASS,N,LIW,INODE,IFLAG,INOPV
38 INTEGER NASS2, IBEG_BLOCK_TO_SEND, , IEND_BLOCK
39 INTEGER,
intent(inout) :: NNEGW, NB22T2W,
40 INTEGER,
intent(inout) :: DET_EXPW, DET_SIGNW
41 COMPLEX(kind=8),
intent(inout) :: DET_MANTW
44 INTEGER,
intent(in) :: PIVOT_OPTION, IEND_BLR
45 LOGICAL,
intent(in) :: LR_ACTIVATED
46 INTEGER,
intent(inout) ::
47 LOGICAL,
intent(in) :: OOC_EFFECTIVE_ON_FRONT
50 DOUBLE PRECISION UU, UULOC, SEUIL
51 COMPLEX(kind=8) CSEUIL
58 INTEGER PIVNUL_LIST(LPN_LIST)
59 DOUBLE PRECISION DKEEP(230)
60 INTEGER PP_FIRST2SWAP_L, PP_LastPanelonDisk
61 INTEGER PP_LastPIVRPTRIndexFilled
63 INTEGER(8) :: POSPV1,POSPV2,OFFDAG,APOSJ
65 INTEGER :: IPIVNUL, HF
66 DOUBLE PRECISION RMAX,AMAX,TMAX,RMAX_NORELAX,MAX_PREV_in_PARPIV
67 DOUBLE PRECISION MAXPIV, ABS_PIVOT
68 DOUBLE PRECISION , TMAX_NOSLAVE
69 COMPLEX(kind=8) PIVOT,DETPIV
70 DOUBLE PRECISION ABSDETPIV
71 include
'mumps_headers.h'
72 INTEGER(8) :: APOSMAX, APOSROW
74 INTEGER(8) :: J1, J2, JJ, KK
75 DOUBLE PRECISION :: GROWTH, RSWOP
76 DOUBLE PRECISION :: UULOCM1
79 DOUBLE PRECISION,
PARAMETER :: RZERO = 0.0d0
80 DOUBLE PRECISION,
PARAMETER :: RONE = 1.0d0
81 COMPLEX(kind=8) ZERO, ONE
82 parameter( zero = (0.0d0,0.0d0) )
83 parameter( one = (1.0d0,0.0d0) )
84 DOUBLE PRECISION PIVNUL, VALTMP
86 INTEGER NPIV,IPIV,K219
87 INTEGER NPIVP1,ILOC,K,J
88 INTEGER ISHIFT, K206, IPIV_END, IPIV_SHIFT
90 INTEGER I_PIVRPTR, I_PIVR, NBPANELS_L
98 hf = 6 + iw(ioldps+5+keep(ixsz)) + keep(ixsz)
101 fixa =
cmplx(dkeep(2),kind=kind(fixa))
102 cseuil =
cmplx(seuil,kind=kind(cseuil))
104 ldafs8 = int(ldafs,8)
105 IF ((keep(50).NE.1) .AND. ooc_effective_on_front)
THEN
108 & ioldps+2*nfront+6+iw(ioldps+5+keep(ixsz))
114 IF (uuloc.GT.rzero)
THEN
120 IF (k219.LT.2) gw_factcumul = rone
122 npiv = iw(ioldps+1+keep(ixsz))
124 iloc = npivp1 - ibeg_block_to_send + 1
126 aposmax = poselt+ldafs8*ldafs8-1_8
127 IF(inopv .EQ. -1)
THEN
128 apos = poselt + ldafs8*int(npivp1-1,8) + int(npiv,8)
130 abs_pivot = abs(pivot)
133 & dkeep, keep, .true.)
134 IF(abs_pivot.LT.seuil)
THEN
135 IF(dble(a(apos)) .GE. rzero)
THEN
140 nbtinyw = nbtinyw + 1
141 ELSE IF (keep(258) .NE.0 )
THEN
144 IF ((keep(50).NE.1) .AND. ooc_effective_on_front)
THEN
146 & iw(i_pivr), nass, npivp1, npivp1,
147 & pp_lastpanelondisk,
148 & pp_lastpivrptrindexfilled)
153 IF ((k219.GE.2).AND.(npivp1.EQ.1))
THEN
157 diag_orig(ipiv) = abs(a(poselt +
158 & (ldafs8+1_8)*int(ipiv-1,8)))
160 ELSE IF (k219.GE.4)
THEN
163 apos = poselt + ldafs8*int(ipiv-1,8)
164 pospv1 = apos + int(ipiv - 1,8)
165 diag_orig(ipiv) =
max( abs(a(pospv1)), diag_orig(ipiv) )
167 diag_orig(ipiv) =
max( abs(a(pospv1)), diag_orig(ipiv
168 diag_orig(ipiv+j-ipiv) =
max( abs(a(pospv1)),
169 & diag_orig(ipiv+j-ipiv) )
170 pospv1 = pospv1 + ldafs8
176 ipiv_end = iend_block
178 IF (inextpiv.GT.npivp1.AND.inextpiv.LE.iend_block)
THEN
179 ishift = inextpiv - npivp1
182 & .OR. (k206 .GT.1 .AND. iend_block.EQ.iend_blr) )
THEN
183 ipiv_end = iend_block + ishift
186 DO 460 ipiv_shift = npivp1+ishift, ipiv_end
187 IF (ipiv_shift .LE. iend_block)
THEN
190 ipiv = ipiv_shift-iend_block-1+npivp1
191 IF (ibeg_block.EQ.npivp1)
THEN
195 apos = poselt + ldafs8*int(ipiv-1,8) + int(npiv,8)
196 pospv1 = apos + int(ipiv - npivp1,8)
198 abs_pivot = abs(pivot)
199 IF (uuloc.EQ.rzero.OR.pivot_option.EQ.0)
THEN
200 IF(abs_pivot.LT.seuil)
THEN
203 & dkeep, keep, .true.)
204 IF(dble(pivot) .GE. rzero)
THEN
209 nbtinyw = nbtinyw + 1
210 ELSE IF (abs_pivot.EQ.rzero)
THEN
214 & ( abs_pivot, dkeep, keep, .false.)
215 IF (keep(258) .NE. 0)
THEN
226 IF(abs(a(jj)) .GT. amax)
THEN
228 jmax = ipiv - int(pospv1-jj)
232 DO j=1, iend_block - ipiv
233 IF(abs(a(j1)) .GT. amax)
THEN
240 IF (pivot_option.EQ.2)
THEN
241 DO j=1,nass - iend_block
242 rmax_noslave =
max(abs(a(j1+ldafs8*int(j-1,8))),
247 rmax_norelax = dble(a(aposmax+int(ipiv,8)))
250 IF (abs_pivot.NE.rzero.AND.
251 & abs_pivot.GE.uuloc*
max(rmax,rmax_noslave,amax))
255 IF (diag_orig(ipiv).EQ.rzero)
THEN
256 diag_orig(ipiv) = abs_pivot
258 growth = abs_pivot / diag_orig(ipiv)
260 ELSE IF (k219.GE.4)
THEN
261 IF (diag_orig(ipiv).EQ.rzero)
THEN
262 diag_orig(ipiv) =
max(amax,rmax_noslave)
264 growth =
max(abs_pivot,amax,rmax_noslave)/
268 rmax = rmax*
max(growth,gw_factcumul)
275 rmax_noslave =
max(rmax_norelax,rmax_noslave)
276 rmax =
max(rmax,rmax_noslave)
277 IF (
max(amax,rmax,abs_pivot).LE.pivnul)
THEN
280 & .AND.(rmax_norelax.LT.0)
281 & .AND.(ipiv.GT.1))
THEN
282 max_prev_in_parpiv = rzero
284 max_prev_in_parpiv=
max( max_prev_in_parpiv,
285 & dble(a(aposmax+int(jj,8))) )
287 IF (max_prev_in_parpiv.GT.pivnul)
THEN
288 aposrow = poselt + ldafs8*int(ipiv-1,8)
290 IF (abs(a(aposrow+jj-1)).GT.pivnul)
THEN
297 & ( abs(a(pospv1)), dkeep, keep, .true.)
298 keep(109) = keep(109) + 1
300 pivnul_list(ipivnul) = iw( ioldps+hf+npiv+ipiv-npivp1 )
301 IF (dble(fixa).GT.rzero)
THEN
302 IF(dble(pivot) .GE. rzero)
THEN
314 a(pospv1+int(j,8)*ldafs8) = zero
316 valtmp =
max(1.0d10*rmax, sqrt(huge(rmax))/1.0d8)
317 a(pospv1) =
cmplx(valtmp,kind=kind(a))
320 abs_pivot = abs(pivot)
323 rmax =
max(rmax,abs(rmax_norelax))
324 IF (abs_pivot.GE.uuloc*
max(rmax,amax)
325 & .AND. abs_pivot .GT.
max(seuil, tiny(rmax)))
THEN
327 & ( abs_pivot, dkeep, keep, .false.)
328 IF (keep(258) .NE.0 )
THEN
333 IF (npivp1.EQ.iend_block)
THEN
335 ELSE IF (jmax .EQ.0)
THEN
338 IF (
max(abs(pivot),rmax,amax).LE.tiny(rmax))
THEN
341 IF (rmax_noslave.LT.amax)
THEN
345 IF(int(pospv1-jj) .NE. ipiv-jmax)
THEN
346 rmax_noslave =
max(rmax_noslave,abs(a(jj)))
350 IF(ipiv+j .NE. jmax)
THEN
351 rmax_noslave =
max(abs(a(pospv1+ldafs8*int(j,8))),
355 rmax =
max(rmax, rmax_noslave)
357 aposj = poselt + int(jmax-1,8)*ldafs8 + int(npiv,8)
358 pospv2 = aposj + int(jmax - npivp1,8)
359 IF (ipiv.LT.jmax)
THEN
360 offdag = aposj + int(ipiv - npivp1,8)
362 offdag = apos + int(jmax - npivp1,8)
365 IF(jmax .LT. ipiv)
THEN
369 IF (jmax+k.NE.ipiv)
THEN
370 tmax_noslave=
max(tmax_noslave,abs(a(jj)))
373 DO kk = aposj, pospv2-1_8
374 tmax_noslave =
max(tmax_noslave,abs(a(kk)))
380 tmax_noslave=
max(tmax_noslave,abs(a(jj)))
382 DO kk = aposj, pospv2 - 1_8
383 IF (kk.NE.offdag)
THEN
384 tmax_noslave =
max(tmax_noslave,abs(a(kk)))
389 tmax =
max(seuil*uulocm1,
390 & abs(dble(a(aposmax+int(jmax,8))))
398 IF (diag_orig(jmax).EQ.rzero)
THEN
399 diag_orig(jmax) = abs(a(pospv2))
401 growth = abs(a(pospv2))/diag_orig(jmax)
403 ELSE IF (k219.EQ.4)
THEN
404 IF (diag_orig(jmax).EQ.rzero)
THEN
405 diag_orig(jmax)=
max(abs(a(pospv2)),amax,tmax_noslave)
407 growth =
max(abs(a(pospv2)),amax,tmax_noslave)
411 tmax = tmax*
max(growth,gw_factcumul)
413 tmax =
max(tmax,tmax_noslave)
414 detpiv = a(pospv1)*a(pospv2) - a(offdag)*a(offdag)
416 IF (seuil.GT.rzero)
THEN
417 IF (sqrt(absdetpiv) .LE. seuil )
THEN
421 maxpiv =
max(abs(a(pospv1)),abs(a(pospv2)))
422 IF (maxpiv.EQ.rzero) maxpiv = rone
423 IF ((abs(a(pospv2))*rmax+amax*tmax)*uuloc.GT.
424 & absdetpiv .OR. absdetpiv .EQ. rzero)
THEN
427 IF ((abs(a(pospv1))*tmax+amax*rmax)*uuloc.GT.
428 & absdetpiv .OR. absdetpiv .EQ. rzero)
THEN
432 & ( sqrt(abs(detpiv)),
433 & dkeep, keep, .false.)
434 IF (keep(258).NE.0)
THEN
441 inextpiv =
max(npivp1+pivsiz, ipiv+1)
444 IF (pivsiz .EQ. 2 )
THEN
446 lpiv =
min(ipiv, jmax)
447 tipiv(iloc) = -(lpiv - ibeg_block_to_send + 1)
449 lpiv =
max(ipiv, jmax)
450 tipiv(iloc+1) = -(lpiv - ibeg_block_to_send + 1)
454 tipiv(iloc) = ipiv - ibeg_block_to_send + 1
456 IF (lpiv.EQ.npivp1)
THEN
459 keep8(80) = keep8(80)+1
461 & ioldps, npivp1, lpiv, poselt, nass,
462 & ldafs, nfront, 2, k219, keep(50),
463 & keep(ixsz), ibeg_block_to_send )
465 rswop = diag_orig(lpiv)
466 diag_orig(lpiv) = diag_orig(npivp1)
467 diag_orig(npivp1) = rswop
470 IF ((keep(50).NE.1) .AND. ooc_effective_on_front)
THEN
472 & iw(i_pivrptr), nbpanels_l,
473 & iw(i_pivr), nass, npivp1, lpiv, pp_lastpanelondisk,
474 & pp_lastpivrptrindexfilled)
478 IF(pivsiz .EQ. 2)
THEN
479 a(poselt+ldafs8*int(npiv,8)+int(npiv+1,8)) = detpiv
483 IF (k206 .GE. 1)
THEN
484 inextpiv=iend_block+1
486 IF (iend_block.EQ.nass)
THEN
496 IF(inopv .EQ. 0)
THEN
497 IF(pivsiz .EQ. 1)
THEN
498 gw_fact =
max(amax,rmax_noslave)/abs_pivot
499 ELSE IF(pivsiz .EQ. 2)
THEN
501 & (abs(a(pospv2))*rmax_noslave+amax*tmax_noslave)
503 & (abs(a(pospv1))*tmax_noslave+amax*rmax_noslave)
507 gw_fact =
min(gw_fact, uulocm1)
508 gw_factcumul =
max(gw_fact,gw_factcumul)
515 & nass, npiv, inode, a, la, ldafs,
516 & poselt,ifinb,pivsiz,
517 & k219, pivot_option, iend_blr, lr_activated)
519 INTEGER(8),
intent(in) :: LA, POSELT
520 INTEGER,
intent(in) :: K219
521 COMPLEX(kind=8),
intent(inout) :: A(LA)
522 INTEGER,
intent(in) :: IEND_BLOCK
523 INTEGER,
intent(in) :: NPIV, PIVSIZ
524 INTEGER,
intent(in) :: NASS,INODE,LDAFS
525 INTEGER,
intent(out) :: IFINB
526 INTEGER,
intent(in) :: PIVOT_OPTION, IEND_BLR
527 LOGICAL,
intent(in) :: LR_ACTIVATED
528 COMPLEX(kind=8) VALPIV
530 INTEGER(8) :: APOS, APOSMAX
531 INTEGER(8) :: LPOS, , LPOS2, K1POS
532 INTEGER(8) :: JJ, K1, K2
533 INTEGER(8) :: POSPV1, POSPV2, OFFDAG, OFFDAG_OLD
536 COMPLEX(kind=8) ONE, ALPHA
539 INTEGER(8) :: IBEG, IEND, IROW, J8
541 COMPLEX(kind=8) SWOP,DETPIV,MULT1,MULT2, A11, A22, A12
542 parameter(one=(1.0d0,0.0d0), alpha=(-1.0d0,0.0d0))
543 parameter(zero=(0.0d0,0.0d0))
544 include
'mumps_headers.h'
545 ldafs8 = int(ldafs,8)
546 npiv_new = npiv + pivsiz
548 nel2 = iend_block - npiv_new
550 IF (iend_block.EQ.nass)
THEN
556 IF(pivsiz .EQ. 1)
THEN
557 apos = poselt + int(npiv,8)*(ldafs8 + 1_8)
561 k1pos = lpos + int(i-1,8)*ldafs8
562 a(apos+int(i,8))=a(k1pos)
563 a(k1pos) = a(k1pos) * valpiv
565 a(k1pos+jj)=a(k1pos+jj) - a(k1pos) * a(apos+jj)
568 IF (pivot_option.EQ.2)
THEN
569 ncb1 = nass - iend_block
571 ncb1 = iend_blr - iend_block
574 DO i=nel2+1, nel2 + ncb1
575 k1pos = lpos+ int(i-1,8)*ldafs8
576 a(apos+int(i,8))=a(k1pos)
577 a(k1pos) = a(k1pos) * valpiv
578 DO jj = 1_8, int(nel2,8)
579 a(k1pos+jj)=a(k1pos+jj) - a(k1pos) * a(apos+jj)
583 IF (k219.eq. -1)
THEN
584 aposmax = poselt + int(nass,8) * ldafs8 + int(npiv,8)
585 a(aposmax) = a(aposmax) * abs(valpiv)
586 DO j8 = 1_8, int(nel2+ncb1,8)
587 a(aposmax+j8) = a(aposmax+j8) +
588 & a(aposmax) * abs(a(apos+j8))
593 pospv2 = pospv1+ldafs8+1_8
594 offdag_old = pospv2 - 1_8
598 a22 = a(pospv1)/detpiv
600 a12 = -a(offdag_old)/detpiv
601 a(offdag) = a(offdag_old)
603 lpos1 = pospv2 + ldafs8 - 1_8
605 CALL zcopy(nass-npiv_new, a(lpos1), ldafs, a(pospv1+2_8), 1)
606 CALL zcopy(nass-npiv_new, a(lpos2), ldafs, a(pospv2+1_8), 1)
607 jj = pospv2 + int(nass-1,8)
613 mult1 = - (a11*a(k1)+a12*a(k2))
614 mult2 = - (a12*a(k1)+a22*a(k2))
618 a(irow) = a(irow) + mult1*a(k1) + mult2*a(k2)
624 ibeg = ibeg + int(nass,8)
625 iend = iend + int(nass + 1,8)
629 DO j2 = iend_block+1,nass
632 mult1 = - (a11*a(k1)+a12*a(k2))
633 mult2 = - (a12*a(k1)+a22*a(k2))
637 a(irow) = a(irow) + mult1*a(k1) + mult2*a(k2)
643 ibeg = ibeg + int(nass,8)
644 iend = iend + int(nass,8)
647 IF (k219.eq. -1)
THEN
648 aposmax = poselt + int(nass,8) * ldafs8 + int(npiv,8)
652 mult1 = abs(a11)*a(k1)+abs(a12)*a(k2)
653 mult2 = abs(a12)*a(k1)+abs(a22)*a(k2)
657 iend = aposmax + 1_8 + nass - npiv_new
659 a(irow) = a(irow) + mult1*abs(a(k1)) + mult2*abs(a(k2))
670 & INODE, FPERE, IW, LIW, IOLDPS, POSELT, A, LA, LDA_FS,
671 & IBEG_BLOCK, IEND, TIPIV, LPIV, LASTBL, NB_BLOC_FAC,
672 & COMM, MYID, BUFR, LBUFR,LBUFR_BYTES,NBFIN,LEAF,
673 & IFLAG, IERROR, IPOOL,LPOOL,
674 & SLAVEF, POSFAC, IWPOS, IWPOSCB, IPTRLU, LRLU,
675 & LRLUS, COMP, PTRIST, PTRAST, PTLUST_S, PTRFAC,
676 & STEP, PIMASTER, PAMASTER,
677 & NSTK_S,PERM,PROCNODE_STEPS, root,
678 & OPASSW, OPELIW, ITLOC, RHS_MUMPS,
679 & FILS, DAD, PTRARW, PTRAIW,
680 & INTARR, DBLARR, ICNTL, KEEP,KEEP8,DKEEP, ND, FRERE,
681 & LPTRAR, NELT, FRTPTR, FRTELT,
682 & ISTEP_TO_INIV2, TAB_POS_IN_PERE
683 & , NELIM, LR_ACTIVATED, NPARTSASS, CURRENT_BLR_PANEL
693 TYPE (ZMUMPS_ROOT_STRUC) ::
694 INTEGER COMM_LOAD, ASS_IRECV
695 INTEGER N, INODE, FPERE, LIW, IBEG_BLOCK, IEND, LPIV,
696 & ioldps, lda_fs, nb_bloc_fac
697 INTEGER(8) :: POSELT, LA
698 INTEGER IW(LIW), TIPIV(LPIV)
700 COMPLEX(kind=8) A(LA)
701 INTEGER COMM, MYID, LBUFR, LBUFR_BYTES
703 INTEGER FRTPTR( N+1 ), FRTELT( NELT )
705 INTEGER(8) KEEP8(150)
706 DOUBLE PRECISION DKEEP(230)
707 INTEGER NBFIN, IFLAG, IERROR, LEAF, LPOOL,
709 INTEGER(8) :: POSFAC, IPTRLU, LRLU, LRLUS
710 INTEGER IWPOS, IWPOSCB, COMP
711 INTEGER BUFR( LBUFR ), IPOOL(LPOOL),
712 & ITLOC(N+KEEP(253)), FILS(N), DAD( KEEP(28) ),
713 & ND( KEEP(28) ), FRERE( KEEP(28) )
714 INTEGER(8),
INTENT(IN) :: (LPTRAR), PTRAIW(LPTRAR)
715 COMPLEX(kind=8) :: RHS_MUMPS(KEEP(255))
716 INTEGER(8) :: PTRAST (KEEP(28))
717 INTEGER(8) :: PTRFAC (KEEP(28))
718 INTEGER(8) :: PAMASTER(KEEP(28))
719 INTEGER PTRIST(KEEP(28)), (KEEP(28)),
720 & step(n), pimaster(keep(28)),
722 & perm(n), procnode_steps(keep(28))
723 INTEGER ISTEP_TO_INIV2(KEEP(71)),
724 & tab_pos_in_pere(slavef+2,
max(1,keep(56)))
725 DOUBLE PRECISION OPASSW, OPELIW
726 COMPLEX(kind=8) DBLARR(KEEP8(26))
727 INTEGER INTARR(KEEP8(27))
728 LOGICAL,
intent(in) :: LR_ACTIVATED
729 TYPE (LRB_TYPE),
DIMENSION(:) :: BLR_LorU
730 INTEGER,
intent(in) :: LRGROUPS(N)
732 INTEGER,
intent(in) :: NPARTSASS, CURRENT_BLR_PANEL
733 include
'mumps_headers.h'
735 INTEGER NPIV, NCOL, PDEST, NSLAVES, WIDTH
737 INTEGER :: STATUS(MPI_STATUS_SIZE)
738 LOGICAL BLOCKING, SET_IRECV, MESSAGE_RECEIVED
739 DOUBLE PRECISION FLOP1,FLOP2
741 compress_cb = ((iw(ioldps+xxlr).EQ.1).OR.
742 & (iw(ioldps+xxlr).EQ.3))
743 nslaves= iw(ioldps+5+keep(ixsz))
744 IF (nslaves.EQ.0)
THEN
745 WRITE(6,*)
' ERROR 1 in ZMUMPS_SEND_FACTORED_BLK '
748 npiv = iend - ibeg_block + 1
749 ncol = lda_fs - ibeg_block + 1
750 apos = poselt + int(lda_fs,8)*int(ibeg_block
751 & int(ibeg_block - 1,8)
752 IF (ibeg_block > 0)
THEN
760 flop2 = flop1 - flop2
763 & ((npiv.EQ.0).AND.(lastbl))
765 IF ((npiv.EQ.0).AND.(lastbl))
THEN
766 IF (compress_cb)
THEN
767 iw(ioldps+xxlr) = iw(ioldps+xxlr) -1
768 compress_cb = .false.
771 pdest = ioldps + 6 + keep(ixsz)
772 IF (( npiv .NE. 0 ).AND.(keep(50).NE.0))
THEN
773 nb_bloc_fac = nb_bloc_fac + 1
776 DO WHILE (ierr .EQ.-1)
779 & npiv, fpere, lastbl, tipiv, a(apos),
780 & iw(pdest), nslaves, keep,
782 & nslaves, width, comm,
783 & nelim, npartsass, current_blr_panel,
784 & lr_activated, blr_loru,
789 message_received = .false.
791 & blocking, set_irecv, message_received,
792 & mpi_any_source, mpi_any_tag,
795 & procnode_steps, posfac, iwpos, iwposcb, iptrlu,
796 & lrlu, lrlus, n, iw, liw, a, la, ptrist,
798 & ptrast, step, pimaster, pamaster, nstk_s, comp, iflag,
801 & ipool, lpool, leaf, nbfin, myid, slavef,
802 & root, opassw, opeliw
803 & fils, dad, ptrarw, ptraiw,
804 & intarr, dblarr, icntl, keep,keep8,dkeep, nd, frere,
805 & lptrar, nelt, frtptr, frtelt,
806 & istep_to_iniv2, tab_pos_in_pere, .true.
809 IF (message_received)
THEN
811 apos = poselt + int(lda_fs,8)*int(ibeg_block-1,8) +
812 & int(ibeg_block - 1,8)
814 IF ( iflag .LT. 0 )
GOTO 500
817 IF (ierr .EQ. -2 .OR. ierr.EQ.-3 )
THEN
818 IF (ierr.EQ.-2) iflag = -17
819 IF (ierr.EQ.-3) iflag = -20
820 lreqa = int(ncol,8)*int(npiv,8)
821 lreqi = npiv + 6 + 2*nslaves + 2
823 & int(lreqi,8) * int(keep
subroutine zmumps_send_factored_blk(comm_load, ass_irecv, n, inode, fpere, iw, liw, ioldps, poselt, a, la, lda_fs, ibeg_block, iend, tipiv, lpiv, lastbl, nb_bloc_fac, comm, myid, bufr, lbufr, lbufr_bytes, nbfin, leaf, iflag, ierror, ipool, lpool, slavef, posfac, iwpos, iwposcb, iptrlu, lrlu, lrlus, comp, ptrist, ptrast, ptlust_s, ptrfac, step, pimaster, pamaster, nstk_s, perm, procnode_steps, root, opassw, opeliw, itloc, rhs_mumps, fils, dad, ptrarw, ptraiw, intarr, dblarr, icntl, keep, keep8, dkeep, nd, frere, lptrar, nelt, frtptr, frtelt, istep_to_iniv2, tab_pos_in_pere, nelim, lr_activated, npartsass, current_blr_panel, blr_loru, lrgroups)
subroutine zmumps_fac_i_ldlt_niv2(diag_orig, sizediag_orig, gw_factcumul, nfront, nass, ibeg_block_to_send, ibeg_block, iend_block, nass2, tipiv, n, inode, iw, liw, a, la, nnegw, nb22t2w, nbtinyw, det_expw, det_mantw, det_signw, inopv, iflag, ioldps, poselt, uu, seuil, keep, keep8, pivsiz, dkeep, pivnul_list, lpn_list, pp_first2swap_l, pp_lastpanelondisk, pp_lastpivrptrindexfilled, pivot_option, inextpiv, iend_blr, lr_activated, ooc_effective_on_front)
recursive subroutine zmumps_try_recvtreat(comm_load, ass_irecv, blocking, set_irecv, message_received, msgsou, msgtag, status, bufr, lbufr, lbufr_bytes, procnode_steps, posfac, iwpos, iwposcb, iptrlu, lrlu, lrlus, n, iw, liw, a, la, ptrist, ptlust, ptrfac, ptrast, step, pimaster, pamaster, nstk_s, comp, iflag, ierror, comm, perm, ipool, lpool, leaf, nbfin, myid, slavef root, opassw, opeliw, itloc, rhs_mumps, fils, dad, ptrarw, ptraiw, intarr, dblarr, icntl, keep, keep8, dkeep, nd, frere, lptrar, nelt, frtptr, frtelt istep_to_iniv2, tab_pos_in_pere, stack_right_authorized, lrgroups)