OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
zfac_process_blocfacto.F File Reference

Go to the source code of this file.

Functions/Subroutines

recursive subroutine zmumps_process_blocfacto (comm_load, ass_irecv, bufr, lbufr, lbufr_bytes, procnode_steps, msgsou, slavef, iwpos, iwposcb, iptrlu, lrlu, lrlus, n, iw, liw, a, la, ptrist, ptrast, nstk_s, perm, comp, step, pimaster, pamaster, posfac, myid, comm, iflag, ierror, nbfin ptlust_s, ptrfac, root, opassw, opeliw, itloc, rhs_mumps, fils, dad, ptrarw, ptraiw, intarr, dblarr, icntl, keep, keep8, dkeep, ipool, lpool, leaf, nd, frere_steps, lptrar, nelt, frtptr, frtelt, istep_to_iniv2, tab_pos_in_pere, lrgroups)
subroutine zmumps_mpi_unpack_lr (bufr, lbufr, lbufr_bytes, position, npiv, nelim, dir, blr_u, nb_block_u, begs_blr_u, keep8, comm, ierr, iflag, ierror)

Function/Subroutine Documentation

◆ zmumps_mpi_unpack_lr()

subroutine zmumps_mpi_unpack_lr ( integer, dimension(lbufr), intent(in) bufr,
integer, intent(in) lbufr,
integer, intent(in) lbufr_bytes,
integer, intent(inout) position,
integer, intent(in) npiv,
integer, intent(in) nelim,
character(len=1) dir,
type (lrb_type), dimension(max(nb_block_u,1)), intent(out) blr_u,
integer, intent(in) nb_block_u,
integer, dimension(nb_block_u+2), intent(out) begs_blr_u,
integer(8), dimension(150) keep8,
integer, intent(in) comm,
integer, intent(out) ierr,
integer, intent(inout) iflag,
integer, intent(inout) ierror )

Definition at line 752 of file zfac_process_blocfacto.F.

758 USE zmumps_lr_core, ONLY : lrb_type, alloc_lrb
760 IMPLICIT NONE
761 INTEGER, INTENT(IN) :: LBUFR
762 INTEGER, INTENT(IN) :: LBUFR_BYTES
763 INTEGER, INTENT(IN) :: BUFR(LBUFR)
764 INTEGER, INTENT(INOUT) :: POSITION
765 INTEGER, INTENT(IN) :: NB_BLOCK_U, NELIM, NPIV
766 CHARACTER(len=1) :: DIR
767 INTEGER, INTENT(IN) :: COMM
768 INTEGER, INTENT(INOUT) :: IFLAG, IERROR
769 INTEGER, INTENT(OUT) :: IERR
770 TYPE (LRB_TYPE), INTENT(OUT),
771 & DIMENSION(max(NB_BLOCK_U,1)):: BLR_U
772 INTEGER, INTENT(OUT), DIMENSION(NB_BLOCK_U+2) :: BEGS_BLR_U
773 INTEGER(8) :: KEEP8(150)
774 LOGICAL :: ISLR
775 INTEGER :: ISLR_INT, I
776 INTEGER :: K, M, N
777 include 'mpif.h'
778 include 'mumps_tags.h'
779 ierr = 0
780 IF (size(blr_u) .NE.
781 & max(nb_block_u,1) ) THEN
782 WRITE(*,*) "Internal error 1 in ZMUMPS_MPI_UNPACK",
783 & nb_block_u,size(blr_u)
784 CALL mumps_abort()
785 ENDIF
786 begs_blr_u(1) = 1
787 begs_blr_u(2) = npiv+nelim+1
788 DO i = 1, nb_block_u
789 CALL mpi_unpack( bufr, lbufr_bytes, position,
790 & islr_int, 1, mpi_integer, comm, ierr )
791 CALL mpi_unpack( bufr, lbufr_bytes, position,
792 & k, 1,
793 & mpi_integer, comm, ierr )
794 CALL mpi_unpack( bufr, lbufr_bytes, position,
795 & m, 1,
796 & mpi_integer, comm, ierr )
797 CALL mpi_unpack( bufr, lbufr_bytes, position,
798 & n, 1,
799 & mpi_integer, comm, ierr )
800 begs_blr_u(i+2) = begs_blr_u(i+1) + m
801 IF (islr_int .eq. 1) THEN
802 islr = .true.
803 ELSE
804 islr = .false.
805 ENDIF
806 CALL alloc_lrb( blr_u(i), k, m, n, islr,
807 & iflag, ierror, keep8 )
808 IF (iflag.LT.0) RETURN
809 IF (islr) THEN
810 IF (k .GT. 0) THEN
811 CALL mpi_unpack( bufr, lbufr_bytes, position,
812 & blr_u(i)%Q(1,1), m*k, mpi_double_complex,
813 & comm, ierr )
814 CALL mpi_unpack( bufr, lbufr_bytes, position,
815 & blr_u(i)%R(1,1), n*k, mpi_double_complex,
816 & comm, ierr)
817 ENDIF
818 ELSE
819 CALL mpi_unpack( bufr, lbufr_bytes, position,
820 & blr_u(i)%Q(1,1), m*n, mpi_double_complex,
821 & comm, ierr)
822 ENDIF
823 ENDDO
824 RETURN
#define mumps_abort
Definition VE_Metis.h:25
#define max(a, b)
Definition macros.h:21
subroutine mpi_unpack(inbuf, insize, position, outbuf, outcnt, datatype, comm, ierr)
Definition mpi.f:514
subroutine alloc_lrb(lrb_out, k, m, n, islr, iflag, ierror, keep8)
Definition zlr_core.F:111

◆ zmumps_process_blocfacto()

recursive subroutine zmumps_process_blocfacto ( integer comm_load,
integer ass_irecv,
integer, dimension( lbufr ) bufr,
integer lbufr,
integer lbufr_bytes,
integer, dimension(keep(28)) procnode_steps,
integer msgsou,
integer slavef,
integer iwpos,
integer iwposcb,
integer(8) iptrlu,
integer(8) lrlu,
integer(8) lrlus,
integer n,
integer, dimension( liw ) iw,
integer liw,
complex(kind=8), dimension( la ) a,
integer(8) la,
integer, dimension(keep(28)) ptrist,
integer(8), dimension(keep(28)) ptrast,
integer, dimension(keep(28)) nstk_s,
integer, dimension(n) perm,
integer comp,
integer, dimension(n) step,
integer, dimension(keep(28)) pimaster,
integer(8), dimension(keep(28)) pamaster,
integer(8) posfac,
integer myid,
integer comm,
integer iflag,
integer ierror,
integer nbfin,
integer, dimension(keep(28)) ptlust_s,
integer(8), dimension(keep(28)) ptrfac,
type (zmumps_root_struc) root,
double precision opassw,
double precision opeliw,
integer, dimension(n+keep(253)) itloc,
complex(kind=8), dimension(keep(255)) rhs_mumps,
integer, dimension(n) fils,
integer, dimension(keep(28)) dad,
integer(8), dimension( lptrar ), intent(in) ptrarw,
integer(8), dimension( lptrar ), intent(in) ptraiw,
integer, dimension( keep8(27) ) intarr,
complex(kind=8), dimension( keep8(26) ) dblarr,
integer, dimension( 60 ) icntl,
integer, dimension( 500 ) keep,
integer(8), dimension(150) keep8,
double precision, dimension(230) dkeep,
integer, dimension( lpool ) ipool,
integer lpool,
integer leaf,
integer, dimension(keep(28)) nd,
integer, dimension(keep(28)) frere_steps,
integer lptrar,
integer nelt,
integer, dimension( n+1 ) frtptr,
integer, dimension( nelt ) frtelt,
integer, dimension(keep(71)) istep_to_iniv2,
integer, dimension(slavef+2,max(1,keep(56))) tab_pos_in_pere,
integer, dimension(n), intent(in) lrgroups )

Definition at line 14 of file zfac_process_blocfacto.F.

32 USE zmumps_ooc, ONLY : io_block
34 USE zmumps_load
39 USE zmumps_ana_lr, ONLY : get_cut
41 USE zmumps_struc_def, ONLY : zmumps_root_struc
43!$ USE OMP_LIB
44 IMPLICIT NONE
45 include 'mumps_headers.h'
46 TYPE (ZMUMPS_ROOT_STRUC) :: root
47 INTEGER ICNTL( 60 ), KEEP( 500 )
48 INTEGER(8) KEEP8(150)
49 DOUBLE PRECISION DKEEP(230)
50 INTEGER LBUFR, LBUFR_BYTES
51 INTEGER COMM_LOAD, ASS_IRECV
52 INTEGER BUFR( LBUFR )
53 INTEGER N, SLAVEF, IWPOS, IWPOSCB, LIW
54 INTEGER(8) :: IPTRLU, LRLU, LRLUS, LA
55 INTEGER(8) :: POSFAC
56 INTEGER COMP
57 INTEGER IFLAG, IERROR, NBFIN, MSGSOU
58 INTEGER PROCNODE_STEPS(KEEP(28)), PTRIST(KEEP(28)),
59 & NSTK_S(KEEP(28))
60 INTEGER(8) :: PAMASTER(KEEP(28))
61 INTEGER(8) :: PTRAST(KEEP(28))
62 INTEGER(8) :: PTRFAC(KEEP(28))
63 INTEGER PERM(N), STEP(N),
64 & PIMASTER(KEEP(28))
65 INTEGER IW( LIW )
66 COMPLEX(kind=8) A( LA )
67 INTEGER, intent(in) :: LRGROUPS(N)
68 INTEGER COMM, MYID
69 INTEGER NELT, LPTRAR
70 INTEGER FRTPTR( N+1 ), FRTELT( NELT )
71 INTEGER PTLUST_S(KEEP(28)),
72 & ITLOC(N+KEEP(253)), FILS(N), DAD(KEEP(28)), ND(KEEP(28))
73 COMPLEX(kind=8) :: RHS_MUMPS(KEEP(255))
74 INTEGER(8), INTENT(IN) :: PTRAIW( LPTRAR ), PTRARW( LPTRAR )
75 INTEGER FRERE_STEPS(KEEP(28))
76 DOUBLE PRECISION OPASSW, OPELIW
77 DOUBLE PRECISION FLOP1
78 INTEGER INTARR( KEEP8(27) )
79 COMPLEX(kind=8) DBLARR( KEEP8(26) )
80 INTEGER LEAF, LPOOL
81 INTEGER IPOOL( LPOOL )
82 INTEGER ISTEP_TO_INIV2(KEEP(71)),
83 & TAB_POS_IN_PERE(SLAVEF+2,max(1,KEEP(56)))
84 include 'mpif.h'
85 include 'mumps_tags.h'
86 INTEGER :: STATUS(MPI_STATUS_SIZE)
87 LOGICAL :: I_HAVE_SET_K117
88 INTEGER INODE, POSITION, NPIV, IERR, LP
89 INTEGER NCOL
90 INTEGER(8) :: POSBLOCFACTO
91 INTEGER :: LD_BLOCFACTO
92 INTEGER(8) :: LA_BLOCFACTO
93 INTEGER(8) :: LA_PTR
94 INTEGER(8) :: POSELT
95 COMPLEX(kind=8), DIMENSION(:), POINTER :: A_PTR
96 INTEGER IOLDPS, LCONT1, NASS1, NROW1, NCOL1, NPIV1
97 INTEGER NSLAV1, HS, ISW
98 INTEGER (8) :: LPOS, UPOS, LPOS2, IPOS, KPOS
99 INTEGER ICT11
100 INTEGER I, IPIV, FPERE
101 LOGICAL LASTBL, KEEP_BEGS_BLR_L
102 LOGICAL BLOCKING, SET_IRECV, MESSAGE_RECEIVED
103 COMPLEX(kind=8) ONE,ALPHA
104 parameter(one=(1.0d0,0.0d0), alpha=(-1.0d0,0.0d0))
105 INTEGER LIWFAC, STRAT, NextPivDummy
106 TYPE(IO_BLOCK) :: MonBloc
107 LOGICAL LAST_CALL
108 INTEGER LRELAY_INFO
109 INTEGER :: INFO_TMP(2)
110 INTEGER :: IDUMMY(1)
111 INTEGER :: NELIM, NPARTSASS_MASTER, NPARTSASS_MASTER_AUX,
112 & IPANEL,
113 & CURRENT_BLR,
114 & NB_BLR_L, NB_BLR_U, NB_BLR_COL
115 TYPE (LRB_TYPE), POINTER, DIMENSION(:,:) :: CB_LRB
116 TYPE (LRB_TYPE), DIMENSION(:), POINTER :: BLR_U, BLR_L
117 LOGICAL :: LR_ACTIVATED, COMPRESS_CB, COMPRESS_PANEL
118 LOGICAL OOCWRITE_COMPATIBLE_WITH_BLR
119 INTEGER :: LR_ACTIVATED_INT
120 INTEGER, POINTER, DIMENSION(:) :: BEGS_BLR_L, BEGS_BLR_U,
121 & BEGS_BLR_COL
122 COMPLEX(kind=8), ALLOCATABLE, DIMENSION(:) :: WORK, TAU
123 INTEGER, ALLOCATABLE, DIMENSION(:) :: JPVT
124 DOUBLE PRECISION,ALLOCATABLE,DIMENSION(:) :: RWORK
125 COMPLEX(kind=8), ALLOCATABLE, DIMENSION(:,:) :: BLOCK
126 INTEGER :: OMP_NUM
127 INTEGER NPARTSASS, NPARTSCB, MAXI_CLUSTER, LWORK,
128 & MAXI_CLUSTER_L, MAXI_CLUSTER_U, MAXI_CLUSTER_COL
129 INTEGER :: allocok
130 INTEGER MUMPS_PROCNODE
131 EXTERNAL mumps_procnode
132 keep_begs_blr_l = .false.
133 nullify(begs_blr_l)
134 nb_blr_u = -7654321
135 NULLIFY(begs_blr_u)
136 i_have_set_k117 = .false.
137 fpere = -1
138 position = 0
139 CALL mpi_unpack( bufr, lbufr_bytes, position, inode, 1,
140 & mpi_integer, comm, ierr )
141 CALL mpi_unpack( bufr, lbufr_bytes, position, npiv, 1,
142 & mpi_integer, comm, ierr )
143 lastbl = (npiv.LE.0)
144 IF (lastbl) THEN
145 npiv = -npiv
146 CALL mpi_unpack( bufr, lbufr_bytes, position, fpere, 1,
147 & mpi_integer, comm, ierr )
148 ENDIF
149 CALL mpi_unpack( bufr, lbufr_bytes, position, ncol, 1,
150 & mpi_integer, comm, ierr )
151 CALL mpi_unpack( bufr, lbufr_bytes, position, nelim, 1,
152 & mpi_integer, comm, ierr )
153 CALL mpi_unpack( bufr, lbufr_bytes, position,
154 & npartsass_master , 1,
155 & mpi_integer, comm, ierr )
156 CALL mpi_unpack( bufr, lbufr_bytes, position, ipanel,
157 & 1, mpi_integer, comm, ierr )
158 CALL mpi_unpack( bufr, lbufr_bytes, position, lr_activated_int,
159 & 1, mpi_integer, comm, ierr )
160 lr_activated = (lr_activated_int.EQ.1)
161 IF ( lr_activated ) THEN
162 la_blocfacto = int(npiv,8) * int(npiv+nelim,8)
163 ELSE
164 la_blocfacto = int(npiv,8) * int(ncol,8)
165 ENDIF
167 & npiv, la_blocfacto, .false.,
168 & keep(1), keep8(1),
169 & n, iw, liw, a, la,
170 & lrlu, iptrlu,
171 & iwpos, iwposcb, ptrist, ptrast,
172 & step, pimaster, pamaster, lrlus,
173 & keep(ixsz),comp,dkeep(97),myid,slavef, procnode_steps,
174 & dad, iflag, ierror)
175 IF (iflag.LT.0) GOTO 700
176 lrlu = lrlu - la_blocfacto
177 lrlus = lrlus - la_blocfacto
178 keep8(67) = min(lrlus, keep8(67))
179 keep8(69) = keep8(69) + la_blocfacto
180 keep8(68) = max(keep8(69), keep8(68))
181 posblocfacto = posfac
182 posfac = posfac + la_blocfacto
183 CALL zmumps_load_mem_update(.false., .false.,
184 & la-lrlus,0_8,la_blocfacto,keep,keep8,lrlus)
185 IF ((npiv .EQ. 0)
186 & ) THEN
187 ipiv=1
188 ELSE
189 ipiv = iwpos
190 iwpos = iwpos + npiv
191 IF (npiv .GT. 0) THEN
192 CALL mpi_unpack( bufr, lbufr_bytes, position,
193 & iw( ipiv ), npiv,
194 & mpi_integer, comm, ierr )
195 ENDIF
196 IF ( lr_activated ) THEN
197 CALL mpi_unpack( bufr, lbufr_bytes, position,
198 & a(posblocfacto), npiv*(npiv+nelim),
199 & mpi_double_complex,
200 & comm, ierr )
201 ld_blocfacto = npiv+nelim
202 CALL mpi_unpack( bufr, lbufr_bytes, position,
203 & nb_blr_u, 1, mpi_integer,
204 & comm, ierr )
205 ALLOCATE(blr_u(max(nb_blr_u,1)), stat=allocok)
206 IF (allocok > 0 ) THEN
207 iflag = -13
208 ierror = max(nb_blr_u,1)
209 lp = icntl(1)
210 IF (icntl(4) .LE. 0) lp=-1
211 IF (lp > 0) WRITE(lp,*) myid,
212 & ': ERROR allocation during ZMUMPS_PROCESS_BLOCFACTO'
213 GOTO 700
214 ENDIF
215 ALLOCATE(begs_blr_u(nb_blr_u+2), stat=allocok)
216 IF (allocok > 0 ) THEN
217 iflag = -13
218 ierror = nb_blr_u+2
219 lp = icntl(1)
220 IF (icntl(4) .LE. 0) lp=-1
221 IF (lp > 0) WRITE(lp,*) myid,
222 & ': ERROR allocation during ZMUMPS_PROCESS_BLOCFACTO'
223 GOTO 700
224 ENDIF
225 CALL zmumps_mpi_unpack_lr(bufr, lbufr, lbufr_bytes,
226 & position, npiv, nelim, 'H',
227 & blr_u(1), nb_blr_u,
228 & begs_blr_u(1),
229 & keep8, comm, ierr, iflag, ierror)
230 IF (iflag.LT.0) GOTO 700
231 ELSE
232 CALL mpi_unpack( bufr, lbufr_bytes, position,
233 & a(posblocfacto), npiv*ncol,
234 & mpi_double_complex,
235 & comm, ierr )
236 ld_blocfacto = ncol
237 ENDIF
238 ENDIF
239 CALL mpi_unpack( bufr, lbufr_bytes, position,
240 & lrelay_info, 1,
241 & mpi_integer, comm, ierr )
242 IF (ptrist(step( inode )) .EQ. 0) THEN
243 CALL zmumps_treat_descband( inode, comm_load,
244 & ass_irecv,
245 & bufr, lbufr, lbufr_bytes, procnode_steps, posfac,
246 & iwpos, iwposcb, iptrlu,
247 & lrlu, lrlus, n, iw, liw, a, la, ptrist,
248 & ptlust_s, ptrfac,
249 & ptrast, step, pimaster, pamaster, nstk_s, comp,
250 & iflag, ierror, comm,
251 & perm, ipool, lpool, leaf, nbfin, myid, slavef,
252 &
253 & root, opassw, opeliw, itloc, rhs_mumps,
254 & fils, dad, ptrarw, ptraiw,
255 & intarr, dblarr, icntl,keep,keep8,dkeep,nd, frere_steps,
256 & lptrar, nelt, frtptr, frtelt,
257 & istep_to_iniv2, tab_pos_in_pere, .true.
258 & , lrgroups
259 & )
260 IF ( iflag .LT. 0 ) GOTO 600
261 ENDIF
262 IF ( iw( ptrist(step(inode)) + 3 +keep(ixsz)) .EQ. 0 ) THEN
263 DO WHILE ( iw(ptrist(step(inode)) + xxnbpr) .NE. 0)
264 blocking = .true.
265 set_irecv = .false.
266 message_received = .false.
267 CALL zmumps_try_recvtreat( comm_load,
268 & ass_irecv, blocking, set_irecv, message_received,
269 & mpi_any_source, contrib_type2,
270 & status,
271 & bufr, lbufr, lbufr_bytes, procnode_steps, posfac,
272 & iwpos, iwposcb, iptrlu,
273 & lrlu, lrlus, n, iw, liw, a, la, ptrist,
274 & ptlust_s, ptrfac,
275 & ptrast, step, pimaster, pamaster, nstk_s, comp,
276 & iflag, ierror, comm,
277 & perm, ipool, lpool, leaf, nbfin, myid, slavef,
278 &
279 & root, opassw, opeliw, itloc, rhs_mumps,
280 & fils, dad, ptrarw, ptraiw,
281 & intarr, dblarr, icntl,keep,keep8,dkeep,nd, frere_steps,
282 & lptrar, nelt, frtptr, frtelt,
283 & istep_to_iniv2, tab_pos_in_pere, .true.
284 & , lrgroups
285 & )
286 IF ( iflag .LT. 0 ) GOTO 600
287 END DO
288 ENDIF
289 set_irecv = .true.
290 blocking = .false.
291 message_received = .true.
292 CALL zmumps_try_recvtreat( comm_load, ass_irecv,
293 & blocking, set_irecv, message_received,
294 & mpi_any_source, mpi_any_tag,
295 & status,
296 & bufr, lbufr, lbufr_bytes, procnode_steps, posfac,
297 & iwpos, iwposcb, iptrlu,
298 & lrlu, lrlus, n, iw, liw, a, la, ptrist,
299 & ptlust_s, ptrfac,
300 & ptrast, step, pimaster, pamaster, nstk_s, comp,
301 & iflag, ierror, comm,
302 & perm, ipool, lpool, leaf, nbfin, myid, slavef,
303 &
304 & root, opassw, opeliw, itloc, rhs_mumps,
305 & fils, dad, ptrarw, ptraiw,
306 & intarr, dblarr,icntl,keep,keep8,dkeep,nd, frere_steps,
307 & lptrar, nelt, frtptr, frtelt,
308 & istep_to_iniv2, tab_pos_in_pere, .true.
309 & , lrgroups
310 & )
311 ioldps = ptrist(step(inode))
312 CALL zmumps_dm_set_dynptr( iw(ioldps+xxs), a, la,
313 & ptrast(step(inode)), iw(ioldps+xxd), iw(ioldps+xxr),
314 & a_ptr, poselt, la_ptr )
315 lcont1 = iw( ioldps + keep(ixsz))
316 nass1 = iw( ioldps + 1 + keep(ixsz))
317 compress_panel = (iw(ioldps+xxlr).GE.2)
318 oocwrite_compatible_with_blr =
319 & ( .NOT.lr_activated.OR. (.NOT.compress_panel).OR.
320 & (keep(486).NE.2)
321 & )
322 IF ( nass1 < 0 ) THEN
323 nass1 = -nass1
324 iw( ioldps + 1 + keep(ixsz)) = nass1
325 IF (keep(55) .EQ. 0) THEN
326 CALL zmumps_asm_slave_arrowheads(inode, n, iw, liw,
327 & ioldps, a_ptr(poselt), la_ptr, 1_8, keep, keep8, itloc,
328 & fils, ptraiw,
329 & ptrarw, intarr, dblarr, keep8(27), keep8(26), rhs_mumps,
330 & lrgroups)
331 ELSE
332 CALL zmumps_asm_slave_elements(inode, n, nelt, iw, liw,
333 & ioldps, a_ptr(poselt), la_ptr, 1_8, keep, keep8, itloc,
334 & fils, ptraiw,
335 & ptrarw, intarr, dblarr, keep8(27), keep8(26),
336 & frtptr, frtelt, rhs_mumps, lrgroups)
337 ENDIF
338 ENDIF
339 nrow1 = iw( ioldps + 2 +keep(ixsz))
340 npiv1 = iw( ioldps + 3 +keep(ixsz))
341 nslav1 = iw( ioldps + 5 + keep(ixsz))
342 hs = 6 + nslav1 + keep(ixsz)
343 ncol1 = lcont1 + npiv1
344 IF (npiv.GT.0) THEN
345 ict11 = ioldps+hs+nrow1+npiv1 - 1
346 DO i = 1, npiv
347 IF (iw(ipiv+i-1).EQ.i) cycle
348 isw = iw(ict11+i)
349 iw(ict11+i) = iw(ict11+iw(ipiv+i-1))
350 iw(ict11+iw(ipiv+i-1)) = isw
351 ipos = poselt + int(npiv1 + i - 1,8)
352 kpos = poselt + int(npiv1 + iw(ipiv+i-1) - 1,8)
353 CALL zswap(nrow1, a_ptr(ipos), ncol1, a_ptr(kpos), ncol1)
354 ENDDO
355 lpos2 = poselt + int(npiv1,8)
356 lpos = lpos2 + int(npiv,8)
357 IF ((.NOT. lr_activated).OR.keep(475).EQ.0) THEN
358 CALL ztrsm('L','l','n','n', NPIV, NROW1, ONE,
359 & A(POSBLOCFACTO), LD_BLOCFACTO,
360 & A_PTR(LPOS2), NCOL1)
361 ENDIF
362 ENDIF
363 COMPRESS_CB = .FALSE.
364 IF ( LR_ACTIVATED) THEN
365.EQ..OR. COMPRESS_CB = ((IW(IOLDPS+XXLR)1)
366.EQ. & (IW(IOLDPS+XXLR)3))
367.AND..EQ. IF (COMPRESS_CBNPIV0) THEN
368 COMPRESS_CB = .FALSE.
369 IW(IOLDPS+XXLR) = IW(IOLDPS+XXLR) -1
370 ENDIF
371.NE. IF (NPIV0) THEN
372.EQ. IF ( (NPIV10)
373 & ) THEN
374 IOLDPS = PTRIST(STEP(INODE))
375 CALL GET_CUT(IW(IOLDPS+HS:IOLDPS+HS+NROW1-1), 0,
376 & NROW1, LRGROUPS, NPARTSCB,
377 & NPARTSASS, BEGS_BLR_L)
378 CALL REGROUPING2(BEGS_BLR_L, NPARTSASS, 0, NPARTSCB,
379 & NROW1-0, KEEP(488), .TRUE., KEEP(472))
380 NB_BLR_L = NPARTSCB
381.EQ. IF (IPANEL1) THEN
382 BEGS_BLR_COL=>BEGS_BLR_U
383 ELSE
384 ALLOCATE(BEGS_BLR_COL(size(BEGS_BLR_U)+IPANEL-1),
385 & stat=allocok)
386 IF (allocok > 0 ) THEN
387 IFLAG = -13
388 IERROR = size(BEGS_BLR_U)+IPANEL-1
389 LP = ICNTL(1)
390.LE. IF (ICNTL(4) 0) LP=-1
391 IF (LP > 0) WRITE(LP,*) MYID,
392 & ': error allocation during zmumps_process_blocfacto'
393 GOTO 700
394 ENDIF
395 BEGS_BLR_COL(1:IPANEL-1) = 1
396 DO I=1,size(BEGS_BLR_U)
397 BEGS_BLR_COL(IPANEL+I-1) = BEGS_BLR_U(I)
398 ENDDO
399 ENDIF
400 INFO_TMP(1) = IFLAG
401 INFO_TMP(2) = IERROR
402.LT. IF (IFLAG0) GOTO 700
403 CALL ZMUMPS_BLR_SAVE_INIT(IW(IOLDPS+XXF),
404 & .FALSE.,
405 & .TRUE.,
406 & .TRUE.,
407 & NPARTSASS_MASTER,
408 & BEGS_BLR_L,
409 & BEGS_BLR_COL,
410 & huge(NPARTSASS_MASTER),
411 & INFO_TMP)
412 IFLAG = INFO_TMP(1)
413 IERROR = INFO_TMP(2)
414.NE. IF (IPANEL1) THEN
415 DEALLOCATE(BEGS_BLR_COL)
416 ENDIF
417.LT. IF (IFLAG0) GOTO 700
418 ELSE
419 CALL ZMUMPS_BLR_RETRIEVE_BEGS_BLR_L (IW(IOLDPS+XXF),
420 & BEGS_BLR_L)
421 KEEP_BEGS_BLR_L = .TRUE.
422 NB_BLR_L = size(BEGS_BLR_L) - 2
423 NPARTSASS = 1
424 NPARTSCB = NB_BLR_L
425 ENDIF
426 ENDIF
427 ENDIF
428.GT. IF ( (NPIV 0)
429 & ) THEN
430 IF (LR_ACTIVATED) THEN
431 call MAX_CLUSTER(BEGS_BLR_L,NB_BLR_L+1,MAXI_CLUSTER_L)
432 call MAX_CLUSTER(BEGS_BLR_U,NB_BLR_U+1,MAXI_CLUSTER_U)
433.AND. IF (LASTBLCOMPRESS_CB) THEN
434 MAXI_CLUSTER=max(MAXI_CLUSTER_U+NELIM,MAXI_CLUSTER_L)
435 ELSE
436 MAXI_CLUSTER=max(MAXI_CLUSTER_U,MAXI_CLUSTER_L)
437 ENDIF
438 LWORK = MAXI_CLUSTER*MAXI_CLUSTER
439 OMP_NUM = 1
440#if defined(BLR_MT)
441!$ OMP_NUM = OMP_GET_MAX_THREADS()
442#endif
443 ALLOCATE(BLOCK(MAXI_CLUSTER, OMP_NUM*MAXI_CLUSTER),
444 & RWORK(2*MAXI_CLUSTER*OMP_NUM),
445 & TAU(MAXI_CLUSTER*OMP_NUM),
446 & JPVT(MAXI_CLUSTER*OMP_NUM),
447 & WORK(LWORK*OMP_NUM), stat=allocok)
448 IF (allocok > 0 ) THEN
449 IFLAG = -13
450 IERROR = MAXI_CLUSTER*OMP_NUM*MAXI_CLUSTER
451 & + 2*MAXI_CLUSTER*OMP_NUM
452 & + MAXI_CLUSTER*OMP_NUM
453 & + MAXI_CLUSTER*OMP_NUM
454 & + LWORK*OMP_NUM
455 LP = ICNTL(1)
456.LE. IF (ICNTL(4) 0) LP=-1
457 IF (LP > 0) WRITE(LP,*) MYID,
458 & ': error allocation during zmumps_process_blocfacto'
459 GOTO 700
460 ENDIF
461 CURRENT_BLR=1
462 ALLOCATE(BLR_L(NB_BLR_L), stat=allocok)
463 IF (allocok > 0 ) THEN
464 IFLAG = -13
465 IERROR = NB_BLR_L
466 LP = ICNTL(1)
467.LE. IF (ICNTL(4) 0) LP=-1
468 IF (LP > 0) WRITE(LP,*) MYID,
469 & ': error allocation during zmumps_process_blocfacto'
470 GOTO 700
471 ENDIF
472#if defined(BLR_MT)
473!$OMP PARALLEL
474#endif
475 CALL ZMUMPS_COMPRESS_PANEL_I_NOOPT
476 & (A_PTR(POSELT), LA_PTR, 1_8,
477 & IFLAG, IERROR, NCOL1,
478 & BEGS_BLR_L(1), size(BEGS_BLR_L), NB_BLR_L+1,
479 & DKEEP(8), KEEP(466), KEEP(473),
480 & BLR_L(1),
481 & CURRENT_BLR, 'v', WORK, TAU, JPVT, LWORK, RWORK,
482 & BLOCK, MAXI_CLUSTER, NELIM,
483 & .TRUE.,
484 & NPIV, NPIV1,
485 & 2, KEEP(483), KEEP8,
486 & OMP_NUM )
487#if defined(BLR_MT)
488!$OMP MASTER
489#endif
490.EQ. IF ( (KEEP(486)2)
491 & ) THEN
492 CALL ZMUMPS_BLR_SAVE_PANEL_LORU (
493 & IW(IOLDPS+XXF),
494 & 0,
495 & IPANEL, BLR_L)
496 ENDIF
497#if defined(BLR_MT)
498!$OMP END MASTER
499!$OMP BARRIER
500#endif
501.LT. IF (IFLAG0) GOTO 300
502.GE. IF (KEEP(475)1) THEN
503 CALL ZMUMPS_BLR_PANEL_LRTRSM(A, LA, POSBLOCFACTO,
504 & LD_BLOCFACTO, -6666,
505 & NB_BLR_L+1,
506 & BLR_L, CURRENT_BLR, CURRENT_BLR+1, NB_BLR_L+1,
507 & 2, 0, 0,
508 & .TRUE.)
509#if defined(BLR_MT)
510!$OMP BARRIER
511#endif
512.NE. IF (KEEP(486)2) THEN
513 CALL ZMUMPS_DECOMPRESS_PANEL_I_NOOPT(
514 & A_PTR(POSELT), LA_PTR, 1_8,
515 & NCOL1, NCOL1,
516 & .TRUE.,
517 & NPIV1+1,
518 & 1,
519 & NB_BLR_L+1, BLR_L(1), CURRENT_BLR, 'v', 1)
520 ENDIF
521 ENDIF
522 300 CONTINUE
523#if defined(BLR_MT)
524!$OMP END PARALLEL
525#endif
526.LT. IF (IFLAG0) GOTO 700
527 ENDIF
528 ENDIF
529.eq..AND. IF ( (KEEP(201)1)
530.OR..EQ. & (OOCWRITE_COMPATIBLE_WITH_BLR NPIV0) ) THEN
531 MonBloc%INODE = INODE
532 MonBloc%MASTER = .FALSE.
533 MonBloc%Typenode = 2
534 MonBloc%NROW = NROW1
535 MonBloc%NCOL = NCOL1
536 MonBloc%NFS = NASS1
537 MonBloc%LastPiv = NPIV1 + NPIV
538 MonBloc%LastPanelWritten_L = -9999
539 MonBloc%LastPanelWritten_U = -9999
540 NULLIFY(MonBloc%INDICES)
541 MonBloc%Last = LASTBL
542 STRAT = STRAT_TRY_WRITE
543 NextPivDummy = -8888
544 LIWFAC = IW(IOLDPS+XXI)
545 LAST_CALL = .FALSE.
546 CALL ZMUMPS_OOC_IO_LU_PANEL_I( STRAT, TYPEF_L,
547 & A_PTR(POSELT),
548 & LA_PTR, MonBloc, NextPivDummy, NextPivDummy,
549 & IW(IOLDPS), LIWFAC, MYID, KEEP8(31), IFLAG,LAST_CALL)
550 ENDIF
551.GT. IF ( (NPIV 0)
552 & ) THEN
553 IF (LR_ACTIVATED) THEN
554.GT. IF (NELIM0) THEN
555 UPOS = 1_8+int(NPIV,8)
556 CALL ZMUMPS_BLR_UPD_NELIM_VAR_L_I(
557 & A(POSBLOCFACTO), LA_BLOCFACTO, UPOS,
558 & A_PTR(POSELT), LA_PTR, LPOS-POSELT+1_8,
559 & IFLAG, IERROR, LD_BLOCFACTO, NCOL1,
560 & BEGS_BLR_L(1), size(BEGS_BLR_L),
561 & CURRENT_BLR, BLR_L(1), NB_BLR_L+1,
562 & CURRENT_BLR+1, NELIM, 'n')
563 ENDIF
564#if defined(BLR_MT)
565!$OMP PARALLEL
566#endif
567 CALL ZMUMPS_BLR_UPDATE_TRAILING_I(
568 & A_PTR(POSELT), LA_PTR, 1_8,
569 & IFLAG, IERROR, NCOL1,
570 & BEGS_BLR_L(1), size(BEGS_BLR_L),
571 & BEGS_BLR_U(1), size(BEGS_BLR_U), CURRENT_BLR,
572 & BLR_L(1), NB_BLR_L+1,
573 & BLR_U(1), NB_BLR_U+1,
574 & 0,
575 & .TRUE.,
576 & NPIV1,
577 & 2, 0,
578 & KEEP(481), DKEEP(11), KEEP(466), KEEP(477)
579 & )
580#if defined(BLR_MT)
581!$OMP END PARALLEL
582#endif
583.LT. IF (IFLAG0) GOTO 700
584 ELSE
585 UPOS = POSBLOCFACTO+int(NPIV,8)
586 CALL zgemm('n','n', NCOL-NPIV, NROW1, NPIV,
587 & ALPHA,A(UPOS), NCOL,
588 & A_PTR(LPOS2), NCOL1, ONE, A_PTR(LPOS), NCOL1)
589 ENDIF
590 ENDIF
591 IW(IOLDPS+KEEP(IXSZ) ) = IW(IOLDPS+KEEP(IXSZ) ) - NPIV
592 IW(IOLDPS + 3+KEEP(IXSZ) ) = IW(IOLDPS+3+KEEP(IXSZ) ) + NPIV
593 IF (LASTBL) THEN
594 IW(IOLDPS+1+KEEP(IXSZ) ) = IW(IOLDPS + 3+KEEP(IXSZ) )
595 ENDIF
596.not..AND. IF ( LASTBL
597.EQ. & (IW(IOLDPS+1+KEEP(IXSZ)) IW(IOLDPS + 3+KEEP(IXSZ))) ) THEN
598 write(*,*) 'internal error 1 **** in blacfacto '
599 CALL MUMPS_ABORT()
600 ENDIF
601 IF (LR_ACTIVATED) THEN
602.GT. IF ((NPIV0)
603 & ) THEN
604 CALL DEALLOC_BLR_PANEL( BLR_U, NB_BLR_U, KEEP8, KEEP(34))
605 DEALLOCATE(BLR_U)
606.EQ. IF (KEEP(486)3) THEN
607 CALL DEALLOC_BLR_PANEL( BLR_L, NB_BLR_L, KEEP8, KEEP(34))
608 DEALLOCATE(BLR_L)
609 ELSE
610 CALL UPD_MRY_LU_LRGAIN(BLR_L, NPARTSCB
611 & )
612 ENDIF
613 ENDIF
614 ENDIF
615 LRLU = LRLU + LA_BLOCFACTO
616 LRLUS = LRLUS + LA_BLOCFACTO
617 KEEP8(69) = KEEP8(69) - LA_BLOCFACTO
618 POSFAC = POSFAC - LA_BLOCFACTO
619 CALL ZMUMPS_LOAD_MEM_UPDATE(.FALSE.,.FALSE.,
620 & LA-LRLUS,0_8,-LA_BLOCFACTO,KEEP,KEEP8,LRLUS)
621 IWPOS = IWPOS - NPIV
622 FLOP1 = dble( NPIV1*NROW1 ) +
623 & dble(NROW1*NPIV1)*dble(2*NCOL1-NPIV1-1)
624 & -
625 & dble((NPIV1+NPIV)*NROW1 ) -
626 & dble(NROW1*(NPIV1+NPIV))*dble(2*NCOL1-NPIV1-NPIV-1)
627 CALL ZMUMPS_LOAD_UPDATE( 1, .FALSE., FLOP1, KEEP,KEEP8 )
628 IF (LASTBL) THEN
629.NE. IF (KEEP(486)0) THEN
630 IF (LR_ACTIVATED) THEN
631 CALL STATS_COMPUTE_FLOP_SLAVE_TYPE2(NROW1, NCOL1, NASS1,
632 & KEEP(50), INODE)
633 ELSE
634 CALL UPD_FLOP_FRFRONT_SLAVE(NROW1, NCOL1, NASS1,
635 & KEEP(50), INODE)
636 ENDIF
637 ENDIF
638 IF (LR_ACTIVATED) THEN
639 IF (COMPRESS_CB) THEN
640 CALL ZMUMPS_BLR_RETRIEVE_BEGS_BLR_C (IW(IOLDPS+XXF),
641 & BEGS_BLR_COL, NPARTSASS_MASTER_AUX)
642 BEGS_BLR_COL(1+NPARTSASS_MASTER) =
643 & BEGS_BLR_COL(1+NPARTSASS_MASTER) - NELIM
644 NB_BLR_COL = size(BEGS_BLR_COL) - 1
645.EQ. IF (NPIV0) THEN
646 call MAX_CLUSTER(BEGS_BLR_L,NB_BLR_L+1,MAXI_CLUSTER_L)
647 call MAX_CLUSTER(BEGS_BLR_COL,NB_BLR_COL,MAXI_CLUSTER_COL)
648 IF (COMPRESS_CB) THEN
649 MAXI_CLUSTER=max(MAXI_CLUSTER_COL+NELIM,MAXI_CLUSTER_L)
650 ELSE
651 MAXI_CLUSTER=max(MAXI_CLUSTER_COL,MAXI_CLUSTER_L)
652 ENDIF
653 LWORK = MAXI_CLUSTER*MAXI_CLUSTER
654 OMP_NUM = 1
655#if defined(BLR_MT)
656!$ OMP_NUM = OMP_GET_MAX_THREADS()
657#endif
658 ALLOCATE(BLOCK(MAXI_CLUSTER, OMP_NUM*MAXI_CLUSTER),
659 & RWORK(2*MAXI_CLUSTER*OMP_NUM),
660 & TAU(MAXI_CLUSTER*OMP_NUM),
661 & JPVT(MAXI_CLUSTER*OMP_NUM),
662 & WORK(LWORK*OMP_NUM), stat=allocok)
663 IF (allocok > 0 ) THEN
664 IFLAG = -13
665 IERROR = MAXI_CLUSTER*OMP_NUM*MAXI_CLUSTER
666 & + 2*MAXI_CLUSTER*OMP_NUM
667 & + MAXI_CLUSTER*OMP_NUM
668 & + MAXI_CLUSTER*OMP_NUM
669 & + LWORK*OMP_NUM
670 LP = ICNTL(1)
671.LE. IF (ICNTL(4) 0) LP=-1
672 IF (LP > 0) WRITE(LP,*) MYID,
673 & ': error allocation during zmumps_process_blocfacto'
674 GOTO 700
675 ENDIF
676 ENDIF
677 allocate(CB_LRB(NB_BLR_L,NB_BLR_COL-NPARTSASS_MASTER),
678 & stat=allocok)
679 IF (allocok > 0) THEN
680 IFLAG = -13
681 IERROR = NB_BLR_L*(NB_BLR_COL-NPARTSASS_MASTER)
682 GOTO 700
683 ENDIF
684 CALL ZMUMPS_BLR_SAVE_CB_LRB(IW(IOLDPS+XXF),CB_LRB)
685 ENDIF
686#if defined(BLR_MT)
687!$OMP PARALLEL
688#endif
689 IF (COMPRESS_CB) THEN
690 CALL ZMUMPS_COMPRESS_CB_I(
691 & A_PTR(POSELT), LA_PTR, 1_8, NCOL1,
692 & BEGS_BLR_L(1), size(BEGS_BLR_L),
693 & BEGS_BLR_COL(1), size(BEGS_BLR_COL),
694 & NB_BLR_L, NB_BLR_COL-NPARTSASS_MASTER,
695 & NPARTSASS_MASTER,
696 & NROW1, NCOL1-NPIV1-NPIV, INODE,
697 & IW(IOLDPS+XXF), 0, 2, IFLAG, IERROR,
698 & DKEEP(12), KEEP(466), KEEP(484), KEEP(489),
699 & CB_LRB(1,1),
700 & WORK, TAU, JPVT, LWORK, RWORK, BLOCK,
701 & MAXI_CLUSTER, KEEP8, OMP_NUM,
702 & -9999, -9999, -9999, KEEP(1),
703 & IDUMMY, 0, -9999 )
704#if defined(BLR_MT)
705!$OMP BARRIER
706#endif
707 ENDIF
708#if defined(BLR_MT)
709!$OMP END PARALLEL
710#endif
711.LT. IF (IFLAG0) GOTO 700
712 ENDIF
713 CALL ZMUMPS_END_FACTO_SLAVE(
714 & COMM_LOAD, ASS_IRECV,
715 & N, INODE, FPERE,
716 & root,
717 & MYID, COMM,
718 &
719 & BUFR, LBUFR, LBUFR_BYTES, PROCNODE_STEPS, POSFAC,
720 & IWPOS, IWPOSCB, IPTRLU, LRLU, LRLUS, IW, LIW, A, LA,
721 & PTRIST, PTLUST_S, PTRFAC, PTRAST, STEP, PIMASTER,
722 & PAMASTER,
723 & NSTK_S, COMP, IFLAG, IERROR, PERM,
724 & IPOOL, LPOOL, LEAF, NBFIN, SLAVEF,
725 & OPASSW, OPELIW, ITLOC, RHS_MUMPS, FILS, DAD, PTRARW, PTRAIW,
726 & INTARR, DBLARR,ICNTL,KEEP,KEEP8,DKEEP,ND, FRERE_STEPS,
727 & LPTRAR, NELT, FRTPTR, FRTELT,
728 & ISTEP_TO_INIV2, TAB_POS_IN_PERE
729 & , LRGROUPS
730 & )
731 ENDIF
732 IF (LR_ACTIVATED) THEN
733 IF (allocated(RWORK)) DEALLOCATE(RWORK)
734 IF (allocated(WORK)) DEALLOCATE(WORK)
735 IF (allocated(TAU)) DEALLOCATE(TAU)
736 IF (allocated(JPVT)) DEALLOCATE(JPVT)
737 IF (allocated(BLOCK)) DEALLOCATE(BLOCK)
738 IF (associated(BEGS_BLR_L)) THEN
739.NOT. IF ( KEEP_BEGS_BLR_L) DEALLOCATE(BEGS_BLR_L)
740 ENDIF
741.GT. IF ((NPIV0)
742 & ) THEN
743 IF (associated(BEGS_BLR_U)) DEALLOCATE(BEGS_BLR_U)
744 ENDIF
745 ENDIF
746 600 CONTINUE
747 RETURN
748 700 CONTINUE
749 CALL ZMUMPS_BDC_ERROR( MYID, SLAVEF, COMM, KEEP )
750 RETURN
subroutine zswap(n, zx, incx, zy, incy)
ZSWAP
Definition zswap.f:81
subroutine ztrsm(side, uplo, transa, diag, m, n, alpha, a, lda, b, ldb)
ZTRSM
Definition ztrsm.f:180
#define min(a, b)
Definition macros.h:20
integer, public strat_try_write
integer, public typef_l
subroutine get_cut(iwr, nass, ncb, lrgroups, npartscb, npartsass, cut)
Definition zana_lr.F:25
subroutine zmumps_dm_set_dynptr(cb_state, a, la, pamaster_or_ptrast, ixxd, ixxr, son_a, iachk, recsize)
integer, save, private myid
Definition zmumps_load.F:57
double precision, save, private alpha
Definition zmumps_load.F:55
subroutine, public zmumps_load_mem_update(ssarbr, process_bande_arg, mem_value, new_lu, inc_mem_arg, keep, keep8, lrlus)
int comp(int a, int b)
integer function mumps_procnode(procinfo_inode, k199)
subroutine zmumps_asm_slave_arrowheads(inode, n, iw, liw, ioldps, a, la, poselt, keep, keep8, itloc, fils, ptraiw, ptrarw, intarr, dblarr, lintarr, ldblarr, rhs_mumps, lrgroups)
Definition zfac_asm.F:637
subroutine zmumps_asm_slave_elements(inode, n, nelt, iw, liw, ioldps, a, la, poselt, keep, keep8, itloc, fils, ptraiw, ptrarw, intarr, dblarr, lintarr, ldblarr, frt_ptr, frt_elt, rhs_mumps, lrgroups)
subroutine zmumps_get_size_needed(sizei_needed, sizer_needed, skip_top_stack, keep, keep8, n, iw, liw, a, la, lrlu, iptrlu, iwpos, iwposcb, ptrist, ptrast, step, pimaster, pamaster, lrlus, xsize, comp, acc_time, myid, slavef, procnode_steps, dad, iflag, ierror)
recursive subroutine zmumps_treat_descband(inode, comm_load, ass_irecv, 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)
subroutine zmumps_mpi_unpack_lr(bufr, lbufr, lbufr_bytes, position, npiv, nelim, dir, blr_u, nb_block_u, begs_blr_u, keep8, comm, ierr, iflag, ierror)
recursive subroutine zmumps_process_blocfacto(comm_load, ass_irecv, bufr, lbufr, lbufr_bytes, procnode_steps, msgsou, slavef, iwpos, iwposcb, iptrlu, lrlu, lrlus, n, iw, liw, a, la, ptrist, ptrast, nstk_s, perm, comp, step, pimaster, pamaster, posfac, myid, comm, iflag, ierror, nbfin ptlust_s, ptrfac, root, opassw, opeliw, itloc, rhs_mumps, fils, dad, ptrarw, ptraiw, intarr, dblarr, icntl, keep, keep8, dkeep, ipool, lpool, leaf, nd, frere_steps, lptrar, nelt, frtptr, frtelt, istep_to_iniv2, tab_pos_in_pere, lrgroups)
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)