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

Go to the source code of this file.

Functions/Subroutines

subroutine dmumps_init_pool_last3 (ipool, lpool, leaf)
subroutine dmumps_insert_pool_n (n, pool, lpool, procnode, slavef, keep199, k28, k76, k80, k47, step, inode)
logical function dmumps_pool_empty (pool, lpool)
subroutine dmumps_extract_pool (n, pool, lpool, procnode, slavef, step, inode, keep, keep8, myid, nd, force_extract_top_sbtr)
subroutine dmumps_mem_cons_mng (inode, pool, lpool, n, step, keep, keep8, procnode, slavef, myid, sbtr, flag_same_proc, min_proc)
subroutine dmumps_mem_node_select (inode, pool, lpool, n, step, keep, keep8, procnode, slavef, myid, sbtr_flag, proc_flag, min_proc)
subroutine dmumps_get_inode_from_pool (ipool, lpool, iii, leaf, inode, strategie)

Function/Subroutine Documentation

◆ dmumps_extract_pool()

subroutine dmumps_extract_pool ( integer n,
integer, dimension(lpool) pool,
integer lpool,
integer, dimension(keep(28)) procnode,
integer slavef,
integer, dimension(n) step,
integer inode,
integer, dimension(500) keep,
integer(8), dimension(150) keep8,
integer myid,
integer, dimension(keep(28)) nd,
logical force_extract_top_sbtr )

Definition at line 168 of file dfac_sol_pool.F.

171 USE dmumps_load
172 IMPLICIT NONE
173 INTEGER INODE, LPOOL, SLAVEF, N
174 INTEGER KEEP(500)
175 INTEGER(8) KEEP8(150)
176 INTEGER STEP(N), POOL(LPOOL), PROCNODE(KEEP(28)),
177 & ND(KEEP(28))
179 LOGICAL MUMPS_INSSARBR, MUMPS_ROOTSSARBR, DMUMPS_POOL_EMPTY
180 EXTERNAL mumps_procnode
181 INTEGER MUMPS_PROCNODE
182 INTEGER NBINSUBTREE, NBTOP, INSUBTREE, INODE_EFF, MYID
183 LOGICAL LEFT, ATOMIC_SUBTREE,UPPER,FLAG_MEM,SBTR_FLAG,PROC_FLAG
184 LOGICAL FORCE_EXTRACT_TOP_SBTR
185 INTEGER NODE_TO_EXTRACT,I,J,MIN_PROC
186 nbinsubtree = pool(lpool)
187 nbtop = pool(lpool - 1)
188 insubtree = pool(lpool - 2)
189 IF ( keep(76) > 6 .OR. keep(76) < 0 ) THEN
190 WRITE(*,*) "Error 2 in DMUMPS_EXTRACT_POOL: unknown strategy"
191 CALL mumps_abort()
192 ENDIF
193 atomic_subtree = ( keep(76) == 1 .OR. keep(76) == 3)
194 IF ( dmumps_pool_empty(pool, lpool) ) THEN
195 WRITE(*,*) "Error 1 in DMUMPS_EXTRACT_POOL"
196 CALL mumps_abort()
197 ENDIF
198 IF ( .NOT. atomic_subtree ) THEN
199 left = (nbtop == 0)
200 IF(.NOT.left)THEN
201 IF((keep(76).EQ.4).OR.(keep(76).EQ.5))THEN
202 IF(nbinsubtree.EQ.0)THEN
203 left=.false.
204 ELSE
205 IF ( pool(nbinsubtree) < 0 ) THEN
206 i = -pool(nbinsubtree)
207 ELSE IF ( pool(nbinsubtree) > n ) THEN
208 i = pool(nbinsubtree) - n
209 ELSE
210 i = pool(nbinsubtree)
211 ENDIF
212 IF ( pool(lpool-2-nbtop) < 0 ) THEN
213 j = -pool(lpool-2-nbtop)
214 ELSE IF ( pool(lpool-2-nbtop) > n ) THEN
215 j = pool(lpool-2-nbtop) - n
216 ELSE
217 j = pool(lpool-2-nbtop)
218 ENDIF
219 IF(keep(76).EQ.4)THEN
220 IF(depth_first_load(step(j)).GE.
221 & depth_first_load(step(i)))THEN
222 left=.true.
223 ELSE
224 left=.false.
225 ENDIF
226 ENDIF
227 IF(keep(76).EQ.5)THEN
228 IF(cost_trav(step(j)).LE.
229 & cost_trav(step(i)))THEN
230 left=.true.
231 ELSE
232 left=.false.
233 ENDIF
234 ENDIF
235 ENDIF
236 ENDIF
237 ENDIF
238 ELSE
239 IF ( insubtree == 1 ) THEN
240 IF (nbinsubtree == 0) THEN
241 WRITE(*,*) "Error 3 in DMUMPS_EXTRACT_POOL"
242 CALL mumps_abort()
243 ENDIF
244 left = .true.
245 ELSE
246 left = ( nbtop == 0)
247 ENDIF
248 ENDIF
249 222 CONTINUE
250 IF ( left ) THEN
251 inode = pool( nbinsubtree )
252 IF(keep(81).EQ.2)THEN
253 IF((inode.GE.0).AND.(inode.LE.n))THEN
254 CALL dmumps_mem_node_select(inode,pool,lpool,n,
255 & step,keep,keep8,procnode,slavef,myid,sbtr_flag,
256 & proc_flag,min_proc)
257 IF(.NOT.sbtr_flag)THEN
258 WRITE(*,*)myid,': ca a change pour moi'
259 left=.false.
260 GOTO 222
261 ENDIF
262 ENDIF
263 ELSEIF(keep(81).EQ.3)THEN
264 IF((inode.GE.0).AND.(inode.LE.n))THEN
265 node_to_extract=inode
266 flag_mem=.false.
267 CALL dmumps_load_chk_memcst_pool(flag_mem)
268 IF(flag_mem)THEN
269 CALL dmumps_mem_node_select(inode,pool,lpool,n,
270 & step,keep,keep8,
271 & procnode,slavef,myid,sbtr_flag,
272 & proc_flag,min_proc)
273 IF(.NOT.sbtr_flag)THEN
274 left=.false.
275 WRITE(*,*)myid,': ca a change pour moi (2)'
276 GOTO 222
277 ENDIF
278 ENDIF
279 ENDIF
280 ENDIF
281 nbinsubtree = nbinsubtree - 1
282 IF ( inode < 0 ) THEN
283 inode_eff = -inode
284 ELSE IF ( inode > n ) THEN
285 inode_eff = inode - n
286 ELSE
287 inode_eff = inode
288 ENDIF
289 IF ( mumps_inssarbr( procnode(step(inode_eff)),
290 & keep(199)) ) THEN
291 IF((keep(47).GE.2.AND.keep(81).EQ.1).AND.
292 & (insubtree.EQ.0))THEN
293 CALL dmumps_load_set_sbtr_mem(.true.)
294 ENDIF
295 insubtree = 1
296 ELSE IF ( mumps_rootssarbr( procnode(step(inode_eff)),
297 & keep(199))) THEN
298 IF((keep(47).GE.2.AND.keep(81).EQ.1).AND.
299 & (insubtree.EQ.1))THEN
300 CALL dmumps_load_set_sbtr_mem(.false.)
301 ENDIF
302 insubtree = 0
303 END IF
304 ELSE
305 IF (nbtop < 1 ) THEN
306 WRITE(*,*) "Error 5 in DMUMPS_EXTRACT_POOL", nbtop
307 CALL mumps_abort()
308 ENDIF
309 inode = pool( lpool - 2 - nbtop )
310 IF(keep(81).EQ.1)THEN
312 & (inode,upper,slavef,keep,keep8,
313 & step,pool,lpool,procnode,n)
314 IF(upper)THEN
315 GOTO 666
316 ELSE
317 nbinsubtree=nbinsubtree-1
318 IF ( mumps_inssarbr( procnode(step(inode)),
319 & keep(199)) ) THEN
320 insubtree = 1
321 ELSE IF ( mumps_rootssarbr( procnode(step(inode)),
322 & keep(199))) THEN
323 insubtree = 0
324 ENDIF
325 GOTO 777
326 ENDIF
327 ENDIF
328 IF(keep(81).EQ.2)THEN
329 CALL dmumps_mem_node_select(inode,pool,lpool,n,step,
330 & keep,keep8,
331 & procnode,slavef,myid,sbtr_flag,proc_flag,min_proc)
332 IF(sbtr_flag)THEN
333 left=.true.
334 WRITE(*,*)myid,': ca a change pour moi (3)'
335 GOTO 222
336 ENDIF
337 ELSE
338 IF(keep(81).EQ.3)THEN
339 IF((inode.GE.0).AND.(inode.LE.n))THEN
340 node_to_extract=inode
341 flag_mem=.false.
342 CALL dmumps_load_chk_memcst_pool(flag_mem)
343 IF(flag_mem)THEN
344 CALL dmumps_mem_node_select(inode,pool,lpool,n,
345 & step,keep,keep8,
346 & procnode,slavef,myid,sbtr_flag,
347 & proc_flag,min_proc)
348 IF(sbtr_flag)THEN
349 left=.true.
350 WRITE(*,*)myid,': ca a change pour moi (4)'
351 GOTO 222
352 ENDIF
353 ELSE
355 ENDIF
356 ENDIF
357 ENDIF
358 ENDIF
359 666 CONTINUE
360 nbtop = nbtop - 1
361 IF((inode.GT.0).AND.(inode.LE.n))THEN
362 IF ((( keep(80) == 2 .OR. keep(80)==3 ) .AND.
363 & ( keep(47) == 4 ))) THEN
364 CALL dmumps_remove_node(inode,2)
365 ENDIF
366 ENDIF
367 IF ( inode < 0 ) THEN
368 inode_eff = -inode
369 ELSE IF ( inode > n ) THEN
370 inode_eff = inode - n
371 ELSE
372 inode_eff = inode
373 ENDIF
374 END IF
375 777 CONTINUE
376 pool(lpool) = nbinsubtree
377 pool(lpool - 1) = nbtop
378 pool(lpool - 2) = insubtree
379 RETURN
#define mumps_abort
Definition VE_Metis.h:25
logical function dmumps_pool_empty(pool, lpool)
subroutine dmumps_mem_node_select(inode, pool, lpool, n, step, keep, keep8, procnode, slavef, myid, sbtr_flag, proc_flag, min_proc)
subroutine, public dmumps_load_clean_meminfo_pool(inode)
subroutine, public dmumps_load_set_sbtr_mem(what)
subroutine, public dmumps_load_chk_memcst_pool(flag)
subroutine, public dmumps_load_pool_check_mem(inode, upper, slavef, keep, keep8, step, pool, lpool, procnode, n)
double precision, dimension(:), pointer, save, public cost_trav
integer, save, private myid
Definition dmumps_load.F:57
integer, dimension(:), pointer, save, public depth_first_load
subroutine, public dmumps_remove_node(inode, num_call)
logical function mumps_rootssarbr(procinfo_inode, k199)
logical function mumps_inssarbr(procinfo_inode, k199)
integer function mumps_procnode(procinfo_inode, k199)

◆ dmumps_get_inode_from_pool()

subroutine dmumps_get_inode_from_pool ( integer, dimension (lpool) ipool,
integer, intent(in) lpool,
integer iii,
integer leaf,
integer, intent(out) inode,
integer, intent(in) strategie )

Definition at line 514 of file dfac_sol_pool.F.

517 IMPLICIT NONE
518 INTEGER, INTENT(IN) :: STRATEGIE, LPOOL
519 INTEGER IPOOL (LPOOL)
520 INTEGER III,LEAF
521 INTEGER, INTENT(OUT) :: INODE
522 leaf = leaf - 1
523 inode = ipool( leaf )
524 RETURN

◆ dmumps_init_pool_last3()

subroutine dmumps_init_pool_last3 ( integer, dimension(lpool) ipool,
integer lpool,
integer leaf )

Definition at line 14 of file dfac_sol_pool.F.

15 USE dmumps_load
16 IMPLICIT NONE
17 INTEGER LPOOL, LEAF
18 INTEGER IPOOL(LPOOL)
19 ipool(lpool-2) = 0
20 ipool(lpool-1) = 0
21 ipool(lpool) = leaf-1
22 RETURN

◆ dmumps_insert_pool_n()

subroutine dmumps_insert_pool_n ( integer n,
integer, dimension(lpool) pool,
integer lpool,
integer, dimension(k28) procnode,
integer slavef,
integer keep199,
integer k28,
integer k76,
integer k80,
integer k47,
integer, dimension(n) step,
integer inode )

Definition at line 24 of file dfac_sol_pool.F.

27 USE dmumps_load
28 IMPLICIT NONE
29 INTEGER N, INODE, LPOOL, K28, SLAVEF, K76, K80, K47, KEEP199
30 INTEGER STEP(N), POOL(LPOOL), PROCNODE(K28)
32 LOGICAL MUMPS_IN_OR_ROOT_SSARBR, ATM_CURRENT_NODE
33 INTEGER NBINSUBTREE, NBTOP, INODE_EFF,POS_TO_INSERT
34 INTEGER IPOS1, IPOS2, ISWAP
35 INTEGER NODE,J,I
36 atm_current_node = ( k76 == 2 .OR. k76 ==3 .OR.
37 & k76==4 .OR. k76==5)
38 nbinsubtree = pool(lpool)
39 nbtop = pool(lpool - 1)
40 IF (inode > n ) THEN
41 inode_eff = inode - n
42 ELSE IF (inode < 0) THEN
43 inode_eff = - inode
44 ELSE
45 inode_eff = inode
46 ENDIF
47 IF(((inode.GT.0).AND.(inode.LE.n)).AND.(.NOT.
48 & mumps_in_or_root_ssarbr(procnode(step(inode_eff)),
49 & keep199))
50 & ) THEN
51 IF ((k80 == 1 .AND. k47 .GE. 1) .OR.
52 & (( k80 == 2 .OR. k80==3 ) .AND.
53 & ( k47 == 4 ))) THEN
54 CALL dmumps_remove_node(inode,1)
55 ENDIF
56 ENDIF
57 IF ( mumps_in_or_root_ssarbr(procnode(step(inode_eff)),
58 & keep199) ) THEN
59 pool(nbinsubtree + 1 ) = inode
60 nbinsubtree = nbinsubtree + 1
61 ELSE
62 pos_to_insert=nbtop+1
63 IF((k76.EQ.4).OR.(k76.EQ.5).OR.(k76.EQ.6))THEN
64 IF((inode.GT.n).OR.(inode.LE.0))THEN
65 DO j=nbtop,1,-1
66 IF((pool(lpool-2-j).GT.0)
67 & .AND.(pool(lpool-2-j).LE.n))THEN
68 GOTO 333
69 ENDIF
70 IF ( pool(lpool-2-j) < 0 ) THEN
71 node=-pool(lpool-2-j)
72 ELSE IF ( pool(lpool-2-j) > n ) THEN
73 node = pool(lpool-2-j) - n
74 ELSE
75 node = pool(lpool-2-j)
76 ENDIF
77 IF((k76.EQ.4).OR.(k76.EQ.6))THEN
78 IF(depth_first_load(step(node)).GE.
79 & depth_first_load(step(inode_eff)))THEN
80 GOTO 333
81 ENDIF
82 ENDIF
83 IF(k76.EQ.5)THEN
84 IF(cost_trav(step(node)).LE.
85 & cost_trav(step(inode_eff)))THEN
86 GOTO 333
87 ENDIF
88 ENDIF
89 pos_to_insert=pos_to_insert-1
90 ENDDO
91 IF(j.EQ.0) j=1
92 333 CONTINUE
93 DO i=nbtop,pos_to_insert,-1
94 pool(lpool-2-i-1)=pool(lpool-2-i)
95 ENDDO
96 pool(lpool-2-pos_to_insert)=inode
97 nbtop = nbtop + 1
98 GOTO 20
99 ENDIF
100 DO j=nbtop,1,-1
101 IF((pool(lpool-2-j).GT.0).AND.(pool(lpool-2-j).LE.n))THEN
102 GOTO 888
103 ENDIF
104 pos_to_insert=pos_to_insert-1
105 ENDDO
106 888 CONTINUE
107 DO i=j,1,-1
108 node=pool(lpool-2-i)
109 IF((k76.EQ.4).OR.(k76.EQ.6))THEN
110 IF(depth_first_load(step(node)).GE.
111 & depth_first_load(step(inode_eff)))THEN
112 GOTO 999
113 ENDIF
114 ENDIF
115 IF(k76.EQ.5)THEN
116 IF(cost_trav(step(node)).LE.
117 & cost_trav(step(inode_eff)))THEN
118 GOTO 999
119 ENDIF
120 ENDIF
121 pos_to_insert=pos_to_insert-1
122 ENDDO
123 IF(i.EQ.0) i=1
124 999 CONTINUE
125 DO j=nbtop,pos_to_insert,-1
126 pool(lpool-2-j-1)=pool(lpool-2-j)
127 ENDDO
128 pool(lpool-2-pos_to_insert)=inode
129 nbtop = nbtop + 1
130 GOTO 20
131 ENDIF
132 pool( lpool - 2 - ( nbtop + 1 ) ) = inode
133 nbtop = nbtop + 1
134 ipos1 = lpool - 2 - nbtop
135 ipos2 = lpool - 2 - nbtop + 1
136 10 CONTINUE
137 IF ( ipos2 == lpool - 2 ) GOTO 20
138 IF ( pool(ipos1) < 0 ) GOTO 20
139 IF ( pool(ipos2) < 0 ) GOTO 30
140 IF ( atm_current_node ) THEN
141 IF ( pool(ipos1) > n ) GOTO 20
142 IF ( pool(ipos2) > n ) GOTO 30
143 END IF
144 GOTO 20
145 30 CONTINUE
146 iswap = pool(ipos1)
147 pool(ipos1) = pool(ipos2)
148 pool(ipos2) = iswap
149 ipos1 = ipos1 + 1
150 ipos2 = ipos2 + 1
151 GOTO 10
152 20 CONTINUE
153 ENDIF
154 pool(lpool) = nbinsubtree
155 pool(lpool - 1) = nbtop
156 RETURN
logical function mumps_in_or_root_ssarbr(procinfo_inode, k199)

◆ dmumps_mem_cons_mng()

subroutine dmumps_mem_cons_mng ( integer inode,
integer, dimension(lpool) pool,
integer lpool,
integer n,
integer, dimension(n) step,
integer, dimension(500) keep,
integer(8), dimension(150) keep8,
integer, dimension(keep(28)) procnode,
integer slavef,
integer myid,
logical sbtr,
logical flag_same_proc,
integer min_proc )

Definition at line 381 of file dfac_sol_pool.F.

384 USE dmumps_load
385 IMPLICIT NONE
386 INTEGER INODE,LPOOL,N,MYID,SLAVEF,PROC,MIN_PROC
387 INTEGER POOL(LPOOL),KEEP(500),STEP(N),PROCNODE(KEEP(28))
388 INTEGER(8) KEEP8(150)
389 INTEGER MUMPS_PROCNODE
390 EXTERNAL mumps_procnode
391 LOGICAL SBTR,FLAG_SAME_PROC
392 INTEGER POS_TO_EXTRACT,NODE_TO_EXTRACT,NBTOP,I,INSUBTREE,
393 & NBINSUBTREE
394 DOUBLE PRECISION MIN_COST, TMP_COST
395 nbinsubtree = pool(lpool)
396 nbtop = pool(lpool - 1)
397 insubtree = pool(lpool - 2)
398 min_cost=huge(min_cost)
399 tmp_cost=huge(tmp_cost)
400 flag_same_proc=.false.
401 sbtr=.false.
402 min_proc=-9999
403 IF((inode.GT.0).AND.(inode.LE.n))THEN
404 pos_to_extract=-1
405 node_to_extract=-1
406 DO i=nbtop,1,-1
407 IF(node_to_extract.LT.0)THEN
408 pos_to_extract=i
409 node_to_extract=pool(lpool-2-i)
410 CALL dmumps_load_comp_maxmem_pool(node_to_extract,
411 & tmp_cost,proc)
412 min_cost=tmp_cost
413 min_proc=proc
414 ELSE
415 CALL dmumps_load_comp_maxmem_pool(pool(lpool-2-i),
416 & tmp_cost,proc)
417 IF((proc.NE.min_proc).OR.(tmp_cost.NE.min_cost))THEN
418 flag_same_proc=.true.
419 ENDIF
420 IF(tmp_cost.GT.min_cost)THEN
421 pos_to_extract=i
422 node_to_extract=pool(lpool-2-i)
423 min_cost=tmp_cost
424 min_proc=proc
425 ENDIF
426 ENDIF
427 ENDDO
428 IF((keep(47).EQ.4).AND.(nbinsubtree.NE.0))THEN
429 CALL dmumps_check_sbtr_cost(nbinsubtree,insubtree,nbtop,
430 & min_cost,sbtr)
431 IF(sbtr)THEN
432 WRITE(*,*)myid,': selecting from subtree'
433 RETURN
434 ENDIF
435 ENDIF
436 IF((.NOT.sbtr).AND.(.NOT.flag_same_proc))THEN
437 WRITE(*,*)myid,': I must search for a task
438 & to save My friend'
439 RETURN
440 ENDIF
441 inode = node_to_extract
442 DO i=pos_to_extract,nbtop
443 IF(i.NE.nbtop)THEN
444 pool(lpool-2-i)=pool(lpool-2-i-1)
445 ENDIF
446 ENDDO
447 pool(lpool-2-nbtop)=inode
449 ELSE
450 ENDIF
subroutine, public dmumps_load_comp_maxmem_pool(inode, max_mem, proc)
subroutine, public dmumps_check_sbtr_cost(nbinsubtree, insubtree, nbtop, min_cost, sbtr)

◆ dmumps_mem_node_select()

subroutine dmumps_mem_node_select ( integer inode,
integer, dimension(lpool) pool,
integer lpool,
integer n,
integer, dimension(n) step,
integer, dimension(500) keep,
integer(8), dimension(150) keep8,
integer, dimension(keep(28)) procnode,
integer slavef,
integer myid,
logical sbtr_flag,
logical proc_flag,
integer min_proc )

Definition at line 452 of file dfac_sol_pool.F.

455 USE dmumps_load
456 IMPLICIT NONE
457 INTEGER INODE,LPOOL,N,SLAVEF,MYID,MIN_PROC
458 INTEGER POOL(LPOOL),KEEP(500),PROCNODE(KEEP(28)),STEP(N)
459 INTEGER(8) KEEP8(150)
460 LOGICAL SBTR_FLAG,PROC_FLAG
461 EXTERNAL mumps_inssarbr
462 LOGICAL MUMPS_INSSARBR
463 INTEGER NODE_TO_EXTRACT,I,POS_TO_EXTRACT,NBTOP,NBINSUBTREE
464 nbtop= pool(lpool - 1)
465 nbinsubtree = pool(lpool)
466 IF(nbtop.GT.0)THEN
467 WRITE(*,*)myid,': NBTOP=',nbtop
468 ENDIF
469 sbtr_flag=.false.
470 proc_flag=.false.
471 CALL dmumps_mem_cons_mng(inode,pool,lpool,n,step,keep,keep8,
472 & procnode,slavef,myid,sbtr_flag,proc_flag,min_proc)
473 IF(sbtr_flag)THEN
474 RETURN
475 ENDIF
476 IF(min_proc.EQ.-9999)THEN
477 IF((inode.GT.0).AND.(inode.LT.n))THEN
478 sbtr_flag=(nbinsubtree.NE.0)
479 ENDIF
480 RETURN
481 ENDIF
482 IF(.NOT.proc_flag)THEN
483 node_to_extract=inode
484 IF((inode.GE.0).AND.(inode.LE.n))THEN
485 CALL dmumps_find_best_node_for_mem(min_proc,pool,
486 & lpool,inode)
487 IF(mumps_inssarbr(procnode(step(inode)),
488 & keep(199)))THEN
489 WRITE(*,*)myid,': Extracting from a subtree
490 & for helping',min_proc
491 sbtr_flag=.true.
492 RETURN
493 ELSE
494 IF(node_to_extract.NE.inode)THEN
495 WRITE(*,*)myid,': Extracting from top
496 & inode=',inode,'for helping',min_proc
497 ENDIF
499 ENDIF
500 ENDIF
501 DO i=1,nbtop
502 IF (pool(lpool-2-i).EQ.inode)THEN
503 GOTO 452
504 ENDIF
505 ENDDO
506 452 CONTINUE
507 pos_to_extract=i
508 DO i=pos_to_extract,nbtop-1
509 pool(lpool-2-i)=pool(lpool-2-i-1)
510 ENDDO
511 pool(lpool-2-nbtop)=inode
512 ENDIF
subroutine dmumps_mem_cons_mng(inode, pool, lpool, n, step, keep, keep8, procnode, slavef, myid, sbtr, flag_same_proc, min_proc)
subroutine, public dmumps_find_best_node_for_mem(min_proc, pool, lpool, inode)

◆ dmumps_pool_empty()

logical function dmumps_pool_empty ( integer, dimension(lpool) pool,
integer lpool )

Definition at line 158 of file dfac_sol_pool.F.

159 IMPLICIT NONE
160 INTEGER LPOOL
161 INTEGER POOL(LPOOL)
162 INTEGER NBINSUBTREE, NBTOP
163 nbinsubtree = pool(lpool)
164 nbtop = pool(lpool - 1)
165 dmumps_pool_empty = (nbinsubtree + nbtop == 0)
166 RETURN