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

Go to the source code of this file.

Functions/Subroutines

subroutine cmumps_init_pool_last3 (ipool, lpool, leaf)
subroutine cmumps_insert_pool_n (n, pool, lpool, procnode, slavef, keep199, k28, k76, k80, k47, step, inode)
logical function cmumps_pool_empty (pool, lpool)
subroutine cmumps_extract_pool (n, pool, lpool, procnode, slavef, step, inode, keep, keep8, myid, nd, force_extract_top_sbtr)
subroutine cmumps_mem_cons_mng (inode, pool, lpool, n, step, keep, keep8, procnode, slavef, myid, sbtr, flag_same_proc, min_proc)
subroutine cmumps_mem_node_select (inode, pool, lpool, n, step, keep, keep8, procnode, slavef, myid, sbtr_flag, proc_flag, min_proc)
subroutine cmumps_get_inode_from_pool (ipool, lpool, iii, leaf, inode, strategie)

Function/Subroutine Documentation

◆ cmumps_extract_pool()

subroutine cmumps_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 cfac_sol_pool.F.

171 USE cmumps_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, CMUMPS_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 CMUMPS_EXTRACT_POOL: unknown strategy"
191 CALL mumps_abort()
192 ENDIF
193 atomic_subtree = ( keep(76) == 1 .OR. keep(76) == 3)
194 IF ( cmumps_pool_empty(pool, lpool) ) THEN
195 WRITE(*,*) "Error 1 in CMUMPS_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 cmumps_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.EQ. IF(KEEP(81)2)THEN
253.GE..AND..LE. IF((INODE0)(INODEN))THEN
254 CALL CMUMPS_MEM_NODE_SELECT(INODE,POOL,LPOOL,N,
255 & STEP,KEEP,KEEP8,PROCNODE,SLAVEF,MYID,SBTR_FLAG,
256 & PROC_FLAG,MIN_PROC)
257.NOT. IF(SBTR_FLAG)THEN
258 WRITE(*,*)MYID,': ca a change pour moi'
259 LEFT=.FALSE.
260 GOTO 222
261 ENDIF
262 ENDIF
263.EQ. ELSEIF(KEEP(81)3)THEN
264.GE..AND..LE. IF((INODE0)(INODEN))THEN
265 NODE_TO_EXTRACT=INODE
266 FLAG_MEM=.FALSE.
267 CALL CMUMPS_LOAD_CHK_MEMCST_POOL(FLAG_MEM)
268 IF(FLAG_MEM)THEN
269 CALL CMUMPS_MEM_NODE_SELECT(INODE,POOL,LPOOL,N,
270 & STEP,KEEP,KEEP8,
271 & PROCNODE,SLAVEF,MYID,SBTR_FLAG,
272 & PROC_FLAG,MIN_PROC)
273.NOT. IF(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.GE..AND..EQ..AND. IF((KEEP(47)2KEEP(81)1)
292.EQ. & (INSUBTREE0))THEN
293 CALL CMUMPS_LOAD_SET_SBTR_MEM(.TRUE.)
294 ENDIF
295 INSUBTREE = 1
296 ELSE IF ( MUMPS_ROOTSSARBR( PROCNODE(STEP(INODE_EFF)),
297 & KEEP(199))) THEN
298.GE..AND..EQ..AND. IF((KEEP(47)2KEEP(81)1)
299.EQ. & (INSUBTREE1))THEN
300 CALL CMUMPS_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 cmumps_extract_pool", NBTOP
307 CALL MUMPS_ABORT()
308 ENDIF
309 INODE = POOL( LPOOL - 2 - NBTOP )
310.EQ. IF(KEEP(81)1)THEN
311 CALL CMUMPS_LOAD_POOL_CHECK_MEM
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.EQ. IF(KEEP(81)2)THEN
329 CALL CMUMPS_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.EQ. IF(KEEP(81)3)THEN
339.GE..AND..LE. IF((INODE0)(INODEN))THEN
340 NODE_TO_EXTRACT=INODE
341 FLAG_MEM=.FALSE.
342 CALL CMUMPS_LOAD_CHK_MEMCST_POOL(FLAG_MEM)
343 IF(FLAG_MEM)THEN
344 CALL CMUMPS_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
354 CALL CMUMPS_LOAD_CLEAN_MEMINFO_POOL(INODE)
355 ENDIF
356 ENDIF
357 ENDIF
358 ENDIF
359 666 CONTINUE
360 NBTOP = NBTOP - 1
361.GT..AND..LE. IF((INODE0)(INODEN))THEN
362.OR..AND. IF ((( KEEP(80) == 2 KEEP(80)==3 )
363 & ( KEEP(47) == 4 ))) THEN
364 CALL CMUMPS_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
subroutine cmumps_extract_pool(n, pool, lpool, procnode, slavef, step, inode, keep, keep8, myid, nd, force_extract_top_sbtr)
logical function cmumps_pool_empty(pool, lpool)
double precision, dimension(:), pointer, save, public cost_trav
integer, dimension(:), pointer, save, public depth_first_load
logical function mumps_rootssarbr(procinfo_inode, k199)
logical function mumps_inssarbr(procinfo_inode, k199)
integer function mumps_procnode(procinfo_inode, k199)

◆ cmumps_get_inode_from_pool()

subroutine cmumps_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 cfac_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

◆ cmumps_init_pool_last3()

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

Definition at line 14 of file cfac_sol_pool.F.

15 USE cmumps_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

◆ cmumps_insert_pool_n()

subroutine cmumps_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 cfac_sol_pool.F.

27 USE cmumps_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 cmumps_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
subroutine, public cmumps_remove_node(inode, num_call)
logical function mumps_in_or_root_ssarbr(procinfo_inode, k199)

◆ cmumps_mem_cons_mng()

subroutine cmumps_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 cfac_sol_pool.F.

384 USE cmumps_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 cmumps_load_comp_maxmem_pool(node_to_extract,
411 & tmp_cost,proc)
412 min_cost=tmp_cost
413 min_proc=proc
414 ELSE
415 CALL cmumps_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 cmumps_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 cmumps_load_comp_maxmem_pool(inode, max_mem, proc)
subroutine, public cmumps_check_sbtr_cost(nbinsubtree, insubtree, nbtop, min_cost, sbtr)
integer, save, private myid
Definition cmumps_load.F:57
subroutine, public cmumps_load_clean_meminfo_pool(inode)

◆ cmumps_mem_node_select()

subroutine cmumps_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 cfac_sol_pool.F.

455 USE cmumps_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 cmumps_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 cmumps_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 cmumps_mem_cons_mng(inode, pool, lpool, n, step, keep, keep8, procnode, slavef, myid, sbtr, flag_same_proc, min_proc)
subroutine, public cmumps_find_best_node_for_mem(min_proc, pool, lpool, inode)

◆ cmumps_pool_empty()

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

Definition at line 158 of file cfac_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 cmumps_pool_empty = (nbinsubtree + nbtop == 0)
166 RETURN