19 IMPLICIT NONE
20 include 'mpif.h'
21 TYPE( CMUMPS_STRUC ) :: id
22 LOGICAL I_AM_SLAVE
23 INTEGER IERR
24 INTEGER MASTER
25 parameter( master = 0 )
26
27 INTERFACE
29 & id_BLRARRAY_ENCODING, KEEP8, K34)
30# if defined(MUMPS_F2003)
31 CHARACTER, DIMENSION(:), POINTER, intent(inout) ::
32 & id_blrarray_encoding
33 CHARACTER, DIMENSION(:), POINTER, intent(inout) ::
34 & id_fdm_f_encoding
35# else
36 CHARACTER, DIMENSION(:), POINTER :: id_BLRARRAY_ENCODING
37 CHARACTER, DIMENSION(:), POINTER :: id_FDM_F_ENCODING
38# endif
39 INTEGER(8), intent(inout) :: KEEP8(150)
40 INTEGER, intent(in) :: K34
42 END INTERFACE
43 i_am_slave = (
id%MYID .ne. master .OR.
id%KEEP(46) .NE. 0 )
44
45
46
47
48
49
50
51 IF (
id%KEEP(201).GT.0 .AND. i_am_slave)
THEN
53 IF (ierr < 0) THEN
56 ENDIF
57 END IF
60 IF (
id%root%gridinit_done)
THEN
61 IF (
id%KEEP(38).NE.0 .and.
id%root%yes )
THEN
63 id%root%gridinit_done = .false.
64 END IF
65 END IF
66 IF (
id%MYID .NE. master .OR.
id%KEEP(46) .ne. 0 )
THEN
67
68
69
70
72
74 END IF
76
77
78
79
80 IF (
associated(
id%MEM_DIST))
THEN
81 DEALLOCATE(
id%MEM_DIST)
83 ENDIF
84
85
86
87
88
89
90
91
92
93 IF (
associated(
id%MAPPING))
THEN
94 DEALLOCATE(
id%MAPPING)
96 END IF
97 NULLIFY(
id%SCHUR_CINTERFACE)
98
99
100
101
102
103
104 IF (
id%KEEP(52) .NE. -1 .or.
id%MYID .ne. master )
THEN
105 IF (
associated(
id%COLSCA))
THEN
106 DEALLOCATE(
id%COLSCA)
108 ENDIF
109 IF (
associated(
id%ROWSCA))
THEN
110 DEALLOCATE(
id%ROWSCA)
112 ENDIF
113 END IF
114 IF (
associated(
id%PTLUST_S))
THEN
115 DEALLOCATE(
id%PTLUST_S)
117 END IF
118 IF (
associated(
id%PTRFAC))
THEN
119 DEALLOCATE(
id%PTRFAC)
121 END IF
122 IF (
associated(
id%IS))
THEN
125 ENDIF
126 IF (
associated(
id%STEP))
THEN
129 ENDIF
130
131
132 IF (
associated(
id%Step2node))
THEN
133 DEALLOCATE(
id%Step2node)
134 NULLIFY(
id%Step2node)
135 ENDIF
136
137
138 IF (
associated(
id%NE_STEPS))
THEN
139 DEALLOCATE(
id%NE_STEPS)
141 ENDIF
142 IF (
associated(
id%ND_STEPS))
THEN
143 DEALLOCATE(
id%ND_STEPS)
145 ENDIF
146 IF (
associated(
id%FRERE_STEPS))
THEN
147 DEALLOCATE(
id%FRERE_STEPS)
148 NULLIFY(
id%FRERE_STEPS)
149 ENDIF
150 IF (
associated(
id%DAD_STEPS))
THEN
151 DEALLOCATE(
id%DAD_STEPS)
152 NULLIFY(
id%DAD_STEPS)
153 ENDIF
154 IF (
associated(
id%SYM_PERM))
THEN
155 DEALLOCATE(
id%SYM_PERM)
157 ENDIF
158 IF (
associated(
id%UNS_PERM))
THEN
159 DEALLOCATE(
id%UNS_PERM)
161 ENDIF
162 IF (
associated(
id%PIVNUL_LIST))
THEN
163 DEALLOCATE(
id%PIVNUL_LIST)
164 NULLIFY(
id%PIVNUL_LIST)
165 ENDIF
166 IF (
associated(
id%FILS))
THEN
169 ENDIF
170 IF (
associated(
id%PTRAR))
THEN
173 ENDIF
174 IF (
associated(
id%FRTPTR))
THEN
175 DEALLOCATE(
id%FRTPTR)
177 ENDIF
178 IF (
associated(
id%FRTELT))
THEN
179 DEALLOCATE(
id%FRTELT)
181 ENDIF
182 IF (
associated(
id%NA))
THEN
185 ENDIF
186 IF (
associated(
id%PROCNODE_STEPS))
THEN
187 DEALLOCATE(
id%PROCNODE_STEPS)
188 NULLIFY(
id%PROCNODE_STEPS)
189 ENDIF
190 IF (
associated(
id%RHSCOMP))
THEN
191 DEALLOCATE(
id%RHSCOMP)
194 ENDIF
195 IF (
associated(
id%POSINRHSCOMP_ROW))
THEN
196 DEALLOCATE(
id%POSINRHSCOMP_ROW)
197 NULLIFY(
id%POSINRHSCOMP_ROW)
198 ENDIF
199 IF (
id%POSINRHSCOMP_COL_ALLOC)
THEN
200 DEALLOCATE(
id%POSINRHSCOMP_COL)
201 NULLIFY(
id%POSINRHSCOMP_COL)
202 id%POSINRHSCOMP_COL_ALLOC = .false.
203 ENDIF
204
205
206
207
208
209 IF (
id%KEEP(46).eq.1 .and.
210 &
id%KEEP(55).ne.0 .and.
211 &
id%MYID .eq. master .and.
212 &
id%KEEP(52) .eq. 0 )
THEN
214 ELSE
215 IF (
associated(
id%DBLARR))
THEN
216 DEALLOCATE(
id%DBLARR)
218 ENDIF
219 END IF
220 IF (
associated(
id%INTARR))
THEN
221 DEALLOCATE(
id%INTARR)
223 ENDIF
224 IF (
associated(
id%root%RG2L_ROW))
THEN
225 DEALLOCATE(
id%root%RG2L_ROW)
226 NULLIFY(
id%root%RG2L_ROW)
227 ENDIF
228 IF (
associated(
id%root%RG2L_COL))
THEN
229 DEALLOCATE(
id%root%RG2L_COL)
230 NULLIFY(
id%root%RG2L_COL)
231 ENDIF
232
233
234 IF (
associated(
id%root%IPIV))
THEN
235 DEALLOCATE(
id%root%IPIV)
236 NULLIFY(
id%root%IPIV)
237 ENDIF
238 IF (
associated(
id%root%RHS_CNTR_MASTER_ROOT))
THEN
239 DEALLOCATE(
id%root%RHS_CNTR_MASTER_ROOT)
240 NULLIFY(
id%root%RHS_CNTR_MASTER_ROOT)
241 ENDIF
242 IF (
associated(
id%root%RHS_ROOT))
THEN
243 DEALLOCATE(
id%root%RHS_ROOT)
244 NULLIFY(
id%root%RHS_ROOT)
245 ENDIF
247 IF (
associated(
id%ELTPROC))
THEN
248 DEALLOCATE(
id%ELTPROC)
250 ENDIF
251
252
253
254 IF (
associated(
id%CANDIDATES))
THEN
255 DEALLOCATE(
id%CANDIDATES)
256 NULLIFY(
id%CANDIDATES)
257 ENDIF
258 IF (
associated(
id%I_AM_CAND))
THEN
259 DEALLOCATE(
id%I_AM_CAND)
260 NULLIFY(
id%I_AM_CAND)
261 ENDIF
262 IF (
associated(
id%ISTEP_TO_INIV2))
THEN
263 DEALLOCATE(
id%ISTEP_TO_INIV2)
264 NULLIFY(
id%ISTEP_TO_INIV2)
265 ENDIF
266
267 IF (i_am_slave) THEN
268 IF (
associated(
id%TAB_POS_IN_PERE))
THEN
269 DEALLOCATE(
id%TAB_POS_IN_PERE)
270 NULLIFY(
id%TAB_POS_IN_PERE)
271 ENDIF
272 IF (
associated(
id%FUTURE_NIV2))
THEN
273 DEALLOCATE(
id%FUTURE_NIV2)
274 NULLIFY(
id%FUTURE_NIV2)
275 ENDIF
276 ENDIF
277 IF(
associated(
id%DEPTH_FIRST))
THEN
278 DEALLOCATE(
id%DEPTH_FIRST)
279 NULLIFY(
id%DEPTH_FIRST)
280 ENDIF
281 IF(
associated(
id%DEPTH_FIRST_SEQ))
THEN
282 DEALLOCATE(
id%DEPTH_FIRST_SEQ)
283 NULLIFY(
id%DEPTH_FIRST_SEQ)
284 ENDIF
285 IF(
associated(
id%SBTR_ID))
THEN
286 DEALLOCATE(
id%SBTR_ID)
288 ENDIF
289 IF(
associated(
id%SCHED_DEP))
THEN
290 DEALLOCATE(
id%SCHED_DEP)
291 NULLIFY(
id%SCHED_DEP)
292 ENDIF
293 IF(
associated(
id%SCHED_SBTR))
THEN
294 DEALLOCATE(
id%SCHED_SBTR)
295 NULLIFY(
id%SCHED_SBTR)
296 ENDIF
297 IF(
associated(
id%SCHED_GRP))
THEN
298 DEALLOCATE(
id%SCHED_GRP)
299 NULLIFY(
id%SCHED_GRP)
300 ENDIF
301 IF(
associated(
id%CROIX_MANU))
THEN
302 DEALLOCATE(
id%CROIX_MANU)
303 NULLIFY(
id%CROIX_MANU)
304 ENDIF
305 IF (
associated(
id%MEM_SUBTREE))
THEN
306 DEALLOCATE(
id%MEM_SUBTREE)
307 NULLIFY(
id%MEM_SUBTREE)
308 ENDIF
309 IF (
associated(
id%MY_ROOT_SBTR))
THEN
310 DEALLOCATE(
id%MY_ROOT_SBTR)
311 NULLIFY(
id%MY_ROOT_SBTR)
312 ENDIF
313 IF (
associated(
id%MY_FIRST_LEAF))
THEN
314 DEALLOCATE(
id%MY_FIRST_LEAF)
315 NULLIFY(
id%MY_FIRST_LEAF)
316 ENDIF
317 IF (
associated(
id%MY_NB_LEAF))
THEN
318 DEALLOCATE(
id%MY_NB_LEAF)
319 NULLIFY(
id%MY_NB_LEAF)
320 ENDIF
321 IF (
associated(
id%COST_TRAV))
THEN
322 DEALLOCATE(
id%COST_TRAV)
323 NULLIFY(
id%COST_TRAV)
324 ENDIF
325 IF (
associated(
id%CB_SON_SIZE))
THEN
326 DEALLOCATE(
id%CB_SON_SIZE)
327 NULLIFY(
id%CB_SON_SIZE)
328 ENDIF
329 IF (
associated(
id%SUP_PROC))
THEN
330 DEALLOCATE(
id%SUP_PROC)
332 ENDIF
333
334 IF(
associated (
id%OOC_INODE_SEQUENCE))
THEN
335 DEALLOCATE(
id%OOC_INODE_SEQUENCE)
336 NULLIFY(
id%OOC_INODE_SEQUENCE)
337 ENDIF
338 IF(
associated (
id%OOC_TOTAL_NB_NODES))
THEN
339 DEALLOCATE(
id%OOC_TOTAL_NB_NODES)
340 NULLIFY(
id%OOC_TOTAL_NB_NODES)
341 ENDIF
342 IF(
associated (
id%OOC_SIZE_OF_BLOCK))
THEN
343 DEALLOCATE(
id%OOC_SIZE_OF_BLOCK)
344 NULLIFY(
id%OOC_SIZE_OF_BLOCK)
345 ENDIF
346 IF(
associated (
id%OOC_VADDR))
THEN
347 DEALLOCATE(
id%OOC_VADDR)
348 NULLIFY(
id%OOC_VADDR)
349 ENDIF
350 IF(
associated (
id%OOC_NB_FILES))
THEN
351 DEALLOCATE(
id%OOC_NB_FILES)
352 NULLIFY(
id%OOC_NB_FILES)
353 ENDIF
354
355
356 IF (
associated(
id%LRGROUPS))
THEN
357 DEALLOCATE(
id%LRGROUPS)
359 ENDIF
360
362 &
id%BLRARRAY_ENCODING,
id%KEEP8(1),
id%KEEP(34))
363 IF (
associated(
id%MPITOOMP_PROCS_MAP))
THEN
364 DEALLOCATE(
id%MPITOOMP_PROCS_MAP)
365 NULLIFY(
id%MPITOOMP_PROCS_MAP)
366 ENDIF
367 IF (
associated(
id%SINGULAR_VALUES))
THEN
368 DEALLOCATE(
id%SINGULAR_VALUES)
369 NULLIFY(
id%SINGULAR_VALUES)
370 ENDIF
371
372
373
374
375 IF (
id%KEEP8(24).EQ.0_8)
THEN
376
377 IF (
associated(
id%S))
DEALLOCATE(
id%S)
378 ENDIF
380 IF (i_am_slave) THEN
381
382
383
384
385
386
387
389
391 END IF
392
393 IF (
associated(
id%IPTR_WORKING))
THEN
394 DEALLOCATE(
id%IPTR_WORKING)
395 NULLIFY(
id%IPTR_WORKING)
396 END IF
397 IF (
associated(
id%WORKING))
THEN
398 DEALLOCATE(
id%WORKING)
400 END IF
401 IF (
associated(
id%IPOOL_B_L0_OMP))
THEN
402 DEALLOCATE(
id%IPOOL_B_L0_OMP)
403 NULLIFY(
id%IPOOL_B_L0_OMP)
404 END IF
405 IF (
associated(
id%IPOOL_A_L0_OMP))
THEN
406 DEALLOCATE(
id%IPOOL_A_L0_OMP)
407 NULLIFY(
id%IPOOL_A_L0_OMP)
408 END IF
409 IF (
associated(
id%PHYS_L0_OMP))
THEN
410 DEALLOCATE(
id%PHYS_L0_OMP)
411 NULLIFY(
id%PHYS_L0_OMP)
412 END IF
413 IF (
associated(
id%VIRT_L0_OMP))
THEN
414 DEALLOCATE(
id%VIRT_L0_OMP)
415 NULLIFY(
id%VIRT_L0_OMP)
416 END IF
417 IF (
associated(
id%VIRT_L0_OMP_MAPPING))
THEN
418 DEALLOCATE(
id%VIRT_L0_OMP_MAPPING)
419 NULLIFY(
id%VIRT_L0_OMP_MAPPING)
420 END IF
421 IF (
associated(
id%PERM_L0_OMP))
THEN
422 DEALLOCATE(
id%PERM_L0_OMP)
423 NULLIFY(
id%PERM_L0_OMP)
424 END IF
425 IF (
associated(
id%PTR_LEAFS_L0_OMP))
THEN
426 DEALLOCATE(
id%PTR_LEAFS_L0_OMP)
427 NULLIFY(
id%PTR_LEAFS_L0_OMP)
428 END IF
429 IF (
associated(
id%L0_OMP_MAPPING))
THEN
430 DEALLOCATE(
id%L0_OMP_MAPPING)
431 NULLIFY(
id%L0_OMP_MAPPING)
432 END IF
433 IF (
associated(
id%I4_L0_OMP))
THEN
434 DEALLOCATE(
id%I4_L0_OMP)
435 NULLIFY(
id%I4_L0_OMP)
436 END IF
437 IF (
associated(
id%I8_L0_OMP))
THEN
438 DEALLOCATE(
id%I8_L0_OMP)
439 NULLIFY(
id%I8_L0_OMP)
440 END IF
441 IF (
associated(
id%L0_OMP_FACTORS))
THEN
443 END IF
444 RETURN
subroutine mumps_propinfo(icntl, info, comm, id)
subroutine cmumps_free_id_data_modules(id_fdm_f_encoding, id_blrarray_encoding, keep8, k34)
subroutine cmumps_rr_free_pointers(id)
subroutine mpi_comm_free(comm, ierr)
subroutine blacs_gridexit(cntxt)
subroutine, public cmumps_buf_deall_small_buf(ierr)
subroutine, public cmumps_buf_deall_cb(ierr)
subroutine, public cmumps_free_l0_omp_factors(id_l0_omp_factors)
subroutine cmumps_clean_ooc_data(id, ierr)