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 REAL DIAG_ORIG(SIZEDIAG_ORIG)
37 INTEGER NFRONT,NASS,N,LIW,INODE,IFLAG,INOPV
38 INTEGER NASS2, IBEG_BLOCK_TO_SEND, IBEG_BLOCK, IEND_BLOCK
39 INTEGER,
intent(inout) :: NNEGW, NB22T2W, NBTINYW
40 INTEGER,
intent(inout) :: DET_EXPW, DET_SIGNW
41 REAL,
intent(inout) :: DET_MANTW
42 INTEGER TIPIV( NASS2 )
44 INTEGER,
intent(in) :: PIVOT_OPTION, IEND_BLR
45 LOGICAL,
intent(in) :: LR_ACTIVATED
46 INTEGER,
intent(inout) :: Inextpiv
47 LOGICAL,
intent(in) :: OOC_EFFECTIVE_ON_FRONT
58 INTEGER PIVNUL_LIST(LPN_LIST)
60 INTEGER PP_FIRST2SWAP_L, PP_LastPanelonDisk
61 INTEGER PP_LastPIVRPTRIndexFilled
63 INTEGER(8) :: POSPV1,POSPV2,OFFDAG,APOSJ
65 INTEGER :: IPIVNUL, HF
66 REAL RMAX,AMAX,,RMAX_NORELAX,MAX_PREV_in_PARPIV
68 REAL RMAX_NOSLAVE, TMAX_NOSLAVE
71 include
'mumps_headers.h'
72 INTEGER(8) :: APOSMAX, APOSROW
74 INTEGER(8) :: J1, J2, JJ, KK
79 REAL,
PARAMETER :: = 0.0e0
80 REAL,
PARAMETER :: = 1.0e0
82 parameter( zero = 0.0e0 )
83 parameter( one = 1.0e0 )
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)
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(real(a(apos)) .GE. rzero)
THEN
141 nbtinyw = nbtinyw + 1
142 ELSE IF (keep(258) .NE.0 )
THEN
145 IF ((keep(50).NE.1) .AND. ooc_effective_on_front)
THEN
147 & iw(i_pivr), nass, npivp1, npivp1,
148 & pp_lastpanelondisk,
149 & pp_lastpivrptrindexfilled)
154 IF ((k219.GE.2).AND.(npivp1.EQ.1))
THEN
158 diag_orig(ipiv) = abs(a(poselt +
159 & (ldafs8+1_8)*int(ipiv-1,8)))
161 ELSE IF (k219.GE.4)
THEN
164 apos = poselt + ldafs8*int(ipiv-1,8)
165 pospv1 = apos + int(ipiv - 1,8)
166 diag_orig(ipiv) =
max( abs(a(pospv1)), diag_orig(ipiv) )
168 diag_orig(ipiv) =
max( abs(a(pospv1)), diag_orig(ipiv) )
169 diag_orig(ipiv+j-ipiv) =
max( abs(a(pospv1)),
170 & diag_orig(ipiv+j-ipiv) )
171 pospv1 = pospv1 + ldafs8
177 ipiv_end = iend_block
179 IF (inextpiv.GT.npivp1.AND.inextpiv.LE.iend_block)
THEN
180 ishift = inextpiv - npivp1
183 & .OR. (k206 .GT.1 .AND. iend_block.EQ.iend_blr) )
THEN
184 ipiv_end = iend_block + ishift
187 DO 460 ipiv_shift = npivp1+ishift, ipiv_end
188 IF (ipiv_shift .LE. iend_block)
THEN
191 ipiv = ipiv_shift-iend_block-1+npivp1
192 IF (ibeg_block.EQ.npivp1)
THEN
196 apos = poselt + ldafs8*int(ipiv-1,8) + int(npiv,8)
197 pospv1 = apos + int(ipiv - npivp1,8)
199 abs_pivot = abs(pivot)
200 IF (uuloc.EQ.rzero.OR.pivot_option.EQ.0)
THEN
201 IF(abs_pivot.LT.seuil)
THEN
204 & dkeep, keep, .true.)
205 IF(real(pivot) .GE. rzero)
THEN
211 nbtinyw = nbtinyw + 1
212 ELSE IF (abs_pivot.EQ.rzero)
THEN
215 IF (pivot.LT.rzero) nnegw = nnegw+1
217 & ( abs_pivot, dkeep, keep, .false.)
218 IF (keep(258) .NE. 0)
THEN
229 IF(abs(a(jj)) .GT. amax)
THEN
231 jmax = ipiv - int(pospv1-jj)
235 DO j=1, iend_block - ipiv
236 IF(abs(a(j1)) .GT. amax)
THEN
243 IF (pivot_option.EQ.2)
THEN
244 DO j=1,nass - iend_block
245 rmax_noslave =
max(abs(a(j1+ldafs8*int(j-1,8))),
250 rmax_norelax = real(a(aposmax+int(ipiv,8)))
253 IF (abs_pivot.NE.rzero.AND.
254 & abs_pivot.GE.uuloc*
max(rmax,rmax_noslave,amax))
258 IF (diag_orig(ipiv).EQ.rzero)
THEN
259 diag_orig(ipiv) = abs_pivot
261 growth = abs_pivot / diag_orig(ipiv)
263 ELSE IF (k219.GE.4)
THEN
264 IF (diag_orig(ipiv
THEN
265 diag_orig(ipiv) =
max(amax,rmax_noslave)
267 growth =
max(abs_pivot,amax,rmax_noslave)/
271 rmax = rmax*
max(growth,gw_factcumul)
278 rmax_noslave =
max(rmax_norelax,rmax_noslave)
279 rmax =
max(rmax,rmax_noslave)
280 IF (
max(amax,rmax,abs_pivot).LE.pivnul)
THEN
283 & .AND.(rmax_norelax.LT.0)
284 & .AND.(ipiv.GT.1))
THEN
285 max_prev_in_parpiv = rzero
287 max_prev_in_parpiv=
max( max_prev_in_parpiv,
288 & real(a(aposmax+int(jj,8))) )
290 IF (max_prev_in_parpiv.GT.pivnul)
THEN
291 aposrow = poselt + ldafs8*int(ipiv-1,8)
293 IF (abs(a(aposrow+jj-1)).GT.pivnul)
THEN
300 & ( abs(a(pospv1)), dkeep, keep, .true.)
301 keep(109) = keep(109) + 1
303 pivnul_list(ipivnul) = iw( ioldps+hf+npiv+ipiv-npivp1 )
304 IF (real(fixa).GT.rzero)
THEN
305 IF(real(pivot) .GE. rzero)
THEN
317 a(pospv1+int(j,8)*ldafs8) = zero
319 valtmp =
max(1.0e10*rmax, sqrt(huge(rmax))/1.0e8)
323 abs_pivot = abs(pivot)
326 rmax =
max(rmax,abs(rmax_norelax))
327 IF (abs_pivot.GE.uuloc*
max(rmax,amax)
328 & .AND. abs_pivot .GT.
max(seuil, tiny(rmax)))
THEN
329 IF (a(pospv1).LT.rzero) nnegw = nnegw+1
331 & ( abs_pivot, dkeep, keep, .false.)
332 IF (keep(258) .NE.0 )
THEN
337 IF (npivp1.EQ.iend_block)
THEN
339 ELSE IF (jmax .EQ.0)
THEN
342 IF (
max(abs(pivot),rmax,amax).LE.tiny(rmax))
THEN
345 IF (rmax_noslave.LT.amax)
THEN
349 IF(int(pospv1-jj) .NE. ipiv-jmax)
THEN
350 rmax_noslave =
max(rmax_noslave,abs(a(jj)))
354 IF(ipiv+j .NE. jmax)
THEN
355 rmax_noslave =
max(abs(a(pospv1+ldafs8*int(j,8))),
359 rmax =
max(rmax, rmax_noslave)
361 aposj = poselt + int(jmax-1,8)*ldafs8 + int(npiv,8)
362 pospv2 = aposj + int(jmax - npivp1,8)
363 IF (ipiv.LT.jmax)
THEN
364 offdag = aposj + int(ipiv - npivp1,8)
366 offdag = apos + int(jmax - npivp1,8)
369 IF(jmax .LT. ipiv)
THEN
373 IF (jmax+k.NE.ipiv)
THEN
374 tmax_noslave=
max(tmax_noslave,abs(a(jj)))
377 DO kk = aposj, pospv2-1_8
378 tmax_noslave =
max(tmax_noslave,abs(a(kk)))
384 tmax_noslave=
max(tmax_noslave,abs(a(jj)))
386 DO kk = aposj, pospv2 - 1_8
387 IF (kk.NE.offdag)
THEN
388 tmax_noslave =
max(tmax_noslave,abs(a(kk)))
393 tmax =
max(seuil*uulocm1,
394 & abs(real(a(aposmax+int(jmax,8))))
402 IF (diag_orig(jmax).EQ.rzero)
THEN
403 diag_orig(jmax) = abs(a(pospv2))
405 growth = abs(a(pospv2))/diag_orig(jmax)
407 ELSE IF (k219.EQ.4)
THEN
408 IF (diag_orig(jmax).EQ.rzero)
THEN
409 diag_orig(jmax)=
max(abs(a(pospv2)),amax,tmax_noslave)
411 growth =
max(abs(a(pospv2)),amax,tmax_noslave)
415 tmax = tmax*
max(growth,gw_factcumul)
417 tmax =
max(tmax,tmax_noslave)
418 detpiv = a(pospv1)*a(pospv2) - a(offdag)*a(offdag)
419 absdetpiv = abs(detpiv)
420 IF (seuil.GT.rzero)
THEN
421 IF (sqrt(absdetpiv) .LE. seuil )
THEN
425 maxpiv =
max(abs(a(pospv1)),abs(a(pospv2)))
426 IF (maxpiv.EQ.rzero) maxpiv = rone
427 IF ((abs(a(pospv2))*rmax+amax*tmax)*uuloc.GT.
428 & absdetpiv .OR. absdetpiv .EQ. rzero)
THEN
431 IF ((abs(a(pospv1))*tmax+amax*rmax)*uuloc.GT.
432 & absdetpiv .OR. absdetpiv .EQ. rzero)
THEN
436 & ( sqrt(abs(detpiv)),
437 & dkeep, keep, .false.)
438 IF (keep(258).NE.0)
THEN
443 IF(detpiv .LT. rzero)
THEN
445 ELSE IF(a(pospv2) .LT. rzero)
THEN
450 inextpiv =
max(npivp1+pivsiz, ipiv+1)
453 IF (pivsiz .EQ. 2 )
THEN
455 lpiv =
min(ipiv, jmax)
456 tipiv(iloc) = -(lpiv - ibeg_block_to_send + 1)
458 lpiv =
max(ipiv, jmax)
459 tipiv(iloc+1) = -(lpiv - ibeg_block_to_send + 1)
463 tipiv(iloc) = ipiv - ibeg_block_to_send + 1
465 IF (lpiv.EQ.npivp1)
THEN
468 keep8(80) = keep8(80)+1
470 & ioldps, npivp1, lpiv, poselt, nass,
471 & ldafs, nfront, 2, k219, keep(50),
472 & keep(ixsz), ibeg_block_to_send )
474 rswop = diag_orig(lpiv)
475 diag_orig(lpiv) = diag_orig(npivp1)
476 diag_orig(npivp1) = rswop
479 IF ((keep(50).NE.1) .AND. ooc_effective_on_front)
THEN
481 & iw(i_pivrptr), nbpanels_l,
482 & iw(i_pivr), nass, npivp1, lpiv, pp_lastpanelondisk,
483 & pp_lastpivrptrindexfilled)
487 IF(pivsiz .EQ. 2)
THEN
488 a(poselt+ldafs8*int(npiv,8)+int(npiv+1,8)) = detpiv
492 IF (k206 .GE. 1)
THEN
493 inextpiv=iend_block+1
495 IF (iend_block.EQ.nass)
THEN
505 IF(inopv .EQ. 0)
THEN
506 IF(pivsiz .EQ. 1)
THEN
507 gw_fact =
max(amax,rmax_noslave)/abs_pivot
508 ELSE IF(pivsiz .EQ. 2)
THEN
510 & (abs(a(pospv2))*rmax_noslave+amax*tmax_noslave)
512 & (abs(a(pospv1))*tmax_noslave+amax*rmax_noslave)
516 gw_fact =
min(gw_fact, uulocm1)
517 gw_factcumul =
max(gw_fact,gw_factcumul)
524 & nass, npiv, inode, a, la, ldafs,
525 & poselt,ifinb,pivsiz,
526 & k219, pivot_option, iend_blr, lr_activated)
528 INTEGER(8),
intent(in) :: LA, POSELT
529 INTEGER,
intent(in) :: K219
530 REAL,
intent(inout) :: A(LA)
531 INTEGER,
intent(in) ::
532 INTEGER,
intent(in) :: NPIV, PIVSIZ
533 INTEGER,
intent(in) :: NASS,INODE,LDAFS
534 INTEGER,
intent(out) :: IFINB
535 INTEGER,
intent(in) :: PIVOT_OPTION, IEND_BLR
536 LOGICAL,
intent(in) ::
539 INTEGER(8) :: APOS, APOSMAX
540 INTEGER(8) :: LPOS, LPOS1, LPOS2, K1POS
541 INTEGER(8) :: JJ, K1, K2
542 INTEGER(8) :: POSPV1, POSPV2, OFFDAG, OFFDAG_OLD
548 INTEGER(8) :: IBEG, IEND, IROW, J8
550 REAL SWOP,DETPIV,MULT1,MULT2, A11, A22, A12
551 parameter(one = 1.0e0, alpha=-1.0e0)
552 parameter(zero=0.0e0)
553 include
'mumps_headers.h'
554 ldafs8 = int(ldafs,8)
555 npiv_new = npiv + pivsiz
557 nel2 = iend_block - npiv_new
559 IF (iend_block.EQ.nass)
THEN
565 IF(pivsiz .EQ. 1)
THEN
566 apos = poselt + int(npiv,8)*(ldafs8 + 1_8)
570 k1pos = lpos + int(i-1,8)*ldafs8
571 a(apos+int(i,8))=a(k1pos)
572 a(k1pos) = a(k1pos) * valpiv
574 a(k1pos+jj)=a(k1pos+jj) - a(k1pos) * a(apos+jj)
577 IF (pivot_option.EQ.2)
THEN
578 ncb1 = nass - iend_block
580 ncb1 = iend_blr - iend_block
583 DO i=nel2+1, nel2 + ncb1
584 k1pos = lpos+ int(i-1,8)*ldafs8
585 a(apos+int(i,8))=a(k1pos)
586 a(k1pos) = a(k1pos) * valpiv
587 DO jj = 1_8, int(nel2,8)
588 a(k1pos+jj)=a(k1pos+jj) - a(k1pos) * a(apos+jj)
592 IF (k219.eq. -1)
THEN
593 aposmax = poselt + int(nass,8) * ldafs8 + int(npiv,8)
594 a(aposmax) = a(aposmax) * abs(valpiv)
595 DO j8 = 1_8, int(nel2+ncb1,8)
596 a(aposmax+j8) = a(aposmax+j8) +
597 & a(aposmax) * abs(a(apos+j8))
601 pospv1 = poselt + int(npiv,8)*(ldafs8 + 1_8)
602 pospv2 = pospv1+ldafs8+1_8
603 offdag_old = pospv2 - 1_8
607 a22 = a(pospv1)/detpiv
609 a12 = -a(offdag_old)/detpiv
610 a(offdag) = a(offdag_old)
612 lpos1 = pospv2 + ldafs8 - 1_8
614 CALL scopy(nass-npiv_new, a(lpos1), ldafs, a(pospv1+2_8), 1)
615 CALL scopy(nass-npiv_new, a(lpos2), ldafs, a(pospv2+1_8), 1)
616 jj = pospv2 + int(nass-1,8)
622 mult1 = - (a11*a(k1)+a12*a(k2))
623 mult2 = - (a12*a(k1)+a22*a(k2))
627 a(irow) = a(irow) + mult1*a(k1) + mult2*a(k2)
633 ibeg = ibeg + int(nass,8)
634 iend = iend + int(nass + 1,8)
638 DO j2 = iend_block+1,nass
641 mult1 = - (a11*a(k1)+a12*a(k2))
642 mult2 = - (a12*a(k1)+a22*a(k2))
646 a(irow) = a(irow) + mult1*a(k1) + mult2*a(k2)
652 ibeg = ibeg + int(nass,8)
653 iend = iend + int(nass,8)
656 IF (k219.eq. -1)
THEN
657 aposmax = poselt + int(nass,8) * ldafs8 + int(npiv,8)
661 mult1 = abs(a11)*a(k1)+abs(a12)*a(k2)
662 mult2 = abs(a12)*a(k1)+abs(a22)*a(k2)
666 iend = aposmax + 1_8 + nass - npiv_new
668 a(irow) = a(irow) + mult1*abs(a(k1)) + mult2*abs(a(k2))
679 & INODE, FPERE, IW, LIW, IOLDPS, POSELT, A, LA, LDA_FS,
680 & IBEG_BLOCK, IEND, TIPIV, LPIV, LASTBL, NB_BLOC_FAC,
681 & COMM, MYID, BUFR, LBUFR,LBUFR_BYTES,NBFIN,LEAF,
682 & IFLAG, IERROR, IPOOL,LPOOL,
683 & SLAVEF, POSFAC, IWPOS, IWPOSCB, IPTRLU, LRLU,
684 & LRLUS, COMP, PTRIST, PTRAST, PTLUST_S, PTRFAC,
685 & STEP, PIMASTER, PAMASTER,
686 & NSTK_S,PERM,PROCNODE_STEPS, root,
687 & OPASSW, OPELIW, ITLOC, RHS_MUMPS,
688 & FILS, DAD, PTRARW, PTRAIW,
689 & INTARR, DBLARR, ICNTL, KEEP,KEEP8,DKEEP, ND, FRERE,
690 & LPTRAR, NELT, FRTPTR, FRTELT,
691 & ISTEP_TO_INIV2, TAB_POS_IN_PERE
692 & , NELIM, LR_ACTIVATED, NPARTSASS, CURRENT_BLR_PANEL
702 TYPE (SMUMPS_ROOT_STRUC) :: root
703 INTEGER COMM_LOAD, ASS_IRECV
704 INTEGER N, INODE, FPERE, LIW, IBEG_BLOCK, IEND, LPIV,
705 & ioldps, lda_fs, nb_bloc_fac
706 INTEGER(8) :: POSELT, LA
707 INTEGER IW(LIW), TIPIV(LPIV)
710 INTEGER COMM, MYID, LBUFR, LBUFR_BYTES
712 INTEGER FRTPTR( +1 ), FRTELT( NELT )
714 INTEGER(8) KEEP8(150)
716 INTEGER NBFIN, IFLAG, IERROR, LEAF, LPOOL,
718 INTEGER(8) :: POSFAC, IPTRLU, LRLU, LRLUS
719 INTEGER IWPOS, IWPOSCB, COMP
720 INTEGER BUFR( LBUFR ), IPOOL(LPOOL),
721 & ITLOC(N+KEEP(253)), FILS(N), DAD( KEEP(28) ),
722 & ND( KEEP(28) ), FRERE( KEEP(28) )
723 INTEGER(8),
INTENT(IN) :: PTRARW(LPTRAR), PTRAIW(LPTRAR)
724 REAL :: RHS_MUMPS(KEEP(255))
725 INTEGER(8) :: PTRAST (KEEP(28))
726 INTEGER(8) :: PTRFAC (KEEP(28))
727 INTEGER(8) :: PAMASTER(KEEP(28))
728 INTEGER PTRIST(KEEP(28)), PTLUST_S(KEEP(28)),
729 & step(n), pimaster(keep(28)),
731 & perm(n), procnode_steps(keep(28))
733 & tab_pos_in_pere(slavef+2,
max(1,keep(56)))
734 DOUBLE PRECISION OPASSW,
735 REAL DBLARR(KEEP8(26))
736 INTEGER INTARR(KEEP8(27))
737 LOGICAL,
intent(in) :: LR_ACTIVATED
738 TYPE (LRB_TYPE),
DIMENSION(:) :: BLR_LorU
739 INTEGER,
intent(in) :: LRGROUPS(N)
741 INTEGER,
intent(in) :: NPARTSASS, CURRENT_BLR_PANEL
742 include
'mumps_headers.h'
743 INTEGER(8) :: APOS, LREQA
744 INTEGER NPIV, NCOL, PDEST, NSLAVES, WIDTH
746 INTEGER :: STATUS(MPI_STATUS_SIZE)
747 LOGICAL BLOCKING, SET_IRECV, MESSAGE_RECEIVED
748 DOUBLE PRECISION FLOP1,FLOP2
750 compress_cb = ((iw(ioldps+xxlr).EQ.1).OR.
751 & (iw(ioldps+xxlr).EQ.3))
752 nslaves= iw(ioldps+5+keep(ixsz))
753 IF (nslaves.EQ.0)
THEN
754 WRITE(6,*)
' ERROR 1 in SMUMPS_SEND_FACTORED_BLK '
757 npiv = iend - ibeg_block + 1
758 ncol = lda_fs - ibeg_block + 1
759 apos = poselt + int(lda_fs,8)*int(ibeg_block-1,8) +
760 & int(ibeg_block - 1,8)
761 IF (ibeg_block > 0)
THEN
769 flop2 = flop1 - flop2
772 & ((npiv.EQ.0).AND.(lastbl))
774 IF ((npiv.EQ.0).AND.(lastbl))
THEN
775 IF (compress_cb)
THEN
776 iw(ioldps+xxlr) = iw(ioldps+xxlr) -1
777 compress_cb = .false.
780 pdest = ioldps + 6 + keep(ixsz)
781 IF (( npiv .NE. 0 ).AND.(keep(50).NE.0))
THEN
782 nb_bloc_fac = nb_bloc_fac + 1
785 DO WHILE (ierr .EQ.-1)
788 & npiv, fpere, lastbl, tipiv, a(apos),
789 & iw(pdest), nslaves, keep,
791 & nslaves, width, comm,
792 & nelim, npartsass, current_blr_panel,
793 & lr_activated, blr_loru,
798 message_received = .false.
800 & blocking, set_irecv, message_received,
801 & mpi_any_source, mpi_any_tag,
802 & status, bufr, lbufr,
804 & procnode_steps, posfac, iwpos, iwposcb, iptrlu,
805 & lrlu, lrlus, n, iw, liw, a, la, ptrist,
807 & ptrast, step, pimaster, pamaster, nstk_s, comp, iflag,
810 & ipool, lpool, leaf, nbfin, myid, slavef,
811 & root, opassw, opeliw, itloc, rhs_mumps,
812 & fils, dad, ptrarw, ptraiw,
813 & intarr, dblarr, icntl, keep,keep8,dkeep, nd, frere,
814 & lptrar, nelt, frtptr, frtelt,
815 & istep_to_iniv2, tab_pos_in_pere, .true.
818 IF (message_received)
THEN
819 poselt = ptrast(step(inode))
820 apos = poselt + int(lda_fs,8)*int(ibeg_block-1,8) +
821 & int(ibeg_block - 1,8)
823 IF ( iflag .LT. 0 )
GOTO 500
826 IF (ierr .EQ. -2 .OR. ierr.EQ.-3 )
THEN
827 IF (ierr.EQ.-2) iflag = -17
828 IF (ierr.EQ.-3) iflag = -20
829 lreqa = int(ncol,8)*int(npiv,8)
830 lreqi = npiv + 6 + 2*nslaves + 2
832 & int(lreqi,8) * int(keep(34),8) + lreqa * int(keep(35),8),
subroutine smumps_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)
subroutine smumps_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)
recursive subroutine smumps_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)