OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
smumps_save_restore.F
Go to the documentation of this file.
1C
2C This file is part of MUMPS 5.5.1, released
3C on Tue Jul 12 13:17:24 UTC 2022
4C
5C
6C Copyright 1991-2022 CERFACS, CNRS, ENS Lyon, INP Toulouse, Inria,
7C Mumps Technologies, University of Bordeaux.
8C
9C This version of MUMPS is provided to you free of charge. It is
10C released under the CeCILL-C license
11C (see doc/CeCILL-C_V1-en.txt, doc/CeCILL-C_V1-fr.txt, and
12C https://cecill.info/licences/Licence_CeCILL-C_V1-en.html)
13C
19 IMPLICIT NONE
20 CONTAINS
21 SUBROUTINE smumps_remove_saved(id)
22 USE smumps_ooc
23 include 'mpif.h'
24 INTEGER MASTER
25 parameter( master = 0 )
26 TYPE (SMUMPS_STRUC) :: id
27 CHARACTER(len=LEN_SAVE_FILE) :: RESTOREFILE, INFOFILE
28 INTEGER :: fileunit, ierr, SIZE_INT, SIZE_INT8
29 INTEGER(8) :: size_read, TOTAL_FILE_SIZE, TOTAL_STRUC_SIZE
30 INTEGER :: READ_OOC_FILE_NAME_LENGTH,READ_SYM,READ_PAR,READ_NPROCS
31 CHARACTER(len=LEN_SAVE_FILE) :: READ_OOC_FIRST_FILE_NAME
32 CHARACTER :: READ_ARITH
33 LOGICAL :: READ_INT_TYPE_64
34 CHARACTER(len=23) :: READ_HASH
35 LOGICAL :: FORTRAN_VERSION_OK
36 LOGICAL :: SAME_OOC
37 INTEGER :: ICNTL34, MAX_LENGTH, FLAG_SAME, SUM_FLAG_SAME
38 TYPE (SMUMPS_STRUC) :: localid
39 ierr = 0
40 call smumps_get_save_files(id,restorefile,infofile)
41 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
42 & id%COMM, id%MYID )
43 IF ( id%INFO(1) .LT. 0 ) RETURN
44 CALL mumps_find_unit(fileunit)
45 IF ( fileunit .EQ. -1 ) THEN
46 id%INFO(1) = -79
47 id%INFO(2) = 0
48 ENDIF
49 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
50 & id%COMM, id%MYID )
51 IF ( id%INFO(1) .LT. 0 ) RETURN
52 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
53 & id%COMM, id%MYID )
54 IF ( id%INFO(1) .LT. 0 ) RETURN
55 open(unit=fileunit,file=restorefile
56#if defined(MUMPS_F2003)
57 & ,access="stream"
58#endif
59 & ,status='old',form='unformatted',iostat=ierr)
60 IF ( ierr.ne.0 ) THEN
61 id%INFO(1) = -74
62 id%INFO(2) = 0
63 endif
64 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
65 & id%COMM, id%MYID )
66 IF ( id%INFO(1) .LT. 0 ) RETURN
67 size_int = id%KEEP(34)
68 size_int8 = id%KEEP(34)*id%KEEP(10)
69 size_read = 0
70 call mumps_read_header(fileunit,ierr,size_read,size_int,
71 & size_int8, total_file_size, total_struc_size,
72 & read_arith, read_int_type_64,
73 & read_ooc_file_name_length, read_ooc_first_file_name,
74 & read_hash,read_sym,read_par,read_nprocs,
75 & fortran_version_ok)
76 close(fileunit)
77 if (ierr.ne.0) THEN
78 id%INFO(1) = -75
79 CALL mumps_seti8toi4(total_file_size-size_read
80 & ,id%INFO(2))
81 elseif (.NOT.fortran_version_ok) THEN
82 id%INFO(1) = -73
83 id%INFO(2) = 1
84 endif
85 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
86 & id%COMM, id%MYID )
87 IF ( id%INFO(1) .LT. 0 ) RETURN
88 CALL smumps_check_header(id,.true.,read_int_type_64,
89 & read_hash, read_nprocs,
90 & read_arith, read_sym, read_par)
91 IF ( id%INFO(1) .LT. 0 ) RETURN
92 icntl34 = -99998
93 IF (id%MYID.EQ.master) THEN
94 icntl34 = id%ICNTL(34)
95 ENDIF
96 CALL mpi_bcast( icntl34, 1, mpi_integer, master, id%COMM, ierr )
97 CALL smumps_check_file_name(id, read_ooc_file_name_length,
98 & read_ooc_first_file_name, same_ooc)
99 CALL mpi_allreduce(read_ooc_file_name_length,max_length,1,
100 & mpi_integer,mpi_max,id%COMM,ierr)
101 IF (max_length.NE.-999) THEN
102 flag_same = 0
103 IF (same_ooc) THEN
104 flag_same = 1
105 ENDIF
106 CALL mpi_allreduce(flag_same,sum_flag_same,1,
107 & mpi_integer,mpi_sum,id%COMM,ierr)
108 IF (sum_flag_same.NE.0) THEN
109 IF (icntl34 .EQ. 1) THEN
110 id%ASSOCIATED_OOC_FILES = .true.
111 ELSE
112 id%ASSOCIATED_OOC_FILES = .false.
113 ENDIF
114 ELSE
115 IF (icntl34 .NE. 1) THEN
116 localid%COMM = id%COMM
117 localid%INFO(1) = 0
118 localid%MYID = id%MYID
119 localid%NPROCS = id%NPROCS
120 localid%KEEP(10) = id%KEEP(10)
121 localid%SAVE_PREFIX = id%SAVE_PREFIX
122 localid%SAVE_DIR = id%SAVE_DIR
123 call smumps_restore_ooc(localid)
124 IF ( localid%INFO(1) .EQ. 0 ) THEN
125 localid%ASSOCIATED_OOC_FILES = .false.
126 IF (read_ooc_file_name_length.NE.-999) THEN
127 call smumps_ooc_clean_files(localid,ierr)
128 IF ( ierr.ne.0 ) THEN
129 id%INFO(1) = -90
130 id%INFO(2) = id%MYID
131 ENDIF
132 ENDIF
133 ENDIF
134 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
135 & id%COMM, id%MYID )
136 IF ( id%INFO(1) .LT. 0 ) RETURN
137 ENDIF
138 ENDIF
139 ENDIF
140 call mumps_clean_saved_data(id%MYID,ierr,restorefile,infofile)
141 IF (ierr.ne.0) THEN
142 id%INFO(1) = -76
143 id%INFO(2) = id%MYID
144 ENDIF
145 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
146 & id%COMM, id%MYID )
147 END SUBROUTINE smumps_remove_saved
148 SUBROUTINE smumps_restore_ooc(localid)
149 include 'mpif.h'
150 INTEGER::ierr,IN,NBVARIABLES,NBVARIABLES_ROOT
151 CHARACTER(len=LEN_SAVE_FILE):: restore_file_ooc,INFO_FILE
152 INTEGER(8),allocatable, dimension(:)::SIZE_VARIABLES
153 INTEGER(8),allocatable, dimension(:)::SIZE_VARIABLES_ROOT
154 INTEGER,allocatable, dimension(:)::SIZE_GEST
155 INTEGER,allocatable, dimension(:)::SIZE_GEST_ROOT
156 INTEGER:: INFO1,INFO2,INFOG1,INFOG2,allocok
157 INTEGER(8) :: TOTAL_FILE_SIZE,TOTAL_STRUC_SIZE
158 TYPE (SMUMPS_STRUC) :: localid
159 nbvariables=186
160 nbvariables_root=35
161 allocate(size_variables(nbvariables), stat=allocok)
162 if (allocok .GT. 0) THEN
163 localid%INFO(1) =-13
164 localid%INFO(2) = nbvariables
165 endif
166 CALL mumps_propinfo( localid%ICNTL(1), localid%INFO(1),
167 & localid%COMM, localid%MYID )
168 IF ( localid%INFO(1) .LT. 0 ) RETURN
169 allocate(size_variables_root(nbvariables_root), stat=allocok)
170 if (allocok .GT. 0) THEN
171 localid%INFO(1) =-13
172 localid%INFO(2) = nbvariables_root
173 endif
174 CALL mumps_propinfo( localid%ICNTL(1), localid%INFO(1),
175 & localid%COMM, localid%MYID )
176 IF ( localid%INFO(1) .LT. 0 ) RETURN
177 allocate(size_gest(nbvariables), stat=allocok)
178 if (allocok .GT. 0) THEN
179 localid%INFO(1) =-13
180 localid%INFO(2) = nbvariables
181 endif
182 CALL mumps_propinfo( localid%ICNTL(1), localid%INFO(1),
183 & localid%COMM, localid%MYID )
184 IF ( localid%INFO(1) .LT. 0 ) RETURN
185 allocate(size_gest_root(nbvariables_root), stat=allocok)
186 if (allocok .GT. 0) THEN
187 localid%INFO(1) =-13
188 localid%INFO(2) = nbvariables_root
189 endif
190 CALL mumps_propinfo( localid%ICNTL(1), localid%INFO(1),
191 & localid%COMM, localid%MYID )
192 IF ( localid%INFO(1) .LT. 0 ) RETURN
193 size_variables(:)=0_8
194 size_variables_root(:)=0_8
195 size_gest(:)=0
196 size_gest_root(:)=0
197 total_file_size=0_8
198 total_struc_size=0_8
199 info1 = -999
200 info2 = -999
201 infog1 = -999
202 infog2 = -999
203 CALL smumps_get_save_files(localid,restore_file_ooc,info_file)
204 IF ( localid%INFO(1) .LT. 0 ) RETURN
205 CALL mumps_find_unit(in)
206 IF ( in .EQ. -1 ) THEN
207 localid%INFO(1) = -79
208 localid%INFO(2) = 0
209 ENDIF
210 CALL mumps_propinfo( localid%ICNTL(1), localid%INFO(1),
211 & localid%COMM, localid%MYID )
212 IF ( localid%INFO(1) .LT. 0 ) RETURN
213 open(unit=in,file=restore_file_ooc
214#if defined(MUMPS_F2003)
215 & ,access="stream"
216#endif
217 & ,status='old',form='unformatted',iostat=ierr)
218 if(ierr.ne.0) THEN
219 localid%INFO(1) = -74
220 localid%INFO(2) = 0
221 endif
222 CALL mumps_propinfo( localid%ICNTL(1), localid%INFO(1),
223 & localid%COMM, localid%MYID )
224 IF ( localid%INFO(1) .LT. 0 ) RETURN
225 CALL smumps_save_restore_structure(localid,in,"restore_ooc"
226 & ,nbvariables,size_variables,size_gest
227 & ,nbvariables_root,size_variables_root,size_gest_root
228 & ,total_file_size,total_struc_size
229 & ,info1,info2,infog1,infog2)
230 CLOSE(in)
231 deallocate(size_variables,size_variables_root)
232 deallocate(size_gest,size_gest_root)
233 RETURN
234 END SUBROUTINE smumps_restore_ooc
236 & TOTAL_FILE_SIZE,TOTAL_STRUC_SIZE)
237 include 'mpif.h'
238 INTEGER::NBVARIABLES,NBVARIABLES_ROOT
239 INTEGER(8),allocatable, dimension(:)::SIZE_VARIABLES
240 INTEGER(8),allocatable, dimension(:)::SIZE_VARIABLES_ROOT
241 INTEGER,allocatable, dimension(:)::SIZE_GEST
242 INTEGER,allocatable, dimension(:)::SIZE_GEST_ROOT
243 INTEGER :: INFO1,INFO2,INFOG1,INFOG2,allocok
244 INTEGER(8) :: TOTAL_FILE_SIZE,TOTAL_STRUC_SIZE
245 TYPE (SMUMPS_STRUC) :: id
246 nbvariables=186
247 nbvariables_root=35
248 allocate(size_variables(nbvariables), stat=allocok)
249 if (allocok .GT. 0) THEN
250 id%INFO(1) =-13
251 id%INFO(2) = nbvariables
252 endif
253 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
254 & id%COMM, id%MYID )
255 IF ( id%INFO(1) .LT. 0 ) RETURN
256 allocate(size_variables_root(nbvariables_root), stat=allocok)
257 if (allocok .GT. 0) THEN
258 id%INFO(1) =-13
259 id%INFO(2) = nbvariables_root
260 endif
261 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
262 & id%COMM, id%MYID )
263 IF ( id%INFO(1) .LT. 0 ) RETURN
264 allocate(size_gest(nbvariables), stat=allocok)
265 if (allocok .GT. 0) THEN
266 id%INFO(1) =-13
267 id%INFO(2) = nbvariables
268 endif
269 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
270 & id%COMM, id%MYID )
271 IF ( id%INFO(1) .LT. 0 ) RETURN
272 allocate(size_gest_root(nbvariables_root), stat=allocok)
273 if (allocok .GT. 0) THEN
274 id%INFO(1) =-13
275 id%INFO(2) = nbvariables_root
276 endif
277 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
278 & id%COMM, id%MYID )
279 IF ( id%INFO(1) .LT. 0 ) RETURN
280 size_variables(:)=0_8
281 size_variables_root(:)=0_8
282 size_gest(:)=0
283 size_gest_root(:)=0
284 total_file_size=0_8
285 total_struc_size=0_8
286 info1 = -999
287 info2 = -999
288 infog1 = -999
289 infog2 = -999
290 CALL smumps_save_restore_structure(id,0,"memory_save"
291 & ,nbvariables,size_variables,size_gest
292 & ,nbvariables_root,size_variables_root,size_gest_root
293 & ,total_file_size,total_struc_size
294 & ,info1,info2,infog1,infog2)
295 deallocate(size_variables,size_variables_root)
296 deallocate(size_gest,size_gest_root)
297 RETURN
298 END SUBROUTINE smumps_compute_memory_save
299 SUBROUTINE smumps_save(id)
300 include 'mpif.h'
301 INTEGER::ierr,OUT,NBVARIABLES,NBVARIABLES_ROOT,OUTINFO
302 CHARACTER(len=LEN_SAVE_FILE):: SAVE_FILE,INFO_FILE
303 LOGICAL:: SAVE_FILE_exist,INFO_FILE_exist
304 INTEGER(8),allocatable, dimension(:)::SIZE_VARIABLES
305 INTEGER(8),allocatable, dimension(:)::SIZE_VARIABLES_ROOT
306 INTEGER,allocatable, dimension(:)::SIZE_GEST
307 INTEGER,allocatable, dimension(:)::SIZE_GEST_ROOT
308 INTEGER:: INFO1,INFO2,INFOG1,INFOG2,MPG
309 INTEGER(8) :: TOTAL_FILE_SIZE,TOTAL_STRUC_SIZE
310 LOGICAL :: PROKG
311 INTEGER :: I,J,K,H,allocok
312 CHARACTER(len=1) :: TMP_OOC_NAMES(350)
313 TYPE (SMUMPS_STRUC) :: id
314 info1 = id%INFO(1)
315 info2 = id%INFO(2)
316 infog1 = id%INFO(1)
317 infog2 = id%INFO(1)
318 id%INFO(1)=0
319 id%INFO(2)=0
320 id%INFOG(1)=0
321 id%INFOG(2)=0
322 mpg= id%ICNTL(3)
323 prokg = ( mpg .GT. 0 .and. id%MYID .eq. 0 )
324 nbvariables=186
325 nbvariables_root=35
326 allocate(size_variables(nbvariables), stat=allocok)
327 if (allocok .GT. 0) THEN
328 id%INFO(1) =-13
329 id%INFO(2) = nbvariables
330 endif
331 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
332 & id%COMM, id%MYID )
333 IF ( id%INFO(1) .LT. 0 ) RETURN
334 allocate(size_variables_root(nbvariables_root), stat=allocok)
335 if (allocok .GT. 0) THEN
336 id%INFO(1) =-13
337 id%INFO(2) = nbvariables_root
338 endif
339 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
340 & id%COMM, id%MYID )
341 IF ( id%INFO(1) .LT. 0 ) RETURN
342 allocate(size_gest(nbvariables), stat=allocok)
343 if (allocok .GT. 0) THEN
344 id%INFO(1) =-13
345 id%INFO(2) = nbvariables
346 endif
347 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
348 & id%COMM, id%MYID )
349 IF ( id%INFO(1) .LT. 0 ) RETURN
350 allocate(size_gest_root(nbvariables_root), stat=allocok)
351 if (allocok .GT. 0) THEN
352 id%INFO(1) =-13
353 id%INFO(2) = nbvariables_root
354 endif
355 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
356 & id%COMM, id%MYID )
357 IF ( id%INFO(1) .LT. 0 ) RETURN
358 size_variables(:)=0_8
359 size_variables_root(:)=0_8
360 size_gest(:)=0
361 size_gest_root(:)=0
362 total_file_size=0_8
363 total_struc_size=0_8
364 tmp_ooc_names(:)="?"
365 CALL smumps_save_restore_structure(id,0,"memory_save"
366 & ,nbvariables,size_variables,size_gest
367 & ,nbvariables_root,size_variables_root,size_gest_root
368 & ,total_file_size,total_struc_size
369 & ,info1,info2,infog1,infog2)
370 CALL smumps_get_save_files(id,save_file,info_file)
371 IF ( id%INFO(1) .LT. 0 ) RETURN
372 inquire(file=save_file, exist=save_file_exist)
373 IF(save_file_exist) THEN
374 id%INFO(1) = -70
375 id%INFO(2) = 0
376 ENDIF
377 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
378 & id%COMM, id%MYID )
379 IF ( id%INFO(1) .LT. 0 ) RETURN
380 CALL mumps_find_unit(out)
381 IF ( out .EQ. -1 ) THEN
382 id%INFO(1) = -79
383 id%INFO(2) = 0
384 ENDIF
385 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
386 & id%COMM, id%MYID )
387 IF ( id%INFO(1) .LT. 0 ) RETURN
388 open(unit=out,file=save_file
389#if defined(MUMPS_F2003)
390 & ,access="stream"
391#endif
392 & ,status='new',form='unformatted',iostat=ierr)
393 if(ierr.ne.0) THEN
394 id%INFO(1) = -71
395 id%INFO(2) = 0
396 endif
397 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
398 & id%COMM, id%MYID )
399 IF ( id%INFO(1) .LT. 0 ) RETURN
400 inquire(file=info_file, exist=info_file_exist)
401 IF(info_file_exist) THEN
402 id%INFO(1) = -70
403 id%INFO(2) = 0
404 ENDIF
405 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
406 & id%COMM, id%MYID )
407 IF ( id%INFO(1) .LT. 0 ) RETURN
408 CALL mumps_find_unit(outinfo)
409 IF ( outinfo .EQ. -1 ) THEN
410 id%INFO(1) = -79
411 id%INFO(2) = 0
412 ENDIF
413 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
414 & id%COMM, id%MYID )
415 IF ( id%INFO(1) .LT. 0 ) RETURN
416 open(unit=outinfo,file=info_file,status='new',iostat=ierr)
417 if(ierr.ne.0) THEN
418 id%INFO(1) = -71
419 id%INFO(2) = 0
420 endif
421 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
422 & id%COMM, id%MYID )
423 IF ( id%INFO(1) .LT. 0 ) RETURN
424 CALL smumps_save_restore_structure(id,out,"save"
425 & ,nbvariables,size_variables,size_gest
426 & ,nbvariables_root,size_variables_root,size_gest_root
427 & ,total_file_size,total_struc_size
428 & ,info1,info2,infog1,infog2)
429 if(id%INFO(1).EQ.0) then
430 id%INFO(1)=info1
431 id%INFO(2)=info2
432 id%INFOG(1)=infog1
433 id%INFOG(2)=infog2
434 CLOSE(out)
435 if(id%INFO(1).NE.0) then
436 write(mpg,*) "Warning: "
437 & ,"saved instance has negative INFO(1):"
438 & , id%INFO(1)
439 endif
440 IF(prokg) THEN
441 write(mpg,*) "Save done successfully"
442 IF(id%KEEP(201).EQ.1) THEN
443 k=1
444 write(mpg,*) "the corresponding ooc files are:"
445 DO I=1,id%OOC_NB_FILE_TYPE
446 DO J=1,id%OOC_NB_FILES(I)
447 DO H=1,id%OOC_FILE_NAME_LENGTH(K)-2
448 TMP_OOC_NAMES(H)=id%OOC_FILE_NAMES(K,H)
449 ENDDO
450 write(MPG,*)
451 & TMP_OOC_NAMES(1:id%OOC_FILE_NAME_LENGTH(K)-2)
452 K=K+1
453 ENDDO
454 ENDDO
455 ENDIF
456 ENDIF
457 write(OUTINFO,*) "Save done by smumps ",
458 & trim(adjustl(id%VERSION_NUMBER)),
459 & " after job=",id%KEEP(40)+456789,
460 & " with sym, par =",id%KEEP(50),id%KEEP(46)
461 write(OUTINFO,*) "on ",id%NPROCS," processes"
462.EQ..AND..EQ. if((id%ICNTL(18)0)(id%ICNTL(5)0)) then
463 write(OUTINFO,*) "with n, nnz ", id%N, id%NNZ
464.EQ..AND..EQ. elseif((id%ICNTL(18)1)(id%ICNTL(5) 0)) then
465 write(OUTINFO,*) "with n, nnz_loc=", id%N, id%NNZ_loc
466.EQ..AND..EQ. elseif((id%ICNTL(18)0)(id%ICNTL(5) 1)) then
467 write(OUTINFO,*) "with n, nelt=", id%N, id%NELT
468 endif
469.EQ. IF(id%KEEP(10)1) THEN
470 write(OUTINFO,*) "with a default integer size of 64 bits"
471 ELSE
472 write(OUTINFO,*) "With a default integer size of 32 bits"
473 ENDIF
474#if defined(MUMPS_F2003)
475 write(OUTINFO,*) "Using MUMPS_F2003"
476#endif
477 write(OUTINFO,*) ''
478 write(OUTINFO,*) "The corresponding save file is:"
479 write(OUTINFO,*) trim(adjustl(SAVE_FILE))
480 write(OUTINFO,*) "of size",TOTAL_FILE_SIZE, " Bytes"
481.EQ. IF(id%KEEP(201)1) THEN
482 write(OUTINFO,*) ''
483 write(OUTINFO,*) "The corresponding OOC files are:"
484 K=1
485 DO I=1,id%OOC_NB_FILE_TYPE
486 DO J=1,id%OOC_NB_FILES(I)
487 DO H=1,id%OOC_FILE_NAME_LENGTH(K)-2
488 TMP_OOC_NAMES(H)=id%OOC_FILE_NAMES(K,H)
489 ENDDO
490 write(OUTINFO,*)
491 & TMP_OOC_NAMES(1:id%OOC_FILE_NAME_LENGTH(K)-2)
492 K=K+1
493 ENDDO
494 ENDDO
495 ENDIF
496 CLOSE(OUTINFO)
497 else
498 CLOSE(OUT,STATUS='delete')
499 CLOSE(OUTINFO,STATUS='delete')
500 endif
501 deallocate(SIZE_VARIABLES,SIZE_VARIABLES_ROOT)
502 deallocate(SIZE_GEST,SIZE_GEST_ROOT)
503.GT. if (id%KEEP(201) 0) THEN
504 id%ASSOCIATED_OOC_FILES=.TRUE.
505 ENDIF
506 RETURN
507 END SUBROUTINE SMUMPS_SAVE
508 SUBROUTINE SMUMPS_RESTORE(id)
509 INCLUDE 'mpif.h'
510 INTEGER::ierr,IN,NBVARIABLES,NBVARIABLES_ROOT
511 CHARACTER(len=LEN_SAVE_FILE):: restore_file,INFO_FILE
512 INTEGER(8),allocatable, dimension(:)::SIZE_VARIABLES
513 INTEGER(8),allocatable, dimension(:)::SIZE_VARIABLES_ROOT
514 INTEGER,allocatable, dimension(:)::SIZE_GEST
515 INTEGER,allocatable, dimension(:)::SIZE_GEST_ROOT
516 INTEGER:: INFO1,INFO2,INFOG1,INFOG2,MPG,MP,JOB
517 INTEGER(8) :: TOTAL_FILE_SIZE,TOTAL_STRUC_SIZE
518 LOGICAL :: PROKG
519 INTEGER :: I,J,K,H,allocok
520 CHARACTER(len=1) :: TMP_OOC_NAMES(350)
521 TYPE (SMUMPS_STRUC) :: id
522 NBVARIABLES=186
523 NBVARIABLES_ROOT=35
524 allocate(SIZE_VARIABLES(NBVARIABLES), stat=allocok)
525.GT. if (allocok 0) THEN
526 id%INFO(1) =-13
527 id%INFO(2) = NBVARIABLES
528 endif
529 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
530 & id%COMM, id%MYID )
531.LT. IF ( id%INFO(1) 0 ) RETURN
532 allocate(SIZE_VARIABLES_ROOT(NBVARIABLES_ROOT), stat=allocok)
533.GT. if (allocok 0) THEN
534 id%INFO(1) =-13
535 id%INFO(2) = NBVARIABLES_ROOT
536 endif
537 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
538 & id%COMM, id%MYID )
539.LT. IF ( id%INFO(1) 0 ) RETURN
540 allocate(SIZE_GEST(NBVARIABLES), stat=allocok)
541.GT. if (allocok 0) THEN
542 id%INFO(1) =-13
543 id%INFO(2) = NBVARIABLES
544 endif
545 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
546 & id%COMM, id%MYID )
547.LT. IF ( id%INFO(1) 0 ) RETURN
548 allocate(SIZE_GEST_ROOT(NBVARIABLES_ROOT), stat=allocok)
549.GT. if (allocok 0) THEN
550 id%INFO(1) =-13
551 id%INFO(2) = NBVARIABLES_ROOT
552 endif
553 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
554 & id%COMM, id%MYID )
555.LT. IF ( id%INFO(1) 0 ) RETURN
556 SIZE_VARIABLES(:)=0_8
557 SIZE_VARIABLES_ROOT(:)=0_8
558 SIZE_GEST(:)=0
559 SIZE_GEST_ROOT(:)=0
560 TOTAL_FILE_SIZE=0_8
561 TOTAL_STRUC_SIZE=0_8
562 TMP_OOC_NAMES(:)="?"
563 INFO1 = -999
564 INFO2 = -999
565 INFOG1 = -999
566 INFOG2 = -999
567 CALL SMUMPS_GET_SAVE_FILES(id,restore_file,INFO_FILE)
568.LT. IF ( id%INFO(1) 0 ) RETURN
569 CALL MUMPS_FIND_UNIT(IN)
570.EQ. IF ( IN -1 ) THEN
571 id%INFO(1) = -79
572 id%INFO(2) = 0
573 ENDIF
574 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
575 & id%COMM, id%MYID )
576.LT. IF ( id%INFO(1) 0 ) RETURN
577 open(UNIT=IN,FILE=restore_file
578#if defined(MUMPS_F2003)
579 & ,ACCESS="stream"
580#endif
581 & ,STATUS='old',form='unformatted',iostat=ierr)
582.ne. if(ierr0) THEN
583 id%INFO(1) = -74
584 id%INFO(2) = 0
585 endif
586 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
587 & id%COMM, id%MYID )
588.LT. IF ( id%INFO(1) 0 ) RETURN
589 MP= id%ICNTL(2)
590 MPG= id%ICNTL(3)
591 CALL SMUMPS_SAVE_RESTORE_STRUCTURE(id,IN,"restore"
592 & ,NBVARIABLES,SIZE_VARIABLES,SIZE_GEST
593 & ,NBVARIABLES_ROOT,SIZE_VARIABLES_ROOT,SIZE_GEST_ROOT
594 & ,TOTAL_FILE_SIZE,TOTAL_STRUC_SIZE
595 & ,INFO1,INFO2,INFOG1,INFOG2)
596.GT..and..eq. PROKG = ( MPG 0 id%MYID 0 )
597.EQ. if(id%INFO(1)0) then
598 id%INFO(1)=INFO1
599 id%INFO(2)=INFO2
600 id%INFOG(1)=INFOG1
601 id%INFOG(2)=INFOG2
602.NE. if(id%INFO(1)0) then
603 write(MPG,*) "Warning: "
604 & ,"restored instance has negative INFO(1):"
605 & , id%INFO(1)
606 endif
607.GT. if(MP0) then
608 JOB=id%KEEP(40)+456789
609 write(MP,*) "Restore done successfully"
610 write(MP,*) "From file ",trim(adjustl(restore_file))
611.EQ..AND..EQ. if((id%ICNTL(18)0)(id%ICNTL(5)0)) then
612 write(MP,*) "with JOB, N, NNZ ",JOB, id%N,id%NNZ
613.EQ..AND..EQ. elseif((id%ICNTL(18)1)(id%ICNTL(5) 0)) then
614 write(MP,*) "with JOB, N, NNZ_loc=", JOB, id%N,
615 & id%NNZ_loc
616.EQ..AND..EQ. elseif((id%ICNTL(18)0)(id%ICNTL(5) 1)) then
617 write(MP,*) "with job, n, nelt=", JOB, id%N, id%NELT
618 endif
619 endif
620 IF(PROKG) THEN
621.EQ. IF(id%KEEP(201)1) THEN
622 K=1
623 write(MPG,*) "the corresponding ooc files are:"
624 DO I=1,id%OOC_NB_FILE_TYPE
625 DO J=1,id%OOC_NB_FILES(I)
626 DO H=1,id%OOC_FILE_NAME_LENGTH(K)-2
627 TMP_OOC_NAMES(H)=id%OOC_FILE_NAMES(K,H)
628 ENDDO
629 write(MPG,*)
630 & TMP_OOC_NAMES(1:id%OOC_FILE_NAME_LENGTH(K)-2)
631 K=K+1
632 ENDDO
633 ENDDO
634 ENDIF
635 ENDIF
636 else
637 id%root%gridinit_done=.FALSE.
638 id%KEEP(140)=1
639 endif
640 CLOSE(IN)
641 deallocate(SIZE_VARIABLES,SIZE_VARIABLES_ROOT)
642 deallocate(SIZE_GEST,SIZE_GEST_ROOT)
643.GT. if (id%KEEP(201) 0) THEN
644 id%ASSOCIATED_OOC_FILES=.TRUE.
645 ENDIF
646 RETURN
647 END SUBROUTINE SMUMPS_RESTORE
648 SUBROUTINE SMUMPS_SAVE_RESTORE_STRUCTURE(id,unit,mode
649 & ,NBVARIABLES,SIZE_VARIABLES,SIZE_GEST
650 & ,NBVARIABLES_ROOT,SIZE_VARIABLES_ROOT,SIZE_GEST_ROOT
651 & ,TOTAL_FILE_SIZE,TOTAL_STRUC_SIZE
652 & ,INFO1,INFO2,INFOG1,INFOG2)
653 USE SMUMPS_FACSOL_L0OMP_M, ONLY : SMUMPS_SAVE_RESTORE_L0FACARRAY
654 IMPLICIT NONE
655 INCLUDE 'mpif.h'
656 INTEGER,intent(in)::unit,NBVARIABLES,NBVARIABLES_ROOT
657 CHARACTER(len=*),intent(in) :: mode
658 INTEGER(8),dimension(NBVARIABLES)::SIZE_VARIABLES
659 INTEGER(8),dimension(NBVARIABLES_ROOT)::SIZE_VARIABLES_ROOT
660 INTEGER,dimension(NBVARIABLES)::SIZE_GEST
661 INTEGER,dimension(NBVARIABLES_ROOT)::SIZE_GEST_ROOT
662 INTEGER(8) :: TOTAL_FILE_SIZE,TOTAL_STRUC_SIZE
663 INTEGER:: INFO1,INFO2,INFOG1,INFOG2
664 INTEGER:: j,i1,i2,err,ierr
665 CHARACTER(len=30), allocatable, dimension(:)::VARIABLES
666 CHARACTER(len=30), allocatable, dimension(:)::VARIABLES_ROOT
667 CHARACTER(len=30) :: TMP_STRING1, TMP_STRING2
668 CHARACTER :: ARITH,READ_ARITH
669 INTEGER(8) :: size_written,gest_size,WRITTEN_STRUC_SIZE
670 INTEGER:: SIZE_INT, SIZE_INT8, SIZE_RL_OR_DBL, SIZE_ARITH_DEP
671 INTEGER:: SIZE_DOUBLE_PRECISION, SIZE_LOGICAL, SIZE_CHARACTER
672 INTEGER:: READ_NPROCS, READ_PAR, READ_SYM
673 INTEGER,dimension(NBVARIABLES)::NbRecords
674 INTEGER,dimension(NBVARIABLES_ROOT)::NbRecords_ROOT
675 INTEGER:: size_array1,size_array2,dummy,allocok
676 INTEGER(8):: size_array_INT8_1,size_array_INT8_2
677 LOGICAL:: INT_TYPE_64, READ_INT_TYPE_64
678 INTEGER:: tot_NbRecords,NbSubRecords
679 INTEGER(8):: size_read,size_allocated
680 INTEGER(8),dimension(NBVARIABLES)::DIFF_SIZE_ALLOC_READ
681 INTEGER(8),dimension(NBVARIABLES_ROOT)::DIFF_SIZE_ALLOC_READ_ROOT
682 INTEGER::READ_OOC_FILE_NAME_LENGTH
683 CHARACTER(len=LEN_SAVE_FILE):: READ_OOC_FIRST_FILE_NAME
684 INTEGER,dimension(4)::OOC_INDICES
685 CHARACTER(len=8) :: date
686 CHARACTER(len=10) :: time
687 CHARACTER(len=5) :: zone
688 INTEGER,dimension(8):: values
689 CHARACTER(len=23) :: hash,READ_HASH
690 LOGICAL:: BASIC_CHECK
691 LOGICAL :: FORTRAN_VERSION_OK
692 CHARACTER(len=1) :: TMP_OOC_NAMES(350)
693 INTEGER(8)::SIZE_VARIABLES_BLR,SIZE_VARIABLES_FRONT_DATA,
694 & SIZE_VARIABLES_L0FAC
695 INTEGER::SIZE_GEST_BLR,SIZE_GEST_FRONT_DATA,SIZE_GEST_L0FAC
696 INTEGER :: KEEP411_SAVE
697 INTEGER(4) :: I4
698 TYPE (SMUMPS_STRUC) :: id
699 allocate(VARIABLES(NBVARIABLES), stat=allocok)
700.GT. if (allocok 0) THEN
701 id%INFO(1) =-13
702 id%INFO(2) = NBVARIABLES
703 endif
704 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
705 & id%COMM, id%MYID )
706.LT. IF ( id%INFO(1) 0 ) GOTO 100
707 VARIABLES(186)="associated_ooc_files"
708 variables(185)="pad16"
709 variables(184)="Deficiency"
710 variables(183)="NB_SINGULAR_VALUES"
711 variables(182)="SINGULAR_VALUES"
712 variables(181)="MPITOOMP_PROCS_MAP"
713 variables(180)="L0_OMP_MAPPING"
714 variables(179)="PTR_LEAFS_L0_OMP"
715 variables(178)="PERM_L0_OMP"
716 variables(177)="VIRT_L0_OMP_MAPPING"
717 variables(176)="VIRT_L0_OMP"
718 variables(175)="PHYS_L0_OMP"
719 variables(174)="IPOOL_A_L0_OMP"
720 variables(173)="IPOOL_B_L0_OMP"
721 variables(172)="I8_L0_OMP"
722 variables(171)="I4_L0_OMP"
723 variables(170)="THREAD_LA"
724 variables(169)="LL0_OMP_FACTORS"
725 variables(168)="LL0_OMP_MAPPING"
726 variables(167)="L_VIRT_L0_OMP"
727 variables(166)="L_PHYS_L0_OMP"
728 variables(165)="LPOOL_B_L0_OMP"
729 variables(164)="LPOOL_A_L0_OMP"
730 variables(163)="l0_omp_factors"
731 VARIABLES(162)="blrarray_encoding"
732 VARIABLES(161)="fdm_f_encoding"
733 VARIABLES(160)="pad13"
734 VARIABLES(159)="nbgrp"
735 VARIABLES(158)="lrgroups"
736 VARIABLES(157)="root"
737 VARIABLES(156)="working"
738 VARIABLES(155)="iptr_working"
739 VARIABLES(154)="pad14"
740 VARIABLES(153)="sup_proc"
741 VARIABLES(152)="pivnul_list"
742 VARIABLES(151)="ooc_file_names"
743 VARIABLES(150)="ooc_file_name_length"
744 VARIABLES(149)="pad12"
745 VARIABLES(148)="ooc_nb_file_type"
746 VARIABLES(147)="ooc_nb_files"
747 VARIABLES(146)="ooc_total_nb_nodes"
748 VARIABLES(145)="ooc_vaddr"
749 VARIABLES(144)="ooc_size_of_block"
750 VARIABLES(143)="ooc_inode_sequence"
751 VARIABLES(142)="ooc_max_nb_nodes_for_zone"
752 VARIABLES(141)="instance_number"
753 VARIABLES(140)="cb_son_size"
754 VARIABLES(139)="dkeep"
755 VARIABLES(138)="lwk_user"
756 VARIABLES(137)="nbsa_local"
757 VARIABLES(136)="wk_user"
758 VARIABLES(135)="croix_manu"
759 VARIABLES(134)="sched_sbtr"
760 VARIABLES(133)="sched_grp"
761 VARIABLES(132)="sched_dep"
762 VARIABLES(131)="sbtr_id"
763 VARIABLES(130)="depth_first_seq"
764 VARIABLES(129)="depth_first"
765 VARIABLES(128)="my_nb_leaf"
766 VARIABLES(127)="my_first_leaf"
767 VARIABLES(126)="my_root_sbtr"
768 VARIABLES(125)="cost_trav"
769 VARIABLES(124)="mem_subtree"
770 VARIABLES(123)="rhscomp"
771 VARIABLES(122)="posinrhscomp_col"
772 VARIABLES(121)="pad11"
773 VARIABLES(120)="posinrhscomp_col_alloc"
774 VARIABLES(119)="posinrhscomp_row"
775 VARIABLES(118)="mem_dist"
776 VARIABLES(117)="i_am_cand"
777 VARIABLES(116)="tab_pos_in_pere"
778 VARIABLES(115)="future_niv2"
779 VARIABLES(114)="istep_to_iniv2"
780 VARIABLES(113)="candidates"
781 VARIABLES(112)="eltproc"
782 VARIABLES(111)="leltvar"
783 VARIABLES(110)="nelt_loc"
784 VARIABLES(109)="dblarr"
785 VARIABLES(108)="intarr"
786 VARIABLES(107)="procnode"
787 VARIABLES(106)="s"
788 VARIABLES(105)="ptrfac"
789 VARIABLES(104)="ptlust_s"
790 variables(103)="Step2node"
791 variables(102)="PROCNODE_STEPS"
792 variables(101)="NA"
793 variables(100)="PTRAR"
794 variables(99)="FRTELT"
795 variables(98)="FRTPTR"
796 variables(97)="FILS"
797 variables(96)="DAD_STEPS"
798 variables(95)="FRERE_STEPS"
799 variables(94)="ND_STEPS"
800 variables(93)="NE_STEPS"
801 variables(92)="STEP"
802 variables(91)="NBSA"
803 variables(90)="LNA"
804 variables(89)="KEEP"
805 variables(88)="IS"
806 variables(87)="ASS_IRECV"
807 variables(86)="NSLAVES"
808 variables(85)="NPROCS"
809 variables(84)="MYID"
810 variables(83)="COMM_LOAD"
811 variables(82)="MYID_NODES"
812 variables(81)="COMM_NODES"
813 variables(80)="INST_Number"
814 variables(79)="MAX_SURF_MASTER"
815 variables(78)="KEEP8"
816 variables(77)="pad7"
817 variables(76)="SAVE_PREFIX"
818 variables(75)="SAVE_DIR"
819 variables(74)="WRITE_PROBLEM"
820 variables(73)="OOC_PREFIX"
821 variables(72)="OOC_TMPDIR"
822 variables(71)="VERSION_NUMBER"
823 variables(70)="MAPPING"
824 variables(69)="LISTVAR_SCHUR"
825 variables(68)="SCHUR_CINTERFACE"
826 variables(67)="SCHUR"
827 variables(66)="SIZE_SCHUR"
828 variables(65)="SCHUR_LLD"
829 variables(64)="SCHUR_NLOC"
830 variables(63)="SCHUR_MLOC"
831 variables(62)="NBLOCK"
832 variables(61)="MBLOCK"
833 variables(60)="NPCOL"
834 variables(59)="NPROW"
835 variables(58)="UNS_PERM"
836 variables(57)="SYM_PERM"
837 variables(56)="METIS_OPTIONS"
838 variables(55)="RINFOG"
839 variables(54)="RINFO"
840 variables(53)="CNTL"
841 variables(52)="COST_SUBTREES"
842 variables(51)="INFOG"
843 variables(50)="INFO"
844 variables(49)="ICNTL"
845 variables(48)="pad6"
846 variables(47)="LSOL_loc"
847 variables(46)="LREDRHS"
848 variables(45)="LRHS_loc"
849 variables(44)="Nloc_RHS"
850 variables(43)="NZ_RHS"
851 variables(42)="NRHS"
852 variables(41)="LRHS"
853 variables(40)="IRHS_loc"
854 variables(39)="ISOL_loc"
855 variables(38)="IRHS_PTR"
856 variables(37)="IRHS_SPARSE"
857 variables(36)="RHS_loc"
858 variables(35)="SOL_loc"
859 variables(34)="RHS_SPARSE"
860 variables(33)="REDRHS"
861 variables(32)="RHS"
862 variables(31)="BLKVAR"
863 variables(30)="BLKPTR"
864 variables(29)="pad5"
865 variables(28)="NBLK"
866 variables(27)="PERM_IN"
867 variables(26)="pad4"
868 variables(25)="A_ELT"
869 variables(24)="ELTVAR"
870 variables(23)="ELTPTR"
871 variables(22)="pad3"
872 variables(21)="NELT"
873 variables(20)="pad2"
874 variables(19)="A_loc"
875 variables(18)="JCN_loc"
876 variables(17)="IRN_loc"
877 variables(16)="NNZ_loc"
878 variables(15)="pad1"
879 variables(14)="NZ_loc"
880 variables(13)="pad0"
881 variables(12)="ROWSCA"
882 variables(11)="COLSCA"
883 variables(10)="JCN"
884 variables(9)="IRN"
885 variables(8)="A"
886 variables(7)="NNZ"
887 variables(6)="NZ"
888 variables(5)="N"
889 variables(4)="JOB"
890 variables(3)="PAR"
891 variables(2)="SYM"
892 variables(1)="COMM"
893 allocate(variables_root(nbvariables_root), stat=allocok)
894 if (allocok .GT. 0) THEN
895 id%INFO(1) =-13
896 id%INFO(2) = nbvariables_root
897 endif
898 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
899 & id%COMM, id%MYID )
900 IF ( id%INFO(1) .LT. 0 ) GOTO 100
901 variables_root(35)="rootpad4"
902 variables_root(34)="NB_SINGULAR_VALUES"
903 variables_root(33)="SINGULAR_VALUES"
904 variables_root(32)="SVD_VT"
905 variables_root(31)="SVD_U"
906 variables_root(30)="gridinit_done"
907 variables_root(29)="yes"
908 variables_root(28)="rootpad3"
909 variables_root(27)="QR_RCOND"
910 variables_root(26)="rootpad"
911 variables_root(25)="RHS_ROOT"
912 variables_root(24)="rootpad2"
913 variables_root(23)="QR_TAU"
914 variables_root(22)="SCHUR_POINTER"
915 variables_root(21)="RHS_CNTR_MASTER_ROOT"
916 variables_root(20)="rootpad1"
917 variables_root(19)="IPIV"
918 variables_root(18)="RG2L_COL"
919 variables_root(17)="RG2L_ROW"
920 variables_root(16)="rootpad0"
921 variables_root(15)="LPIV"
922 variables_root(14)="CNTXT_BLACS"
923 variables_root(13)="DESCRIPTOR"
924 variables_root(12)="TOT_ROOT_SIZE"
925 variables_root(11)="ROOT_SIZE"
926 variables_root(10)="RHS_NLOC"
927 variables_root(9)="SCHUR_LLD"
928 variables_root(8)="SCHUR_NLOC"
929 variables_root(7)="SCHUR_MLOC"
930 variables_root(6)="MYCOL"
931 variables_root(5)="MYROW"
932 variables_root(4)="NPCOL"
933 variables_root(3)="NPROW"
934 variables_root(2)="NBLOCK"
935 variables_root(1)="MBLOCK"
936 ooc_indices=(/147,148,150,151/)
937 size_int = id%KEEP(34)
938 size_int8 = id%KEEP(34)*id%KEEP(10)
939 size_rl_or_dbl = id%KEEP(16)
940 size_arith_dep = id%KEEP(35)
941 size_double_precision = 8
942 size_logical = 4
943 size_character = 1
944 size_written=int(0,kind=8)
945 tot_nbrecords=0
946 nbrecords(:)=0
947 nbrecords_root(:)=0
948 size_read=int(0,kind=8)
949 size_allocated=int(0,kind=8)
950 diff_size_alloc_read(:)=0
951 diff_size_alloc_read_root(:)=0
952 written_struc_size=int(0,kind=8)
953 tmp_ooc_names(:)="?"
954 size_variables_blr=0_8
955 size_gest_blr=0
956 size_variables_front_data=0_8
957 size_gest_front_data=0
958 size_variables_l0fac=0
959 size_gest_l0fac=0
960 if(trim(mode).EQ."memory_save") then
961 elseif(trim(mode).EQ."save") then
962 write(unit,iostat=err) "MUMPS"
963 if(err.ne.0) THEN
964 id%INFO(1) = -72
965 CALL mumps_seti8toi4(total_file_size-size_written,
966 & id%INFO(2))
967 endif
968 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
969 & id%COMM, id%MYID )
970 IF ( id%INFO(1) .LT. 0 ) GOTO 100
971 size_written=size_written+int(5*size_character,kind=8)
972#if !defined(MUMPS_F2003)
973 size_written=size_written
974 & +int(2*id%KEEP(34)*1,kind=8)
975#endif
976 IF(id%MYID.EQ.0) THEN
977 call date_and_time(date,time,zone,values)
978 hash=trim(date)//trim(time)//trim(zone)
979 ENDIF
980 CALL mpi_bcast( hash, 23, mpi_character, 0, id%COMM, ierr )
981 write(unit,iostat=err) hash
982 if(err.ne.0) THEN
983 id%INFO(1) = -72
984 CALL mumps_seti8toi4(total_file_size-size_written,
985 & id%INFO(2))
986 endif
987 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
988 & id%COMM, id%MYID )
989 IF ( id%INFO(1) .LT. 0 ) GOTO 100
990 size_written=size_written+int(23*size_character,kind=8)
991#if !defined(MUMPS_F2003)
992 size_written=size_written
993 & +int(2*id%KEEP(34)*1,kind=8)
994#endif
995 write(unit,iostat=err) total_file_size,total_struc_size
996 if(err.ne.0) THEN
997 id%INFO(1) = -72
998 CALL mumps_seti8toi4(total_file_size-size_written,
999 & id%INFO(2))
1000 endif
1001 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
1002 & id%COMM, id%MYID )
1003 IF ( id%INFO(1) .LT. 0 ) GOTO 100
1004 size_written=size_written+int(2*size_int8,kind=8)
1005#if !defined(MUMPS_F2003)
1006 size_written=size_written
1007 & +int(2*id%KEEP(34)*1,kind=8)
1008#endif
1009 arith="SMUMPS"(1:1)
1010 write(unit,iostat=err) arith
1011 if(err.ne.0) THEN
1012 id%INFO(1) = -72
1013 CALL mumps_seti8toi4(total_file_size-size_written,
1014 & id%INFO(2))
1015 endif
1016 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
1017 & id%COMM, id%MYID )
1018 IF ( id%INFO(1) .LT. 0 ) GOTO 100
1019 size_written=size_written+int(1,kind=8)
1020#if !defined(MUMPS_F2003)
1021 size_written=size_written
1022 & +int(2*id%KEEP(34)*1,kind=8)
1023#endif
1024 write(unit,iostat=err) id%SYM,id%PAR,id%NPROCS
1025 if(err.ne.0) THEN
1026 id%INFO(1) = -72
1027 CALL mumps_seti8toi4(total_file_size-size_written,
1028 & id%INFO(2))
1029 endif
1030 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
1031 & id%COMM, id%MYID )
1032 IF ( id%INFO(1) .LT. 0 ) GOTO 100
1033 size_written=size_written+int(3*size_int,kind=8)
1034#if !defined(MUMPS_F2003)
1035 size_written=size_written
1036 & +int(2*id%KEEP(34)*1,kind=8)
1037#endif
1038 IF(id%KEEP(10).EQ.1) THEN
1039 int_type_64=.true.
1040 ELSE
1041 int_type_64=.false.
1042 ENDIF
1043 write(unit,iostat=err) int_type_64
1044 if(err.ne.0) THEN
1045 id%INFO(1) = -72
1046 CALL mumps_seti8toi4(total_file_size-size_written,
1047 & id%INFO(2))
1048 endif
1049 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
1050 & id%COMM, id%MYID )
1051 IF ( id%INFO(1) .LT. 0 ) GOTO 100
1052 size_written=size_written+int(size_logical,kind=8)
1053#if !defined(MUMPS_F2003)
1054 size_written=size_written
1055 & +int(2*id%KEEP(34)*1,kind=8)
1056#endif
1057 IF(associated(id%OOC_FILE_NAME_LENGTH).AND.
1058 & associated(id%OOC_FILE_NAMES)) THEN
1059 write(unit,iostat=err) id%OOC_FILE_NAME_LENGTH(1)
1060 if(err.ne.0) THEN
1061 id%INFO(1) = -72
1062 CALL mumps_seti8toi4(total_file_size-size_written,
1063 & id%INFO(2))
1064 endif
1065 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
1066 & id%COMM, id%MYID )
1067 IF ( id%INFO(1) .LT. 0 ) GOTO 100
1068 size_written=size_written+int(size_int,kind=8)
1069#if !defined(MUMPS_F2003)
1070 size_written=size_written
1071 & +int(2*id%KEEP(34)*1,kind=8)
1072#endif
1073 tmp_ooc_names(1:id%OOC_FILE_NAME_LENGTH(1))=
1074 & id%OOC_FILE_NAMES(1,1:id%OOC_FILE_NAME_LENGTH(1))
1075 write(unit,iostat=err)
1076 & tmp_ooc_names(1:id%OOC_FILE_NAME_LENGTH(1))
1077 if(err.ne.0) THEN
1078 id%INFO(1) = -72
1079 CALL mumps_seti8toi4(total_file_size-size_written,
1080 & id%INFO(2))
1081 endif
1082 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
1083 & id%COMM, id%MYID )
1084 IF ( id%INFO(1) .LT. 0 ) GOTO 100
1085 size_written=size_written
1086 & +int(id%OOC_FILE_NAME_LENGTH(1)*size_character,kind=8)
1087#if !defined(MUMPS_F2003)
1088 size_written=size_written
1089 & +int(2*id%KEEP(34)*1,kind=8)
1090#endif
1091 ELSE
1092 write(unit,iostat=err) -999
1093 if(err.ne.0) THEN
1094 id%INFO(1) = -72
1095 CALL mumps_seti8toi4(total_file_size-size_written,
1096 & id%INFO(2))
1097 endif
1098 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
1099 & id%COMM, id%MYID )
1100 IF ( id%INFO(1) .LT. 0 ) GOTO 100
1101 size_written=size_written+int(size_int,kind=8)
1102#if !defined(MUMPS_F2003)
1103 size_written=size_written
1104 & +int(2*id%KEEP(34)*1,kind=8)
1105#endif
1106 write(unit,iostat=err) -999
1107 if(err.ne.0) THEN
1108 id%INFO(1) = -72
1109 CALL mumps_seti8toi4(total_file_size-size_written,
1110 & id%INFO(2))
1111 endif
1112 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
1113 & id%COMM, id%MYID )
1114 IF ( id%INFO(1) .LT. 0 ) GOTO 100
1115 size_written=size_written+int(size_int,kind=8)
1116#if !defined(MUMPS_F2003)
1117 size_written=size_written
1118 & +int(2*id%KEEP(34)*1,kind=8)
1119#endif
1120 ENDIF
1121 elseif((trim(mode).EQ."restore").OR.
1122 & (trim(mode).EQ."restore_ooc")) then
1123 CALL mumps_read_header(unit,err,size_read,size_int,size_int8,
1124 & total_file_size, total_struc_size, read_arith,
1125 & read_int_type_64, read_ooc_file_name_length,
1126 & read_ooc_first_file_name,read_hash,
1127 & read_sym,read_par,read_nprocs,fortran_version_ok)
1128 if (err.ne.0) THEN
1129 id%INFO(1) = -75
1130 CALL mumps_seti8toi4(total_file_size-size_read
1131 & ,id%INFO(2))
1132 elseif (.NOT.fortran_version_ok) THEN
1133 id%INFO(1) = -73
1134 id%INFO(2) = 1
1135 endif
1136 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
1137 & id%COMM, id%MYID )
1138 IF ( id%INFO(1) .LT. 0 ) GOTO 100
1139 basic_check = .false.
1140 IF (trim(mode).EQ."restore_ooc") THEN
1141 basic_check = .true.
1142 ENDIF
1143 CALL smumps_check_header(id,basic_check,read_int_type_64,
1144 & read_hash, read_nprocs,
1145 & read_arith, read_sym, read_par)
1146 IF (id%INFO(1) .LT. 0) GOTO 100
1147 elseif(trim(mode).EQ."fake_restore") then
1148 read(unit,iostat=err) read_hash
1149 if(err.ne.0) GOTO 100
1150 read(unit,iostat=err) total_file_size,total_struc_size
1151 if(err.ne.0) GOTO 100
1152 IF ( id%INFO(1) .LT. 0 ) GOTO 100
1153 GOTO 200
1154 else
1155 CALL mumps_abort()
1156 endif
1157 DO j=1,size(ooc_indices)
1158 i1=ooc_indices(j)
1159 tmp_string1 = variables(i1)
1160 SELECT CASE(tmp_string1)
1161 CASE("OOC_NB_FILES")
1162 nbrecords(i1)=2
1163 if(trim(mode).EQ."memory_save") then
1164 IF(associated(id%OOC_NB_FILES)) THEN
1165 size_gest(i1)=size_int
1166 size_variables(i1)=size(id%OOC_NB_FILES,1)*size_int
1167 ELSE
1168 size_gest(i1)=size_int*2
1169 size_variables(i1)=0_8
1170 ENDIF
1171 elseif(trim(mode).EQ."save") then
1172 IF(associated(id%OOC_NB_FILES)) THEN
1173 write(unit,iostat=err) size(id%OOC_NB_FILES,1)
1174 if(err.ne.0) then
1175 id%INFO(1) = -72
1176 CALL mumps_seti8toi4(total_file_size-size_written,
1177 & id%INFO(2))
1178 endif
1179 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
1180 & id%COMM, id%MYID )
1181 IF ( id%INFO(1) .LT. 0 ) GOTO 100
1182 write(unit,iostat=err) id%OOC_NB_FILES
1183 ELSE
1184 write(unit,iostat=err) -999
1185 if(err.ne.0) then
1186 id%INFO(1) = -72
1187 CALL mumps_seti8toi4(total_file_size-size_written,
1188 & id%INFO(2))
1189 endif
1190 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
1191 & id%COMM, id%MYID )
1192 IF ( id%INFO(1) .LT. 0 ) GOTO 100
1193 write(unit,iostat=err) -999
1194 ENDIF
1195 if(err.ne.0) then
1196 id%INFO(1) = -72
1197 CALL mumps_seti8toi4(total_file_size-size_written,
1198 & id%INFO(2))
1199 endif
1200 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
1201 & id%COMM, id%MYID )
1202 IF ( id%INFO(1) .LT. 0 ) GOTO 100
1203 elseif((trim(mode).EQ."restore").OR.
1204 & (trim(mode).EQ."restore_ooc")) then
1205 nullify(id%OOC_NB_FILES)
1206 read(unit,iostat=err) size_array1
1207 if(err.ne.0) THEN
1208 id%INFO(1) = -75
1209 CALL mumps_seti8toi4(total_file_size-size_read
1210 & ,id%INFO(2))
1211 endif
1212 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
1213 & id%COMM, id%MYID )
1214 IF ( id%INFO(1) .LT. 0 ) GOTO 100
1215 if(size_array1.EQ.-999) then
1216 size_gest(i1)=size_int*2
1217 size_variables(i1)=0_8
1218 read(unit,iostat=err) dummy
1219 else
1220 size_gest(i1)=size_int
1221 size_variables(i1)=size_array1*size_int
1222 allocate(id%OOC_NB_FILES(size_array1), stat=allocok)
1223 if (allocok .GT. 0) THEN
1224 id%INFO(1) = -78
1225 CALL mumps_seti8toi4(
1226 & total_struc_size-size_allocated
1227 & ,id%INFO(2))
1228 endif
1229 read(unit,iostat=err) id%OOC_NB_FILES
1230 endif
1231 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
1232 & id%COMM, id%MYID )
1233 IF ( id%INFO(1) .LT. 0 ) GOTO 100
1234 if(err.ne.0) THEN
1235 id%INFO(1) = -75
1236 CALL mumps_seti8toi4(total_file_size-size_read
1237 & ,id%INFO(2))
1238 endif
1239 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
1240 & id%COMM, id%MYID )
1241 IF ( id%INFO(1) .LT. 0 ) GOTO 100
1242 endif
1243 CASE("OOC_NB_FILE_TYPE")
1244 nbrecords(i1)=1
1245 if(trim(mode).EQ."memory_save") then
1246 size_variables(i1)=size_int
1247 elseif(trim(mode).EQ."save") then
1248 write(unit,iostat=err) id%OOC_NB_FILE_TYPE
1249 if(err.ne.0) then
1250 id%INFO(1) = -72
1251 CALL mumps_seti8toi4(total_file_size-size_written,
1252 & id%INFO(2))
1253 endif
1254 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
1255 & id%COMM, id%MYID )
1256 IF ( id%INFO(1) .LT. 0 ) GOTO 100
1257 elseif((trim(mode).EQ."restore").OR.
1258 & (trim(mode).EQ."restore_ooc")) then
1259 size_variables(i1)=size_int
1260 read(unit,iostat=err) id%OOC_NB_FILE_TYPE
1261 if(err.ne.0) THEN
1262 id%INFO(1) = -75
1263 CALL mumps_seti8toi4(total_file_size-size_read
1264 & ,id%INFO(2))
1265 endif
1266 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
1267 & id%COMM, id%MYID )
1268 IF ( id%INFO(1) .LT. 0 ) GOTO 100
1269 endif
1270 CASE("OOC_FILE_NAMES")
1271 nbrecords(i1)=2
1272 if(trim(mode).EQ."memory_save") then
1273 IF(associated(id%OOC_FILE_NAMES)) THEN
1274 size_gest(i1)=size_int*2
1275 size_variables(i1)=size(id%OOC_FILE_NAMES,1)
1276 & *size(id%OOC_FILE_NAMES,2)*size_character
1277 ELSE
1278 size_gest(i1)=size_int*3
1279 size_variables(i1)=0_8
1280 ENDIF
1281 elseif(trim(mode).EQ."save") then
1282 IF(associated(id%OOC_FILE_NAMES)) THEN
1283 write(unit,iostat=err) size(id%OOC_FILE_NAMES,1)
1284 & ,size(id%OOC_FILE_NAMES,2)
1285 if(err.ne.0) then
1286 id%INFO(1) = -72
1287 CALL mumps_seti8toi4(total_file_size-size_written,
1288 & id%INFO(2))
1289 endif
1290 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
1291 & id%COMM, id%MYID )
1292 IF ( id%INFO(1) .LT. 0 ) GOTO 100
1293 write(unit,iostat=err) id%OOC_FILE_NAMES
1294 ELSE
1295 write(unit,iostat=err) -999,-998
1296 if(err.ne.0) then
1297 id%INFO(1) = -72
1298 CALL mumps_seti8toi4(total_file_size-size_written,
1299 & id%INFO(2))
1300 endif
1301 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
1302 & id%COMM, id%MYID )
1303 IF ( id%INFO(1) .LT. 0 ) GOTO 100
1304 write(unit,iostat=err) -999
1305 ENDIF
1306 if(err.ne.0) then
1307 id%INFO(1) = -72
1308 CALL mumps_seti8toi4(total_file_size-size_written,
1309 & id%INFO(2))
1310 endif
1311 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
1312 & id%COMM, id%MYID )
1313 IF ( id%INFO(1) .LT. 0 ) GOTO 100
1314 elseif((trim(mode).EQ."restore").OR.
1315 & (trim(mode).EQ."restore_ooc")) then
1316 nullify(id%OOC_FILE_NAMES)
1317 read(unit,iostat=err) size_array1,size_array2
1318 if(err.ne.0) THEN
1319 id%INFO(1) = -75
1320 CALL mumps_seti8toi4(total_file_size-size_read
1321 & ,id%INFO(2))
1322 endif
1323 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
1324 & id%COMM, id%MYID )
1325 IF ( id%INFO(1) .LT. 0 ) GOTO 100
1326 if(size_array1.EQ.-999) then
1327 size_gest(i1)=size_int*3
1328 size_variables(i1)=0_8
1329 read(unit,iostat=err) dummy
1330 else
1331 size_gest(i1)=size_int*2
1332 size_variables(i1)=size_array1*size_array2
1333 & *size_character
1334 allocate(id%OOC_FILE_NAMES(size_array1,size_array2),
1335 & stat=allocok)
1336 if (allocok .GT. 0) THEN
1337 id%INFO(1) = -78
1338 CALL mumps_seti8toi4(
1339 & total_struc_size-size_allocated
1340 & ,id%INFO(2))
1341 endif
1342 read(unit,iostat=err) id%OOC_FILE_NAMES
1343 endif
1344 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
1345 & id%COMM, id%MYID )
1346 IF ( id%INFO(1) .LT. 0 ) GOTO 100
1347 if(err.ne.0) THEN
1348 id%INFO(1) = -75
1349 CALL mumps_seti8toi4(total_file_size-size_read
1350 & ,id%INFO(2))
1351 endif
1352 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
1353 & id%COMM, id%MYID )
1354 IF ( id%INFO(1) .LT. 0 ) GOTO 100
1355 endif
1356 CASE("OOC_FILE_NAME_LENGTH")
1357 nbrecords(i1)=2
1358 if(trim(mode).EQ."memory_save") then
1359 IF(associated(id%OOC_FILE_NAME_LENGTH)) THEN
1360 size_gest(i1)=size_int
1361 size_variables(i1)=
1362 & size(id%OOC_FILE_NAME_LENGTH,1)*size_int
1363 ELSE
1364 size_gest(i1)=size_int*2
1365 size_variables(i1)=0_8
1366 ENDIF
1367 elseif(trim(mode).EQ."save") then
1368 IF(associated(id%OOC_FILE_NAME_LENGTH)) THEN
1369 write(unit,iostat=err) size(id%OOC_FILE_NAME_LENGTH,1)
1370 if(err.ne.0) then
1371 id%INFO(1) = -72
1372 CALL mumps_seti8toi4(total_file_size-size_written,
1373 & id%INFO(2))
1374 endif
1375 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
1376 & id%COMM, id%MYID )
1377 IF ( id%INFO(1) .LT. 0 ) GOTO 100
1378 write(unit,iostat=err) id%OOC_FILE_NAME_LENGTH
1379 ELSE
1380 write(unit,iostat=err) -999
1381 if(err.ne.0) then
1382 id%INFO(1) = -72
1383 CALL mumps_seti8toi4(total_file_size-size_written,
1384 & id%INFO(2))
1385 endif
1386 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
1387 & id%COMM, id%MYID )
1388 IF ( id%INFO(1) .LT. 0 ) GOTO 100
1389 write(unit,iostat=err) -999
1390 ENDIF
1391 if(err.ne.0) then
1392 id%INFO(1) = -72
1393 CALL mumps_seti8toi4(total_file_size-size_written,
1394 & id%INFO(2))
1395 endif
1396 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
1397 & id%COMM, id%MYID )
1398 IF ( id%INFO(1) .LT. 0 ) GOTO 100
1399 elseif((trim(mode).EQ."restore").OR.
1400 & (trim(mode).EQ."restore_ooc")) then
1401 nullify(id%OOC_FILE_NAME_LENGTH)
1402 read(unit,iostat=err) size_array1
1403 if(err.ne.0) THEN
1404 id%INFO(1) = -75
1405 CALL mumps_seti8toi4(total_file_size-size_read
1406 & ,id%INFO(2))
1407 endif
1408 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
1409 & id%COMM, id%MYID )
1410 IF ( id%INFO(1) .LT. 0 ) GOTO 100
1411 if(size_array1.EQ.-999) then
1412 size_gest(i1)=size_int*2
1413 size_variables(i1)=0_8
1414 read(unit,iostat=err) dummy
1415 else
1416 size_gest(i1)=size_int
1417 size_variables(i1)=size_array1*size_int
1418 allocate(id%OOC_FILE_NAME_LENGTH(size_array1),
1419 & stat=allocok)
1420 if (allocok .GT. 0) THEN
1421 id%INFO(1) = -78
1422 CALL mumps_seti8toi4(
1423 & total_struc_size-size_allocated
1424 & ,id%INFO(2))
1425 endif
1426 read(unit,iostat=err) id%OOC_FILE_NAME_LENGTH
1427 endif
1428 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
1429 & id%COMM, id%MYID )
1430 IF ( id%INFO(1) .LT. 0 ) GOTO 100
1431 if(err.ne.0) THEN
1432 id%INFO(1) = -75
1433 CALL mumps_seti8toi4(total_file_size-size_read
1434 & ,id%INFO(2))
1435 endif
1436 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
1437 & id%COMM, id%MYID )
1438 IF ( id%INFO(1) .LT. 0 ) GOTO 100
1439 endif
1440 CASE DEFAULT
1441 END SELECT
1442 ENDDO
1443 if(trim(mode).EQ."restore_ooc") then
1444 goto 200
1445 endif
1446 DO i1=1,nbvariables
1447 tmp_string1 = variables(i1)
1448 SELECT CASE(tmp_string1)
1449 CASE("COMM")
1450 if(trim(mode).EQ."memory_save") then
1451 diff_size_alloc_read(i1)=size_int
1452 elseif(trim(mode).EQ."save") then
1453 diff_size_alloc_read(i1)=size_int
1454 elseif(trim(mode).EQ."restore") then
1455 diff_size_alloc_read(i1)=size_int
1456 endif
1457 CASE("SYM")
1458 nbrecords(i1)=1
1459 if(trim(mode).EQ."memory_save") then
1460 size_variables(i1)=size_int
1461 elseif(trim(mode).EQ."save") then
1462 write(unit,iostat=err) id%SYM
1463 if(err.ne.0) then
1464 id%INFO(1) = -72
1465 CALL mumps_seti8toi4(total_file_size-size_written,
1466 & id%INFO(2))
1467 endif
1468 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
1469 & id%COMM, id%MYID )
1470 IF ( id%INFO(1) .LT. 0 ) GOTO 100
1471 elseif(trim(mode).EQ."restore") then
1472 size_variables(i1)=size_int
1473 read(unit,iostat=err) id%SYM
1474 if(err.ne.0) THEN
1475 id%INFO(1) = -75
1476 CALL mumps_seti8toi4(total_file_size-size_read,
1477 & id%INFO(2))
1478 endif
1479 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
1480 & id%COMM, id%MYID )
1481 IF ( id%INFO(1) .LT. 0 ) GOTO 100
1482 endif
1483 CASE("PAR")
1484 nbrecords(i1)=1
1485 if(trim(mode).EQ."memory_save") then
1486 size_variables(i1)=size_int
1487 elseif(trim(mode).EQ."save") then
1488 write(unit,iostat=err) id%PAR
1489 if(err.ne.0) then
1490 id%INFO(1) = -72
1491 CALL mumps_seti8toi4(total_file_size-size_written,
1492 & id%INFO(2))
1493 endif
1494 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
1495 & id%COMM, id%MYID )
1496 IF ( id%INFO(1) .LT. 0 ) GOTO 100
1497 elseif(trim(mode).EQ."restore") then
1498 size_variables(i1)=size_int
1499 read(unit,iostat=err) id%PAR
1500 if(err.ne.0) THEN
1501 id%INFO(1) = -75
1502 CALL mumps_seti8toi4(total_file_size-size_read
1503 & ,id%INFO(2))
1504 endif
1505 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
1506 & id%COMM, id%MYID )
1507 IF ( id%INFO(1) .LT. 0 ) GOTO 100
1508 endif
1509 CASE("JOB")
1510 if(trim(mode).EQ."memory_save") then
1511 diff_size_alloc_read(i1)=size_int
1512 elseif(trim(mode).EQ."save") then
1513 diff_size_alloc_read(i1)=size_int
1514 elseif(trim(mode).EQ."restore") then
1515 diff_size_alloc_read(i1)=size_int
1516 endif
1517 CASE("N")
1518 nbrecords(i1)=1
1519 if(trim(mode).EQ."memory_save") then
1520 size_variables(i1)=size_int
1521 elseif(trim(mode).EQ."save") then
1522 write(unit,iostat=err) id%N
1523 if(err.ne.0) then
1524 id%INFO(1) = -72
1525 CALL mumps_seti8toi4(total_file_size-size_written,
1526 & id%INFO(2))
1527 endif
1528 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
1529 & id%COMM, id%MYID )
1530 IF ( id%INFO(1) .LT. 0 ) GOTO 100
1531 elseif(trim(mode).EQ."restore") then
1532 size_variables(i1)=size_int
1533 read(unit,iostat=err) id%N
1534 if(err.ne.0) THEN
1535 id%INFO(1) = -75
1536 CALL mumps_seti8toi4(total_file_size-size_read
1537 & ,id%INFO(2))
1538 endif
1539 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
1540 & id%COMM, id%MYID )
1541 IF ( id%INFO(1) .LT. 0 ) GOTO 100
1542 endif
1543 CASE("ICNTL")
1544 nbrecords(i1)=1
1545 if(trim(mode).EQ."memory_save") then
1546 size_variables(i1)=size_int*size(id%ICNTL,1)
1547 elseif(trim(mode).EQ."save") then
1548 write(unit,iostat=err) id%ICNTL
1549 if(err.ne.0) then
1550 id%INFO(1) = -72
1551 CALL mumps_seti8toi4(total_file_size-size_written,
1552 & id%INFO(2))
1553 endif
1554 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
1555 & id%COMM, id%MYID )
1556 IF ( id%INFO(1) .LT. 0 ) GOTO 100
1557 elseif(trim(mode).EQ."restore") then
1558 size_variables(i1)=size_int*size(id%ICNTL,1)
1559 read(unit,iostat=err) id%ICNTL
1560 if(err.ne.0) THEN
1561 id%INFO(1) = -75
1562 CALL mumps_seti8toi4(total_file_size-size_read
1563 & ,id%INFO(2))
1564 endif
1565 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
1566 & id%COMM, id%MYID )
1567 IF ( id%INFO(1) .LT. 0 ) GOTO 100
1568 endif
1569 CASE("INFO")
1570 nbrecords(i1)=1
1571 if(trim(mode).EQ."memory_save") then
1572 size_variables(i1)=size_int*size(id%INFO,1)
1573 elseif(trim(mode).EQ."save") then
1574 write(unit,iostat=err) info1,info2
1575 & ,id%INFO(3:size(id%INFO,1))
1576 if(err.ne.0) then
1577 id%INFO(1) = -72
1578 CALL mumps_seti8toi4(total_file_size-size_written,
1579 & id%INFO(2))
1580 endif
1581 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
1582 & id%COMM, id%MYID )
1583 IF ( id%INFO(1) .LT. 0 ) GOTO 100
1584 elseif(trim(mode).EQ."restore") then
1585 size_variables(i1)=size_int*size(id%INFO,1)
1586 read(unit,iostat=err) info1,info2
1587 & ,id%INFO(3:size(id%INFO,1))
1588 if(err.ne.0) THEN
1589 id%INFO(1) = -75
1590 CALL mumps_seti8toi4(total_file_size-size_read
1591 & ,id%INFO(2))
1592 endif
1593 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
1594 & id%COMM, id%MYID )
1595 IF ( id%INFO(1) .LT. 0 ) GOTO 100
1596 endif
1597 CASE("INFOG")
1598 nbrecords(i1)=1
1599 if(trim(mode).EQ."memory_save") then
1600 SIZE_VARIABLES(i1)=SIZE_INT*size(id%INFOG,1)
1601.EQ. elseif(trim(mode)"save") then
1602 write(unit,iostat=err) INFOG1,INFOG2
1603 & ,id%INFOG(3:size(id%INFOG,1))
1604.ne. if(err0) then
1605 id%INFO(1) = -72
1606 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
1607 & id%INFO(2))
1608 endif
1609 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
1610 & id%COMM, id%MYID )
1611.LT. IF ( id%INFO(1) 0 ) GOTO 100
1612.EQ. elseif(trim(mode)"restore") then
1613 SIZE_VARIABLES(i1)=SIZE_INT*size(id%INFOG,1)
1614 read(unit,iostat=err) INFOG1,INFOG2
1615 & ,id%INFOG(3:size(id%INFOG,1))
1616.ne. if(err0) THEN
1617 id%INFO(1) = -75
1618 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
1619 & ,id%INFO(2))
1620 endif
1621 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
1622 & id%COMM, id%MYID )
1623.LT. IF ( id%INFO(1) 0 ) GOTO 100
1624 endif
1625 CASE("cost_subtrees")
1626 NbRecords(i1)=1
1627.EQ. if(trim(mode)"memory_save") then
1628 SIZE_VARIABLES(i1)=SIZE_RL_OR_DBL
1629.EQ. elseif(trim(mode)"save") then
1630 write(unit,iostat=err) id%COST_SUBTREES
1631.ne. if(err0) then
1632 id%INFO(1) = -72
1633 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
1634 & id%INFO(2))
1635 endif
1636 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
1637 & id%COMM, id%MYID )
1638.LT. IF ( id%INFO(1) 0 ) GOTO 100
1639.EQ. elseif(trim(mode)"restore") then
1640 SIZE_VARIABLES(i1)=SIZE_RL_OR_DBL
1641 read(unit,iostat=err) id%COST_SUBTREES
1642.ne. if(err0) THEN
1643 id%INFO(1) = -75
1644 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
1645 & ,id%INFO(2))
1646 endif
1647 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
1648 & id%COMM, id%MYID )
1649.LT. IF ( id%INFO(1) 0 ) GOTO 100
1650 endif
1651 CASE("cntl")
1652 NbRecords(i1)=1
1653.EQ. if(trim(mode)"memory_save") then
1654 SIZE_VARIABLES(i1)=SIZE_RL_OR_DBL*size(id%CNTL,1)
1655.EQ. elseif(trim(mode)"save") then
1656 write(unit,iostat=err) id%CNTL
1657.ne. if(err0) then
1658 id%INFO(1) = -72
1659 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
1660 & id%INFO(2))
1661 endif
1662 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
1663 & id%COMM, id%MYID )
1664.LT. IF ( id%INFO(1) 0 ) GOTO 100
1665.EQ. elseif(trim(mode)"restore") then
1666 SIZE_VARIABLES(i1)=SIZE_RL_OR_DBL*size(id%CNTL,1)
1667 read(unit,iostat=err) id%CNTL
1668.ne. if(err0) THEN
1669 id%INFO(1) = -75
1670 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
1671 & ,id%INFO(2))
1672 endif
1673 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
1674 & id%COMM, id%MYID )
1675.LT. IF ( id%INFO(1) 0 ) GOTO 100
1676 endif
1677 CASE("rinfo")
1678 NbRecords(i1)=1
1679.EQ. if(trim(mode)"memory_save") then
1680 size_variables(i1)=size_rl_or_dbl*size(id%RINFO,1)
1681 elseif(trim(mode).EQ."save") then
1682 write(unit,iostat=err) id%RINFO
1683 if(err.ne.0) then
1684 id%INFO(1) = -72
1685 CALL mumps_seti8toi4(total_file_size-size_written,
1686 & id%INFO(2))
1687 endif
1688 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
1689 & id%COMM, id%MYID )
1690 IF ( id%INFO(1) .LT. 0 ) GOTO 100
1691 elseif(trim(mode).EQ."restore") then
1692 size_variables(i1)=size_rl_or_dbl*size(id%RINFO,1)
1693 read(unit,iostat=err) id%RINFO
1694 if(err.ne.0) THEN
1695 id%INFO(1) = -75
1696 CALL mumps_seti8toi4(total_file_size-size_read
1697 & ,id%INFO(2))
1698 endif
1699 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
1700 & id%COMM, id%MYID )
1701 IF ( id%INFO(1) .LT. 0 ) GOTO 100
1702 endif
1703 CASE("RINFOG")
1704 nbrecords(i1)=1
1705 if(trim(mode).EQ."memory_save") then
1706 size_variables(i1)=size_rl_or_dbl*size(id%RINFOG,1)
1707 elseif(trim(mode).EQ."save") then
1708 write(unit,iostat=err) id%RINFOG
1709 if(err.ne.0) then
1710 id%INFO(1) = -72
1711 CALL mumps_seti8toi4(total_file_size-size_written,
1712 & id%INFO(2))
1713 endif
1714 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
1715 & id%COMM, id%MYID )
1716 IF ( id%INFO(1) .LT. 0 ) GOTO 100
1717 elseif(trim(mode).EQ."restore") then
1718 size_variables(i1)=size_rl_or_dbl*size(id%RINFOG,1)
1719 read(unit,iostat=err) id%RINFOG
1720 if(err.ne.0) THEN
1721 id%INFO(1) = -75
1722 CALL mumps_seti8toi4(total_file_size-size_read
1723 & ,id%INFO(2))
1724 endif
1725 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
1726 & id%COMM, id%MYID )
1727 IF ( id%INFO(1) .LT. 0 ) GOTO 100
1728 endif
1729 CASE("KEEP8")
1730 nbrecords(i1)=1
1731 if(trim(mode).EQ."memory_save") then
1732 size_variables(i1)=size_int8*size(id%KEEP8,1)
1733 elseif(trim(mode).EQ."save") then
1734 write(unit,iostat=err) id%KEEP8
1735 if(err.ne.0) then
1736 id%INFO(1) = -72
1737 CALL mumps_seti8toi4(total_file_size-size_written,
1738 & id%INFO(2))
1739 endif
1740 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
1741 & id%COMM, id%MYID )
1742 IF ( id%INFO(1) .LT. 0 ) GOTO 100
1743 elseif(trim(mode).EQ."restore") then
1744 size_variables(i1)=size_int8*size(id%KEEP8,1)
1745 read(unit,iostat=err) id%KEEP8
1746 if(err.ne.0) THEN
1747 id%INFO(1) = -75
1748 CALL mumps_seti8toi4(total_file_size-size_read
1749 & ,id%INFO(2))
1750 endif
1751 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
1752 & id%COMM, id%MYID )
1753 IF ( id%INFO(1) .LT. 0 ) GOTO 100
1754 endif
1755 CASE("KEEP")
1756 nbrecords(i1)=1
1757 if(trim(mode).EQ."memory_save") then
1758 size_variables(i1)=size_int*size(id%KEEP,1)
1759 elseif(trim(mode).EQ."save") then
1760 write(unit,iostat=err) id%KEEP
1761 if(err.ne.0) then
1762 id%INFO(1) = -72
1763 CALL mumps_seti8toi4(total_file_size-size_written,
1764 & id%INFO(2))
1765 endif
1766 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
1767 & id%COMM, id%MYID )
1768 IF ( id%INFO(1) .LT. 0 ) GOTO 100
1769 elseif(trim(mode).EQ."restore") then
1770 size_variables(i1)=size_int*size(id%KEEP,1)
1771 keep411_save = id%KEEP(411)
1772 read(unit,iostat=err) id%KEEP
1773 id%KEEP(411) = keep411_save
1774 if(err.ne.0) THEN
1775 id%INFO(1) = -75
1776 CALL mumps_seti8toi4(total_file_size-size_read
1777 & ,id%INFO(2))
1778 endif
1779 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
1780 & id%COMM, id%MYID )
1781 IF ( id%INFO(1) .LT. 0 ) GOTO 100
1782 endif
1783 CASE("DKEEP")
1784 nbrecords(i1)=1
1785 if(trim(mode).EQ."memory_save") then
1786 size_variables(i1)=size_rl_or_dbl*size(id%DKEEP,1)
1787 elseif(trim(mode).EQ."save") then
1788 write(unit,iostat=err) id%DKEEP
1789 if(err.ne.0) then
1790 id%INFO(1) = -72
1791 CALL mumps_seti8toi4(total_file_size-size_written,
1792 & id%INFO(2))
1793 endif
1794 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
1795 & id%COMM, id%MYID )
1796 IF ( id%INFO(1) .LT. 0 ) GOTO 100
1797 elseif(trim(mode).EQ."restore") then
1798 size_variables(i1)=size_rl_or_dbl*size(id%DKEEP,1)
1799 read(unit,iostat=err) id%DKEEP
1800 if(err.ne.0) THEN
1801 id%INFO(1) = -75
1802 CALL mumps_seti8toi4(total_file_size-size_read
1803 & ,id%INFO(2))
1804 endif
1805 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
1806 & id%COMM, id%MYID )
1807 IF ( id%INFO(1) .LT. 0 ) GOTO 100
1808 endif
1809 CASE("NZ")
1810 nbrecords(i1)=1
1811 if(trim(mode).EQ."memory_save") then
1812 size_variables(i1)=size_int
1813 elseif(trim(mode).EQ."save") then
1814 write(unit,iostat=err) id%NZ
1815 if(err.ne.0) then
1816 id%INFO(1) = -72
1817 CALL mumps_seti8toi4(total_file_size-size_written,
1818 & id%INFO(2))
1819 endif
1820 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
1821 & id%COMM, id%MYID )
1822 IF ( id%INFO(1) .LT. 0 ) GOTO 100
1823 elseif(trim(mode).EQ."restore") then
1824 size_variables(i1)=size_int
1825 read(unit,iostat=err) id%NZ
1826 if(err.ne.0) THEN
1827 id%INFO(1) = -75
1828 CALL mumps_seti8toi4(total_file_size-size_read
1829 & ,id%INFO(2))
1830 endif
1831 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
1832 & id%COMM, id%MYID )
1833 IF ( id%INFO(1) .LT. 0 ) GOTO 100
1834 endif
1835 CASE("NNZ")
1836 nbrecords(i1)=1
1837 if(trim(mode).EQ."memory_save") then
1838 size_variables(i1)=size_int8
1839 elseif(trim(mode).EQ."save") then
1840 write(unit,iostat=err) id%NNZ
1841 if(err.ne.0) then
1842 id%INFO(1) = -72
1843 CALL mumps_seti8toi4(total_file_size-size_written,
1844 & id%INFO(2))
1845 endif
1846 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
1847 & id%COMM, id%MYID )
1848 IF ( id%INFO(1) .LT. 0 ) GOTO 100
1849 elseif(trim(mode).EQ."restore") then
1850 size_variables(i1)=size_int8
1851 read(unit,iostat=err) id%NNZ
1852 if(err.ne.0) THEN
1853 id%INFO(1) = -75
1854 CALL mumps_seti8toi4(total_file_size-size_read
1855 & ,id%INFO(2))
1856 endif
1857 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
1858 & id%COMM, id%MYID )
1859 IF ( id%INFO(1) .LT. 0 ) GOTO 100
1860 endif
1861 CASE("A")
1862 CASE("IRN")
1863 CASE("JCN")
1864 CASE("COLSCA")
1865 IF(id%KEEP(52).NE.-1) THEN
1866 nbrecords(i1)=2
1867 if(trim(mode).EQ."memory_save") then
1868 IF(associated(id%COLSCA)) THEN
1869 size_gest(i1)=size_int
1870 size_variables(i1)=size(id%COLSCA,1)*size_rl_or_dbl
1871 ELSE
1872 size_gest(i1)=size_int*2
1873 size_variables(i1)=0_8
1874 ENDIF
1875 elseif(trim(mode).EQ."save") then
1876 IF(associated(id%COLSCA)) THEN
1877 write(unit,iostat=err) size(id%COLSCA,1)
1878 if(err.ne.0) then
1879 id%INFO(1) = -72
1880 CALL mumps_seti8toi4(
1881 & total_file_size-size_written,
1882 & id%INFO(2))
1883 endif
1884 write(unit,iostat=err) id%COLSCA
1885 ELSE
1886 write(unit,iostat=err) -999
1887 if(err.ne.0) then
1888 id%INFO(1) = -72
1889 CALL mumps_seti8toi4(
1890 & total_file_size-size_written,
1891 & id%INFO(2))
1892 endif
1893 write(unit,iostat=err) -999
1894 ENDIF
1895 if(err.ne.0) then
1896 id%INFO(1) = -72
1897 CALL mumps_seti8toi4(total_file_size-size_written,
1898 & id%INFO(2))
1899 endif
1900 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
1901 & id%COMM, id%MYID )
1902 IF ( id%INFO(1) .LT. 0 ) GOTO 100
1903 elseif(trim(mode).EQ."restore") then
1904 nullify(id%COLSCA)
1905 read(unit,iostat=err) size_array1
1906 if(err.ne.0) THEN
1907 id%INFO(1) = -75
1908 CALL mumps_seti8toi4(total_file_size-size_read
1909 & ,id%INFO(2))
1910 endif
1911 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
1912 & id%COMM, id%MYID )
1913 IF ( id%INFO(1) .LT. 0 ) GOTO 100
1914 if(size_array1.EQ.-999) then
1915 size_gest(i1)=size_int*2
1916 size_variables(i1)=0_8
1917 read(unit,iostat=err) dummy
1918 else
1919 size_gest(i1)=size_int
1920 size_variables(i1)=size_array1*size_rl_or_dbl
1921 allocate(id%COLSCA(size_array1), stat=allocok)
1922 if (allocok .GT. 0) THEN
1923 id%INFO(1) = -78
1924 CALL mumps_seti8toi4(
1925 & total_struc_size-size_allocated
1926 & ,id%INFO(2))
1927 endif
1928 read(unit,iostat=err) id%COLSCA
1929 endif
1930 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
1931 & id%COMM, id%MYID )
1932 IF ( id%INFO(1) .LT. 0 ) GOTO 100
1933 if(err.ne.0) THEN
1934 id%INFO(1) = -75
1935 CALL mumps_seti8toi4(total_file_size-size_read
1936 & ,id%INFO(2))
1937 endif
1938 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
1939 & id%COMM, id%MYID )
1940 IF ( id%INFO(1) .LT. 0 ) GOTO 100
1941 endif
1942 ELSE
1943 ENDIF
1944 CASE("ROWSCA")
1945 IF(id%KEEP(52).NE.-1) THEN
1946 nbrecords(i1)=2
1947 if(trim(mode).EQ."memory_save") then
1948 IF(associated(id%ROWSCA)) THEN
1949 size_gest(i1)=size_int
1950 size_variables(i1)=size(id%ROWSCA,1)*size_rl_or_dbl
1951 ELSE
1952 size_gest(i1)=size_int*2
1953 size_variables(i1)=0_8
1954 ENDIF
1955 elseif(trim(mode).EQ."save") then
1956 IF(associated(id%ROWSCA)) THEN
1957 write(unit,iostat=err) size(id%ROWSCA,1)
1958 if(err.ne.0) then
1959 id%INFO(1) = -72
1960 CALL mumps_seti8toi4(
1961 & total_file_size-size_written,
1962 & id%INFO(2))
1963 endif
1964 write(unit,iostat=err) id%ROWSCA
1965 ELSE
1966 write(unit,iostat=err) -999
1967 if(err.ne.0) then
1968 id%INFO(1) = -72
1969 CALL mumps_seti8toi4(
1970 & total_file_size-size_written,
1971 & id%INFO(2))
1972 endif
1973 write(unit,iostat=err) -999
1974 ENDIF
1975 if(err.ne.0) then
1976 id%INFO(1) = -72
1977 CALL mumps_seti8toi4(total_file_size-size_written,
1978 & id%INFO(2))
1979 endif
1980 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
1981 & id%COMM, id%MYID )
1982 IF ( id%INFO(1) .LT. 0 ) GOTO 100
1983 elseif(trim(mode).EQ."restore") then
1984 nullify(id%ROWSCA)
1985 read(unit,iostat=err) size_array1
1986 if(err.ne.0) THEN
1987 id%INFO(1) = -75
1988 CALL mumps_seti8toi4(total_file_size-size_read
1989 & ,id%INFO(2))
1990 endif
1991 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
1992 & id%COMM, id%MYID )
1993 IF ( id%INFO(1) .LT. 0 ) GOTO 100
1994 if(size_array1.EQ.-999) then
1995 size_gest(i1)=size_int*2
1996 size_variables(i1)=0_8
1997 read(unit,iostat=err) dummy
1998 else
1999 size_gest(i1)=size_int
2000 size_variables(i1)=size_array1*size_rl_or_dbl
2001 allocate(id%ROWSCA(size_array1), stat=allocok)
2002 if (allocok .GT. 0) THEN
2003 id%INFO(1) = -78
2004 CALL mumps_seti8toi4(
2005 & total_struc_size-size_allocated
2006 & ,id%INFO(2))
2007 endif
2008 read(unit,iostat=err) id%ROWSCA
2009 endif
2010 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
2011 & id%COMM, id%MYID )
2012 IF ( id%INFO(1) .LT. 0 ) GOTO 100
2013 if(err.ne.0) THEN
2014 id%INFO(1) = -75
2015 CALL mumps_seti8toi4(total_file_size-size_read
2016 & ,id%INFO(2))
2017 endif
2018 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
2019 & id%COMM, id%MYID )
2020 IF ( id%INFO(1) .LT. 0 ) GOTO 100
2021 endif
2022 ELSE
2023 ENDIF
2024 CASE("NZ_loc")
2025 nbrecords(i1)=1
2026 if(trim(mode).EQ."memory_save") then
2027 size_variables(i1)=size_int
2028 elseif(trim(mode).EQ."save") then
2029 write(unit,iostat=err) id%NZ_loc
2030 if(err.ne.0) then
2031 id%INFO(1) = -72
2032 CALL mumps_seti8toi4(total_file_size-size_written,
2033 & id%INFO(2))
2034 endif
2035 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
2036 & id%COMM, id%MYID )
2037 IF ( id%INFO(1) .LT. 0 ) GOTO 100
2038 elseif(trim(mode).EQ."restore") then
2039 size_variables(i1)=size_int
2040 read(unit,iostat=err) id%NZ_loc
2041 if(err.ne.0) THEN
2042 id%INFO(1) = -75
2043 CALL mumps_seti8toi4(total_file_size-size_read
2044 & ,id%INFO(2))
2045 endif
2046 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
2047 & id%COMM, id%MYID )
2048 IF ( id%INFO(1) .LT. 0 ) GOTO 100
2049 endif
2050 CASE("NNZ_loc")
2051 nbrecords(i1)=1
2052 if(trim(mode).EQ."memory_save") then
2053 size_variables(i1)=size_int8
2054 elseif(trim(mode).EQ."save") then
2055 write(unit,iostat=err) id%NNZ_loc
2056 if(err.ne.0) then
2057 id%INFO(1) = -72
2058 CALL mumps_seti8toi4(total_file_size-size_written,
2059 & id%INFO(2))
2060 endif
2061 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
2062 & id%COMM, id%MYID )
2063 IF ( id%INFO(1) .LT. 0 ) GOTO 100
2064 elseif(trim(mode).EQ."restore") then
2065 size_variables(i1)=size_int8
2066 read(unit,iostat=err) id%NNZ_loc
2067 if(err.ne.0) THEN
2068 id%INFO(1) = -75
2069 CALL mumps_seti8toi4(total_file_size-size_read
2070 & ,id%INFO(2))
2071 endif
2072 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
2073 & id%COMM, id%MYID )
2074 IF ( id%INFO(1) .LT. 0 ) GOTO 100
2075 endif
2076 CASE("IRN_loc")
2077 CASE("JCN_loc")
2078 CASE("A_loc")
2079 CASE("NELT")
2080 nbrecords(i1)=1
2081 if(trim(mode).EQ."memory_save") then
2082 size_variables(i1)=size_int
2083 elseif(trim(mode).EQ."save") then
2084 write(unit,iostat=err) id%NELT
2085 if(err.ne.0) then
2086 id%INFO(1) = -72
2087 CALL mumps_seti8toi4(total_file_size-size_written,
2088 & id%INFO(2))
2089 endif
2090 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
2091 & id%COMM, id%MYID )
2092 IF ( id%INFO(1) .LT. 0 ) GOTO 100
2093 elseif(trim(mode).EQ."restore") then
2094 size_variables(i1)=size_int
2095 read(unit,iostat=err) id%NELT
2096 if(err.ne.0) THEN
2097 id%INFO(1) = -75
2098 CALL mumps_seti8toi4(total_file_size-size_read
2099 & ,id%INFO(2))
2100 endif
2101 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
2102 & id%COMM, id%MYID )
2103 IF ( id%INFO(1) .LT. 0 ) GOTO 100
2104 endif
2105 CASE("NBLK")
2106 nbrecords(i1)=1
2107 if(trim(mode).EQ."memory_save") then
2108 size_variables(i1)=size_int
2109 elseif(trim(mode).EQ."save") then
2110 write(unit,iostat=err) id%NBLK
2111 if(err.ne.0) then
2112 id%INFO(1) = -72
2113 CALL mumps_seti8toi4(total_file_size-size_written,
2114 & id%INFO(2))
2115 endif
2116 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
2117 & id%COMM, id%MYID )
2118 IF ( id%INFO(1) .LT. 0 ) GOTO 100
2119 elseif(trim(mode).EQ."restore") then
2120 size_variables(i1)=size_int
2121 read(unit,iostat=err) id%NBLK
2122 if(err.ne.0) THEN
2123 id%INFO(1) = -75
2124 CALL mumps_seti8toi4(total_file_size-size_read
2125 & ,id%INFO(2))
2126 endif
2127 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
2128 & id%COMM, id%MYID )
2129 IF ( id%INFO(1) .LT. 0 ) GOTO 100
2130 endif
2131 CASE("ELTPTR")
2132 CASE("ELTVAR")
2133 CASE("A_ELT")
2134 CASE("PERM_IN")
2135 CASE("BLKPTR")
2136 CASE("BLKVAR")
2137 CASE("RHS")
2138 CASE("REDRHS")
2139 CASE("RHS_SPARSE")
2140 CASE("SOL_loc")
2141 CASE("RHS_loc")
2142 CASE("IRHS_SPARSE")
2143 CASE("IRHS_PTR")
2144 CASE("ISOL_loc")
2145 CASE("IRHS_loc")
2146 CASE("LRHS")
2147 nbrecords(i1)=1
2148 if(trim(mode).EQ."memory_save") then
2149 size_variables(i1)=size_int
2150 elseif(trim(mode).EQ."save") then
2151 write(unit,iostat=err) id%LRHS
2152 if(err.ne.0) then
2153 id%INFO(1) = -72
2154 CALL mumps_seti8toi4(total_file_size-size_written,
2155 & id%INFO(2))
2156 endif
2157 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
2158 & id%COMM, id%MYID )
2159 IF ( id%INFO(1) .LT. 0 ) GOTO 100
2160 elseif(trim(mode).EQ."restore") then
2161 SIZE_VARIABLES(i1)=SIZE_INT
2162 read(unit,iostat=err) id%LRHS
2163.ne. if(err0) THEN
2164 id%INFO(1) = -75
2165 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
2166 & ,id%INFO(2))
2167 endif
2168 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
2169 & id%COMM, id%MYID )
2170.LT. IF ( id%INFO(1) 0 ) GOTO 100
2171 endif
2172 CASE("nrhs")
2173 NbRecords(i1)=1
2174.EQ. if(trim(mode)"memory_save") then
2175 SIZE_VARIABLES(i1)=SIZE_INT
2176.EQ. elseif(trim(mode)"save") then
2177 write(unit,iostat=err) id%NRHS
2178.ne. if(err0) then
2179 id%INFO(1) = -72
2180 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
2181 & id%INFO(2))
2182 endif
2183 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
2184 & id%COMM, id%MYID )
2185.LT. IF ( id%INFO(1) 0 ) GOTO 100
2186.EQ. elseif(trim(mode)"restore") then
2187 SIZE_VARIABLES(i1)=SIZE_INT
2188 read(unit,iostat=err) id%NRHS
2189.ne. if(err0) THEN
2190 id%INFO(1) = -75
2191 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
2192 & ,id%INFO(2))
2193 endif
2194 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
2195 & id%COMM, id%MYID )
2196.LT. IF ( id%INFO(1) 0 ) GOTO 100
2197 endif
2198 CASE("nz_rhs")
2199 NbRecords(i1)=1
2200.EQ. if(trim(mode)"memory_save") then
2201 SIZE_VARIABLES(i1)=SIZE_INT
2202.EQ. elseif(trim(mode)"save") then
2203 write(unit,iostat=err) id%NZ_RHS
2204.ne. if(err0) then
2205 id%INFO(1) = -72
2206 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
2207 & id%INFO(2))
2208 endif
2209 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
2210 & id%COMM, id%MYID )
2211.LT. IF ( id%INFO(1) 0 ) GOTO 100
2212.EQ. elseif(trim(mode)"restore") then
2213 SIZE_VARIABLES(i1)=SIZE_INT
2214 read(unit,iostat=err) id%NZ_RHS
2215.ne. if(err0) THEN
2216 id%INFO(1) = -75
2217 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
2218 & ,id%INFO(2))
2219 endif
2220 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
2221 & id%COMM, id%MYID )
2222.LT. IF ( id%INFO(1) 0 ) GOTO 100
2223 endif
2224 CASE("lrhs_loc")
2225 CASE("nloc_rhs")
2226 CASE("lsol_loc")
2227 NbRecords(i1)=1
2228.EQ. if(trim(mode)"memory_save") then
2229 SIZE_VARIABLES(i1)=SIZE_INT
2230.EQ. elseif(trim(mode)"save") then
2231 write(unit,iostat=err) id%LSOL_loc
2232.ne. if(err0) then
2233 id%INFO(1) = -72
2234 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
2235 & id%INFO(2))
2236 endif
2237 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
2238 & id%COMM, id%MYID )
2239.LT. IF ( id%INFO(1) 0 ) GOTO 100
2240.EQ. elseif(trim(mode)"restore") then
2241 SIZE_VARIABLES(i1)=SIZE_INT
2242 read(unit,iostat=err) id%LSOL_loc
2243.ne. if(err0) THEN
2244 id%INFO(1) = -75
2245 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
2246 & ,id%INFO(2))
2247 endif
2248 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
2249 & id%COMM, id%MYID )
2250.LT. IF ( id%INFO(1) 0 ) GOTO 100
2251 endif
2252 CASE("lredrhs")
2253 NbRecords(i1)=1
2254.EQ. if(trim(mode)"memory_save") then
2255 SIZE_VARIABLES(i1)=SIZE_INT
2256.EQ. elseif(trim(mode)"save") then
2257 write(unit,iostat=err) id%LREDRHS
2258 if(err.ne.0) then
2259 id%INFO(1) = -72
2260 CALL mumps_seti8toi4(total_file_size-size_written,
2261 & id%INFO(2))
2262 endif
2263 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
2264 & id%COMM, id%MYID )
2265 IF ( id%INFO(1) .LT. 0 ) GOTO 100
2266 elseif(trim(mode).EQ."restore") then
2267 size_variables(i1)=size_int
2268 read(unit,iostat=err) id%LREDRHS
2269 if(err.ne.0) THEN
2270 id%INFO(1) = -75
2271 CALL mumps_seti8toi4(total_file_size-size_read
2272 & ,id%INFO(2))
2273 endif
2274 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
2275 & id%COMM, id%MYID )
2276 IF ( id%INFO(1) .LT. 0 ) GOTO 100
2277 endif
2278 CASE("SYM_PERM")
2279 nbrecords(i1)=2
2280 if(trim(mode).EQ."memory_save") then
2281 nbrecords(i1)=2
2282 IF(associated(id%SYM_PERM)) THEN
2283 size_gest(i1)=size_int
2284 size_variables(i1)=size(id%SYM_PERM,1)*size_int
2285 ELSE
2286 size_gest(i1)=size_int*2
2287 size_variables(i1)=0_8
2288 ENDIF
2289 elseif(trim(mode).EQ."save") then
2290 IF(associated(id%SYM_PERM)) THEN
2291 write(unit,iostat=err) size(id%SYM_PERM,1)
2292 if(err.ne.0) then
2293 id%INFO(1) = -72
2294 CALL mumps_seti8toi4(total_file_size-size_written,
2295 & id%INFO(2))
2296 endif
2297 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
2298 & id%COMM, id%MYID )
2299 IF ( id%INFO(1) .LT. 0 ) GOTO 100
2300 write(unit,iostat=err) id%SYM_PERM
2301 ELSE
2302 write(unit,iostat=err) -999
2303 if(err.ne.0) then
2304 id%INFO(1) = -72
2305 CALL mumps_seti8toi4(total_file_size-size_written,
2306 & id%INFO(2))
2307 endif
2308 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
2309 & id%COMM, id%MYID )
2310 IF ( id%INFO(1) .LT. 0 ) GOTO 100
2311 write(unit,iostat=err) -999
2312 ENDIF
2313 if(err.ne.0) then
2314 id%INFO(1) = -72
2315 CALL mumps_seti8toi4(total_file_size-size_written,
2316 & id%INFO(2))
2317 endif
2318 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
2319 & id%COMM, id%MYID )
2320 IF ( id%INFO(1) .LT. 0 ) GOTO 100
2321 elseif(trim(mode).EQ."restore") then
2322 nullify(id%SYM_PERM)
2323 read(unit,iostat=err) size_array1
2324 if(err.ne.0) THEN
2325 id%INFO(1) = -75
2326 CALL mumps_seti8toi4(total_file_size-size_read
2327 & ,id%INFO(2))
2328 endif
2329 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
2330 & id%COMM, id%MYID )
2331 IF ( id%INFO(1) .LT. 0 ) GOTO 100
2332 if(size_array1.EQ.-999) then
2333 size_gest(i1)=size_int*2
2334 size_variables(i1)=0_8
2335 read(unit,iostat=err) dummy
2336 else
2337 size_gest(i1)=size_int
2338 size_variables(i1)=size_array1*size_int
2339 allocate(id%SYM_PERM(size_array1), stat=allocok)
2340 if (allocok .GT. 0) THEN
2341 id%INFO(1) = -78
2342 CALL mumps_seti8toi4(
2343 & total_struc_size-size_allocated
2344 & ,id%INFO(2))
2345 endif
2346 read(unit,iostat=err) id%SYM_PERM
2347 endif
2348 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
2349 & id%COMM, id%MYID )
2350 IF ( id%INFO(1) .LT. 0 ) GOTO 100
2351 if(err.ne.0) THEN
2352 id%INFO(1) = -75
2353 CALL mumps_seti8toi4(total_file_size-size_read
2354 & ,id%INFO(2))
2355 endif
2356 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
2357 & id%COMM, id%MYID )
2358 IF ( id%INFO(1) .LT. 0 ) GOTO 100
2359 endif
2360 CASE("UNS_PERM")
2361 nbrecords(i1)=2
2362 if(trim(mode).EQ."memory_save") then
2363 IF(associated(id%UNS_PERM)) THEN
2364 size_gest(i1)=size_int
2365 size_variables(i1)=size(id%UNS_PERM,1)*size_int
2366 ELSE
2367 size_gest(i1)=size_int*2
2368 size_variables(i1)=0_8
2369 ENDIF
2370 elseif(trim(mode).EQ."save") then
2371 IF(associated(id%UNS_PERM)) THEN
2372 write(unit,iostat=err) size(id%UNS_PERM,1)
2373 if(err.ne.0) then
2374 id%INFO(1) = -72
2375 CALL mumps_seti8toi4(total_file_size-size_written,
2376 & id%INFO(2))
2377 endif
2378 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
2379 & id%COMM, id%MYID )
2380 IF ( id%INFO(1) .LT. 0 ) GOTO 100
2381 write(unit,iostat=err) id%UNS_PERM
2382 ELSE
2383 write(unit,iostat=err) -999
2384 if(err.ne.0) then
2385 id%INFO(1) = -72
2386 CALL mumps_seti8toi4(total_file_size-size_written,
2387 & id%INFO(2))
2388 endif
2389 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
2390 & id%COMM, id%MYID )
2391 IF ( id%INFO(1) .LT. 0 ) GOTO 100
2392 write(unit,iostat=err) -999
2393 ENDIF
2394 if(err.ne.0) then
2395 id%INFO(1) = -72
2396 CALL mumps_seti8toi4(total_file_size-size_written,
2397 & id%INFO(2))
2398 endif
2399 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
2400 & id%COMM, id%MYID )
2401 IF ( id%INFO(1) .LT. 0 ) GOTO 100
2402 elseif(trim(mode).EQ."restore") then
2403 nullify(id%UNS_PERM)
2404 read(unit,iostat=err) size_array1
2405 if(err.ne.0) THEN
2406 id%INFO(1) = -75
2407 CALL mumps_seti8toi4(total_file_size-size_read
2408 & ,id%INFO(2))
2409 endif
2410 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
2411 & id%COMM, id%MYID )
2412 IF ( id%INFO(1) .LT. 0 ) GOTO 100
2413 if(size_array1.EQ.-999) then
2414 size_gest(i1)=size_int*2
2415 size_variables(i1)=0_8
2416 read(unit,iostat=err) dummy
2417 else
2418 size_gest(i1)=size_int
2419 size_variables(i1)=size_array1*size_int
2420 allocate(id%UNS_PERM(size_array1), stat=allocok)
2421 if (allocok .GT. 0) THEN
2422 id%INFO(1) = -78
2423 CALL mumps_seti8toi4(
2424 & total_struc_size-size_allocated
2425 & ,id%INFO(2))
2426 endif
2427 read(unit,iostat=err) id%UNS_PERM
2428 endif
2429 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
2430 & id%COMM, id%MYID )
2431 IF ( id%INFO(1) .LT. 0 ) GOTO 100
2432 if(err.ne.0) THEN
2433 id%INFO(1) = -75
2434 CALL mumps_seti8toi4(total_file_size-size_read
2435 & ,id%INFO(2))
2436 endif
2437 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
2438 & id%COMM, id%MYID )
2439 IF ( id%INFO(1) .LT. 0 ) GOTO 100
2440 endif
2441 CASE("NPROW")
2442 nbrecords(i1)=1
2443 if(trim(mode).EQ."memory_save") then
2444 size_variables(i1)=size_int
2445 elseif(trim(mode).EQ."save") then
2446 write(unit,iostat=err) id%NPROW
2447 if(err.ne.0) then
2448 id%INFO(1) = -72
2449 CALL mumps_seti8toi4(total_file_size-size_written,
2450 & id%INFO(2))
2451 endif
2452 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
2453 & id%COMM, id%MYID )
2454 IF ( id%INFO(1) .LT. 0 ) GOTO 100
2455 elseif(trim(mode).EQ."restore") then
2456 size_variables(i1)=size_int
2457 read(unit,iostat=err) id%NPROW
2458 if(err.ne.0) THEN
2459 id%INFO(1) = -75
2460 CALL mumps_seti8toi4(total_file_size-size_read
2461 & ,id%INFO(2))
2462 endif
2463 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
2464 & id%COMM, id%MYID )
2465 IF ( id%INFO(1) .LT. 0 ) GOTO 100
2466 endif
2467 CASE("NPCOL")
2468 nbrecords(i1)=1
2469 if(trim(mode).EQ."memory_save") then
2470 size_variables(i1)=size_int
2471 elseif(trim(mode).EQ."save") then
2472 write(unit,iostat=err) id%NPCOL
2473 if(err.ne.0) then
2474 id%INFO(1) = -72
2475 CALL mumps_seti8toi4(total_file_size-size_written,
2476 & id%INFO(2))
2477 endif
2478 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
2479 & id%COMM, id%MYID )
2480 IF ( id%INFO(1) .LT. 0 ) GOTO 100
2481 nbrecords(i1)=1
2482 elseif(trim(mode).EQ."restore") then
2483 size_variables(i1)=size_int
2484 read(unit,iostat=err) id%NPCOL
2485 if(err.ne.0) THEN
2486 id%INFO(1) = -75
2487 CALL mumps_seti8toi4(total_file_size-size_read
2488 & ,id%INFO(2))
2489 endif
2490 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
2491 & id%COMM, id%MYID )
2492 IF ( id%INFO(1) .LT. 0 ) GOTO 100
2493 endif
2494 CASE("MBLOCK")
2495 nbrecords(i1)=1
2496 if(trim(mode).EQ."memory_save") then
2497 size_variables(i1)=size_int
2498 elseif(trim(mode).EQ."save") then
2499 write(unit,iostat=err) id%MBLOCK
2500 if(err.ne.0) then
2501 id%INFO(1) = -72
2502 CALL mumps_seti8toi4(total_file_size-size_written,
2503 & id%INFO(2))
2504 endif
2505 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
2506 & id%COMM, id%MYID )
2507 IF ( id%INFO(1) .LT. 0 ) GOTO 100
2508 elseif(trim(mode).EQ."restore") then
2509 size_variables(i1)=size_int
2510 read(unit,iostat=err) id%MBLOCK
2511 if(err.ne.0) THEN
2512 id%INFO(1) = -75
2513 CALL mumps_seti8toi4(total_file_size-size_read
2514 & ,id%INFO(2))
2515 endif
2516 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
2517 & id%COMM, id%MYID )
2518 IF ( id%INFO(1) .LT. 0 ) GOTO 100
2519 endif
2520 CASE("NBLOCK")
2521 nbrecords(i1)=1
2522 if(trim(mode).EQ."memory_save") then
2523 size_variables(i1)=size_int
2524 elseif(trim(mode).EQ."save") then
2525 write(unit,iostat=err) id%NBLOCK
2526 if(err.ne.0) then
2527 id%INFO(1) = -72
2528 CALL mumps_seti8toi4(total_file_size-size_written,
2529 & id%INFO(2))
2530 endif
2531 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
2532 & id%COMM, id%MYID )
2533 IF ( id%INFO(1) .LT. 0 ) GOTO 100
2534 elseif(trim(mode).EQ."restore") then
2535 size_variables(i1)=size_int
2536 read(unit,iostat=err) id%NBLOCK
2537 if(err.ne.0) THEN
2538 id%INFO(1) = -75
2539 CALL mumps_seti8toi4(total_file_size-size_read
2540 & ,id%INFO(2))
2541 endif
2542 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
2543 & id%COMM, id%MYID )
2544 IF ( id%INFO(1) .LT. 0 ) GOTO 100
2545 endif
2546 CASE("SCHUR_MLOC")
2547 nbrecords(i1)=1
2548 if(trim(mode).EQ."memory_save") then
2549 size_variables(i1)=size_int
2550 elseif(trim(mode).EQ."save") then
2551 write(unit,iostat=err) id%SCHUR_MLOC
2552 if(err.ne.0) then
2553 id%INFO(1) = -72
2554 CALL mumps_seti8toi4(total_file_size-size_written,
2555 & id%INFO(2))
2556 endif
2557 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
2558 & id%COMM, id%MYID )
2559 IF ( id%INFO(1) .LT. 0 ) GOTO 100
2560 elseif(trim(mode).EQ."restore") then
2561 size_variables(i1)=size_int
2562 read(unit,iostat=err) id%SCHUR_MLOC
2563 if(err.ne.0) THEN
2564 id%INFO(1) = -75
2565 CALL mumps_seti8toi4(total_file_size-size_read
2566 & ,id%INFO(2))
2567 endif
2568 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
2569 & id%COMM, id%MYID )
2570 IF ( id%INFO(1) .LT. 0 ) GOTO 100
2571 endif
2572 CASE("SCHUR_NLOC")
2573 nbrecords(i1)=1
2574 if(trim(mode).EQ."memory_save") then
2575 size_variables(i1)=size_int
2576 elseif(trim(mode).EQ."save") then
2577 write(unit,iostat=err) id%SCHUR_NLOC
2578 if(err.ne.0) then
2579 id%INFO(1) = -72
2580 CALL mumps_seti8toi4(total_file_size-size_written,
2581 & id%INFO(2))
2582 endif
2583 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
2584 & id%COMM, id%MYID )
2585 IF ( id%INFO(1) .LT. 0 ) GOTO 100
2586 elseif(trim(mode).EQ."restore") then
2587 size_variables(i1)=size_int
2588 read(unit,iostat=err) id%SCHUR_NLOC
2589 if(err.ne.0) THEN
2590 id%INFO(1) = -75
2591 CALL mumps_seti8toi4(total_file_size-size_read
2592 & ,id%INFO(2))
2593 endif
2594 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
2595 & id%COMM, id%MYID )
2596 IF ( id%INFO(1) .LT. 0 ) GOTO 100
2597 endif
2598 CASE("SCHUR_LLD")
2599 nbrecords(i1)=1
2600 if(trim(mode).EQ."memory_save") then
2601 size_variables(i1)=size_int
2602 elseif(trim(mode).EQ."save") then
2603 write(unit,iostat=err) id%SCHUR_LLD
2604 if(err.ne.0) then
2605 id%INFO(1) = -72
2606 CALL mumps_seti8toi4(total_file_size-size_written,
2607 & id%INFO(2))
2608 endif
2609 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
2610 & id%COMM, id%MYID )
2611 IF ( id%INFO(1) .LT. 0 ) GOTO 100
2612 elseif(trim(mode).EQ."restore") then
2613 SIZE_VARIABLES(i1)=SIZE_INT
2614 read(unit,iostat=err) id%SCHUR_LLD
2615.ne. if(err0) THEN
2616 id%INFO(1) = -75
2617 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
2618 & ,id%INFO(2))
2619 endif
2620 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
2621 & id%COMM, id%MYID )
2622.LT. IF ( id%INFO(1) 0 ) GOTO 100
2623 endif
2624 CASE("size_schur")
2625 NbRecords(i1)=1
2626.EQ. if(trim(mode)"memory_save") then
2627 SIZE_VARIABLES(i1)=SIZE_INT
2628.EQ. elseif(trim(mode)"save") then
2629 write(unit,iostat=err) id%SIZE_SCHUR
2630.ne. if(err0) then
2631 id%INFO(1) = -72
2632 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
2633 & id%INFO(2))
2634 endif
2635 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
2636 & id%COMM, id%MYID )
2637.LT. IF ( id%INFO(1) 0 ) GOTO 100
2638 NbRecords(i1)=1
2639.EQ. elseif(trim(mode)"restore") then
2640 SIZE_VARIABLES(i1)=SIZE_INT
2641 read(unit,iostat=err) id%SIZE_SCHUR
2642.ne. if(err0) THEN
2643 id%INFO(1) = -75
2644 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
2645 & ,id%INFO(2))
2646 endif
2647 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
2648 & id%COMM, id%MYID )
2649.LT. IF ( id%INFO(1) 0 ) GOTO 100
2650 endif
2651 CASE("schur")
2652 CASE("schur_cinterface")
2653 CASE("listvar_schur")
2654 CASE("mapping")
2655 NbRecords(i1)=2
2656.EQ. if(trim(mode)"memory_save") then
2657 IF(associated(id%MAPPING)) THEN
2658 SIZE_GEST(i1)=SIZE_INT8
2659 SIZE_VARIABLES(i1)=id%KEEP8(28)*SIZE_INT
2660 ELSE
2661 SIZE_GEST(i1)=SIZE_INT8+SIZE_INT
2662 SIZE_VARIABLES(i1)=0_8
2663 ENDIF
2664.EQ. elseif(trim(mode)"save") then
2665 IF(associated(id%MAPPING)) THEN
2666 write(unit,iostat=err) id%KEEP8(28)
2667.ne. if(err0) then
2668 id%INFO(1) = -72
2669 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
2670 & id%INFO(2))
2671 endif
2672 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
2673 & id%COMM, id%MYID )
2674.LT. IF ( id%INFO(1) 0 ) GOTO 100
2675 write(unit,iostat=err) id%MAPPING
2676 ELSE
2677 write(unit,iostat=err) int(-999,8)
2678.ne. if(err0) then
2679 id%INFO(1) = -72
2680 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
2681 & id%INFO(2))
2682 endif
2683 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
2684 & id%COMM, id%MYID )
2685.LT. IF ( id%INFO(1) 0 ) GOTO 100
2686 write(unit,iostat=err) -999
2687 ENDIF
2688.ne. if(err0) then
2689 id%INFO(1) = -72
2690 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
2691 & id%INFO(2))
2692 endif
2693 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
2694 & id%COMM, id%MYID )
2695.LT. IF ( id%INFO(1) 0 ) GOTO 100
2696.EQ. elseif(trim(mode)"restore") then
2697 nullify(id%MAPPING)
2698 read(unit,iostat=err) size_array_INT8_1
2699.ne. if(err0) THEN
2700 id%INFO(1) = -75
2701 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
2702 & ,id%INFO(2))
2703 endif
2704 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
2705 & id%COMM, id%MYID )
2706.LT. IF ( id%INFO(1) 0 ) GOTO 100
2707.EQ. if(size_array_INT8_1int(-999,8)) then
2708 SIZE_GEST(i1)=SIZE_INT+SIZE_INT8
2709 SIZE_VARIABLES(i1)=0_8
2710 read(unit,iostat=err) dummy
2711 else
2712 SIZE_GEST(i1)=SIZE_INT8
2713 SIZE_VARIABLES(i1)=size_array_INT8_1*SIZE_INT
2714 allocate(id%MAPPING(size_array_INT8_1), stat=allocok)
2715.GT. if (allocok 0) THEN
2716 id%INFO(1) = -78
2717 CALL MUMPS_SETI8TOI4(
2718 & TOTAL_STRUC_SIZE-size_allocated
2719 & ,id%INFO(2))
2720 endif
2721 read(unit,iostat=err) id%MAPPING
2722 endif
2723 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
2724 & id%COMM, id%MYID )
2725.LT. IF ( id%INFO(1) 0 ) GOTO 100
2726.ne. if(err0) THEN
2727 id%INFO(1) = -75
2728 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
2729 & ,id%INFO(2))
2730 endif
2731 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
2732 & id%COMM, id%MYID )
2733.LT. IF ( id%INFO(1) 0 ) GOTO 100
2734 endif
2735 CASE("version_number")
2736 NbRecords(i1)=1
2737.EQ. if(trim(mode)"memory_save") then
2738 SIZE_VARIABLES(i1)=len(id%VERSION_NUMBER)
2739 & *SIZE_CHARACTER
2740.EQ. elseif(trim(mode)"save") then
2741 write(unit,iostat=err) id%VERSION_NUMBER
2742.ne. if(err0) then
2743 id%INFO(1) = -72
2744 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
2745 & id%INFO(2))
2746 endif
2747 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
2748 & id%COMM, id%MYID )
2749.LT. IF ( id%INFO(1) 0 ) GOTO 100
2750.EQ. elseif(trim(mode)"restore") then
2751 SIZE_VARIABLES(i1)=len(id%VERSION_NUMBER)
2752 & *SIZE_CHARACTER
2753 read(unit,iostat=err) id%VERSION_NUMBER
2754.ne. if(err0) THEN
2755 id%INFO(1) = -75
2756 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
2757 & ,id%INFO(2))
2758 endif
2759 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
2760 & id%COMM, id%MYID )
2761.LT. IF ( id%INFO(1) 0 ) GOTO 100
2762 endif
2763 CASE("ooc_tmpdir")
2764 NbRecords(i1)=1
2765.EQ. if(trim(mode)"memory_save") then
2766 SIZE_VARIABLES(i1)=len(id%OOC_TMPDIR)
2767 & *SIZE_CHARACTER
2768.EQ. elseif(trim(mode)"save") then
2769 write(unit,iostat=err) id%OOC_TMPDIR
2770.ne. if(err0) then
2771 id%INFO(1) = -72
2772 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
2773 & id%INFO(2))
2774 endif
2775 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
2776 & id%COMM, id%MYID )
2777.LT. IF ( id%INFO(1) 0 ) GOTO 100
2778.EQ. elseif(trim(mode)"restore") then
2779 SIZE_VARIABLES(i1)=len(id%OOC_TMPDIR)
2780 & *SIZE_CHARACTER
2781 read(unit,iostat=err) id%OOC_TMPDIR
2782.ne. if(err0) THEN
2783 id%INFO(1) = -75
2784 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
2785 & ,id%INFO(2))
2786 endif
2787 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
2788 & id%COMM, id%MYID )
2789.LT. IF ( id%INFO(1) 0 ) GOTO 100
2790 endif
2791 CASE("ooc_prefix")
2792 NbRecords(i1)=1
2793.EQ. if(trim(mode)"memory_save") then
2794 SIZE_VARIABLES(i1)=len(id%OOC_PREFIX)
2795 & *SIZE_CHARACTER
2796.EQ. elseif(trim(mode)"save") then
2797 write(unit,iostat=err) id%OOC_PREFIX
2798.ne. if(err0) then
2799 id%INFO(1) = -72
2800 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
2801 & id%INFO(2))
2802 endif
2803 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
2804 & id%COMM, id%MYID )
2805.LT. IF ( id%INFO(1) 0 ) GOTO 100
2806 NbRecords(i1)=1
2807.EQ. elseif(trim(mode)"restore") then
2808 SIZE_VARIABLES(i1)=len(id%OOC_PREFIX)
2809 & *SIZE_CHARACTER
2810 read(unit,iostat=err) id%OOC_PREFIX
2811.ne. if(err0) THEN
2812 id%INFO(1) = -75
2813 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
2814 & ,id%INFO(2))
2815 endif
2816 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
2817 & id%COMM, id%MYID )
2818.LT. IF ( id%INFO(1) 0 ) GOTO 100
2819 endif
2820 CASE("write_problem")
2821 NbRecords(i1)=1
2822.EQ. if(trim(mode)"memory_save") then
2823 SIZE_VARIABLES(i1)=len(id%WRITE_PROBLEM)
2824 & *SIZE_CHARACTER
2825.EQ. elseif(trim(mode)"save") then
2826 write(unit,iostat=err) id%WRITE_PROBLEM
2827.ne. if(err0) then
2828 id%INFO(1) = -72
2829 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
2830 & id%INFO(2))
2831 endif
2832 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
2833 & id%COMM, id%MYID )
2834.LT. IF ( id%INFO(1) 0 ) GOTO 100
2835.EQ. elseif(trim(mode)"restore") then
2836 SIZE_VARIABLES(i1)=len(id%WRITE_PROBLEM)
2837 & *SIZE_CHARACTER
2838 read(unit,iostat=err) id%WRITE_PROBLEM
2839.ne. if(err0) THEN
2840 id%INFO(1) = -75
2841 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
2842 & ,id%INFO(2))
2843 endif
2844 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
2845 & id%COMM, id%MYID )
2846.LT. IF ( id%INFO(1) 0 ) GOTO 100
2847 endif
2848 CASE("max_surf_master")
2849 NbRecords(i1)=1
2850.EQ. if(trim(mode)"memory_save") then
2851 SIZE_VARIABLES(i1)=SIZE_INT8
2852.EQ. elseif(trim(mode)"save") then
2853 write(unit,iostat=err) id%MAX_SURF_MASTER
2854.ne. if(err0) then
2855 id%INFO(1) = -72
2856 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
2857 & id%INFO(2))
2858 endif
2859 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
2860 & id%COMM, id%MYID )
2861.LT. IF ( id%INFO(1) 0 ) GOTO 100
2862.EQ. elseif(trim(mode)"restore") then
2863 SIZE_VARIABLES(i1)=SIZE_INT8
2864 read(unit,iostat=err) id%MAX_SURF_MASTER
2865.ne. if(err0) THEN
2866 id%INFO(1) = -75
2867 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
2868 & ,id%INFO(2))
2869 endif
2870 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
2871 & id%COMM, id%MYID )
2872.LT. IF ( id%INFO(1) 0 ) GOTO 100
2873 endif
2874 CASE("inst_number")
2875 NbRecords(i1)=1
2876.EQ. if(trim(mode)"memory_save") then
2877 SIZE_VARIABLES(i1)=SIZE_INT
2878.EQ. elseif(trim(mode)"save") then
2879 write(unit,iostat=err) id%INST_Number
2880.ne. if(err0) then
2881 id%INFO(1) = -72
2882 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
2883 & id%INFO(2))
2884 endif
2885 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
2886 & id%COMM, id%MYID )
2887.LT. IF ( id%INFO(1) 0 ) GOTO 100
2888.EQ. elseif(trim(mode)"restore") then
2889 SIZE_VARIABLES(i1)=SIZE_INT
2890 read(unit,iostat=err) id%INST_Number
2891.ne. if(err0) THEN
2892 id%INFO(1) = -75
2893 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
2894 & ,id%INFO(2))
2895 endif
2896 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
2897 & id%COMM, id%MYID )
2898.LT. IF ( id%INFO(1) 0 ) GOTO 100
2899 endif
2900 CASE("comm_nodes")
2901.EQ. if(trim(mode)"memory_save") then
2902 DIFF_SIZE_ALLOC_READ(i1)=SIZE_INT
2903.EQ. elseif(trim(mode)"save") then
2904 DIFF_SIZE_ALLOC_READ(i1)=SIZE_INT
2905.EQ. elseif(trim(mode)"restore") then
2906 DIFF_SIZE_ALLOC_READ(i1)=SIZE_INT
2907 endif
2908 CASE("myid_nodes")
2909 NbRecords(i1)=1
2910.EQ. if(trim(mode)"memory_save") then
2911 SIZE_VARIABLES(i1)=SIZE_INT
2912.EQ. elseif(trim(mode)"save") then
2913 write(unit,iostat=err) id%MYID_NODES
2914.ne. if(err0) then
2915 id%INFO(1) = -72
2916 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
2917 & id%INFO(2))
2918 endif
2919 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
2920 & id%COMM, id%MYID )
2921.LT. IF ( id%INFO(1) 0 ) GOTO 100
2922.EQ. elseif(trim(mode)"restore") then
2923 SIZE_VARIABLES(i1)=SIZE_INT
2924 read(unit,iostat=err) id%MYID_NODES
2925.ne. if(err0) THEN
2926 id%INFO(1) = -75
2927 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
2928 & ,id%INFO(2))
2929 endif
2930 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
2931 & id%COMM, id%MYID )
2932.LT. IF ( id%INFO(1) 0 ) GOTO 100
2933 endif
2934 CASE("comm_load")
2935.EQ. if(trim(mode)"memory_save") then
2936 DIFF_SIZE_ALLOC_READ(i1)=SIZE_INT
2937.EQ. elseif(trim(mode)"save") then
2938 DIFF_SIZE_ALLOC_READ(i1)=SIZE_INT
2939.EQ. elseif(trim(mode)"restore") then
2940 DIFF_SIZE_ALLOC_READ(i1)=SIZE_INT
2941 endif
2942 CASE("myid")
2943 NbRecords(i1)=1
2944.EQ. if(trim(mode)"memory_save") then
2945 SIZE_VARIABLES(i1)=SIZE_INT
2946.EQ. elseif(trim(mode)"save") then
2947 write(unit,iostat=err) id%MYID
2948.ne. if(err0) then
2949 id%INFO(1) = -72
2950 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
2951 & id%INFO(2))
2952 endif
2953 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
2954 & id%COMM, id%MYID )
2955.LT. IF ( id%INFO(1) 0 ) GOTO 100
2956.EQ. elseif(trim(mode)"restore") then
2957 SIZE_VARIABLES(i1)=SIZE_INT
2958 read(unit,iostat=err) id%MYID
2959.ne. if(err0) THEN
2960 id%INFO(1) = -75
2961 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
2962 & ,id%INFO(2))
2963 endif
2964 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
2965 & id%COMM, id%MYID )
2966.LT. IF ( id%INFO(1) 0 ) GOTO 100
2967 endif
2968 CASE("nprocs")
2969 NbRecords(i1)=1
2970.EQ. if(trim(mode)"memory_save") then
2971 SIZE_VARIABLES(i1)=SIZE_INT
2972.EQ. elseif(trim(mode)"save") then
2973 write(unit,iostat=err) id%NPROCS
2974.ne. if(err0) then
2975 id%INFO(1) = -72
2976 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
2977 & id%INFO(2))
2978 endif
2979 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
2980 & id%COMM, id%MYID )
2981.LT. IF ( id%INFO(1) 0 ) GOTO 100
2982.EQ. elseif(trim(mode)"restore") then
2983 SIZE_VARIABLES(i1)=SIZE_INT
2984 read(unit,iostat=err) id%NPROCS
2985.ne. if(err0) THEN
2986 id%INFO(1) = -75
2987 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
2988 & ,id%INFO(2))
2989 endif
2990 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
2991 & id%COMM, id%MYID )
2992.LT. IF ( id%INFO(1) 0 ) GOTO 100
2993 endif
2994 CASE("nslaves")
2995 NbRecords(i1)=1
2996.EQ. if(trim(mode)"memory_save") then
2997 SIZE_VARIABLES(i1)=SIZE_INT
2998.EQ. elseif(trim(mode)"save") then
2999 write(unit,iostat=err) id%NSLAVES
3000.ne. if(err0) then
3001 id%INFO(1) = -72
3002 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
3003 & id%INFO(2))
3004 endif
3005 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
3006 & id%COMM, id%MYID )
3007.LT. IF ( id%INFO(1) 0 ) GOTO 100
3008.EQ. elseif(trim(mode)"restore") then
3009 SIZE_VARIABLES(i1)=SIZE_INT
3010 read(unit,iostat=err) id%NSLAVES
3011.ne. if(err0) THEN
3012 id%INFO(1) = -75
3013 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
3014 & ,id%INFO(2))
3015 endif
3016 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
3017 & id%COMM, id%MYID )
3018.LT. IF ( id%INFO(1) 0 ) GOTO 100
3019 endif
3020 CASE("ass_irecv")
3021 NbRecords(i1)=1
3022.EQ. if(trim(mode)"memory_save") then
3023 SIZE_VARIABLES(i1)=SIZE_INT
3024.EQ. elseif(trim(mode)"save") then
3025 write(unit,iostat=err) id%ASS_IRECV
3026.ne. if(err0) then
3027 id%INFO(1) = -72
3028 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
3029 & id%INFO(2))
3030 endif
3031 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
3032 & id%COMM, id%MYID )
3033.LT. IF ( id%INFO(1) 0 ) GOTO 100
3034.EQ. elseif(trim(mode)"restore") then
3035 SIZE_VARIABLES(i1)=SIZE_INT
3036 read(unit,iostat=err) id%ASS_IRECV
3037.ne. if(err0) THEN
3038 id%INFO(1) = -75
3039 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
3040 & ,id%INFO(2))
3041 endif
3042 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
3043 & id%COMM, id%MYID )
3044.LT. IF ( id%INFO(1) 0 ) GOTO 100
3045 endif
3046 CASE("is")
3047 NbRecords(i1)=2
3048.EQ. if(trim(mode)"memory_save") then
3049 IF(associated(id%IS)) THEN
3050 SIZE_GEST(i1)=SIZE_INT*2
3051 SIZE_VARIABLES(i1)=id%KEEP(32)*SIZE_INT
3052 DIFF_SIZE_ALLOC_READ(i1)=SIZE_INT*
3053 & (size(id%IS,1)-id%KEEP(32))
3054 ELSE
3055 SIZE_GEST(i1)=SIZE_INT*3
3056 SIZE_VARIABLES(i1)=0_8
3057 ENDIF
3058.EQ. elseif(trim(mode)"save") then
3059 IF(associated(id%IS)) THEN
3060 write(unit,iostat=err) size(id%IS,1),id%KEEP(32)
3061.ne. if(err0) then
3062 id%INFO(1) = -72
3063 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
3064 & id%INFO(2))
3065 endif
3066 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
3067 & id%COMM, id%MYID )
3068.LT. IF ( id%INFO(1) 0 ) GOTO 100
3069 write(unit,iostat=err) id%IS(1:id%KEEP(32))
3070 DIFF_SIZE_ALLOC_READ(i1)=SIZE_INT*
3071 & (size(id%IS,1)-id%KEEP(32))
3072 ELSE
3073 write(unit,iostat=err) -999,-998
3074.ne. if(err0) then
3075 id%INFO(1) = -72
3076 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
3077 & id%INFO(2))
3078 endif
3079 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
3080 & id%COMM, id%MYID )
3081.LT. IF ( id%INFO(1) 0 ) GOTO 100
3082 write(unit,iostat=err) -999
3083 ENDIF
3084.ne. if(err0) then
3085 id%INFO(1) = -72
3086 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
3087 & id%INFO(2))
3088 endif
3089 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
3090 & id%COMM, id%MYID )
3091.LT. IF ( id%INFO(1) 0 ) GOTO 100
3092.EQ. elseif(trim(mode)"restore") then
3093 nullify(id%IS)
3094 read(unit,iostat=err) size_array1,size_array2
3095.ne. if(err0) THEN
3096 id%INFO(1) = -75
3097 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
3098 & ,id%INFO(2))
3099 endif
3100 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
3101 & id%COMM, id%MYID )
3102.LT. IF ( id%INFO(1) 0 ) GOTO 100
3103.EQ. if(size_array1-999) then
3104 SIZE_GEST(i1)=SIZE_INT*3
3105 SIZE_VARIABLES(i1)=0_8
3106 read(unit,iostat=err) dummy
3107 else
3108 SIZE_GEST(i1)=SIZE_INT*2
3109 SIZE_VARIABLES(i1)=size_array2*SIZE_INT
3110 DIFF_SIZE_ALLOC_READ(i1)=SIZE_INT*
3111 & (size_array1-size_array2)
3112 allocate(id%IS(size_array1), stat=allocok)
3113.GT. if (allocok 0) THEN
3114 id%INFO(1) = -78
3115 CALL MUMPS_SETI8TOI4(
3116 & TOTAL_STRUC_SIZE-size_allocated
3117 & ,id%INFO(2))
3118 endif
3119 read(unit,iostat=err) id%IS(1:size_array2)
3120 endif
3121 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
3122 & id%COMM, id%MYID )
3123.LT. IF ( id%INFO(1) 0 ) GOTO 100
3124.ne. if(err0) THEN
3125 id%INFO(1) = -75
3126 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
3127 & ,id%INFO(2))
3128 endif
3129 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
3130 & id%COMM, id%MYID )
3131.LT. IF ( id%INFO(1) 0 ) GOTO 100
3132 endif
3133 CASE("deficiency")
3134 NbRecords(i1)=1
3135.EQ. if(trim(mode)"memory_save") then
3136 SIZE_VARIABLES(i1)=SIZE_INT
3137.EQ. elseif(trim(mode)"save") then
3138 write(unit,iostat=err) id%Deficiency
3139.ne. if(err0) then
3140 id%INFO(1) = -72
3141 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
3142 & id%INFO(2))
3143 endif
3144 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
3145 & id%COMM, id%MYID )
3146.LT. IF ( id%INFO(1) 0 ) GOTO 100
3147.EQ. elseif(trim(mode)"restore") then
3148 SIZE_VARIABLES(i1)=SIZE_INT
3149 read(unit,iostat=err) id%Deficiency
3150.ne. if(err0) THEN
3151 id%INFO(1) = -75
3152 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
3153 & ,id%INFO(2))
3154 endif
3155 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
3156 & id%COMM, id%MYID )
3157.LT. IF ( id%INFO(1) 0 ) GOTO 100
3158 endif
3159 CASE("lna")
3160 NbRecords(i1)=1
3161.EQ. if(trim(mode)"memory_save") then
3162 SIZE_VARIABLES(i1)=SIZE_INT
3163.EQ. elseif(trim(mode)"save") then
3164 write(unit,iostat=err) id%LNA
3165.ne. if(err0) then
3166 id%INFO(1) = -72
3167 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
3168 & id%INFO(2))
3169 endif
3170 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
3171 & id%COMM, id%MYID )
3172.LT. IF ( id%INFO(1) 0 ) GOTO 100
3173.EQ. elseif(trim(mode)"restore") then
3174 SIZE_VARIABLES(i1)=SIZE_INT
3175 read(unit,iostat=err) id%LNA
3176.ne. if(err0) THEN
3177 id%INFO(1) = -75
3178 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
3179 & ,id%INFO(2))
3180 endif
3181 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
3182 & id%COMM, id%MYID )
3183.LT. IF ( id%INFO(1) 0 ) GOTO 100
3184 endif
3185 CASE("nbsa")
3186 NbRecords(i1)=1
3187.EQ. if(trim(mode)"memory_save") then
3188 SIZE_VARIABLES(i1)=SIZE_INT
3189.EQ. elseif(trim(mode)"save") then
3190 write(unit,iostat=err) id%NBSA
3191.ne. if(err0) then
3192 id%INFO(1) = -72
3193 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
3194 & id%INFO(2))
3195 endif
3196 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
3197 & id%COMM, id%MYID )
3198.LT. IF ( id%INFO(1) 0 ) GOTO 100
3199.EQ. elseif(trim(mode)"restore") then
3200 SIZE_VARIABLES(i1)=SIZE_INT
3201 read(unit,iostat=err) id%NBSA
3202.ne. if(err0) THEN
3203 id%INFO(1) = -75
3204 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
3205 & ,id%INFO(2))
3206 endif
3207 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
3208 & id%COMM, id%MYID )
3209.LT. IF ( id%INFO(1) 0 ) GOTO 100
3210 endif
3211 CASE("step")
3212 NbRecords(i1)=2
3213.EQ. if(trim(mode)"memory_save") then
3214 IF(associated(id%STEP)) THEN
3215 SIZE_GEST(i1)=SIZE_INT
3216 SIZE_VARIABLES(i1)=size(id%STEP,1)*SIZE_INT
3217 ELSE
3218 SIZE_GEST(i1)=SIZE_INT*2
3219 SIZE_VARIABLES(i1)=0_8
3220 ENDIF
3221.EQ. elseif(trim(mode)"save") then
3222 IF(associated(id%STEP)) THEN
3223 write(unit,iostat=err) size(id%STEP,1)
3224.ne. if(err0) then
3225 id%INFO(1) = -72
3226 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
3227 & id%INFO(2))
3228 endif
3229 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
3230 & id%COMM, id%MYID )
3231.LT. IF ( id%INFO(1) 0 ) GOTO 100
3232 write(unit,iostat=err) id%STEP
3233 ELSE
3234 write(unit,iostat=err) -999
3235.ne. if(err0) then
3236 id%INFO(1) = -72
3237 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
3238 & id%INFO(2))
3239 endif
3240 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
3241 & id%COMM, id%MYID )
3242.LT. IF ( id%INFO(1) 0 ) GOTO 100
3243 write(unit,iostat=err) -999
3244 ENDIF
3245.ne. if(err0) then
3246 id%INFO(1) = -72
3247 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
3248 & id%INFO(2))
3249 endif
3250 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
3251 & id%COMM, id%MYID )
3252.LT. IF ( id%INFO(1) 0 ) GOTO 100
3253.EQ. elseif(trim(mode)"restore") then
3254 nullify(id%STEP)
3255 read(unit,iostat=err) size_array1
3256.ne. if(err0) THEN
3257 id%INFO(1) = -75
3258 CALL MUMPS_SETI8TOI4(SIZE_VARIABLES(i1),id%INFO(2))
3259 endif
3260 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
3261 & id%COMM, id%MYID )
3262.LT. IF ( id%INFO(1) 0 ) GOTO 100
3263.EQ. if(size_array1-999) then
3264 SIZE_GEST(i1)=SIZE_INT*2
3265 SIZE_VARIABLES(i1)=0_8
3266 read(unit,iostat=err) dummy
3267 else
3268 SIZE_GEST(i1)=SIZE_INT
3269 SIZE_VARIABLES(i1)=size_array1*SIZE_INT
3270 allocate(id%STEP(size_array1), stat=allocok)
3271.GT. if (allocok 0) THEN
3272 id%INFO(1) = -78
3273 CALL MUMPS_SETI8TOI4(
3274 & TOTAL_STRUC_SIZE-size_allocated
3275 & ,id%INFO(2))
3276 endif
3277 read(unit,iostat=err) id%STEP
3278 endif
3279 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
3280 & id%COMM, id%MYID )
3281.LT. IF ( id%INFO(1) 0 ) GOTO 100
3282.ne. if(err0) THEN
3283 id%INFO(1) = -75
3284 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
3285 & ,id%INFO(2))
3286 endif
3287 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
3288 & id%COMM, id%MYID )
3289.LT. IF ( id%INFO(1) 0 ) GOTO 100
3290 endif
3291 CASE("ne_steps")
3292 NbRecords(i1)=2
3293.EQ. if(trim(mode)"memory_save") then
3294 IF(associated(id%NE_STEPS)) THEN
3295 SIZE_GEST(i1)=SIZE_INT
3296 SIZE_VARIABLES(i1)=size(id%NE_STEPS,1)*SIZE_INT
3297 ELSE
3298 SIZE_GEST(i1)=SIZE_INT*2
3299 SIZE_VARIABLES(i1)=0_8
3300 ENDIF
3301.EQ. elseif(trim(mode)"save") then
3302 IF(associated(id%NE_STEPS)) THEN
3303 write(unit,iostat=err) size(id%NE_STEPS,1)
3304.ne. if(err0) then
3305 id%INFO(1) = -72
3306 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
3307 & id%INFO(2))
3308 endif
3309 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
3310 & id%COMM, id%MYID )
3311.LT. IF ( id%INFO(1) 0 ) GOTO 100
3312 write(unit,iostat=err) id%NE_STEPS
3313 ELSE
3314 write(unit,iostat=err) -999
3315.ne. if(err0) then
3316 id%INFO(1) = -72
3317 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
3318 & id%INFO(2))
3319 endif
3320 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
3321 & id%COMM, id%MYID )
3322.LT. IF ( id%INFO(1) 0 ) GOTO 100
3323 write(unit,iostat=err) -999
3324 ENDIF
3325.ne. if(err0) then
3326 id%INFO(1) = -72
3327 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
3328 & id%INFO(2))
3329 endif
3330 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
3331 & id%COMM, id%MYID )
3332.LT. IF ( id%INFO(1) 0 ) GOTO 100
3333.EQ. elseif(trim(mode)"restore") then
3334 nullify(id%NE_STEPS)
3335 read(unit,iostat=err) size_array1
3336.ne. if(err0) THEN
3337 id%INFO(1) = -75
3338 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
3339 & ,id%INFO(2))
3340 endif
3341 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
3342 & id%COMM, id%MYID )
3343.LT. IF ( id%INFO(1) 0 ) GOTO 100
3344.EQ. if(size_array1-999) then
3345 SIZE_GEST(i1)=SIZE_INT*2
3346 SIZE_VARIABLES(i1)=0_8
3347 read(unit,iostat=err) dummy
3348 else
3349 SIZE_GEST(i1)=SIZE_INT
3350 SIZE_VARIABLES(i1)=size_array1*SIZE_INT
3351 allocate(id%NE_STEPS(size_array1), stat=allocok)
3352.GT. if (allocok 0) THEN
3353 id%INFO(1) = -78
3354 CALL MUMPS_SETI8TOI4(
3355 & TOTAL_STRUC_SIZE-size_allocated
3356 & ,id%INFO(2))
3357 endif
3358 read(unit,iostat=err) id%NE_STEPS
3359 endif
3360 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
3361 & id%COMM, id%MYID )
3362.LT. IF ( id%INFO(1) 0 ) GOTO 100
3363.ne. if(err0) THEN
3364 id%INFO(1) = -75
3365 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
3366 & ,id%INFO(2))
3367 endif
3368 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
3369 & id%COMM, id%MYID )
3370.LT. IF ( id%INFO(1) 0 ) GOTO 100
3371 endif
3372 CASE("nd_steps")
3373 NbRecords(i1)=2
3374.EQ. if(trim(mode)"memory_save") then
3375 IF(associated(id%ND_STEPS)) THEN
3376 SIZE_GEST(i1)=SIZE_INT
3377 SIZE_VARIABLES(i1)=size(id%ND_STEPS,1)*SIZE_INT
3378 ELSE
3379 SIZE_GEST(i1)=SIZE_INT*2
3380 SIZE_VARIABLES(i1)=0_8
3381 ENDIF
3382.EQ. elseif(trim(mode)"save") then
3383 IF(associated(id%ND_STEPS)) THEN
3384 write(unit,iostat=err) size(id%ND_STEPS,1)
3385.ne. if(err0) then
3386 id%INFO(1) = -72
3387 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
3388 & id%INFO(2))
3389 endif
3390 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
3391 & id%COMM, id%MYID )
3392.LT. IF ( id%INFO(1) 0 ) GOTO 100
3393 write(unit,iostat=err) id%ND_STEPS
3394 ELSE
3395 write(unit,iostat=err) -999
3396.ne. if(err0) then
3397 id%INFO(1) = -72
3398 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
3399 & id%INFO(2))
3400 endif
3401 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
3402 & id%COMM, id%MYID )
3403.LT. IF ( id%INFO(1) 0 ) GOTO 100
3404 write(unit,iostat=err) -999
3405 ENDIF
3406.ne. if(err0) then
3407 id%INFO(1) = -72
3408 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
3409 & id%INFO(2))
3410 endif
3411 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
3412 & id%COMM, id%MYID )
3413.LT. IF ( id%INFO(1) 0 ) GOTO 100
3414.EQ. elseif(trim(mode)"restore") then
3415 nullify(id%ND_STEPS)
3416 read(unit,iostat=err) size_array1
3417.ne. if(err0) THEN
3418 id%INFO(1) = -75
3419 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
3420 & ,id%INFO(2))
3421 endif
3422 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
3423 & id%COMM, id%MYID )
3424.LT. IF ( id%INFO(1) 0 ) GOTO 100
3425.EQ. if(size_array1-999) then
3426 SIZE_GEST(i1)=SIZE_INT*2
3427 SIZE_VARIABLES(i1)=0_8
3428 read(unit,iostat=err) dummy
3429 else
3430 SIZE_GEST(i1)=SIZE_INT
3431 SIZE_VARIABLES(i1)=size_array1*SIZE_INT
3432 allocate(id%ND_STEPS(size_array1), stat=allocok)
3433.GT. if (allocok 0) THEN
3434 id%INFO(1) = -78
3435 CALL MUMPS_SETI8TOI4(
3436 & TOTAL_STRUC_SIZE-size_allocated
3437 & ,id%INFO(2))
3438 endif
3439 read(unit,iostat=err) id%ND_STEPS
3440 endif
3441 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
3442 & id%COMM, id%MYID )
3443.LT. IF ( id%INFO(1) 0 ) GOTO 100
3444.ne. if(err0) THEN
3445 id%INFO(1) = -75
3446 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
3447 & ,id%INFO(2))
3448 endif
3449 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
3450 & id%COMM, id%MYID )
3451.LT. IF ( id%INFO(1) 0 ) GOTO 100
3452 endif
3453 CASE("step2node")
3454 NbRecords(i1)=2
3455.EQ. if(trim(mode)"memory_save") then
3456 IF(associated(id%Step2node)) THEN
3457 SIZE_GEST(i1)=SIZE_INT
3458 SIZE_VARIABLES(i1)=size(id%Step2node,1)*SIZE_INT
3459 ELSE
3460 SIZE_GEST(i1)=SIZE_INT*2
3461 SIZE_VARIABLES(i1)=0_8
3462 ENDIF
3463.EQ. elseif(trim(mode)"save") then
3464 IF(associated(id%Step2node)) THEN
3465 write(unit,iostat=err) size(id%Step2node,1)
3466.ne. if(err0) then
3467 id%INFO(1) = -72
3468 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
3469 & id%INFO(2))
3470 endif
3471 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
3472 & id%COMM, id%MYID )
3473.LT. IF ( id%INFO(1) 0 ) GOTO 100
3474 write(unit,iostat=err) id%Step2node
3475 ELSE
3476 write(unit,iostat=err) -999
3477.ne. if(err0) then
3478 id%INFO(1) = -72
3479 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
3480 & id%INFO(2))
3481 endif
3482 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
3483 & id%COMM, id%MYID )
3484.LT. IF ( id%INFO(1) 0 ) GOTO 100
3485 write(unit,iostat=err) -999
3486 ENDIF
3487.ne. if(err0) then
3488 id%INFO(1) = -72
3489 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
3490 & id%INFO(2))
3491 endif
3492 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
3493 & id%COMM, id%MYID )
3494.LT. IF ( id%INFO(1) 0 ) GOTO 100
3495.EQ. elseif(trim(mode)"restore") then
3496 nullify(id%Step2node)
3497 read(unit,iostat=err) size_array1
3498.ne. if(err0) THEN
3499 id%INFO(1) = -75
3500 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
3501 & ,id%INFO(2))
3502 endif
3503 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
3504 & id%COMM, id%MYID )
3505.LT. IF ( id%INFO(1) 0 ) GOTO 100
3506.EQ. if(size_array1-999) then
3507 SIZE_GEST(i1)=SIZE_INT*2
3508 SIZE_VARIABLES(i1)=0_8
3509 read(unit,iostat=err) dummy
3510 else
3511 SIZE_GEST(i1)=SIZE_INT
3512 SIZE_VARIABLES(i1)=size_array1*SIZE_INT
3513 allocate(id%Step2node(size_array1), stat=allocok)
3514.GT. if (allocok 0) THEN
3515 id%INFO(1) = -78
3516 CALL MUMPS_SETI8TOI4(
3517 & TOTAL_STRUC_SIZE-size_allocated
3518 & ,id%INFO(2))
3519 endif
3520 read(unit,iostat=err) id%Step2node
3521 endif
3522 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
3523 & id%COMM, id%MYID )
3524.LT. IF ( id%INFO(1) 0 ) GOTO 100
3525.ne. if(err0) THEN
3526 id%INFO(1) = -75
3527 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
3528 & ,id%INFO(2))
3529 endif
3530 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
3531 & id%COMM, id%MYID )
3532.LT. IF ( id%INFO(1) 0 ) GOTO 100
3533 endif
3534 CASE("frere_steps")
3535 NbRecords(i1)=2
3536.EQ. if(trim(mode)"memory_save") then
3537 IF(associated(id%FRERE_STEPS)) THEN
3538 SIZE_GEST(i1)=SIZE_INT
3539 SIZE_VARIABLES(i1)=size(id%FRERE_STEPS,1)*SIZE_INT
3540 ELSE
3541 SIZE_GEST(i1)=SIZE_INT*2
3542 SIZE_VARIABLES(i1)=0_8
3543 ENDIF
3544.EQ. elseif(trim(mode)"save") then
3545 IF(associated(id%FRERE_STEPS)) THEN
3546 write(unit,iostat=err) size(id%FRERE_STEPS,1)
3547.ne. if(err0) then
3548 id%INFO(1) = -72
3549 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
3550 & id%INFO(2))
3551 endif
3552 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
3553 & id%COMM, id%MYID )
3554.LT. IF ( id%INFO(1) 0 ) GOTO 100
3555 write(unit,iostat=err) id%FRERE_STEPS
3556 ELSE
3557 write(unit,iostat=err) -999
3558.ne. if(err0) then
3559 id%INFO(1) = -72
3560 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
3561 & id%INFO(2))
3562 endif
3563 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
3564 & id%COMM, id%MYID )
3565.LT. IF ( id%INFO(1) 0 ) GOTO 100
3566 write(unit,iostat=err) -999
3567 ENDIF
3568.ne. if(err0) then
3569 id%INFO(1) = -72
3570 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
3571 & id%INFO(2))
3572 endif
3573 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
3574 & id%COMM, id%MYID )
3575.LT. IF ( id%INFO(1) 0 ) GOTO 100
3576.EQ. elseif(trim(mode)"restore") then
3577 nullify(id%FRERE_STEPS)
3578 read(unit,iostat=err) size_array1
3579.ne. if(err0) THEN
3580 id%INFO(1) = -75
3581 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
3582 & ,id%INFO(2))
3583 endif
3584 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
3585 & id%COMM, id%MYID )
3586.LT. IF ( id%INFO(1) 0 ) GOTO 100
3587.EQ. if(size_array1-999) then
3588 SIZE_GEST(i1)=SIZE_INT*2
3589 SIZE_VARIABLES(i1)=0_8
3590 read(unit,iostat=err) dummy
3591 else
3592 SIZE_GEST(i1)=SIZE_INT
3593 SIZE_VARIABLES(i1)=size_array1*SIZE_INT
3594 allocate(id%FRERE_STEPS(size_array1), stat=allocok)
3595.GT. if (allocok 0) THEN
3596 id%INFO(1) = -78
3597 CALL MUMPS_SETI8TOI4(
3598 & TOTAL_STRUC_SIZE-size_allocated
3599 & ,id%INFO(2))
3600 endif
3601 read(unit,iostat=err) id%FRERE_STEPS
3602 endif
3603 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
3604 & id%COMM, id%MYID )
3605.LT. IF ( id%INFO(1) 0 ) GOTO 100
3606.ne. if(err0) THEN
3607 id%INFO(1) = -75
3608 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
3609 & ,id%INFO(2))
3610 endif
3611 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
3612 & id%COMM, id%MYID )
3613.LT. IF ( id%INFO(1) 0 ) GOTO 100
3614 endif
3615 CASE("dad_steps")
3616 NbRecords(i1)=2
3617.EQ. if(trim(mode)"memory_save") then
3618 IF(associated(id%DAD_STEPS)) THEN
3619 SIZE_GEST(i1)=SIZE_INT
3620 SIZE_VARIABLES(i1)=size(id%DAD_STEPS,1)*SIZE_INT
3621 ELSE
3622 SIZE_GEST(i1)=SIZE_INT*2
3623 SIZE_VARIABLES(i1)=0_8
3624 ENDIF
3625.EQ. elseif(trim(mode)"save") then
3626 IF(associated(id%DAD_STEPS)) THEN
3627 write(unit,iostat=err) size(id%DAD_STEPS,1)
3628.ne. if(err0) then
3629 id%INFO(1) = -72
3630 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
3631 & id%INFO(2))
3632 endif
3633 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
3634 & id%COMM, id%MYID )
3635.LT. IF ( id%INFO(1) 0 ) GOTO 100
3636 write(unit,iostat=err) id%DAD_STEPS
3637 ELSE
3638 write(unit,iostat=err) -999
3639.ne. if(err0) then
3640 id%INFO(1) = -72
3641 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
3642 & id%INFO(2))
3643 endif
3644 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
3645 & id%COMM, id%MYID )
3646.LT. IF ( id%INFO(1) 0 ) GOTO 100
3647 write(unit,iostat=err) -999
3648 ENDIF
3649.ne. if(err0) then
3650 id%INFO(1) = -72
3651 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
3652 & id%INFO(2))
3653 endif
3654 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
3655 & id%COMM, id%MYID )
3656.LT. IF ( id%INFO(1) 0 ) GOTO 100
3657.EQ. elseif(trim(mode)"restore") then
3658 nullify(id%DAD_STEPS)
3659 read(unit,iostat=err) size_array1
3660.ne. if(err0) THEN
3661 id%INFO(1) = -75
3662 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
3663 & ,id%INFO(2))
3664 endif
3665 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
3666 & id%COMM, id%MYID )
3667.LT. IF ( id%INFO(1) 0 ) GOTO 100
3668.EQ. if(size_array1-999) then
3669 SIZE_GEST(i1)=SIZE_INT*2
3670 SIZE_VARIABLES(i1)=0_8
3671 read(unit,iostat=err) dummy
3672 else
3673 SIZE_GEST(i1)=SIZE_INT
3674 SIZE_VARIABLES(i1)=size_array1*SIZE_INT
3675 allocate(id%DAD_STEPS(size_array1), stat=allocok)
3676.GT. if (allocok 0) THEN
3677 id%INFO(1) = -78
3678 CALL MUMPS_SETI8TOI4(
3679 & TOTAL_STRUC_SIZE-size_allocated
3680 & ,id%INFO(2))
3681 endif
3682 read(unit,iostat=err) id%DAD_STEPS
3683 endif
3684 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
3685 & id%COMM, id%MYID )
3686.LT. IF ( id%INFO(1) 0 ) GOTO 100
3687.ne. if(err0) THEN
3688 id%INFO(1) = -75
3689 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
3690 & ,id%INFO(2))
3691 endif
3692 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
3693 & id%COMM, id%MYID )
3694.LT. IF ( id%INFO(1) 0 ) GOTO 100
3695 endif
3696 CASE("fils")
3697 NbRecords(i1)=2
3698.EQ. if(trim(mode)"memory_save") then
3699 IF(associated(id%FILS)) THEN
3700 SIZE_GEST(i1)=SIZE_INT
3701 SIZE_VARIABLES(i1)=size(id%FILS,1)*SIZE_INT
3702 ELSE
3703 SIZE_GEST(i1)=SIZE_INT*2
3704 SIZE_VARIABLES(i1)=0_8
3705 ENDIF
3706.EQ. elseif(trim(mode)"save") then
3707 IF(associated(id%FILS)) THEN
3708 write(unit,iostat=err) size(id%FILS,1)
3709.ne. if(err0) then
3710 id%INFO(1) = -72
3711 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
3712 & id%INFO(2))
3713 endif
3714 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
3715 & id%COMM, id%MYID )
3716.LT. IF ( id%INFO(1) 0 ) GOTO 100
3717 write(unit,iostat=err) id%FILS
3718 ELSE
3719 write(unit,iostat=err) -999
3720.ne. if(err0) then
3721 id%INFO(1) = -72
3722 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
3723 & id%INFO(2))
3724 endif
3725 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
3726 & id%COMM, id%MYID )
3727.LT. IF ( id%INFO(1) 0 ) GOTO 100
3728 write(unit,iostat=err) -999
3729 ENDIF
3730.ne. if(err0) then
3731 id%INFO(1) = -72
3732 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
3733 & id%INFO(2))
3734 endif
3735 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
3736 & id%COMM, id%MYID )
3737.LT. IF ( id%INFO(1) 0 ) GOTO 100
3738.EQ. elseif(trim(mode)"restore") then
3739 nullify(id%FILS)
3740 read(unit,iostat=err) size_array1
3741.ne. if(err0) THEN
3742 id%INFO(1) = -75
3743 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
3744 & ,id%INFO(2))
3745 endif
3746 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
3747 & id%COMM, id%MYID )
3748.LT. IF ( id%INFO(1) 0 ) GOTO 100
3749.EQ. if(size_array1-999) then
3750 SIZE_GEST(i1)=SIZE_INT*2
3751 SIZE_VARIABLES(i1)=0_8
3752 read(unit,iostat=err) dummy
3753 else
3754 SIZE_GEST(i1)=SIZE_INT
3755 SIZE_VARIABLES(i1)=size_array1*SIZE_INT
3756 allocate(id%FILS(size_array1), stat=allocok)
3757.GT. if (allocok 0) THEN
3758 id%INFO(1) = -78
3759 CALL MUMPS_SETI8TOI4(
3760 & TOTAL_STRUC_SIZE-size_allocated
3761 & ,id%INFO(2))
3762 endif
3763 read(unit,iostat=err) id%FILS
3764 endif
3765 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
3766 & id%COMM, id%MYID )
3767.LT. IF ( id%INFO(1) 0 ) GOTO 100
3768.ne. if(err0) THEN
3769 id%INFO(1) = -75
3770 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
3771 & ,id%INFO(2))
3772 endif
3773 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
3774 & id%COMM, id%MYID )
3775.LT. IF ( id%INFO(1) 0 ) GOTO 100
3776 endif
3777 CASE("ptrar")
3778 NbRecords(i1)=2
3779.EQ. if(trim(mode)"memory_save") then
3780 IF(associated(id%PTRAR)) THEN
3781 SIZE_GEST(i1)=SIZE_INT
3782 SIZE_VARIABLES(i1)=size(id%PTRAR,1)*SIZE_INT8
3783 ELSE
3784 SIZE_GEST(i1)=SIZE_INT*2
3785 SIZE_VARIABLES(i1)=0_8
3786 ENDIF
3787.EQ. elseif(trim(mode)"save") then
3788 IF(associated(id%PTRAR)) THEN
3789 write(unit,iostat=err) size(id%PTRAR,1)
3790.ne. if(err0) then
3791 id%INFO(1) = -72
3792 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
3793 & id%INFO(2))
3794 endif
3795 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
3796 & id%COMM, id%MYID )
3797.LT. IF ( id%INFO(1) 0 ) GOTO 100
3798 write(unit,iostat=err) id%PTRAR
3799 ELSE
3800 write(unit,iostat=err) -999
3801.ne. if(err0) then
3802 id%INFO(1) = -72
3803 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
3804 & id%INFO(2))
3805 endif
3806 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
3807 & id%COMM, id%MYID )
3808.LT. IF ( id%INFO(1) 0 ) GOTO 100
3809 write(unit,iostat=err) -999
3810 ENDIF
3811.ne. if(err0) then
3812 id%INFO(1) = -72
3813 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
3814 & id%INFO(2))
3815 endif
3816 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
3817 & id%COMM, id%MYID )
3818.LT. IF ( id%INFO(1) 0 ) GOTO 100
3819 NbRecords(i1)=2
3820.EQ. elseif(trim(mode)"restore") then
3821 nullify(id%PTRAR)
3822 read(unit,iostat=err) size_array1
3823.ne. if(err0) THEN
3824 id%INFO(1) = -75
3825 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
3826 & ,id%INFO(2))
3827 endif
3828 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
3829 & id%COMM, id%MYID )
3830.LT. IF ( id%INFO(1) 0 ) GOTO 100
3831.EQ. if(size_array1-999) then
3832 SIZE_GEST(i1)=SIZE_INT*2
3833 SIZE_VARIABLES(i1)=0_8
3834 read(unit,iostat=err) dummy
3835 else
3836 SIZE_GEST(i1)=SIZE_INT
3837 SIZE_VARIABLES(i1)=size_array1*SIZE_INT8
3838 allocate(id%PTRAR(size_array1), stat=allocok)
3839.GT. if (allocok 0) THEN
3840 id%INFO(1) = -78
3841 CALL MUMPS_SETI8TOI4(
3842 & TOTAL_STRUC_SIZE-size_allocated
3843 & ,id%INFO(2))
3844 endif
3845 read(unit,iostat=err) id%PTRAR
3846 endif
3847 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
3848 & id%COMM, id%MYID )
3849.LT. IF ( id%INFO(1) 0 ) GOTO 100
3850.ne. if(err0) THEN
3851 id%INFO(1) = -75
3852 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
3853 & ,id%INFO(2))
3854 endif
3855 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
3856 & id%COMM, id%MYID )
3857.LT. IF ( id%INFO(1) 0 ) GOTO 100
3858 endif
3859 CASE("frtptr")
3860 NbRecords(i1)=2
3861.EQ. if(trim(mode)"memory_save") then
3862 IF(associated(id%FRTPTR)) THEN
3863 SIZE_GEST(i1)=SIZE_INT
3864 SIZE_VARIABLES(i1)=size(id%FRTPTR,1)*SIZE_INT
3865 ELSE
3866 SIZE_GEST(i1)=SIZE_INT*2
3867 SIZE_VARIABLES(i1)=0_8
3868 ENDIF
3869.EQ. elseif(trim(mode)"save") then
3870 IF(associated(id%FRTPTR)) THEN
3871 write(unit,iostat=err) size(id%FRTPTR,1)
3872.ne. if(err0) then
3873 id%INFO(1) = -72
3874 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
3875 & id%INFO(2))
3876 endif
3877 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
3878 & id%COMM, id%MYID )
3879.LT. IF ( id%INFO(1) 0 ) GOTO 100
3880 write(unit,iostat=err) id%FRTPTR
3881 ELSE
3882 write(unit,iostat=err) -999
3883.ne. if(err0) then
3884 id%INFO(1) = -72
3885 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
3886 & id%INFO(2))
3887 endif
3888 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
3889 & id%COMM, id%MYID )
3890.LT. IF ( id%INFO(1) 0 ) GOTO 100
3891 write(unit,iostat=err) -999
3892 ENDIF
3893.ne. if(err0) then
3894 id%INFO(1) = -72
3895 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
3896 & id%INFO(2))
3897 endif
3898 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
3899 & id%COMM, id%MYID )
3900.LT. IF ( id%INFO(1) 0 ) GOTO 100
3901.EQ. elseif(trim(mode)"restore") then
3902 nullify(id%FRTPTR)
3903 read(unit,iostat=err) size_array1
3904.ne. if(err0) THEN
3905 id%INFO(1) = -75
3906 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
3907 & ,id%INFO(2))
3908 endif
3909 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
3910 & id%COMM, id%MYID )
3911.EQ. if(size_array1-999) then
3912 SIZE_GEST(i1)=SIZE_INT*2
3913 SIZE_VARIABLES(i1)=0_8
3914 read(unit,iostat=err) dummy
3915 else
3916 SIZE_GEST(i1)=SIZE_INT
3917 SIZE_VARIABLES(i1)=size_array1*SIZE_INT
3918 allocate(id%FRTPTR(size_array1), stat=allocok)
3919.GT. if (allocok 0) THEN
3920 id%INFO(1) = -78
3921 CALL MUMPS_SETI8TOI4(
3922 & TOTAL_STRUC_SIZE-size_allocated
3923 & ,id%INFO(2))
3924 endif
3925 read(unit,iostat=err) id%FRTPTR
3926 endif
3927 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
3928 & id%COMM, id%MYID )
3929.LT. IF ( id%INFO(1) 0 ) GOTO 100
3930.ne. if(err0) THEN
3931 id%INFO(1) = -75
3932 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
3933 & ,id%INFO(2))
3934 endif
3935 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
3936 & id%COMM, id%MYID )
3937.LT. IF ( id%INFO(1) 0 ) GOTO 100
3938 endif
3939 CASE("frtelt")
3940 NbRecords(i1)=2
3941.EQ. if(trim(mode)"memory_save") then
3942 IF(associated(id%FRTELT)) THEN
3943 SIZE_GEST(i1)=SIZE_INT
3944 SIZE_VARIABLES(i1)=size(id%FRTELT,1)*SIZE_INT
3945 ELSE
3946 SIZE_GEST(i1)=SIZE_INT*2
3947 SIZE_VARIABLES(i1)=0_8
3948 ENDIF
3949.EQ. elseif(trim(mode)"save") then
3950 IF(associated(id%FRTELT)) THEN
3951 write(unit,iostat=err) size(id%FRTELT,1)
3952.ne. if(err0) then
3953 id%INFO(1) = -72
3954 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
3955 & id%INFO(2))
3956 endif
3957 write(unit,iostat=err) id%FRTELT
3958 ELSE
3959 write(unit,iostat=err) -999
3960.ne. if(err0) then
3961 id%INFO(1) = -72
3962 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
3963 & id%INFO(2))
3964 endif
3965 write(unit,iostat=err) -999
3966 ENDIF
3967.ne. if(err0) then
3968 id%INFO(1) = -72
3969 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
3970 & id%INFO(2))
3971 endif
3972 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
3973 & id%COMM, id%MYID )
3974.LT. IF ( id%INFO(1) 0 ) GOTO 100
3975.EQ. elseif(trim(mode)"restore") then
3976 nullify(id%FRTELT)
3977 read(unit,iostat=err) size_array1
3978.ne. if(err0) THEN
3979 id%INFO(1) = -75
3980 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
3981 & ,id%INFO(2))
3982 endif
3983 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
3984 & id%COMM, id%MYID )
3985.LT. IF ( id%INFO(1) 0 ) GOTO 100
3986.EQ. if(size_array1-999) then
3987 SIZE_GEST(i1)=SIZE_INT*2
3988 SIZE_VARIABLES(i1)=0_8
3989 read(unit,iostat=err) dummy
3990 else
3991 SIZE_GEST(i1)=SIZE_INT
3992 SIZE_VARIABLES(i1)=size_array1*SIZE_INT
3993 allocate(id%FRTELT(size_array1), stat=allocok)
3994.GT. if (allocok 0) THEN
3995 id%INFO(1) = -78
3996 CALL MUMPS_SETI8TOI4(
3997 & TOTAL_STRUC_SIZE-size_allocated
3998 & ,id%INFO(2))
3999 endif
4000 read(unit,iostat=err) id%FRTELT
4001 endif
4002 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
4003 & id%COMM, id%MYID )
4004.LT. IF ( id%INFO(1) 0 ) GOTO 100
4005.ne. if(err0) THEN
4006 id%INFO(1) = -75
4007 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
4008 & ,id%INFO(2))
4009 endif
4010 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
4011 & id%COMM, id%MYID )
4012.LT. IF ( id%INFO(1) 0 ) GOTO 100
4013 endif
4014 CASE("na")
4015 NbRecords(i1)=2
4016.EQ. if(trim(mode)"memory_save") then
4017 IF(associated(id%NA)) THEN
4018 SIZE_GEST(i1)=SIZE_INT
4019 SIZE_VARIABLES(i1)=size(id%NA,1)*SIZE_INT
4020 ELSE
4021 SIZE_GEST(i1)=SIZE_INT*2
4022 SIZE_VARIABLES(i1)=0_8
4023 ENDIF
4024.EQ. elseif(trim(mode)"save") then
4025 IF(associated(id%NA)) THEN
4026 write(unit,iostat=err) size(id%NA,1)
4027.ne. if(err0) then
4028 id%INFO(1) = -72
4029 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
4030 & id%INFO(2))
4031 endif
4032 write(unit,iostat=err) id%NA
4033 ELSE
4034 write(unit,iostat=err) -999
4035.ne. if(err0) then
4036 id%INFO(1) = -72
4037 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
4038 & id%INFO(2))
4039 endif
4040 write(unit,iostat=err) -999
4041 ENDIF
4042.ne. if(err0) then
4043 id%INFO(1) = -72
4044 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
4045 & id%INFO(2))
4046 endif
4047 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
4048 & id%COMM, id%MYID )
4049.LT. IF ( id%INFO(1) 0 ) GOTO 100
4050.EQ. elseif(trim(mode)"restore") then
4051 nullify(id%NA)
4052 read(unit,iostat=err) size_array1
4053.ne. if(err0) THEN
4054 id%INFO(1) = -75
4055 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
4056 & ,id%INFO(2))
4057 endif
4058 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
4059 & id%COMM, id%MYID )
4060.LT. IF ( id%INFO(1) 0 ) GOTO 100
4061.EQ. if(size_array1-999) then
4062 SIZE_GEST(i1)=SIZE_INT*2
4063 SIZE_VARIABLES(i1)=0_8
4064 read(unit,iostat=err) dummy
4065 else
4066 SIZE_GEST(i1)=SIZE_INT
4067 SIZE_VARIABLES(i1)=size_array1*SIZE_INT
4068 allocate(id%NA(size_array1), stat=allocok)
4069.GT. if (allocok 0) THEN
4070 id%INFO(1) = -78
4071 CALL MUMPS_SETI8TOI4(
4072 & TOTAL_STRUC_SIZE-size_allocated
4073 & ,id%INFO(2))
4074 endif
4075 read(unit,iostat=err) id%NA
4076 endif
4077 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
4078 & id%COMM, id%MYID )
4079.LT. IF ( id%INFO(1) 0 ) GOTO 100
4080.ne. if(err0) THEN
4081 id%INFO(1) = -75
4082 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
4083 & ,id%INFO(2))
4084 endif
4085 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
4086 & id%COMM, id%MYID )
4087.LT. IF ( id%INFO(1) 0 ) GOTO 100
4088 endif
4089 CASE("procnode_steps")
4090 NbRecords(i1)=2
4091.EQ. if(trim(mode)"memory_save") then
4092 NbRecords(i1)=2
4093 IF(associated(id%PROCNODE_STEPS)) THEN
4094 SIZE_GEST(i1)=SIZE_INT
4095 SIZE_VARIABLES(i1)=size(id%PROCNODE_STEPS,1)*SIZE_INT
4096 ELSE
4097 SIZE_GEST(i1)=SIZE_INT*2
4098 SIZE_VARIABLES(i1)=0_8
4099 ENDIF
4100.EQ. elseif(trim(mode)"save") then
4101 IF(associated(id%PROCNODE_STEPS)) THEN
4102 write(unit,iostat=err) size(id%PROCNODE_STEPS,1)
4103.ne. if(err0) then
4104 id%INFO(1) = -72
4105 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
4106 & id%INFO(2))
4107 endif
4108 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
4109 & id%COMM, id%MYID )
4110.LT. IF ( id%INFO(1) 0 ) GOTO 100
4111 write(unit,iostat=err) id%PROCNODE_STEPS
4112 ELSE
4113 write(unit,iostat=err) -999
4114.ne. if(err0) then
4115 id%INFO(1) = -72
4116 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
4117 & id%INFO(2))
4118 endif
4119 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
4120 & id%COMM, id%MYID )
4121.LT. IF ( id%INFO(1) 0 ) GOTO 100
4122 write(unit,iostat=err) -999
4123 ENDIF
4124.ne. if(err0) then
4125 id%INFO(1) = -72
4126 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
4127 & id%INFO(2))
4128 endif
4129 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
4130 & id%COMM, id%MYID )
4131.LT. IF ( id%INFO(1) 0 ) GOTO 100
4132.EQ. elseif(trim(mode)"restore") then
4133 nullify(id%PROCNODE_STEPS)
4134 read(unit,iostat=err) size_array1
4135.ne. if(err0) THEN
4136 id%INFO(1) = -75
4137 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
4138 & ,id%INFO(2))
4139 endif
4140 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
4141 & id%COMM, id%MYID )
4142.LT. IF ( id%INFO(1) 0 ) GOTO 100
4143.EQ. if(size_array1-999) then
4144 SIZE_GEST(i1)=SIZE_INT*2
4145 SIZE_VARIABLES(i1)=0_8
4146 read(unit,iostat=err) dummy
4147 else
4148 SIZE_GEST(i1)=SIZE_INT
4149 SIZE_VARIABLES(i1)=size_array1*SIZE_INT
4150 allocate(id%PROCNODE_STEPS(size_array1), stat=allocok)
4151.GT. if (allocok 0) THEN
4152 id%INFO(1) = -78
4153 CALL MUMPS_SETI8TOI4(
4154 & TOTAL_STRUC_SIZE-size_allocated
4155 & ,id%INFO(2))
4156 endif
4157 read(unit,iostat=err) id%PROCNODE_STEPS
4158 endif
4159 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
4160 & id%COMM, id%MYID )
4161.LT. IF ( id%INFO(1) 0 ) GOTO 100
4162.ne. if(err0) THEN
4163 id%INFO(1) = -75
4164 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
4165 & ,id%INFO(2))
4166 endif
4167 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
4168 & id%COMM, id%MYID )
4169.LT. IF ( id%INFO(1) 0 ) GOTO 100
4170 endif
4171 CASE("ptlust_s")
4172 NbRecords(i1)=2
4173.EQ. if(trim(mode)"memory_save") then
4174 IF(associated(id%PTLUST_S)) THEN
4175 SIZE_GEST(i1)=SIZE_INT
4176 SIZE_VARIABLES(i1)=size(id%PTLUST_S,1)*SIZE_INT
4177 ELSE
4178 SIZE_GEST(i1)=SIZE_INT*2
4179 SIZE_VARIABLES(i1)=0_8
4180 ENDIF
4181.EQ. elseif(trim(mode)"save") then
4182 IF(associated(id%PTLUST_S)) THEN
4183 write(unit,iostat=err) size(id%PTLUST_S,1)
4184.ne. if(err0) then
4185 id%INFO(1) = -72
4186 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
4187 & id%INFO(2))
4188 endif
4189 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
4190 & id%COMM, id%MYID )
4191.LT. IF ( id%INFO(1) 0 ) GOTO 100
4192 write(unit,iostat=err) id%PTLUST_S
4193 ELSE
4194 write(unit,iostat=err) -999
4195.ne. if(err0) then
4196 id%INFO(1) = -72
4197 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
4198 & id%INFO(2))
4199 endif
4200 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
4201 & id%COMM, id%MYID )
4202.LT. IF ( id%INFO(1) 0 ) GOTO 100
4203 write(unit,iostat=err) -999
4204 ENDIF
4205.ne. if(err0) then
4206 id%INFO(1) = -72
4207 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
4208 & id%INFO(2))
4209 endif
4210 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
4211 & id%COMM, id%MYID )
4212.LT. IF ( id%INFO(1) 0 ) GOTO 100
4213.EQ. elseif(trim(mode)"restore") then
4214 nullify(id%PTLUST_S)
4215 read(unit,iostat=err) size_array1
4216.ne. if(err0) THEN
4217 id%INFO(1) = -75
4218 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
4219 & ,id%INFO(2))
4220 endif
4221 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
4222 & id%COMM, id%MYID )
4223.LT. IF ( id%INFO(1) 0 ) GOTO 100
4224.EQ. if(size_array1-999) then
4225 SIZE_GEST(i1)=SIZE_INT*2
4226 SIZE_VARIABLES(i1)=0_8
4227 read(unit,iostat=err) dummy
4228 else
4229 SIZE_GEST(i1)=SIZE_INT
4230 SIZE_VARIABLES(i1)=size_array1*SIZE_INT
4231 allocate(id%PTLUST_S(size_array1), stat=allocok)
4232.GT. if (allocok 0) THEN
4233 id%INFO(1) = -78
4234 CALL MUMPS_SETI8TOI4(
4235 & TOTAL_STRUC_SIZE-size_allocated
4236 & ,id%INFO(2))
4237 endif
4238 read(unit,iostat=err) id%PTLUST_S
4239 endif
4240 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
4241 & id%COMM, id%MYID )
4242.LT. IF ( id%INFO(1) 0 ) GOTO 100
4243.ne. if(err0) THEN
4244 id%INFO(1) = -75
4245 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
4246 & ,id%INFO(2))
4247 endif
4248 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
4249 & id%COMM, id%MYID )
4250.LT. IF ( id%INFO(1) 0 ) GOTO 100
4251 endif
4252 CASE("ptrfac")
4253 NbRecords(i1)=2
4254.EQ. if(trim(mode)"memory_save") then
4255 IF(associated(id%PTRFAC)) THEN
4256 SIZE_GEST(i1)=SIZE_INT
4257 SIZE_VARIABLES(i1)=size(id%PTRFAC,1)*SIZE_INT8
4258 ELSE
4259 SIZE_GEST(i1)=SIZE_INT*2
4260 SIZE_VARIABLES(i1)=0_8
4261 ENDIF
4262.EQ. elseif(trim(mode)"save") then
4263 IF(associated(id%PTRFAC)) THEN
4264 write(unit,iostat=err) size(id%PTRFAC,1)
4265.ne. if(err0) then
4266 id%INFO(1) = -72
4267 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
4268 & id%INFO(2))
4269 endif
4270 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
4271 & id%COMM, id%MYID )
4272 write(unit,iostat=err) id%PTRFAC
4273 ELSE
4274 write(unit,iostat=err) -999
4275.ne. if(err0) then
4276 id%INFO(1) = -72
4277 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
4278 & id%INFO(2))
4279 endif
4280 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
4281 & id%COMM, id%MYID )
4282.LT. IF ( id%INFO(1) 0 ) GOTO 100
4283 write(unit,iostat=err) -999
4284 ENDIF
4285.ne. if(err0) then
4286 id%INFO(1) = -72
4287 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
4288 & id%INFO(2))
4289 endif
4290 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
4291 & id%COMM, id%MYID )
4292.LT. IF ( id%INFO(1) 0 ) GOTO 100
4293.EQ. elseif(trim(mode)"restore") then
4294 nullify(id%PTRFAC)
4295 read(unit,iostat=err) size_array1
4296.ne. if(err0) THEN
4297 id%INFO(1) = -75
4298 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
4299 & ,id%INFO(2))
4300 endif
4301 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
4302 & id%COMM, id%MYID )
4303.LT. IF ( id%INFO(1) 0 ) GOTO 100
4304.EQ. if(size_array1-999) then
4305 SIZE_GEST(i1)=SIZE_INT*2
4306 SIZE_VARIABLES(i1)=0_8
4307 read(unit,iostat=err) dummy
4308 else
4309 SIZE_GEST(i1)=SIZE_INT
4310 SIZE_VARIABLES(i1)=size_array1*SIZE_INT8
4311 allocate(id%PTRFAC(size_array1), stat=allocok)
4312.GT. if (allocok 0) THEN
4313 id%INFO(1) = -78
4314 CALL MUMPS_SETI8TOI4(
4315 & TOTAL_STRUC_SIZE-size_allocated
4316 & ,id%INFO(2))
4317 endif
4318 read(unit,iostat=err) id%PTRFAC
4319 endif
4320 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
4321 & id%COMM, id%MYID )
4322.LT. IF ( id%INFO(1) 0 ) GOTO 100
4323.ne. if(err0) THEN
4324 id%INFO(1) = -75
4325 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
4326 & ,id%INFO(2))
4327 endif
4328 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
4329 & id%COMM, id%MYID )
4330.LT. IF ( id%INFO(1) 0 ) GOTO 100
4331 endif
4332 CASE("s")
4333 NbRecords(i1)=2
4334.EQ. if(trim(mode)"memory_save") then
4335 IF(associated(id%S)) THEN
4336 SIZE_GEST(i1)=SIZE_INT8*2
4337 SIZE_VARIABLES(i1)=id%KEEP8(31)*SIZE_ARITH_DEP
4338 DIFF_SIZE_ALLOC_READ(i1)=
4339 & SIZE_ARITH_DEP*(id%KEEP8(23)-id%KEEP8(31))
4340 ELSE
4341 SIZE_GEST(i1)=SIZE_INT8*2+SIZE_INT
4342 SIZE_VARIABLES(i1)=0_8
4343 ENDIF
4344.EQ. elseif(trim(mode)"save") then
4345 IF(associated(id%S)) THEN
4346 write(unit,iostat=err) id%KEEP8(23),id%KEEP8(31)
4347.ne. if(err0) then
4348 id%INFO(1) = -72
4349 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
4350 & id%INFO(2))
4351 endif
4352 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
4353 & id%COMM, id%MYID )
4354.LT. IF ( id%INFO(1) 0 ) GOTO 100
4355 write(unit,iostat=err) id%S(1:id%KEEP8(31))
4356 DIFF_SIZE_ALLOC_READ(i1)=
4357 & SIZE_ARITH_DEP*(id%KEEP8(23)-id%KEEP8(31))
4358 ELSE
4359 write(unit,iostat=err) int(-999,kind=8)
4360 & ,int(-998,kind=8)
4361.ne. if(err0) then
4362 id%INFO(1) = -72
4363 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
4364 & id%INFO(2))
4365 endif
4366 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
4367 & id%COMM, id%MYID )
4368.LT. IF ( id%INFO(1) 0 ) GOTO 100
4369 write(unit,iostat=err) -999
4370 ENDIF
4371.ne. if(err0) then
4372 id%INFO(1) = -72
4373 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
4374 & id%INFO(2))
4375 endif
4376 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
4377 & id%COMM, id%MYID )
4378.LT. IF ( id%INFO(1) 0 ) GOTO 100
4379.EQ. elseif(trim(mode)"restore") then
4380 nullify(id%S)
4381 read(unit,iostat=err) size_array_INT8_1,size_array_INT8_2
4382.ne. if(err0) THEN
4383 id%INFO(1) = -75
4384 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
4385 & ,id%INFO(2))
4386 endif
4387 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
4388 & id%COMM, id%MYID )
4389.LT. IF ( id%INFO(1) 0 ) GOTO 100
4390.EQ. if(size_array_INT8_1int(-999,kind=8)) then
4391 SIZE_GEST(i1)=SIZE_INT8*2+SIZE_INT
4392 SIZE_VARIABLES(i1)=0_8
4393 read(unit,iostat=err) dummy
4394 else
4395 SIZE_GEST(i1)=SIZE_INT8*2
4396 SIZE_VARIABLES(i1)=size_array_INT8_2*SIZE_ARITH_DEP
4397 DIFF_SIZE_ALLOC_READ(i1)=
4398 & SIZE_ARITH_DEP*
4399 & (size_array_INT8_1-size_array_INT8_2)
4400 allocate(id%S(1:size_array_INT8_1), stat=allocok)
4401.GT. if (allocok 0) THEN
4402 id%INFO(1) = -78
4403 CALL MUMPS_SETI8TOI4(
4404 & TOTAL_STRUC_SIZE-size_allocated
4405 & ,id%INFO(2))
4406 endif
4407 read(unit,iostat=err) id%S(1:size_array_INT8_2)
4408 endif
4409 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
4410 & id%COMM, id%MYID )
4411.LT. IF ( id%INFO(1) 0 ) GOTO 100
4412.ne. if(err0) THEN
4413 id%INFO(1) = -75
4414 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
4415 & ,id%INFO(2))
4416 endif
4417 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
4418 & id%COMM, id%MYID )
4419.LT. IF ( id%INFO(1) 0 ) GOTO 100
4420 endif
4421 CASE("procnode")
4422 CASE("intarr")
4423 NbRecords(i1)=2
4424.EQ. if(trim(mode)"memory_save") then
4425 IF(associated(id%INTARR)) THEN
4426 SIZE_GEST(i1)=SIZE_INT8
4427 SIZE_VARIABLES(i1)=id%KEEP8(27)*SIZE_INT
4428 ELSE
4429 SIZE_GEST(i1)=SIZE_INT8+SIZE_INT
4430 SIZE_VARIABLES(i1)=0_8
4431 ENDIF
4432.EQ. elseif(trim(mode)"save") then
4433 IF(associated(id%INTARR)) THEN
4434 write(unit,iostat=err) id%KEEP8(27)
4435.ne. if(err0) then
4436 id%INFO(1) = -72
4437 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
4438 & id%INFO(2))
4439 endif
4440 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
4441 & id%COMM, id%MYID )
4442.LT. IF ( id%INFO(1) 0 ) GOTO 100
4443 write(unit,iostat=err) id%INTARR
4444 ELSE
4445 write(unit,iostat=err) int(-999,8)
4446.ne. if(err0) then
4447 id%INFO(1) = -72
4448 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
4449 & id%INFO(2))
4450 endif
4451 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
4452 & id%COMM, id%MYID )
4453.LT. IF ( id%INFO(1) 0 ) GOTO 100
4454 write(unit,iostat=err) -999
4455 ENDIF
4456.ne. if(err0) then
4457 id%INFO(1) = -72
4458 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
4459 & id%INFO(2))
4460 endif
4461 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
4462 & id%COMM, id%MYID )
4463.LT. IF ( id%INFO(1) 0 ) GOTO 100
4464.EQ. elseif(trim(mode)"restore") then
4465 nullify(id%INTARR)
4466 read(unit,iostat=err) size_array_INT8_1
4467.ne. if(err0) THEN
4468 id%INFO(1) = -75
4469 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
4470 & ,id%INFO(2))
4471 endif
4472 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
4473 & id%COMM, id%MYID )
4474.LT. IF ( id%INFO(1) 0 ) GOTO 100
4475.EQ. if(size_array_INT8_1int(-999,8)) then
4476 SIZE_GEST(i1)=SIZE_INT8+SIZE_INT
4477 SIZE_VARIABLES(i1)=0_8
4478 read(unit,iostat=err) dummy
4479 else
4480 SIZE_GEST(i1)=SIZE_INT8
4481 SIZE_VARIABLES(i1)=size_array_INT8_1*SIZE_INT
4482 allocate(id%INTARR(size_array_INT8_1), stat=allocok)
4483.GT. if (allocok 0) THEN
4484 id%INFO(1) = -78
4485 CALL MUMPS_SETI8TOI4(
4486 & TOTAL_STRUC_SIZE-size_allocated
4487 & ,id%INFO(2))
4488 endif
4489 read(unit,iostat=err) id%INTARR
4490 endif
4491 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
4492 & id%COMM, id%MYID )
4493.LT. IF ( id%INFO(1) 0 ) GOTO 100
4494.ne. if(err0) THEN
4495 id%INFO(1) = -75
4496 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
4497 & ,id%INFO(2))
4498 endif
4499 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
4500 & id%COMM, id%MYID )
4501.LT. IF ( id%INFO(1) 0 ) GOTO 100
4502 endif
4503 CASE("dblarr")
4504 CASE("nelt_loc")
4505 NbRecords(i1)=1
4506.EQ. if(trim(mode)"memory_save") then
4507 SIZE_VARIABLES(i1)=SIZE_INT
4508.EQ. elseif(trim(mode)"save") then
4509 write(unit,iostat=err) id%NELT_loc
4510.ne. if(err0) then
4511 id%INFO(1) = -72
4512 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
4513 & id%INFO(2))
4514 endif
4515 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
4516 & id%COMM, id%MYID )
4517.LT. IF ( id%INFO(1) 0 ) GOTO 100
4518.EQ. elseif(trim(mode)"restore") then
4519 SIZE_VARIABLES(i1)=SIZE_INT
4520 read(unit,iostat=err) id%NELT_loc
4521.ne. if(err0) THEN
4522 id%INFO(1) = -75
4523 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
4524 & ,id%INFO(2))
4525 endif
4526 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
4527 & id%COMM, id%MYID )
4528.LT. IF ( id%INFO(1) 0 ) GOTO 100
4529 endif
4530 CASE("leltvar")
4531 NbRecords(i1)=1
4532.EQ. if(trim(mode)"memory_save") then
4533 SIZE_VARIABLES(i1)=SIZE_INT
4534.EQ. elseif(trim(mode)"save") then
4535 write(unit,iostat=err) id%LELTVAR
4536.ne. if(err0) then
4537 id%INFO(1) = -72
4538 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
4539 & id%INFO(2))
4540 endif
4541 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
4542 & id%COMM, id%MYID )
4543.LT. IF ( id%INFO(1) 0 ) GOTO 100
4544.EQ. elseif(trim(mode)"restore") then
4545 SIZE_VARIABLES(i1)=SIZE_INT
4546 read(unit,iostat=err) id%LELTVAR
4547.ne. if(err0) THEN
4548 id%INFO(1) = -75
4549 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
4550 & ,id%INFO(2))
4551 endif
4552 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
4553 & id%COMM, id%MYID )
4554.LT. IF ( id%INFO(1) 0 ) GOTO 100
4555 endif
4556 CASE("eltproc")
4557 NbRecords(i1)=2
4558.EQ. if(trim(mode)"memory_save") then
4559 IF(associated(id%ELTPROC)) THEN
4560 SIZE_GEST(i1)=SIZE_INT
4561 SIZE_VARIABLES(i1)=size(id%ELTPROC,1)*SIZE_INT
4562 ELSE
4563 SIZE_GEST(i1)=SIZE_INT*2
4564 SIZE_VARIABLES(i1)=0_8
4565 ENDIF
4566.EQ. elseif(trim(mode)"save") then
4567 IF(associated(id%ELTPROC)) THEN
4568 write(unit,iostat=err) size(id%ELTPROC,1)
4569.ne. if(err0) then
4570 id%INFO(1) = -72
4571 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
4572 & id%INFO(2))
4573 endif
4574 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
4575 & id%COMM, id%MYID )
4576.LT. IF ( id%INFO(1) 0 ) GOTO 100
4577 write(unit,iostat=err) id%ELTPROC
4578 ELSE
4579 write(unit,iostat=err) -999
4580.ne. if(err0) then
4581 id%INFO(1) = -72
4582 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
4583 & id%INFO(2))
4584 endif
4585 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
4586 & id%COMM, id%MYID )
4587.LT. IF ( id%INFO(1) 0 ) GOTO 100
4588 write(unit,iostat=err) -999
4589 ENDIF
4590.ne. if(err0) then
4591 id%INFO(1) = -72
4592 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
4593 & id%INFO(2))
4594 endif
4595 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
4596 & id%COMM, id%MYID )
4597.LT. IF ( id%INFO(1) 0 ) GOTO 100
4598.EQ. elseif(trim(mode)"restore") then
4599 nullify(id%ELTPROC)
4600 read(unit,iostat=err) size_array1
4601.ne. if(err0) THEN
4602 id%INFO(1) = -75
4603 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
4604 & ,id%INFO(2))
4605 endif
4606 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
4607 & id%COMM, id%MYID )
4608.LT. IF ( id%INFO(1) 0 ) GOTO 100
4609.EQ. if(size_array1-999) then
4610 SIZE_GEST(i1)=SIZE_INT*2
4611 SIZE_VARIABLES(i1)=0_8
4612 read(unit,iostat=err) dummy
4613 else
4614 SIZE_GEST(i1)=SIZE_INT
4615 SIZE_VARIABLES(i1)=size_array1*SIZE_INT
4616 allocate(id%ELTPROC(size_array1), stat=allocok)
4617.GT. if (allocok 0) THEN
4618 id%INFO(1) = -78
4619 CALL MUMPS_SETI8TOI4(
4620 & TOTAL_STRUC_SIZE-size_allocated
4621 & ,id%INFO(2))
4622 endif
4623 read(unit,iostat=err) id%ELTPROC
4624 endif
4625 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
4626 & id%COMM, id%MYID )
4627.LT. IF ( id%INFO(1) 0 ) GOTO 100
4628.ne. if(err0) THEN
4629 id%INFO(1) = -75
4630 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
4631 & ,id%INFO(2))
4632 endif
4633 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
4634 & id%COMM, id%MYID )
4635.LT. IF ( id%INFO(1) 0 ) GOTO 100
4636 endif
4637 CASE("i4_l0_omp")
4638 NbRecords(i1)=2
4639.EQ. if(trim(mode)"memory_save") then
4640 IF(associated(id%I4_L0_OMP)) THEN
4641 SIZE_GEST(i1)=SIZE_INT*2
4642 SIZE_VARIABLES(i1)=size(id%I4_L0_OMP,1)
4643 & *size(id%I4_L0_OMP,2)*SIZE_INT
4644 ELSE
4645 SIZE_GEST(i1)=SIZE_INT*3
4646 SIZE_VARIABLES(i1)=0_8
4647 ENDIF
4648.EQ. elseif(trim(mode)"save") then
4649 IF(associated(id%I4_L0_OMP)) THEN
4650 write(unit,iostat=err) size(id%I4_L0_OMP,1)
4651 & ,size(id%I4_L0_OMP,2)
4652.ne. if(err0) then
4653 id%INFO(1) = -72
4654 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
4655 & id%INFO(2))
4656 endif
4657 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
4658 & id%COMM, id%MYID )
4659.LT. IF ( id%INFO(1) 0 ) GOTO 100
4660 write(unit,iostat=err) id%I4_L0_OMP
4661 ELSE
4662 write(unit,iostat=err) -999,-998
4663.ne. if(err0) then
4664 id%INFO(1) = -72
4665 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
4666 & id%INFO(2))
4667 endif
4668 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
4669 & id%COMM, id%MYID )
4670.LT. IF ( id%INFO(1) 0 ) GOTO 100
4671 write(unit,iostat=err) -999
4672 ENDIF
4673.ne. if(err0) then
4674 id%INFO(1) = -72
4675 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
4676 & id%INFO(2))
4677 endif
4678 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
4679 & id%COMM, id%MYID )
4680.LT. IF ( id%INFO(1) 0 ) GOTO 100
4681.EQ. elseif(trim(mode)"restore") then
4682 nullify(id%I4_L0_OMP)
4683 read(unit,iostat=err) size_array1,size_array2
4684.ne. if(err0) THEN
4685 id%INFO(1) = -75
4686 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
4687 & ,id%INFO(2))
4688 endif
4689 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
4690 & id%COMM, id%MYID )
4691.LT. IF ( id%INFO(1) 0 ) GOTO 100
4692.EQ. if(size_array1-999) then
4693 SIZE_GEST(i1)=SIZE_INT*3
4694 SIZE_VARIABLES(i1)=0_8
4695 read(unit,iostat=err) dummy
4696 else
4697 SIZE_GEST(i1)=SIZE_INT*2
4698 SIZE_VARIABLES(i1)=size_array1*size_array2*SIZE_INT
4699 allocate(id%I4_L0_OMP(size_array1,size_array2)
4700 & , stat=allocok)
4701.GT. if (allocok 0) THEN
4702 id%INFO(1) = -78
4703 CALL MUMPS_SETI8TOI4(
4704 & TOTAL_STRUC_SIZE-size_allocated
4705 & ,id%INFO(2))
4706 endif
4707 read(unit,iostat=err) id%I4_L0_OMP
4708 endif
4709 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
4710 & id%COMM, id%MYID )
4711.LT. IF ( id%INFO(1) 0 ) GOTO 100
4712.ne. if(err0) THEN
4713 id%INFO(1) = -75
4714 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
4715 & ,id%INFO(2))
4716 endif
4717 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
4718 & id%COMM, id%MYID )
4719.LT. IF ( id%INFO(1) 0 ) GOTO 100
4720 endif
4721 CASE("i8_l0_omp")
4722 NbRecords(i1)=2
4723.EQ. if(trim(mode)"memory_save") then
4724 IF(associated(id%I8_L0_OMP)) THEN
4725 SIZE_GEST(i1)=SIZE_INT*2
4726 SIZE_VARIABLES(i1)=size(id%I8_L0_OMP,1)
4727 & *size(id%I8_L0_OMP,2)*SIZE_INT8
4728 ELSE
4729 SIZE_GEST(i1)=SIZE_INT*3
4730 SIZE_VARIABLES(i1)=0_8
4731 ENDIF
4732.EQ. elseif(trim(mode)"save") then
4733 IF(associated(id%I8_L0_OMP)) THEN
4734 write(unit,iostat=err) size(id%I8_L0_OMP,1)
4735 & ,size(id%I8_L0_OMP,2)
4736.ne. if(err0) then
4737 id%INFO(1) = -72
4738 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
4739 & id%INFO(2))
4740 endif
4741 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
4742 & id%COMM, id%MYID )
4743.LT. IF ( id%INFO(1) 0 ) GOTO 100
4744 write(unit,iostat=err) id%I8_L0_OMP
4745 ELSE
4746 write(unit,iostat=err) -999,-998
4747.ne. if(err0) then
4748 id%INFO(1) = -72
4749 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
4750 & id%INFO(2))
4751 endif
4752 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
4753 & id%COMM, id%MYID )
4754.LT. IF ( id%INFO(1) 0 ) GOTO 100
4755 write(unit,iostat=err) -999
4756 ENDIF
4757.ne. if(err0) then
4758 id%INFO(1) = -72
4759 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
4760 & id%INFO(2))
4761 endif
4762 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
4763 & id%COMM, id%MYID )
4764.LT. IF ( id%INFO(1) 0 ) GOTO 100
4765.EQ. elseif(trim(mode)"restore") then
4766 nullify(id%I8_L0_OMP)
4767 read(unit,iostat=err) size_array1,size_array2
4768.ne. if(err0) THEN
4769 id%INFO(1) = -75
4770 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
4771 & ,id%INFO(2))
4772 endif
4773 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
4774 & id%COMM, id%MYID )
4775.LT. IF ( id%INFO(1) 0 ) GOTO 100
4776.EQ. if(size_array1-999) then
4777 SIZE_GEST(i1)=SIZE_INT*3
4778 SIZE_VARIABLES(i1)=0_8
4779 read(unit,iostat=err) dummy
4780 else
4781 SIZE_GEST(i1)=SIZE_INT*2
4782 SIZE_VARIABLES(i1)=size_array1*size_array2*SIZE_INT8
4783 allocate(id%I8_L0_OMP(size_array1,size_array2)
4784 & , stat=allocok)
4785.GT. if (allocok 0) THEN
4786 id%INFO(1) = -78
4787 CALL MUMPS_SETI8TOI4(
4788 & TOTAL_STRUC_SIZE-size_allocated
4789 & ,id%INFO(2))
4790 endif
4791 read(unit,iostat=err) id%I8_L0_OMP
4792 endif
4793 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
4794 & id%COMM, id%MYID )
4795.LT. IF ( id%INFO(1) 0 ) GOTO 100
4796.ne. if(err0) THEN
4797 id%INFO(1) = -75
4798 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
4799 & ,id%INFO(2))
4800 endif
4801 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
4802 & id%COMM, id%MYID )
4803.LT. IF ( id%INFO(1) 0 ) GOTO 100
4804 endif
4805 CASE("candidates")
4806 NbRecords(i1)=2
4807.EQ. if(trim(mode)"memory_save") then
4808 IF(associated(id%CANDIDATES)) THEN
4809 SIZE_GEST(i1)=SIZE_INT*2
4810 SIZE_VARIABLES(i1)=size(id%CANDIDATES,1)
4811 & *size(id%CANDIDATES,2)*SIZE_INT
4812 ELSE
4813 SIZE_GEST(i1)=SIZE_INT*3
4814 SIZE_VARIABLES(i1)=0_8
4815 ENDIF
4816.EQ. elseif(trim(mode)"save") then
4817 IF(associated(id%CANDIDATES)) THEN
4818 write(unit,iostat=err) size(id%CANDIDATES,1)
4819 & ,size(id%CANDIDATES,2)
4820.ne. if(err0) then
4821 id%INFO(1) = -72
4822 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
4823 & id%INFO(2))
4824 endif
4825 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
4826 & id%COMM, id%MYID )
4827.LT. IF ( id%INFO(1) 0 ) GOTO 100
4828 write(unit,iostat=err) id%CANDIDATES
4829 ELSE
4830 write(unit,iostat=err) -999,-998
4831.ne. if(err0) then
4832 id%INFO(1) = -72
4833 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
4834 & id%INFO(2))
4835 endif
4836 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
4837 & id%COMM, id%MYID )
4838.LT. IF ( id%INFO(1) 0 ) GOTO 100
4839 write(unit,iostat=err) -999
4840 ENDIF
4841.ne. if(err0) then
4842 id%INFO(1) = -72
4843 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
4844 & id%INFO(2))
4845 endif
4846 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
4847 & id%COMM, id%MYID )
4848.LT. IF ( id%INFO(1) 0 ) GOTO 100
4849.EQ. elseif(trim(mode)"restore") then
4850 nullify(id%CANDIDATES)
4851 read(unit,iostat=err) size_array1,size_array2
4852.ne. if(err0) THEN
4853 id%INFO(1) = -75
4854 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
4855 & ,id%INFO(2))
4856 endif
4857 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
4858 & id%COMM, id%MYID )
4859.LT. IF ( id%INFO(1) 0 ) GOTO 100
4860.EQ. if(size_array1-999) then
4861 SIZE_GEST(i1)=SIZE_INT*3
4862 SIZE_VARIABLES(i1)=0_8
4863 read(unit,iostat=err) dummy
4864 else
4865 SIZE_GEST(i1)=SIZE_INT*2
4866 SIZE_VARIABLES(i1)=size_array1*size_array2*SIZE_INT
4867 allocate(id%CANDIDATES(size_array1,size_array2)
4868 & , stat=allocok)
4869.GT. if (allocok 0) THEN
4870 id%INFO(1) = -78
4871 CALL MUMPS_SETI8TOI4(
4872 & TOTAL_STRUC_SIZE-size_allocated
4873 & ,id%INFO(2))
4874 endif
4875 read(unit,iostat=err) id%CANDIDATES
4876 endif
4877 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
4878 & id%COMM, id%MYID )
4879.LT. IF ( id%INFO(1) 0 ) GOTO 100
4880.ne. if(err0) THEN
4881 id%INFO(1) = -75
4882 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
4883 & ,id%INFO(2))
4884 endif
4885 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
4886 & id%COMM, id%MYID )
4887.LT. IF ( id%INFO(1) 0 ) GOTO 100
4888 endif
4889 CASE("istep_to_iniv2")
4890 NbRecords(i1)=2
4891.EQ. if(trim(mode)"memory_save") then
4892 IF(associated(id%ISTEP_TO_INIV2)) THEN
4893 SIZE_GEST(i1)=SIZE_INT
4894 SIZE_VARIABLES(i1)=size(id%ISTEP_TO_INIV2,1)*SIZE_INT
4895 ELSE
4896 SIZE_GEST(i1)=SIZE_INT*2
4897 SIZE_VARIABLES(i1)=0_8
4898 ENDIF
4899.EQ. elseif(trim(mode)"save") then
4900 IF(associated(id%ISTEP_TO_INIV2)) THEN
4901 write(unit,iostat=err) size(id%ISTEP_TO_INIV2,1)
4902.ne. if(err0) then
4903 id%INFO(1) = -72
4904 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
4905 & id%INFO(2))
4906 endif
4907 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
4908 & id%COMM, id%MYID )
4909.LT. IF ( id%INFO(1) 0 ) GOTO 100
4910 write(unit,iostat=err) id%ISTEP_TO_INIV2
4911 ELSE
4912 write(unit,iostat=err) -999
4913.ne. if(err0) then
4914 id%INFO(1) = -72
4915 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
4916 & id%INFO(2))
4917 endif
4918 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
4919 & id%COMM, id%MYID )
4920.LT. IF ( id%INFO(1) 0 ) GOTO 100
4921 write(unit,iostat=err) -999
4922 ENDIF
4923.ne. if(err0) then
4924 id%INFO(1) = -72
4925 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
4926 & id%INFO(2))
4927 endif
4928 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
4929 & id%COMM, id%MYID )
4930.LT. IF ( id%INFO(1) 0 ) GOTO 100
4931.EQ. elseif(trim(mode)"restore") then
4932 nullify(id%ISTEP_TO_INIV2)
4933 read(unit,iostat=err) size_array1
4934.ne. if(err0) THEN
4935 id%INFO(1) = -75
4936 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
4937 & ,id%INFO(2))
4938 endif
4939 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
4940 & id%COMM, id%MYID )
4941.LT. IF ( id%INFO(1) 0 ) GOTO 100
4942.EQ. if(size_array1-999) then
4943 SIZE_GEST(i1)=SIZE_INT*2
4944 SIZE_VARIABLES(i1)=0_8
4945 read(unit,iostat=err) dummy
4946 else
4947 SIZE_GEST(i1)=SIZE_INT
4948 SIZE_VARIABLES(i1)=size_array1*SIZE_INT
4949 allocate(id%ISTEP_TO_INIV2(size_array1), stat=allocok)
4950.GT. if (allocok 0) THEN
4951 id%INFO(1) = -78
4952 CALL MUMPS_SETI8TOI4(
4953 & TOTAL_STRUC_SIZE-size_allocated
4954 & ,id%INFO(2))
4955 endif
4956 read(unit,iostat=err) id%ISTEP_TO_INIV2
4957 endif
4958 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
4959 & id%COMM, id%MYID )
4960.LT. IF ( id%INFO(1) 0 ) GOTO 100
4961.ne. if(err0) THEN
4962 id%INFO(1) = -75
4963 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
4964 & ,id%INFO(2))
4965 endif
4966 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
4967 & id%COMM, id%MYID )
4968.LT. IF ( id%INFO(1) 0 ) GOTO 100
4969 endif
4970 CASE("future_niv2")
4971 NbRecords(i1)=2
4972.EQ. if(trim(mode)"memory_save") then
4973 IF(associated(id%FUTURE_NIV2)) THEN
4974 SIZE_GEST(i1)=SIZE_INT
4975 SIZE_VARIABLES(i1)=size(id%FUTURE_NIV2,1)*SIZE_INT
4976 ELSE
4977 SIZE_GEST(i1)=SIZE_INT*2
4978 SIZE_VARIABLES(i1)=0_8
4979 ENDIF
4980.EQ. elseif(trim(mode)"save") then
4981 IF(associated(id%FUTURE_NIV2)) THEN
4982 write(unit,iostat=err) size(id%FUTURE_NIV2,1)
4983.ne. if(err0) then
4984 id%INFO(1) = -72
4985 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
4986 & id%INFO(2))
4987 endif
4988 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
4989 & id%COMM, id%MYID )
4990.LT. IF ( id%INFO(1) 0 ) GOTO 100
4991 write(unit,iostat=err) id%FUTURE_NIV2
4992 ELSE
4993 write(unit,iostat=err) -999
4994.ne. if(err0) then
4995 id%INFO(1) = -72
4996 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
4997 & id%INFO(2))
4998 endif
4999 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
5000 & id%COMM, id%MYID )
5001.LT. IF ( id%INFO(1) 0 ) GOTO 100
5002 write(unit,iostat=err) -999
5003 ENDIF
5004.ne. if(err0) then
5005 id%INFO(1) = -72
5006 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
5007 & id%INFO(2))
5008 endif
5009 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
5010 & id%COMM, id%MYID )
5011.LT. IF ( id%INFO(1) 0 ) GOTO 100
5012.EQ. elseif(trim(mode)"restore") then
5013 nullify(id%FUTURE_NIV2)
5014 read(unit,iostat=err) size_array1
5015.ne. if(err0) THEN
5016 id%INFO(1) = -75
5017 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
5018 & ,id%INFO(2))
5019 endif
5020 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
5021 & id%COMM, id%MYID )
5022.LT. IF ( id%INFO(1) 0 ) GOTO 100
5023.EQ. if(size_array1-999) then
5024 SIZE_GEST(i1)=SIZE_INT*2
5025 SIZE_VARIABLES(i1)=0_8
5026 read(unit,iostat=err) dummy
5027 else
5028 SIZE_GEST(i1)=SIZE_INT
5029 SIZE_VARIABLES(i1)=size_array1*SIZE_INT
5030 allocate(id%FUTURE_NIV2(size_array1), stat=allocok)
5031.GT. if (allocok 0) THEN
5032 id%INFO(1) = -78
5033 CALL MUMPS_SETI8TOI4(
5034 & TOTAL_STRUC_SIZE-size_allocated
5035 & ,id%INFO(2))
5036 endif
5037 read(unit,iostat=err) id%FUTURE_NIV2
5038 endif
5039 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
5040 & id%COMM, id%MYID )
5041.LT. IF ( id%INFO(1) 0 ) GOTO 100
5042.ne. if(err0) THEN
5043 id%INFO(1) = -75
5044 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
5045 & ,id%INFO(2))
5046 endif
5047 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
5048 & id%COMM, id%MYID )
5049.LT. IF ( id%INFO(1) 0 ) GOTO 100
5050 endif
5051 CASE("tab_pos_in_pere")
5052 NbRecords(i1)=2
5053.EQ. if(trim(mode)"memory_save") then
5054 IF(associated(id%TAB_POS_IN_PERE)) THEN
5055 SIZE_GEST(i1)=SIZE_INT*2
5056 SIZE_VARIABLES(i1)=size(id%TAB_POS_IN_PERE,1)
5057 & *size(id%TAB_POS_IN_PERE,2)*SIZE_INT
5058 ELSE
5059 SIZE_GEST(i1)=SIZE_INT*3
5060 SIZE_VARIABLES(i1)=0_8
5061 ENDIF
5062.EQ. elseif(trim(mode)"save") then
5063 IF(associated(id%TAB_POS_IN_PERE)) THEN
5064 write(unit,iostat=err) size(id%TAB_POS_IN_PERE,1)
5065 & ,size(id%TAB_POS_IN_PERE,2)
5066.ne. if(err0) then
5067 id%INFO(1) = -72
5068 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
5069 & id%INFO(2))
5070 endif
5071 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
5072 & id%COMM, id%MYID )
5073.LT. IF ( id%INFO(1) 0 ) GOTO 100
5074 write(unit,iostat=err) id%TAB_POS_IN_PERE
5075 ELSE
5076 write(unit,iostat=err) -999,-998
5077.ne. if(err0) then
5078 id%INFO(1) = -72
5079 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
5080 & id%INFO(2))
5081 endif
5082 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
5083 & id%COMM, id%MYID )
5084.LT. IF ( id%INFO(1) 0 ) GOTO 100
5085 write(unit,iostat=err) -999
5086 ENDIF
5087.ne. if(err0) then
5088 id%INFO(1) = -72
5089 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
5090 & id%INFO(2))
5091 endif
5092 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
5093 & id%COMM, id%MYID )
5094.LT. IF ( id%INFO(1) 0 ) GOTO 100
5095.EQ. elseif(trim(mode)"restore") then
5096 nullify(id%TAB_POS_IN_PERE)
5097 read(unit,iostat=err) size_array1,size_array2
5098.ne. if(err0) THEN
5099 id%INFO(1) = -75
5100 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
5101 & ,id%INFO(2))
5102 endif
5103 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
5104 & id%COMM, id%MYID )
5105.LT. IF ( id%INFO(1) 0 ) GOTO 100
5106.EQ. if(size_array1-999) then
5107 SIZE_GEST(i1)=SIZE_INT*3
5108 SIZE_VARIABLES(i1)=0_8
5109 read(unit,iostat=err) dummy
5110 else
5111 SIZE_GEST(i1)=SIZE_INT*2
5112 SIZE_VARIABLES(i1)=size_array1*size_array2*SIZE_INT
5113 allocate(id%TAB_POS_IN_PERE(size_array1,size_array2)
5114 & , stat=allocok)
5115.GT. if (allocok 0) THEN
5116 id%INFO(1) = -78
5117 CALL MUMPS_SETI8TOI4(
5118 & TOTAL_STRUC_SIZE-size_allocated
5119 & ,id%INFO(2))
5120 endif
5121 read(unit,iostat=err) id%TAB_POS_IN_PERE
5122 endif
5123 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
5124 & id%COMM, id%MYID )
5125.LT. IF ( id%INFO(1) 0 ) GOTO 100
5126.ne. if(err0) THEN
5127 id%INFO(1) = -75
5128 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
5129 & ,id%INFO(2))
5130 endif
5131 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
5132 & id%COMM, id%MYID )
5133.LT. IF ( id%INFO(1) 0 ) GOTO 100
5134 endif
5135 CASE("i_am_cand")
5136 NbRecords(i1)=2
5137.EQ. if(trim(mode)"memory_save") then
5138 IF(associated(id%I_AM_CAND)) THEN
5139 size_gest(i1)=size_int
5140 size_variables(i1)=size(id%I_AM_CAND,1)*size_logical
5141 ELSE
5142 size_gest(i1)=size_int*2
5143 size_variables(i1)=0_8
5144 ENDIF
5145 elseif(trim(mode).EQ."save") then
5146 IF(associated(id%I_AM_CAND)) THEN
5147 write(unit,iostat=err) size(id%I_AM_CAND,1)
5148 if(err.ne.0) then
5149 id%INFO(1) = -72
5150 CALL mumps_seti8toi4(total_file_size-size_written,
5151 & id%INFO(2))
5152 endif
5153 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
5154 & id%COMM, id%MYID )
5155 IF ( id%INFO(1) .LT. 0 ) GOTO 100
5156 write(unit,iostat=err) id%I_AM_CAND
5157 ELSE
5158 write(unit,iostat=err) -999
5159 if(err.ne.0) then
5160 id%INFO(1) = -72
5161 CALL mumps_seti8toi4(total_file_size-size_written,
5162 & id%INFO(2))
5163 endif
5164 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
5165 & id%COMM, id%MYID )
5166 IF ( id%INFO(1) .LT. 0 ) GOTO 100
5167 write(unit,iostat=err) -999
5168 ENDIF
5169 if(err.ne.0) then
5170 id%INFO(1) = -72
5171 CALL mumps_seti8toi4(total_file_size-size_written,
5172 & id%INFO(2))
5173 endif
5174 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
5175 & id%COMM, id%MYID )
5176 IF ( id%INFO(1) .LT. 0 ) GOTO 100
5177 elseif(trim(mode).EQ."restore") then
5178 nullify(id%I_AM_CAND)
5179 read(unit,iostat=err) size_array1
5180 if(err.ne.0) THEN
5181 id%INFO(1) = -75
5182 CALL mumps_seti8toi4(total_file_size-size_read
5183 & ,id%INFO(2))
5184 endif
5185 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
5186 & id%COMM, id%MYID )
5187 IF ( id%INFO(1) .LT. 0 ) GOTO 100
5188 if(size_array1.EQ.-999) then
5189 size_gest(i1)=size_int*2
5190 size_variables(i1)=0_8
5191 read(unit,iostat=err) dummy
5192 else
5193 size_gest(i1)=size_int
5194 size_variables(i1)=size_array1*size_logical
5195 allocate(id%I_AM_CAND(size_array1), stat=allocok)
5196 if (allocok .GT. 0) THEN
5197 id%INFO(1) = -78
5198 CALL mumps_seti8toi4(
5199 & total_struc_size-size_allocated
5200 & ,id%INFO(2))
5201 endif
5202 read(unit,iostat=err) id%I_AM_CAND
5203 endif
5204 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
5205 & id%COMM, id%MYID )
5206 IF ( id%INFO(1) .LT. 0 ) GOTO 100
5207 if(err.ne.0) THEN
5208 id%INFO(1) = -75
5209 CALL mumps_seti8toi4(total_file_size-size_read
5210 & ,id%INFO(2))
5211 endif
5212 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
5213 & id%COMM, id%MYID )
5214 IF ( id%INFO(1) .LT. 0 ) GOTO 100
5215 endif
5216 CASE("MEM_DIST")
5217 nbrecords(i1)=2
5218 if(trim(mode).EQ."memory_save") then
5219 IF(associated(id%MEM_DIST)) THEN
5220 size_gest(i1)=size_int
5221 size_variables(i1)=size(id%MEM_DIST,1)*size_int
5222 ELSE
5223 size_gest(i1)=size_int*2
5224 size_variables(i1)=0_8
5225 ENDIF
5226 elseif(trim(mode).EQ."save") then
5227 IF(associated(id%MEM_DIST)) THEN
5228 write(unit,iostat=err) size(id%MEM_DIST,1)
5229 if(err.ne.0) then
5230 id%INFO(1) = -72
5231 CALL mumps_seti8toi4(total_file_size-size_written,
5232 & id%INFO(2))
5233 endif
5234 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
5235 & id%COMM, id%MYID )
5236 write(unit,iostat=err) id%MEM_DIST
5237 ELSE
5238 write(unit,iostat=err) -999
5239 if(err.ne.0) then
5240 id%INFO(1) = -72
5241 CALL mumps_seti8toi4(total_file_size-size_written,
5242 & id%INFO(2))
5243 endif
5244 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
5245 & id%COMM, id%MYID )
5246 write(unit,iostat=err) -999
5247 ENDIF
5248 if(err.ne.0) then
5249 id%INFO(1) = -72
5250 CALL mumps_seti8toi4(total_file_size-size_written,
5251 & id%INFO(2))
5252 endif
5253 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
5254 & id%COMM, id%MYID )
5255 IF ( id%INFO(1) .LT. 0 ) GOTO 100
5256 elseif(trim(mode).EQ."restore") then
5257 nullify(id%MEM_DIST)
5258 read(unit,iostat=err) size_array1
5259 if(err.ne.0) THEN
5260 id%INFO(1) = -75
5261 CALL mumps_seti8toi4(total_file_size-size_read
5262 & ,id%INFO(2))
5263 endif
5264 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
5265 & id%COMM, id%MYID )
5266 IF ( id%INFO(1) .LT. 0 ) GOTO 100
5267 if(size_array1.EQ.-999) then
5268 size_gest(i1)=size_int*2
5269 size_variables(i1)=0_8
5270 read(unit,iostat=err) dummy
5271 else
5272 size_gest(i1)=size_int
5273 size_variables(i1)=size_array1*size_int
5274 allocate(id%MEM_DIST(0:size_array1-1), stat=allocok)
5275 if (allocok .GT. 0) THEN
5276 id%INFO(1) = -78
5277 CALL mumps_seti8toi4(
5278 & total_struc_size-size_allocated
5279 & ,id%INFO(2))
5280 endif
5281 read(unit,iostat=err) id%MEM_DIST
5282 endif
5283 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
5284 & id%COMM, id%MYID )
5285 IF ( id%INFO(1) .LT. 0 ) GOTO 100
5286 if(err.ne.0) THEN
5287 id%INFO(1) = -75
5288 CALL mumps_seti8toi4(total_file_size-size_read
5289 & ,id%INFO(2))
5290 endif
5291 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
5292 & id%COMM, id%MYID )
5293 IF ( id%INFO(1) .LT. 0 ) GOTO 100
5294 endif
5295 CASE("POSINRHSCOMP_ROW")
5296 nbrecords(i1)=2
5297 if(trim(mode).EQ."memory_save") then
5298 IF(associated(id%POSINRHSCOMP_ROW)) THEN
5299 size_gest(i1)=size_int
5300 size_variables(i1)=
5301 & size(id%POSINRHSCOMP_ROW,1)*size_int
5302 ELSE
5303 size_gest(i1)=size_int*2
5304 size_variables(i1)=0_8
5305 ENDIF
5306 elseif(trim(mode).EQ."save") then
5307 IF(associated(id%POSINRHSCOMP_ROW)) THEN
5308 write(unit,iostat=err) size(id%POSINRHSCOMP_ROW,1)
5309 if(err.ne.0) then
5310 id%INFO(1) = -72
5311 CALL mumps_seti8toi4(total_file_size-size_written,
5312 & id%INFO(2))
5313 endif
5314 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
5315 & id%COMM, id%MYID )
5316 IF ( id%INFO(1) .LT. 0 ) GOTO 100
5317 write(unit,iostat=err) id%POSINRHSCOMP_ROW
5318 ELSE
5319 write(unit,iostat=err) -999
5320 if(err.ne.0) then
5321 id%INFO(1) = -72
5322 CALL mumps_seti8toi4(total_file_size-size_written,
5323 & id%INFO(2))
5324 endif
5325 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
5326 & id%COMM, id%MYID )
5327 IF ( id%INFO(1) .LT. 0 ) GOTO 100
5328 write(unit,iostat=err) -999
5329 ENDIF
5330 if(err.ne.0) then
5331 id%INFO(1) = -72
5332 CALL mumps_seti8toi4(total_file_size-size_written,
5333 & id%INFO(2))
5334 endif
5335 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
5336 & id%COMM, id%MYID )
5337 IF ( id%INFO(1) .LT. 0 ) GOTO 100
5338 elseif(trim(mode).EQ."restore") then
5339 nullify(id%POSINRHSCOMP_ROW)
5340 read(unit,iostat=err) size_array1
5341 if(err.ne.0) THEN
5342 id%INFO(1) = -75
5343 CALL mumps_seti8toi4(total_file_size-size_read
5344 & ,id%INFO(2))
5345 endif
5346 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
5347 & id%COMM, id%MYID )
5348 IF ( id%INFO(1) .LT. 0 ) GOTO 100
5349 if(size_array1.EQ.-999) then
5350 size_gest(i1)=size_int*2
5351 size_variables(i1)=0_8
5352 read(unit,iostat=err) dummy
5353 else
5354 size_gest(i1)=size_int
5355 size_variables(i1)=size_array1*size_int
5356 allocate(id%POSINRHSCOMP_ROW(size_array1),
5357 & stat=allocok)
5358 if (allocok .GT. 0) THEN
5359 id%INFO(1) = -78
5360 CALL mumps_seti8toi4(
5361 & total_struc_size-size_allocated
5362 & ,id%INFO(2))
5363 endif
5364 read(unit,iostat=err) id%POSINRHSCOMP_ROW
5365 endif
5366 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
5367 & id%COMM, id%MYID )
5368 IF ( id%INFO(1) .LT. 0 ) GOTO 100
5369 if(err.ne.0) THEN
5370 id%INFO(1) = -75
5371 CALL mumps_seti8toi4(total_file_size-size_read
5372 & ,id%INFO(2))
5373 endif
5374 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
5375 & id%COMM, id%MYID )
5376 IF ( id%INFO(1) .LT. 0 ) GOTO 100
5377 endif
5378 CASE("POSINRHSCOMP_COL_ALLOC")
5379 nbrecords(i1)=1
5380 if(trim(mode).EQ."memory_save") then
5381 size_variables(i1)=size_logical
5382 elseif(trim(mode).EQ."save") then
5383 write(unit,iostat=err) id%POSINRHSCOMP_COL_ALLOC
5384 if(err.ne.0) then
5385 id%INFO(1) = -72
5386 CALL mumps_seti8toi4(total_file_size-size_written,
5387 & id%INFO(2))
5388 endif
5389 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
5390 & id%COMM, id%MYID )
5391 IF ( id%INFO(1) .LT. 0 ) GOTO 100
5392 elseif(trim(mode).EQ."restore") then
5393 size_variables(i1)=size_logical
5394 read(unit,iostat=err) id%POSINRHSCOMP_COL_ALLOC
5395 if(err.ne.0) THEN
5396 id%INFO(1) = -75
5397 CALL mumps_seti8toi4(total_file_size-size_read
5398 & ,id%INFO(2))
5399 endif
5400 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
5401 & id%COMM, id%MYID )
5402 IF ( id%INFO(1) .LT. 0 ) GOTO 100
5403 endif
5404 CASE("POSINRHSCOMP_COL")
5405 nbrecords(i1)=2
5406 if(trim(mode).EQ."memory_save") then
5407 IF(associated(id%POSINRHSCOMP_COL)) THEN
5408 IF(id%POSINRHSCOMP_COL_ALLOC) THEN
5409 size_gest(i1)=size_int
5410 size_variables(i1)=
5411 & size(id%POSINRHSCOMP_COL,1)*size_int
5412 ELSE
5413 size_gest(i1)=size_int*2
5414 size_variables(i1)=0_8
5415 ENDIF
5416 ELSE
5417 size_gest(i1)=size_int*2
5418 size_variables(i1)=0_8
5419 ENDIF
5420 elseif(trim(mode).EQ."save") then
5421 IF(associated(id%POSINRHSCOMP_COL)) THEN
5422 IF(id%POSINRHSCOMP_COL_ALLOC) THEN
5423 write(unit,iostat=err) size(id%POSINRHSCOMP_COL,1)
5424 if(err.ne.0) then
5425 id%INFO(1) = -72
5426 CALL mumps_seti8toi4(
5427 & total_file_size-size_written,
5428 & id%INFO(2))
5429 endif
5430 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
5431 & id%COMM, id%MYID )
5432 IF ( id%INFO(1) .LT. 0 ) GOTO 100
5433 write(unit,iostat=err) id%POSINRHSCOMP_COL
5434 ELSE
5435 write(unit,iostat=err) size(id%POSINRHSCOMP_COL,1)
5436 if(err.ne.0) then
5437 id%INFO(1) = -72
5438 CALL mumps_seti8toi4(
5439 & total_file_size-size_written,
5440 & id%INFO(2))
5441 endif
5442 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
5443 & id%COMM, id%MYID )
5444 IF ( id%INFO(1) .LT. 0 ) GOTO 100
5445 write(unit,iostat=err) -999
5446 ENDIF
5447 ELSE
5448 write(unit,iostat=err) -999
5449 if(err.ne.0) then
5450 id%INFO(1) = -72
5451 CALL mumps_seti8toi4(total_file_size-size_written,
5452 & id%INFO(2))
5453 endif
5454 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
5455 & id%COMM, id%MYID )
5456 IF ( id%INFO(1) .LT. 0 ) GOTO 100
5457 write(unit,iostat=err) -999
5458 ENDIF
5459 if(err.ne.0) then
5460 id%INFO(1) = -72
5461 CALL mumps_seti8toi4(total_file_size-size_written,
5462 & id%INFO(2))
5463 endif
5464 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
5465 & id%COMM, id%MYID )
5466 IF ( id%INFO(1) .LT. 0 ) GOTO 100
5467 elseif(trim(mode).EQ."restore") then
5468 nullify(id%POSINRHSCOMP_COL)
5469 read(unit,iostat=err) size_array1
5470 if(err.ne.0) THEN
5471 id%INFO(1) = -75
5472 CALL mumps_seti8toi4(total_file_size-size_read
5473 & ,id%INFO(2))
5474 endif
5475 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
5476 & id%COMM, id%MYID )
5477 IF ( id%INFO(1) .LT. 0 ) GOTO 100
5478 if(size_array1.EQ.-999) then
5479 size_gest(i1)=size_int*2
5480 size_variables(i1)=0_8
5481 read(unit,iostat=err) dummy
5482 else
5483 if(id%POSINRHSCOMP_COL_ALLOC) then
5484 size_gest(i1)=size_int
5485 size_variables(i1)=size_array1*size_int
5486 allocate(id%POSINRHSCOMP_COL(size_array1),
5487 & stat=allocok)
5488 if (allocok .GT. 0) THEN
5489 id%INFO(1) = -78
5490 CALL mumps_seti8toi4(
5491 & total_struc_size-size_allocated
5492 & ,id%INFO(2))
5493 endif
5494 read(unit,iostat=err) id%POSINRHSCOMP_COL
5495 else
5496 size_gest(i1)=size_int*2
5497 size_variables(i1)=0_8
5498 read(unit,iostat=err) dummy
5499 id%POSINRHSCOMP_COL=>id%POSINRHSCOMP_ROW
5500 endif
5501 endif
5502 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
5503 & id%COMM, id%MYID )
5504 IF ( id%INFO(1) .LT. 0 ) GOTO 100
5505 if(err.ne.0) THEN
5506 id%INFO(1) = -75
5507 CALL mumps_seti8toi4(total_file_size-size_read
5508 & ,id%INFO(2))
5509 endif
5510 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
5511 & id%COMM, id%MYID )
5512 IF ( id%INFO(1) .LT. 0 ) GOTO 100
5513 endif
5514 CASE("RHSCOMP")
5515 nbrecords(i1)=2
5516 if(trim(mode).EQ."memory_save") then
5517 IF(associated(id%RHSCOMP)) THEN
5518 size_gest(i1)=size_int8
5519 size_variables(i1)=id%KEEP8(25)*size_arith_dep
5520 ELSE
5521 size_gest(i1)=size_int8+size_int
5522 size_variables(i1)=0_8
5523 ENDIF
5524 elseif(trim(mode).EQ."save") then
5525 IF(associated(id%RHSCOMP)) THEN
5526 write(unit,iostat=err) id%KEEP8(25)
5527 if(err.ne.0) then
5528 id%INFO(1) = -72
5529 CALL mumps_seti8toi4(total_file_size-size_written,
5530 & id%INFO(2))
5531 endif
5532 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
5533 & id%COMM, id%MYID )
5534 IF ( id%INFO(1) .LT. 0 ) GOTO 100
5535 write(unit,iostat=err) id%RHSCOMP
5536 ELSE
5537 write(unit,iostat=err) int(-999,8)
5538 if(err.ne.0) then
5539 id%INFO(1) = -72
5540 CALL mumps_seti8toi4(total_file_size-size_written,
5541 & id%INFO(2))
5542 endif
5543 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
5544 & id%COMM, id%MYID )
5545 IF ( id%INFO(1) .LT. 0 ) GOTO 100
5546 write(unit,iostat=err) -999
5547 ENDIF
5548 if(err.ne.0) then
5549 id%INFO(1) = -72
5550 CALL mumps_seti8toi4(total_file_size-size_written,
5551 & id%INFO(2))
5552 endif
5553 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
5554 & id%COMM, id%MYID )
5555 IF ( id%INFO(1) .LT. 0 ) GOTO 100
5556 elseif(trim(mode).EQ."restore") then
5557 nullify(id%RHSCOMP)
5558 read(unit,iostat=err) size_array_int8_1
5559 if(err.ne.0) THEN
5560 id%INFO(1) = -75
5561 CALL mumps_seti8toi4(total_file_size-size_read
5562 & ,id%INFO(2))
5563 endif
5564 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
5565 & id%COMM, id%MYID )
5566 IF ( id%INFO(1) .LT. 0 ) GOTO 100
5567 if(size_array_int8_1.EQ.int(-999,8)) then
5568 size_gest(i1)=size_int8+size_int
5569 size_variables(i1)=0_8
5570 read(unit,iostat=err) dummy
5571 else
5572 size_gest(i1)=size_int8
5573 size_variables(i1)=size_array_int8_1*size_arith_dep
5574 allocate(id%RHSCOMP(size_array_int8_1), stat=allocok)
5575 if (allocok .GT. 0) THEN
5576 id%INFO(1) = -78
5577 CALL mumps_seti8toi4(
5578 & total_struc_size-size_allocated
5579 & ,id%INFO(2))
5580 endif
5581 read(unit,iostat=err) id%RHSCOMP
5582 endif
5583 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
5584 & id%COMM, id%MYID )
5585 IF ( id%INFO(1) .LT. 0 ) GOTO 100
5586 if(err.ne.0) THEN
5587 id%INFO(1) = -75
5588 CALL mumps_seti8toi4(total_file_size-size_read
5589 & ,id%INFO(2))
5590 endif
5591 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
5592 & id%COMM, id%MYID )
5593 IF ( id%INFO(1) .LT. 0 ) GOTO 100
5594 endif
5595 CASE("MEM_SUBTREE")
5596 nbrecords(i1)=2
5597 if(trim(mode).EQ."memory_save") then
5598 IF(associated(id%MEM_SUBTREE)) THEN
5599 size_gest(i1)=size_int
5600 size_variables(i1)=
5601 & size(id%MEM_SUBTREE,1)*size_double_precision
5602 ELSE
5603 size_gest(i1)=size_int*2
5604 size_variables(i1)=0_8
5605 ENDIF
5606 elseif(trim(mode).EQ."save") then
5607 IF(associated(id%MEM_SUBTREE)) THEN
5608 write(unit,iostat=err) size(id%MEM_SUBTREE,1)
5609 if(err.ne.0) then
5610 id%INFO(1) = -72
5611 CALL mumps_seti8toi4(total_file_size-size_written,
5612 & id%INFO(2))
5613 endif
5614 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
5615 & id%COMM, id%MYID )
5616 IF ( id%INFO(1) .LT. 0 ) GOTO 100
5617 write(unit,iostat=err) id%MEM_SUBTREE
5618 ELSE
5619 write(unit,iostat=err) -999
5620 if(err.ne.0) then
5621 id%INFO(1) = -72
5622 CALL mumps_seti8toi4(total_file_size-size_written,
5623 & id%INFO(2))
5624 endif
5625 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
5626 & id%COMM, id%MYID )
5627 IF ( id%INFO(1) .LT. 0 ) GOTO 100
5628 write(unit,iostat=err) -999
5629 ENDIF
5630 if(err.ne.0) then
5631 id%INFO(1) = -72
5632 CALL mumps_seti8toi4(total_file_size-size_written,
5633 & id%INFO(2))
5634 endif
5635 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
5636 & id%COMM, id%MYID )
5637 IF ( id%INFO(1) .LT. 0 ) GOTO 100
5638 elseif(trim(mode).EQ."restore") then
5639 nullify(id%MEM_SUBTREE)
5640 read(unit,iostat=err) size_array1
5641 if(err.ne.0) THEN
5642 id%INFO(1) = -75
5643 CALL mumps_seti8toi4(total_file_size-size_read
5644 & ,id%INFO(2))
5645 endif
5646 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
5647 & id%COMM, id%MYID )
5648 IF ( id%INFO(1) .LT. 0 ) GOTO 100
5649 if(size_array1.EQ.-999) then
5650 size_gest(i1)=size_int*2
5651 size_variables(i1)=0_8
5652 read(unit,iostat=err) dummy
5653 else
5654 size_gest(i1)=size_int
5655 size_variables(i1)=size_array1*size_double_precision
5656 allocate(id%MEM_SUBTREE(size_array1), stat=allocok)
5657 if (allocok .GT. 0) THEN
5658 id%INFO(1) = -78
5659 CALL mumps_seti8toi4(
5660 & total_struc_size-size_allocated
5661 & ,id%INFO(2))
5662 endif
5663 read(unit,iostat=err) id%MEM_SUBTREE
5664 endif
5665 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
5666 & id%COMM, id%MYID )
5667 IF ( id%INFO(1) .LT. 0 ) GOTO 100
5668 if(err.ne.0) THEN
5669 id%INFO(1) = -75
5670 CALL mumps_seti8toi4(total_file_size-size_read
5671 & ,id%INFO(2))
5672 endif
5673 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
5674 & id%COMM, id%MYID )
5675 IF ( id%INFO(1) .LT. 0 ) GOTO 100
5676 endif
5677 CASE("COST_TRAV")
5678 nbrecords(i1)=2
5679 if(trim(mode).EQ."memory_save") then
5680 IF(associated(id%COST_TRAV)) THEN
5681 size_gest(i1)=size_int
5682 size_variables(i1)=
5683 & size(id%COST_TRAV,1)*size_double_precision
5684 ELSE
5685 size_gest(i1)=size_int*2
5686 size_variables(i1)=0_8
5687 ENDIF
5688 elseif(trim(mode).EQ."save") then
5689 IF(associated(id%COST_TRAV)) THEN
5690 write(unit,iostat=err) size(id%COST_TRAV,1)
5691 if(err.ne.0) then
5692 id%INFO(1) = -72
5693 CALL mumps_seti8toi4(total_file_size-size_written,
5694 & id%INFO(2))
5695 endif
5696 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
5697 & id%COMM, id%MYID )
5698 IF ( id%INFO(1) .LT. 0 ) GOTO 100
5699 write(unit,iostat=err) id%COST_TRAV
5700 ELSE
5701 write(unit,iostat=err) -999
5702 if(err.ne.0) then
5703 id%INFO(1) = -72
5704 CALL mumps_seti8toi4(total_file_size-size_written,
5705 & id%INFO(2))
5706 endif
5707 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
5708 & id%COMM, id%MYID )
5709 IF ( id%INFO(1) .LT. 0 ) GOTO 100
5710 write(unit,iostat=err) -999
5711 ENDIF
5712 if(err.ne.0) then
5713 id%INFO(1) = -72
5714 CALL mumps_seti8toi4(total_file_size-size_written,
5715 & id%INFO(2))
5716 endif
5717 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
5718 & id%COMM, id%MYID )
5719 IF ( id%INFO(1) .LT. 0 ) GOTO 100
5720 elseif(trim(mode).EQ."restore") then
5721 nullify(id%COST_TRAV)
5722 read(unit,iostat=err) size_array1
5723 if(err.ne.0) THEN
5724 id%INFO(1) = -75
5725 CALL mumps_seti8toi4(total_file_size-size_read
5726 & ,id%INFO(2))
5727 endif
5728 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
5729 & id%COMM, id%MYID )
5730 IF ( id%INFO(1) .LT. 0 ) GOTO 100
5731 if(size_array1.EQ.-999) then
5732 size_gest(i1)=size_int*2
5733 size_variables(i1)=0_8
5734 read(unit,iostat=err) dummy
5735 else
5736 size_gest(i1)=size_int
5737 size_variables(i1)=size_array1*size_double_precision
5738 allocate(id%COST_TRAV(size_array1), stat=allocok)
5739 if (allocok .GT. 0) THEN
5740 id%INFO(1) = -78
5741 CALL mumps_seti8toi4(
5742 & total_struc_size-size_allocated
5743 & ,id%INFO(2))
5744 endif
5745 read(unit,iostat=err) id%COST_TRAV
5746 endif
5747 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
5748 & id%COMM, id%MYID )
5749 IF ( id%INFO(1) .LT. 0 ) GOTO 100
5750 if(err.ne.0) THEN
5751 id%INFO(1) = -75
5752 CALL mumps_seti8toi4(total_file_size-size_read
5753 & ,id%INFO(2))
5754 endif
5755 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
5756 & id%COMM, id%MYID )
5757 IF ( id%INFO(1) .LT. 0 ) GOTO 100
5758 endif
5759 CASE("MY_ROOT_SBTR")
5760 nbrecords(i1)=2
5761 if(trim(mode).EQ."memory_save") then
5762 IF(associated(id%MY_ROOT_SBTR)) THEN
5763 size_gest(i1)=size_int
5764 size_variables(i1)=size(id%MY_ROOT_SBTR,1)*size_int
5765 ELSE
5766 size_gest(i1)=size_int*2
5767 size_variables(i1)=0_8
5768 ENDIF
5769 elseif(trim(mode).EQ."save") then
5770 IF(associated(id%MY_ROOT_SBTR)) THEN
5771 write(unit,iostat=err) size(id%MY_ROOT_SBTR,1)
5772 if(err.ne.0) then
5773 id%INFO(1) = -72
5774 CALL mumps_seti8toi4(total_file_size-size_written,
5775 & id%INFO(2))
5776 endif
5777 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
5778 & id%COMM, id%MYID )
5779 IF ( id%INFO(1) .LT. 0 ) GOTO 100
5780 write(unit,iostat=err) id%MY_ROOT_SBTR
5781 ELSE
5782 write(unit,iostat=err) -999
5783 if(err.ne.0) then
5784 id%INFO(1) = -72
5785 CALL mumps_seti8toi4(total_file_size-size_written,
5786 & id%INFO(2))
5787 endif
5788 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
5789 & id%COMM, id%MYID )
5790 IF ( id%INFO(1) .LT. 0 ) GOTO 100
5791 write(unit,iostat=err) -999
5792 ENDIF
5793 if(err.ne.0) then
5794 id%INFO(1) = -72
5795 CALL mumps_seti8toi4(total_file_size-size_written,
5796 & id%INFO(2))
5797 endif
5798 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
5799 & id%COMM, id%MYID )
5800 IF ( id%INFO(1) .LT. 0 ) GOTO 100
5801 elseif(trim(mode).EQ."restore") then
5802 nullify(id%MY_ROOT_SBTR)
5803 read(unit,iostat=err) size_array1
5804 if(err.ne.0) THEN
5805 id%INFO(1) = -75
5806 CALL mumps_seti8toi4(total_file_size-size_read
5807 & ,id%INFO(2))
5808 endif
5809 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
5810 & id%COMM, id%MYID )
5811 IF ( id%INFO(1) .LT. 0 ) GOTO 100
5812 if(size_array1.EQ.-999) then
5813 size_gest(i1)=size_int*2
5814 size_variables(i1)=0_8
5815 read(unit,iostat=err) dummy
5816 else
5817 size_gest(i1)=size_int
5818 size_variables(i1)=size_array1*size_int
5819 allocate(id%MY_ROOT_SBTR(size_array1), stat=allocok)
5820 if (allocok .GT. 0) THEN
5821 id%INFO(1) = -78
5822 CALL mumps_seti8toi4(
5823 & total_struc_size-size_allocated
5824 & ,id%INFO(2))
5825 endif
5826 read(unit,iostat=err) id%MY_ROOT_SBTR
5827 endif
5828 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
5829 & id%COMM, id%MYID )
5830 IF ( id%INFO(1) .LT. 0 ) GOTO 100
5831 if(err.ne.0) THEN
5832 id%INFO(1) = -75
5833 CALL mumps_seti8toi4(total_file_size-size_read
5834 & ,id%INFO(2))
5835 endif
5836 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
5837 & id%COMM, id%MYID )
5838 IF ( id%INFO(1) .LT. 0 ) GOTO 100
5839 endif
5840 CASE("MY_FIRST_LEAF")
5841 nbrecords(i1)=2
5842 if(trim(mode).EQ."memory_save") then
5843 IF(associated(id%MY_FIRST_LEAF)) THEN
5844 size_gest(i1)=size_int
5845 size_variables(i1)=size(id%MY_FIRST_LEAF,1)*size_int
5846 ELSE
5847 size_gest(i1)=size_int*2
5848 size_variables(i1)=0_8
5849 ENDIF
5850 elseif(trim(mode).EQ."save") then
5851 IF(associated(id%MY_FIRST_LEAF)) THEN
5852 write(unit,iostat=err) size(id%MY_FIRST_LEAF,1)
5853 if(err.ne.0) then
5854 id%INFO(1) = -72
5855 CALL mumps_seti8toi4(total_file_size-size_written,
5856 & id%INFO(2))
5857 endif
5858 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
5859 & id%COMM, id%MYID )
5860 IF ( id%INFO(1) .LT. 0 ) GOTO 100
5861 write(unit,iostat=err) id%MY_FIRST_LEAF
5862 ELSE
5863 write(unit,iostat=err) -999
5864 if(err.ne.0) then
5865 id%INFO(1) = -72
5866 CALL mumps_seti8toi4(total_file_size-size_written,
5867 & id%INFO(2))
5868 endif
5869 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
5870 & id%COMM, id%MYID )
5871 IF ( id%INFO(1) .LT. 0 ) GOTO 100
5872 write(unit,iostat=err) -999
5873 ENDIF
5874 if(err.ne.0) then
5875 id%INFO(1) = -72
5876 CALL mumps_seti8toi4(total_file_size-size_written,
5877 & id%INFO(2))
5878 endif
5879 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
5880 & id%COMM, id%MYID )
5881 IF ( id%INFO(1) .LT. 0 ) GOTO 100
5882 elseif(trim(mode).EQ."restore") then
5883 nullify(id%MY_FIRST_LEAF)
5884 read(unit,iostat=err) size_array1
5885 if(err.ne.0) THEN
5886 id%INFO(1) = -75
5887 CALL mumps_seti8toi4(total_file_size-size_read
5888 & ,id%INFO(2))
5889 endif
5890 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
5891 & id%COMM, id%MYID )
5892 IF ( id%INFO(1) .LT. 0 ) GOTO 100
5893 if(size_array1.EQ.-999) then
5894 size_gest(i1)=size_int*2
5895 size_variables(i1)=0_8
5896 read(unit,iostat=err) dummy
5897 else
5898 size_gest(i1)=size_int
5899 size_variables(i1)=size_array1*size_int
5900 allocate(id%MY_FIRST_LEAF(size_array1), stat=allocok)
5901 if (allocok .GT. 0) THEN
5902 id%INFO(1) = -78
5903 CALL mumps_seti8toi4(
5904 & total_struc_size-size_allocated
5905 & ,id%INFO(2))
5906 endif
5907 read(unit,iostat=err) id%MY_FIRST_LEAF
5908 endif
5909 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
5910 & id%COMM, id%MYID )
5911 IF ( id%INFO(1) .LT. 0 ) GOTO 100
5912 if(err.ne.0) THEN
5913 id%INFO(1) = -75
5914 CALL mumps_seti8toi4(total_file_size-size_read
5915 & ,id%INFO(2))
5916 endif
5917 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
5918 & id%COMM, id%MYID )
5919 IF ( id%INFO(1) .LT. 0 ) GOTO 100
5920 endif
5921 CASE("MY_NB_LEAF")
5922 nbrecords(i1)=2
5923 if(trim(mode).EQ."memory_save") then
5924 IF(associated(id%MY_NB_LEAF)) THEN
5925 size_gest(i1)=size_int
5926 size_variables(i1)=size(id%MY_NB_LEAF,1)*size_int
5927 ELSE
5928 size_gest(i1)=size_int*2
5929 size_variables(i1)=0_8
5930 ENDIF
5931 elseif(trim(mode).EQ."save") then
5932 IF(associated(id%MY_NB_LEAF)) THEN
5933 write(unit,iostat=err) size(id%MY_NB_LEAF,1)
5934 if(err.ne.0) then
5935 id%INFO(1) = -72
5936 CALL mumps_seti8toi4(total_file_size-size_written,
5937 & id%INFO(2))
5938 endif
5939 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
5940 & id%COMM, id%MYID )
5941 IF ( id%INFO(1) .LT. 0 ) GOTO 100
5942 write(unit,iostat=err) id%MY_NB_LEAF
5943 ELSE
5944 write(unit,iostat=err) -999
5945 if(err.ne.0) then
5946 id%INFO(1) = -72
5947 CALL mumps_seti8toi4(total_file_size-size_written,
5948 & id%INFO(2))
5949 endif
5950 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
5951 & id%COMM, id%MYID )
5952 IF ( id%INFO(1) .LT. 0 ) GOTO 100
5953 write(unit,iostat=err) -999
5954 ENDIF
5955 if(err.ne.0) then
5956 id%INFO(1) = -72
5957 CALL mumps_seti8toi4(total_file_size-size_written,
5958 & id%INFO(2))
5959 endif
5960 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
5961 & id%COMM, id%MYID )
5962 IF ( id%INFO(1) .LT. 0 ) GOTO 100
5963 elseif(trim(mode).EQ."restore") then
5964 nullify(id%MY_NB_LEAF)
5965 read(unit,iostat=err) size_array1
5966 if(err.ne.0) THEN
5967 id%INFO(1) = -75
5968 CALL mumps_seti8toi4(total_file_size-size_read
5969 & ,id%INFO(2))
5970 endif
5971 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
5972 & id%COMM, id%MYID )
5973 IF ( id%INFO(1) .LT. 0 ) GOTO 100
5974 if(size_array1.EQ.-999) then
5975 size_gest(i1)=size_int*2
5976 size_variables(i1)=0_8
5977 read(unit,iostat=err) dummy
5978 else
5979 size_gest(i1)=size_int
5980 size_variables(i1)=size_array1*size_int
5981 allocate(id%MY_NB_LEAF(size_array1), stat=allocok)
5982 if (allocok .GT. 0) THEN
5983 id%INFO(1) = -78
5984 CALL mumps_seti8toi4(
5985 & total_struc_size-size_allocated
5986 & ,id%INFO(2))
5987 endif
5988 read(unit,iostat=err) id%MY_NB_LEAF
5989 endif
5990 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
5991 & id%COMM, id%MYID )
5992 IF ( id%INFO(1) .LT. 0 ) GOTO 100
5993 if(err.ne.0) THEN
5994 id%INFO(1) = -75
5995 CALL mumps_seti8toi4(total_file_size-size_read
5996 & ,id%INFO(2))
5997 endif
5998 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
5999 & id%COMM, id%MYID )
6000 IF ( id%INFO(1) .LT. 0 ) GOTO 100
6001 endif
6002 CASE("DEPTH_FIRST")
6003 nbrecords(i1)=2
6004 if(trim(mode).EQ."memory_save") then
6005 IF(associated(id%DEPTH_FIRST)) THEN
6006 size_gest(i1)=size_int
6007 size_variables(i1)=size(id%DEPTH_FIRST,1)*size_int
6008 ELSE
6009 size_gest(i1)=size_int*2
6010 size_variables(i1)=0_8
6011 ENDIF
6012 elseif(trim(mode).EQ."save") then
6013 IF(associated(id%DEPTH_FIRST)) THEN
6014 write(unit,iostat=err) size(id%DEPTH_FIRST,1)
6015 if(err.ne.0) then
6016 id%INFO(1) = -72
6017 CALL mumps_seti8toi4(total_file_size-size_written,
6018 & id%INFO(2))
6019 endif
6020 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
6021 & id%COMM, id%MYID )
6022 IF ( id%INFO(1) .LT. 0 ) GOTO 100
6023 write(unit,iostat=err) id%DEPTH_FIRST
6024 ELSE
6025 write(unit,iostat=err) -999
6026 if(err.ne.0) then
6027 id%INFO(1) = -72
6028 CALL mumps_seti8toi4(total_file_size-size_written,
6029 & id%INFO(2))
6030 endif
6031 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
6032 & id%COMM, id%MYID )
6033 IF ( id%INFO(1) .LT. 0 ) GOTO 100
6034 write(unit,iostat=err) -999
6035 ENDIF
6036 if(err.ne.0) then
6037 id%INFO(1) = -72
6038 CALL mumps_seti8toi4(total_file_size-size_written,
6039 & id%INFO(2))
6040 endif
6041 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
6042 & id%COMM, id%MYID )
6043 IF ( id%INFO(1) .LT. 0 ) GOTO 100
6044 elseif(trim(mode).EQ."restore") then
6045 nullify(id%DEPTH_FIRST)
6046 read(unit,iostat=err) size_array1
6047 if(err.ne.0) THEN
6048 id%INFO(1) = -75
6049 CALL mumps_seti8toi4(total_file_size-size_read
6050 & ,id%INFO(2))
6051 endif
6052 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
6053 & id%COMM, id%MYID )
6054 IF ( id%INFO(1) .LT. 0 ) GOTO 100
6055 if(size_array1.EQ.-999) then
6056 size_gest(i1)=size_int*2
6057 size_variables(i1)=0_8
6058 read(unit,iostat=err) dummy
6059 else
6060 size_gest(i1)=size_int
6061 size_variables(i1)=size_array1*size_int
6062 allocate(id%DEPTH_FIRST(size_array1), stat=allocok)
6063 if (allocok .GT. 0) THEN
6064 id%INFO(1) = -78
6065 CALL mumps_seti8toi4(
6066 & total_struc_size-size_allocated
6067 & ,id%INFO(2))
6068 endif
6069 read(unit,iostat=err) id%DEPTH_FIRST
6070 endif
6071 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
6072 & id%COMM, id%MYID )
6073 IF ( id%INFO(1) .LT. 0 ) GOTO 100
6074 if(err.ne.0) THEN
6075 id%INFO(1) = -75
6076 CALL mumps_seti8toi4(total_file_size-size_read
6077 & ,id%INFO(2))
6078 endif
6079 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
6080 & id%COMM, id%MYID )
6081 IF ( id%INFO(1) .LT. 0 ) GOTO 100
6082 endif
6083 CASE("DEPTH_FIRST_SEQ")
6084 nbrecords(i1)=2
6085 if(trim(mode).EQ."memory_save") then
6086 IF(associated(id%DEPTH_FIRST_SEQ)) THEN
6087 SIZE_GEST(i1)=SIZE_INT
6088 SIZE_VARIABLES(i1)=size(id%DEPTH_FIRST_SEQ,1)*SIZE_INT
6089 ELSE
6090 SIZE_GEST(i1)=SIZE_INT*2
6091 SIZE_VARIABLES(i1)=0_8
6092 ENDIF
6093.EQ. elseif(trim(mode)"save") then
6094 IF(associated(id%DEPTH_FIRST_SEQ)) THEN
6095 write(unit,iostat=err) size(id%DEPTH_FIRST_SEQ,1)
6096.ne. if(err0) then
6097 id%INFO(1) = -72
6098 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
6099 & id%INFO(2))
6100 endif
6101 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
6102 & id%COMM, id%MYID )
6103.LT. IF ( id%INFO(1) 0 ) GOTO 100
6104 write(unit,iostat=err) id%DEPTH_FIRST_SEQ
6105 ELSE
6106 write(unit,iostat=err) -999
6107.ne. if(err0) then
6108 id%INFO(1) = -72
6109 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
6110 & id%INFO(2))
6111 endif
6112 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
6113 & id%COMM, id%MYID )
6114.LT. IF ( id%INFO(1) 0 ) GOTO 100
6115 write(unit,iostat=err) -999
6116 ENDIF
6117.ne. if(err0) then
6118 id%INFO(1) = -72
6119 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
6120 & id%INFO(2))
6121 endif
6122 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
6123 & id%COMM, id%MYID )
6124.LT. IF ( id%INFO(1) 0 ) GOTO 100
6125.EQ. elseif(trim(mode)"restore") then
6126 nullify(id%DEPTH_FIRST_SEQ)
6127 read(unit,iostat=err) size_array1
6128.ne. if(err0) THEN
6129 id%INFO(1) = -75
6130 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
6131 & ,id%INFO(2))
6132 endif
6133 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
6134 & id%COMM, id%MYID )
6135.LT. IF ( id%INFO(1) 0 ) GOTO 100
6136.EQ. if(size_array1-999) then
6137 SIZE_GEST(i1)=SIZE_INT*2
6138 SIZE_VARIABLES(i1)=0_8
6139 read(unit,iostat=err) dummy
6140 else
6141 SIZE_GEST(i1)=SIZE_INT
6142 SIZE_VARIABLES(i1)=size_array1*SIZE_INT
6143 allocate(id%DEPTH_FIRST_SEQ(size_array1),
6144 & stat=allocok)
6145.GT. if (allocok 0) THEN
6146 id%INFO(1) = -78
6147 CALL MUMPS_SETI8TOI4(
6148 & TOTAL_STRUC_SIZE-size_allocated
6149 & ,id%INFO(2))
6150 endif
6151 read(unit,iostat=err) id%DEPTH_FIRST_SEQ
6152 endif
6153 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
6154 & id%COMM, id%MYID )
6155.LT. IF ( id%INFO(1) 0 ) GOTO 100
6156.ne. if(err0) THEN
6157 id%INFO(1) = -75
6158 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
6159 & ,id%INFO(2))
6160 endif
6161 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
6162 & id%COMM, id%MYID )
6163.LT. IF ( id%INFO(1) 0 ) GOTO 100
6164 endif
6165 CASE("sbtr_id")
6166 NbRecords(i1)=2
6167.EQ. if(trim(mode)"memory_save") then
6168 IF(associated(id%SBTR_ID)) THEN
6169 SIZE_GEST(i1)=SIZE_INT
6170 SIZE_VARIABLES(i1)=size(id%SBTR_ID,1)*SIZE_INT
6171 ELSE
6172 SIZE_GEST(i1)=SIZE_INT*2
6173 SIZE_VARIABLES(i1)=0_8
6174 ENDIF
6175.EQ. elseif(trim(mode)"save") then
6176 IF(associated(id%SBTR_ID)) THEN
6177 write(unit,iostat=err) size(id%SBTR_ID,1)
6178.ne. if(err0) then
6179 id%INFO(1) = -72
6180 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
6181 & id%INFO(2))
6182 endif
6183 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
6184 & id%COMM, id%MYID )
6185.LT. IF ( id%INFO(1) 0 ) GOTO 100
6186 write(unit,iostat=err) id%SBTR_ID
6187 ELSE
6188 write(unit,iostat=err) -999
6189.ne. if(err0) then
6190 id%INFO(1) = -72
6191 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
6192 & id%INFO(2))
6193 endif
6194 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
6195 & id%COMM, id%MYID )
6196.LT. IF ( id%INFO(1) 0 ) GOTO 100
6197 write(unit,iostat=err) -999
6198 ENDIF
6199.ne. if(err0) then
6200 id%INFO(1) = -72
6201 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
6202 & id%INFO(2))
6203 endif
6204 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
6205 & id%COMM, id%MYID )
6206.LT. IF ( id%INFO(1) 0 ) GOTO 100
6207.EQ. elseif(trim(mode)"restore") then
6208 nullify(id%SBTR_ID)
6209 read(unit,iostat=err) size_array1
6210.ne. if(err0) THEN
6211 id%INFO(1) = -75
6212 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
6213 & ,id%INFO(2))
6214 endif
6215 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
6216 & id%COMM, id%MYID )
6217.LT. IF ( id%INFO(1) 0 ) GOTO 100
6218.EQ. if(size_array1-999) then
6219 SIZE_GEST(i1)=SIZE_INT*2
6220 SIZE_VARIABLES(i1)=0_8
6221 read(unit,iostat=err) dummy
6222 else
6223 SIZE_GEST(i1)=SIZE_INT
6224 SIZE_VARIABLES(i1)=size_array1*SIZE_INT
6225 allocate(id%SBTR_ID(size_array1), stat=allocok)
6226.GT. if (allocok 0) THEN
6227 id%INFO(1) = -78
6228 CALL MUMPS_SETI8TOI4(
6229 & TOTAL_STRUC_SIZE-size_allocated
6230 & ,id%INFO(2))
6231 endif
6232 read(unit,iostat=err) id%SBTR_ID
6233 endif
6234 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
6235 & id%COMM, id%MYID )
6236.LT. IF ( id%INFO(1) 0 ) GOTO 100
6237.ne. if(err0) THEN
6238 id%INFO(1) = -75
6239 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
6240 & ,id%INFO(2))
6241 endif
6242 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
6243 & id%COMM, id%MYID )
6244.LT. IF ( id%INFO(1) 0 ) GOTO 100
6245 endif
6246 CASE("sched_dep")
6247 CASE("sched_grp")
6248 CASE("croix_manu")
6249 CASE("wk_user")
6250 CASE("nbsa_local")
6251 NbRecords(i1)=1
6252.EQ. if(trim(mode)"memory_save") then
6253 SIZE_VARIABLES(i1)=SIZE_INT
6254.EQ. elseif(trim(mode)"save") then
6255 write(unit,iostat=err) id%NBSA_LOCAL
6256.ne. if(err0) then
6257 id%INFO(1) = -72
6258 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
6259 & id%INFO(2))
6260 endif
6261 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
6262 & id%COMM, id%MYID )
6263.LT. IF ( id%INFO(1) 0 ) GOTO 100
6264.EQ. elseif(trim(mode)"restore") then
6265 SIZE_VARIABLES(i1)=SIZE_INT
6266 read(unit,iostat=err) id%NBSA_LOCAL
6267.ne. if(err0) THEN
6268 id%INFO(1) = -75
6269 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
6270 & ,id%INFO(2))
6271 endif
6272 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
6273 & id%COMM, id%MYID )
6274.LT. IF ( id%INFO(1) 0 ) GOTO 100
6275 endif
6276 CASE("lwk_user")
6277.EQ. if(trim(mode)"memory_save") then
6278 DIFF_SIZE_ALLOC_READ(i1)=SIZE_INT
6279.EQ. elseif(trim(mode)"save") then
6280 DIFF_SIZE_ALLOC_READ(i1)=SIZE_INT
6281.EQ. elseif(trim(mode)"restore") then
6282 DIFF_SIZE_ALLOC_READ(i1)=SIZE_INT
6283 endif
6284 CASE("cb_son_size")
6285 CASE("instance_number")
6286 NbRecords(i1)=1
6287.EQ. if(trim(mode)"memory_save") then
6288 SIZE_VARIABLES(i1)=SIZE_INT
6289.EQ. elseif(trim(mode)"save") then
6290 write(unit,iostat=err) id%INSTANCE_NUMBER
6291.ne. if(err0) then
6292 id%INFO(1) = -72
6293 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
6294 & id%INFO(2))
6295 endif
6296 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
6297 & id%COMM, id%MYID )
6298.LT. IF ( id%INFO(1) 0 ) GOTO 100
6299.EQ. elseif(trim(mode)"restore") then
6300 SIZE_VARIABLES(i1)=SIZE_INT
6301 read(unit,iostat=err) id%INSTANCE_NUMBER
6302.ne. if(err0) THEN
6303 id%INFO(1) = -75
6304 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
6305 & ,id%INFO(2))
6306 endif
6307 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
6308 & id%COMM, id%MYID )
6309.LT. IF ( id%INFO(1) 0 ) GOTO 100
6310 endif
6311 CASE("ooc_max_nb_nodes_for_zone")
6312 NbRecords(i1)=1
6313.EQ. if(trim(mode)"memory_save") then
6314 SIZE_VARIABLES(i1)=SIZE_INT
6315.EQ. elseif(trim(mode)"save") then
6316 write(unit,iostat=err) id%OOC_MAX_NB_NODES_FOR_ZONE
6317.ne. if(err0) then
6318 id%INFO(1) = -72
6319 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
6320 & id%INFO(2))
6321 endif
6322 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
6323 & id%COMM, id%MYID )
6324.LT. IF ( id%INFO(1) 0 ) GOTO 100
6325.EQ. elseif(trim(mode)"restore") then
6326 SIZE_VARIABLES(i1)=SIZE_INT
6327 read(unit,iostat=err) id%OOC_MAX_NB_NODES_FOR_ZONE
6328.ne. if(err0) THEN
6329 id%INFO(1) = -75
6330 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
6331 & ,id%INFO(2))
6332 endif
6333 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
6334 & id%COMM, id%MYID )
6335.LT. IF ( id%INFO(1) 0 ) GOTO 100
6336 endif
6337 CASE("ooc_inode_sequence")
6338 NbRecords(i1)=2
6339.EQ. if(trim(mode)"memory_save") then
6340 IF(associated(id%OOC_INODE_SEQUENCE)) THEN
6341 SIZE_GEST(i1)=SIZE_INT*2
6342 SIZE_VARIABLES(i1)=size(id%OOC_INODE_SEQUENCE,1)
6343 & *size(id%OOC_INODE_SEQUENCE,2)*SIZE_INT
6344 ELSE
6345 SIZE_GEST(i1)=SIZE_INT*3
6346 SIZE_VARIABLES(i1)=0_8
6347 ENDIF
6348.EQ. elseif(trim(mode)"save") then
6349 IF(associated(id%OOC_INODE_SEQUENCE)) THEN
6350 write(unit,iostat=err) size(id%OOC_INODE_SEQUENCE,1)
6351 & ,size(id%OOC_INODE_SEQUENCE,2)
6352.ne. if(err0) then
6353 id%INFO(1) = -72
6354 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
6355 & id%INFO(2))
6356 endif
6357 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
6358 & id%COMM, id%MYID )
6359.LT. IF ( id%INFO(1) 0 ) GOTO 100
6360 write(unit,iostat=err) id%OOC_INODE_SEQUENCE
6361 ELSE
6362 write(unit,iostat=err) -999,-998
6363.ne. if(err0) then
6364 id%INFO(1) = -72
6365 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
6366 & id%INFO(2))
6367 endif
6368 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
6369 & id%COMM, id%MYID )
6370.LT. IF ( id%INFO(1) 0 ) GOTO 100
6371 write(unit,iostat=err) -999
6372 ENDIF
6373.ne. if(err0) then
6374 id%INFO(1) = -72
6375 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
6376 & id%INFO(2))
6377 endif
6378 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
6379 & id%COMM, id%MYID )
6380.LT. IF ( id%INFO(1) 0 ) GOTO 100
6381.EQ. elseif(trim(mode)"restore") then
6382 nullify(id%OOC_INODE_SEQUENCE)
6383 read(unit,iostat=err) size_array1,size_array2
6384.ne. if(err0) THEN
6385 id%INFO(1) = -75
6386 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
6387 & ,id%INFO(2))
6388 endif
6389 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
6390 & id%COMM, id%MYID )
6391.LT. IF ( id%INFO(1) 0 ) GOTO 100
6392.EQ. if(size_array1-999) then
6393 SIZE_GEST(i1)=SIZE_INT*3
6394 SIZE_VARIABLES(i1)=0_8
6395 read(unit,iostat=err) dummy
6396 else
6397 SIZE_GEST(i1)=SIZE_INT*2
6398 SIZE_VARIABLES(i1)=size_array1*size_array2*SIZE_INT
6399 allocate(id%OOC_INODE_SEQUENCE(size_array1
6400 & ,size_array2), stat=allocok)
6401.GT. if (allocok 0) THEN
6402 id%INFO(1) = -78
6403 CALL MUMPS_SETI8TOI4(
6404 & TOTAL_STRUC_SIZE-size_allocated
6405 & ,id%INFO(2))
6406 endif
6407 read(unit,iostat=err) id%OOC_INODE_SEQUENCE
6408 endif
6409 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
6410 & id%COMM, id%MYID )
6411.LT. IF ( id%INFO(1) 0 ) GOTO 100
6412.ne. if(err0) THEN
6413 id%INFO(1) = -75
6414 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
6415 & ,id%INFO(2))
6416 endif
6417 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
6418 & id%COMM, id%MYID )
6419.LT. IF ( id%INFO(1) 0 ) GOTO 100
6420 endif
6421 CASE("ooc_size_of_block")
6422 NbRecords(i1)=2
6423.EQ. if(trim(mode)"memory_save") then
6424 IF(associated(id%OOC_SIZE_OF_BLOCK)) THEN
6425 SIZE_GEST(i1)=SIZE_INT*2
6426 SIZE_VARIABLES(i1)=size(id%OOC_SIZE_OF_BLOCK,1)
6427 & *size(id%OOC_SIZE_OF_BLOCK,2)*SIZE_INT8
6428 ELSE
6429 SIZE_GEST(i1)=SIZE_INT*3
6430 SIZE_VARIABLES(i1)=0_8
6431 ENDIF
6432.EQ. elseif(trim(mode)"save") then
6433 IF(associated(id%OOC_SIZE_OF_BLOCK)) THEN
6434 write(unit,iostat=err) size(id%OOC_SIZE_OF_BLOCK,1)
6435 & ,size(id%OOC_SIZE_OF_BLOCK,2)
6436.ne. if(err0) then
6437 id%INFO(1) = -72
6438 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
6439 & id%INFO(2))
6440 endif
6441 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
6442 & id%COMM, id%MYID )
6443.LT. IF ( id%INFO(1) 0 ) GOTO 100
6444 write(unit,iostat=err) id%OOC_SIZE_OF_BLOCK
6445 ELSE
6446 write(unit,iostat=err) -999,-998
6447.ne. if(err0) then
6448 id%INFO(1) = -72
6449 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
6450 & id%INFO(2))
6451 endif
6452 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
6453 & id%COMM, id%MYID )
6454.LT. IF ( id%INFO(1) 0 ) GOTO 100
6455 write(unit,iostat=err) -999
6456 ENDIF
6457.ne. if(err0) then
6458 id%INFO(1) = -72
6459 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
6460 & id%INFO(2))
6461 endif
6462 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
6463 & id%COMM, id%MYID )
6464.LT. IF ( id%INFO(1) 0 ) GOTO 100
6465.EQ. elseif(trim(mode)"restore") then
6466 nullify(id%OOC_SIZE_OF_BLOCK)
6467 read(unit,iostat=err) size_array1,size_array2
6468.ne. if(err0) THEN
6469 id%INFO(1) = -75
6470 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
6471 & ,id%INFO(2))
6472 endif
6473 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
6474 & id%COMM, id%MYID )
6475.LT. IF ( id%INFO(1) 0 ) GOTO 100
6476.EQ. if(size_array1-999) then
6477 SIZE_GEST(i1)=SIZE_INT*3
6478 SIZE_VARIABLES(i1)=0_8
6479 read(unit,iostat=err) dummy
6480 else
6481 SIZE_GEST(i1)=SIZE_INT*2
6482 SIZE_VARIABLES(i1)=size_array1*size_array2*SIZE_INT8
6483 allocate(id%OOC_SIZE_OF_BLOCK(size_array1
6484 & ,size_array2), stat=allocok)
6485.GT. if (allocok 0) THEN
6486 id%INFO(1) = -78
6487 CALL MUMPS_SETI8TOI4(
6488 & TOTAL_STRUC_SIZE-size_allocated
6489 & ,id%INFO(2))
6490 endif
6491 read(unit,iostat=err) id%OOC_SIZE_OF_BLOCK
6492 endif
6493 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
6494 & id%COMM, id%MYID )
6495.LT. IF ( id%INFO(1) 0 ) GOTO 100
6496.ne. if(err0) THEN
6497 id%INFO(1) = -75
6498 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
6499 & ,id%INFO(2))
6500 endif
6501 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
6502 & id%COMM, id%MYID )
6503.LT. IF ( id%INFO(1) 0 ) GOTO 100
6504 endif
6505 CASE("ooc_vaddr")
6506 NbRecords(i1)=2
6507.EQ. if(trim(mode)"memory_save") then
6508 IF(associated(id%OOC_VADDR)) THEN
6509 SIZE_GEST(i1)=SIZE_INT*2
6510 SIZE_VARIABLES(i1)=size(id%OOC_VADDR,1)
6511 & *size(id%OOC_VADDR,2)*SIZE_INT8
6512 ELSE
6513 SIZE_GEST(i1)=SIZE_INT*3
6514 SIZE_VARIABLES(i1)=0_8
6515 ENDIF
6516.EQ. elseif(trim(mode)"save") then
6517 IF(associated(id%OOC_VADDR)) THEN
6518 write(unit,iostat=err) size(id%OOC_VADDR,1)
6519 & ,size(id%OOC_VADDR,2)
6520.ne. if(err0) then
6521 id%INFO(1) = -72
6522 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
6523 & id%INFO(2))
6524 endif
6525 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
6526 & id%COMM, id%MYID )
6527.LT. IF ( id%INFO(1) 0 ) GOTO 100
6528 write(unit,iostat=err) id%OOC_VADDR
6529 ELSE
6530 write(unit,iostat=err) -999,-998
6531.ne. if(err0) then
6532 id%INFO(1) = -72
6533 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
6534 & id%INFO(2))
6535 endif
6536 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
6537 & id%COMM, id%MYID )
6538.LT. IF ( id%INFO(1) 0 ) GOTO 100
6539 write(unit,iostat=err) -999
6540 ENDIF
6541.ne. if(err0) then
6542 id%INFO(1) = -72
6543 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
6544 & id%INFO(2))
6545 endif
6546 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
6547 & id%COMM, id%MYID )
6548.LT. IF ( id%INFO(1) 0 ) GOTO 100
6549.EQ. elseif(trim(mode)"restore") then
6550 nullify(id%OOC_VADDR)
6551 read(unit,iostat=err) size_array1,size_array2
6552.ne. if(err0) THEN
6553 id%INFO(1) = -75
6554 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
6555 & ,id%INFO(2))
6556 endif
6557 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
6558 & id%COMM, id%MYID )
6559.LT. IF ( id%INFO(1) 0 ) GOTO 100
6560.EQ. if(size_array1-999) then
6561 SIZE_GEST(i1)=SIZE_INT*3
6562 SIZE_VARIABLES(i1)=0_8
6563 read(unit,iostat=err) dummy
6564 else
6565 SIZE_GEST(i1)=SIZE_INT*2
6566 SIZE_VARIABLES(i1)=size_array1*size_array2*SIZE_INT8
6567 allocate(id%OOC_VADDR(size_array1,size_array2),
6568 & stat=allocok)
6569.GT. if (allocok 0) THEN
6570 id%INFO(1) = -78
6571 CALL MUMPS_SETI8TOI4(
6572 & TOTAL_STRUC_SIZE-size_allocated
6573 & ,id%INFO(2))
6574 endif
6575 read(unit,iostat=err) id%OOC_VADDR
6576 endif
6577 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
6578 & id%COMM, id%MYID )
6579.LT. IF ( id%INFO(1) 0 ) GOTO 100
6580.ne. if(err0) THEN
6581 id%INFO(1) = -75
6582 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
6583 & ,id%INFO(2))
6584 endif
6585 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
6586 & id%COMM, id%MYID )
6587.LT. IF ( id%INFO(1) 0 ) GOTO 100
6588 endif
6589 CASE("ooc_total_nb_nodes")
6590 NbRecords(i1)=2
6591.EQ. if(trim(mode)"memory_save") then
6592 IF(associated(id%OOC_TOTAL_NB_NODES)) THEN
6593 SIZE_GEST(i1)=SIZE_INT
6594 SIZE_VARIABLES(i1)=
6595 & size(id%OOC_TOTAL_NB_NODES,1)*SIZE_INT
6596 ELSE
6597 SIZE_GEST(i1)=SIZE_INT*2
6598 SIZE_VARIABLES(i1)=0_8
6599 ENDIF
6600.EQ. elseif(trim(mode)"save") then
6601 IF(associated(id%OOC_TOTAL_NB_NODES)) THEN
6602 write(unit,iostat=err) size(id%OOC_TOTAL_NB_NODES,1)
6603.ne. if(err0) then
6604 id%INFO(1) = -72
6605 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
6606 & id%INFO(2))
6607 endif
6608 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
6609 & id%COMM, id%MYID )
6610.LT. IF ( id%INFO(1) 0 ) GOTO 100
6611 write(unit,iostat=err) id%OOC_TOTAL_NB_NODES
6612 ELSE
6613 write(unit,iostat=err) -999
6614.ne. if(err0) then
6615 id%INFO(1) = -72
6616 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
6617 & id%INFO(2))
6618 endif
6619 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
6620 & id%COMM, id%MYID )
6621.LT. IF ( id%INFO(1) 0 ) GOTO 100
6622 write(unit,iostat=err) -999
6623 ENDIF
6624.ne. if(err0) then
6625 id%INFO(1) = -72
6626 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
6627 & id%INFO(2))
6628 endif
6629 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
6630 & id%COMM, id%MYID )
6631.LT. IF ( id%INFO(1) 0 ) GOTO 100
6632.EQ. elseif(trim(mode)"restore") then
6633 nullify(id%OOC_TOTAL_NB_NODES)
6634 read(unit,iostat=err) size_array1
6635.ne. if(err0) THEN
6636 id%INFO(1) = -75
6637 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
6638 & ,id%INFO(2))
6639 endif
6640 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
6641 & id%COMM, id%MYID )
6642.LT. IF ( id%INFO(1) 0 ) GOTO 100
6643.EQ. if(size_array1-999) then
6644 SIZE_GEST(i1)=SIZE_INT*2
6645 SIZE_VARIABLES(i1)=0_8
6646 read(unit,iostat=err) dummy
6647 else
6648 SIZE_GEST(i1)=SIZE_INT
6649 SIZE_VARIABLES(i1)=size_array1*SIZE_INT
6650 allocate(id%OOC_TOTAL_NB_NODES(size_array1),
6651 & stat=allocok)
6652.GT. if (allocok 0) THEN
6653 id%INFO(1) = -78
6654 CALL MUMPS_SETI8TOI4(
6655 & TOTAL_STRUC_SIZE-size_allocated
6656 & ,id%INFO(2))
6657 endif
6658 read(unit,iostat=err) id%OOC_TOTAL_NB_NODES
6659 endif
6660 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
6661 & id%COMM, id%MYID )
6662.LT. IF ( id%INFO(1) 0 ) GOTO 100
6663.ne. if(err0) THEN
6664 id%INFO(1) = -75
6665 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
6666 & ,id%INFO(2))
6667 endif
6668 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
6669 & id%COMM, id%MYID )
6670.LT. IF ( id%INFO(1) 0 ) GOTO 100
6671 endif
6672 CASE("ooc_nb_files")
6673 CASE("ooc_nb_file_type")
6674 CASE("ooc_file_names")
6675 CASE("ooc_file_name_length")
6676 CASE("pivnul_list")
6677 NbRecords(i1)=2
6678.EQ. if(trim(mode)"memory_save") then
6679 IF(associated(id%PIVNUL_LIST)) THEN
6680 SIZE_GEST(i1)=SIZE_INT
6681 SIZE_VARIABLES(i1)=size(id%PIVNUL_LIST,1)*SIZE_INT
6682 ELSE
6683 SIZE_GEST(i1)=SIZE_INT*2
6684 SIZE_VARIABLES(i1)=0_8
6685 ENDIF
6686.EQ. elseif(trim(mode)"save") then
6687 IF(associated(id%PIVNUL_LIST)) THEN
6688 write(unit,iostat=err) size(id%PIVNUL_LIST,1)
6689.ne. if(err0) then
6690 id%INFO(1) = -72
6691 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
6692 & id%INFO(2))
6693 endif
6694 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
6695 & id%COMM, id%MYID )
6696.LT. IF ( id%INFO(1) 0 ) GOTO 100
6697 write(unit,iostat=err) id%PIVNUL_LIST
6698 ELSE
6699 write(unit,iostat=err) -999
6700.ne. if(err0) then
6701 id%INFO(1) = -72
6702 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
6703 & id%INFO(2))
6704 endif
6705 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
6706 & id%COMM, id%MYID )
6707.LT. IF ( id%INFO(1) 0 ) GOTO 100
6708 write(unit,iostat=err) -999
6709 ENDIF
6710.ne. if(err0) then
6711 id%INFO(1) = -72
6712 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
6713 & id%INFO(2))
6714 endif
6715 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
6716 & id%COMM, id%MYID )
6717.LT. IF ( id%INFO(1) 0 ) GOTO 100
6718.EQ. elseif(trim(mode)"restore") then
6719 nullify(id%PIVNUL_LIST)
6720 read(unit,iostat=err) size_array1
6721.ne. if(err0) THEN
6722 id%INFO(1) = -75
6723 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
6724 & ,id%INFO(2))
6725 endif
6726 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
6727 & id%COMM, id%MYID )
6728.LT. IF ( id%INFO(1) 0 ) GOTO 100
6729.EQ. if(size_array1-999) then
6730 SIZE_GEST(i1)=SIZE_INT*2
6731 SIZE_VARIABLES(i1)=0_8
6732 read(unit,iostat=err) dummy
6733 else
6734 SIZE_GEST(i1)=SIZE_INT
6735 SIZE_VARIABLES(i1)=size_array1*SIZE_INT
6736 allocate(id%PIVNUL_LIST(size_array1), stat=allocok)
6737.GT. if (allocok 0) THEN
6738 id%INFO(1) = -78
6739 CALL MUMPS_SETI8TOI4(
6740 & TOTAL_STRUC_SIZE-size_allocated
6741 & ,id%INFO(2))
6742 endif
6743 read(unit,iostat=err) id%PIVNUL_LIST
6744 endif
6745 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
6746 & id%COMM, id%MYID )
6747.LT. IF ( id%INFO(1) 0 ) GOTO 100
6748.ne. if(err0) THEN
6749 id%INFO(1) = -75
6750 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
6751 & ,id%INFO(2))
6752 endif
6753 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
6754 & id%COMM, id%MYID )
6755.LT. IF ( id%INFO(1) 0 ) GOTO 100
6756 endif
6757 CASE("sup_proc")
6758 CASE("iptr_working")
6759 NbRecords(i1)=2
6760.EQ. if(trim(mode)"memory_save") then
6761 IF(associated(id%IPTR_WORKING)) THEN
6762 SIZE_GEST(i1)=SIZE_INT
6763 SIZE_VARIABLES(i1)=size(id%IPTR_WORKING,1)*SIZE_INT
6764 ELSE
6765 SIZE_GEST(i1)=SIZE_INT*2
6766 SIZE_VARIABLES(i1)=0_8
6767 ENDIF
6768.EQ. elseif(trim(mode)"save") then
6769 IF(associated(id%IPTR_WORKING)) THEN
6770 write(unit,iostat=err) size(id%IPTR_WORKING,1)
6771.ne. if(err0) then
6772 id%INFO(1) = -72
6773 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
6774 & id%INFO(2))
6775 endif
6776 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
6777 & id%COMM, id%MYID )
6778.LT. IF ( id%INFO(1) 0 ) GOTO 100
6779 write(unit,iostat=err) id%IPTR_WORKING
6780 ELSE
6781 write(unit,iostat=err) -999
6782.ne. if(err0) then
6783 id%INFO(1) = -72
6784 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
6785 & id%INFO(2))
6786 endif
6787 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
6788 & id%COMM, id%MYID )
6789.LT. IF ( id%INFO(1) 0 ) GOTO 100
6790 write(unit,iostat=err) -999
6791 ENDIF
6792.ne. if(err0) then
6793 id%INFO(1) = -72
6794 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
6795 & id%INFO(2))
6796 endif
6797 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
6798 & id%COMM, id%MYID )
6799.LT. IF ( id%INFO(1) 0 ) GOTO 100
6800.EQ. elseif(trim(mode)"restore") then
6801 nullify(id%IPTR_WORKING)
6802 read(unit,iostat=err) size_array1
6803.ne. if(err0) THEN
6804 id%INFO(1) = -75
6805 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
6806 & ,id%INFO(2))
6807 endif
6808 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
6809 & id%COMM, id%MYID )
6810.LT. IF ( id%INFO(1) 0 ) GOTO 100
6811.EQ. if(size_array1-999) then
6812 SIZE_GEST(i1)=SIZE_INT*2
6813 SIZE_VARIABLES(i1)=0_8
6814 read(unit,iostat=err) dummy
6815 else
6816 SIZE_GEST(i1)=SIZE_INT
6817 SIZE_VARIABLES(i1)=size_array1*SIZE_INT
6818 allocate(id%IPTR_WORKING(size_array1), stat=allocok)
6819.GT. if (allocok 0) THEN
6820 id%INFO(1) = -78
6821 CALL MUMPS_SETI8TOI4(
6822 & TOTAL_STRUC_SIZE-size_allocated
6823 & ,id%INFO(2))
6824 endif
6825 read(unit,iostat=err) id%IPTR_WORKING
6826 endif
6827 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
6828 & id%COMM, id%MYID )
6829.LT. IF ( id%INFO(1) 0 ) GOTO 100
6830.ne. if(err0) THEN
6831 id%INFO(1) = -75
6832 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
6833 & ,id%INFO(2))
6834 endif
6835 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
6836 & id%COMM, id%MYID )
6837.LT. IF ( id%INFO(1) 0 ) GOTO 100
6838 endif
6839 CASE("working")
6840 NbRecords(i1)=2
6841.EQ. if(trim(mode)"memory_save") then
6842 IF(associated(id%WORKING)) THEN
6843 SIZE_GEST(i1)=SIZE_INT
6844 SIZE_VARIABLES(i1)=size(id%WORKING,1)*SIZE_INT
6845 ELSE
6846 SIZE_GEST(i1)=SIZE_INT*2
6847 SIZE_VARIABLES(i1)=0_8
6848 ENDIF
6849.EQ. elseif(trim(mode)"save") then
6850 IF(associated(id%WORKING)) THEN
6851 write(unit,iostat=err) size(id%WORKING,1)
6852.ne. if(err0) then
6853 id%INFO(1) = -72
6854 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
6855 & id%INFO(2))
6856 endif
6857 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
6858 & id%COMM, id%MYID )
6859.LT. IF ( id%INFO(1) 0 ) GOTO 100
6860 write(unit,iostat=err) id%WORKING
6861 ELSE
6862 write(unit,iostat=err) -999
6863.ne. if(err0) then
6864 id%INFO(1) = -72
6865 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
6866 & id%INFO(2))
6867 endif
6868 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
6869 & id%COMM, id%MYID )
6870.LT. IF ( id%INFO(1) 0 ) GOTO 100
6871 write(unit,iostat=err) -999
6872 ENDIF
6873.ne. if(err0) then
6874 id%INFO(1) = -72
6875 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
6876 & id%INFO(2))
6877 endif
6878 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
6879 & id%COMM, id%MYID )
6880.LT. IF ( id%INFO(1) 0 ) GOTO 100
6881.EQ. elseif(trim(mode)"restore") then
6882 nullify(id%WORKING)
6883 read(unit,iostat=err) size_array1
6884.ne. if(err0) THEN
6885 id%INFO(1) = -75
6886 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
6887 & ,id%INFO(2))
6888 endif
6889 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
6890 & id%COMM, id%MYID )
6891.LT. IF ( id%INFO(1) 0 ) GOTO 100
6892.EQ. if(size_array1-999) then
6893 SIZE_GEST(i1)=SIZE_INT*2
6894 SIZE_VARIABLES(i1)=0_8
6895 read(unit,iostat=err) dummy
6896 else
6897 SIZE_GEST(i1)=SIZE_INT
6898 SIZE_VARIABLES(i1)=size_array1*SIZE_INT
6899 allocate(id%WORKING(size_array1), stat=allocok)
6900.GT. if (allocok 0) THEN
6901 id%INFO(1) = -78
6902 CALL MUMPS_SETI8TOI4(
6903 & TOTAL_STRUC_SIZE-size_allocated
6904 & ,id%INFO(2))
6905 endif
6906 read(unit,iostat=err) id%WORKING
6907 endif
6908 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
6909 & id%COMM, id%MYID )
6910.LT. IF ( id%INFO(1) 0 ) GOTO 100
6911.ne. if(err0) THEN
6912 id%INFO(1) = -75
6913 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
6914 & ,id%INFO(2))
6915 endif
6916 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
6917 & id%COMM, id%MYID )
6918.LT. IF ( id%INFO(1) 0 ) GOTO 100
6919 endif
6920 CASE("root")
6921 DO i2=1,NBVARIABLES_ROOT
6922 TMP_STRING2 = VARIABLES_ROOT(i2)
6923 SELECT CASE(TMP_STRING2)
6924 CASE("mblock")
6925 NbRecords_ROOT(i2)=1
6926.EQ. if(trim(mode)"memory_save") then
6927 SIZE_VARIABLES_ROOT(i2)=SIZE_INT
6928.EQ. elseif(trim(mode)"save") then
6929 write(unit,iostat=err) id%root%MBLOCK
6930.ne. if(err0) then
6931 id%INFO(1) = -72
6932 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written
6933 & ,id%INFO(2))
6934 endif
6935 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
6936 & id%COMM, id%MYID )
6937.LT. IF ( id%INFO(1) 0 ) GOTO 100
6938.EQ. elseif(trim(mode)"restore") then
6939 SIZE_VARIABLES_ROOT(i2)=SIZE_INT
6940 read(unit,iostat=err) id%root%MBLOCK
6941.ne. if(err0) THEN
6942 id%INFO(1) = -75
6943 CALL MUMPS_SETI8TOI4(SIZE_VARIABLES_ROOT(i2)
6944 & ,id%INFO(2))
6945 endif
6946 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
6947 & id%COMM, id%MYID )
6948.LT. IF ( id%INFO(1) 0 ) GOTO 100
6949 endif
6950 CASE("nblock")
6951 NbRecords_ROOT(i2)=1
6952.EQ. if(trim(mode)"memory_save") then
6953 SIZE_VARIABLES_ROOT(i2)=SIZE_INT
6954.EQ. elseif(trim(mode)"save") then
6955 write(unit,iostat=err) id%root%NBLOCK
6956.ne. if(err0) then
6957 id%INFO(1) = -72
6958 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written
6959 & ,id%INFO(2))
6960 endif
6961 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
6962 & id%COMM, id%MYID )
6963.LT. IF ( id%INFO(1) 0 ) GOTO 100
6964.EQ. elseif(trim(mode)"restore") then
6965 SIZE_VARIABLES_ROOT(i2)=SIZE_INT
6966 read(unit,iostat=err) id%root%NBLOCK
6967.ne. if(err0) THEN
6968 id%INFO(1) = -75
6969 CALL MUMPS_SETI8TOI4(SIZE_VARIABLES_ROOT(i2)
6970 & ,id%INFO(2))
6971 endif
6972 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
6973 & id%COMM, id%MYID )
6974.LT. IF ( id%INFO(1) 0 ) GOTO 100
6975 endif
6976 CASE("nprow")
6977 NbRecords_ROOT(i2)=1
6978.EQ. if(trim(mode)"memory_save") then
6979 SIZE_VARIABLES_ROOT(i2)=SIZE_INT
6980.EQ. elseif(trim(mode)"save") then
6981 write(unit,iostat=err) id%root%NPROW
6982.ne. if(err0) then
6983 id%INFO(1) = -72
6984 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written
6985 & ,id%INFO(2))
6986 endif
6987 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
6988 & id%COMM, id%MYID )
6989.LT. IF ( id%INFO(1) 0 ) GOTO 100
6990.EQ. elseif(trim(mode)"restore") then
6991 SIZE_VARIABLES_ROOT(i2)=SIZE_INT
6992 read(unit,iostat=err) id%root%NPROW
6993.ne. if(err0) THEN
6994 id%INFO(1) = -75
6995 CALL MUMPS_SETI8TOI4(SIZE_VARIABLES_ROOT(i2)
6996 & ,id%INFO(2))
6997 endif
6998 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
6999 & id%COMM, id%MYID )
7000.LT. IF ( id%INFO(1) 0 ) GOTO 100
7001 endif
7002 CASE("npcol")
7003 NbRecords_ROOT(i2)=1
7004.EQ. if(trim(mode)"memory_save") then
7005 SIZE_VARIABLES_ROOT(i2)=SIZE_INT
7006.EQ. elseif(trim(mode)"save") then
7007 write(unit,iostat=err) id%root%NPCOL
7008.ne. if(err0) then
7009 id%INFO(1) = -72
7010 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written
7011 & ,id%INFO(2))
7012 endif
7013 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
7014 & id%COMM, id%MYID )
7015.LT. IF ( id%INFO(1) 0 ) GOTO 100
7016.EQ. elseif(trim(mode)"restore") then
7017 SIZE_VARIABLES_ROOT(i2)=SIZE_INT
7018 read(unit,iostat=err) id%root%NPCOL
7019.ne. if(err0) THEN
7020 id%INFO(1) = -75
7021 CALL MUMPS_SETI8TOI4(SIZE_VARIABLES_ROOT(i2)
7022 & ,id%INFO(2))
7023 endif
7024 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
7025 & id%COMM, id%MYID )
7026.LT. IF ( id%INFO(1) 0 ) GOTO 100
7027 endif
7028 CASE("myrow")
7029 NbRecords_ROOT(i2)=1
7030.EQ. if(trim(mode)"memory_save") then
7031 NbRecords_ROOT(i2)=1
7032 SIZE_VARIABLES_ROOT(i2)=SIZE_INT
7033.EQ. elseif(trim(mode)"save") then
7034 write(unit,iostat=err) id%root%MYROW
7035.ne. if(err0) then
7036 id%INFO(1) = -72
7037 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written
7038 & ,id%INFO(2))
7039 endif
7040 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
7041 & id%COMM, id%MYID )
7042.LT. IF ( id%INFO(1) 0 ) GOTO 100
7043.EQ. elseif(trim(mode)"restore") then
7044 SIZE_VARIABLES_ROOT(i2)=SIZE_INT
7045 read(unit,iostat=err) id%root%MYROW
7046.ne. if(err0) THEN
7047 id%INFO(1) = -75
7048 CALL MUMPS_SETI8TOI4(SIZE_VARIABLES_ROOT(i2),
7049 & id%INFO(2))
7050 endif
7051 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
7052 & id%COMM, id%MYID )
7053.LT. IF ( id%INFO(1) 0 ) GOTO 100
7054 endif
7055 CASE("mycol")
7056 NbRecords_ROOT(i2)=1
7057.EQ. if(trim(mode)"memory_save") then
7058 SIZE_VARIABLES_ROOT(i2)=SIZE_INT
7059.EQ. elseif(trim(mode)"save") then
7060 write(unit,iostat=err) id%root%MYCOL
7061.ne. if(err0) then
7062 id%INFO(1) = -72
7063 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written
7064 & ,id%INFO(2))
7065 endif
7066 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
7067 & id%COMM, id%MYID )
7068.LT. IF ( id%INFO(1) 0 ) GOTO 100
7069.EQ. elseif(trim(mode)"restore") then
7070 SIZE_VARIABLES_ROOT(i2)=SIZE_INT
7071 read(unit,iostat=err) id%root%MYCOL
7072.ne. if(err0) THEN
7073 id%INFO(1) = -75
7074 CALL MUMPS_SETI8TOI4(SIZE_VARIABLES_ROOT(i2)
7075 & ,id%INFO(2))
7076 endif
7077 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
7078 & id%COMM, id%MYID )
7079.LT. IF ( id%INFO(1) 0 ) GOTO 100
7080 endif
7081 CASE("schur_mloc")
7082 NbRecords_ROOT(i2)=1
7083.EQ. if(trim(mode)"memory_save") then
7084 SIZE_VARIABLES_ROOT(i2)=SIZE_INT
7085.EQ. elseif(trim(mode)"save") then
7086 write(unit,iostat=err) id%root%SCHUR_MLOC
7087.ne. if(err0) then
7088 id%INFO(1) = -72
7089 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written
7090 & ,id%INFO(2))
7091 endif
7092 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
7093 & id%COMM, id%MYID )
7094.LT. IF ( id%INFO(1) 0 ) GOTO 100
7095.EQ. elseif(trim(mode)"restore") then
7096 SIZE_VARIABLES_ROOT(i2)=SIZE_INT
7097 read(unit,iostat=err) id%root%SCHUR_MLOC
7098.ne. if(err0) THEN
7099 id%INFO(1) = -75
7100 CALL MUMPS_SETI8TOI4(SIZE_VARIABLES_ROOT(i2)
7101 & ,id%INFO(2))
7102 endif
7103 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
7104 & id%COMM, id%MYID )
7105.LT. IF ( id%INFO(1) 0 ) GOTO 100
7106 endif
7107 CASE("schur_nloc")
7108 NbRecords_ROOT(i2)=1
7109.EQ. if(trim(mode)"memory_save") then
7110 SIZE_VARIABLES_ROOT(i2)=SIZE_INT
7111.EQ. elseif(trim(mode)"save") then
7112 write(unit,iostat=err) id%root%SCHUR_NLOC
7113.ne. if(err0) then
7114 id%INFO(1) = -72
7115 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written
7116 & ,id%INFO(2))
7117 endif
7118 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
7119 & id%COMM, id%MYID )
7120.LT. IF ( id%INFO(1) 0 ) GOTO 100
7121.EQ. elseif(trim(mode)"restore") then
7122 SIZE_VARIABLES_ROOT(i2)=SIZE_INT
7123 read(unit,iostat=err) id%root%SCHUR_NLOC
7124.ne. if(err0) THEN
7125 id%INFO(1) = -75
7126 CALL MUMPS_SETI8TOI4(SIZE_VARIABLES_ROOT(i2)
7127 & ,id%INFO(2))
7128 endif
7129 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
7130 & id%COMM, id%MYID )
7131.LT. IF ( id%INFO(1) 0 ) GOTO 100
7132 endif
7133 CASE("schur_lld")
7134 NbRecords_ROOT(i2)=1
7135.EQ. if(trim(mode)"memory_save") then
7136 SIZE_VARIABLES_ROOT(i2)=SIZE_INT
7137.EQ. elseif(trim(mode)"save") then
7138 write(unit,iostat=err) id%root%SCHUR_LLD
7139.ne. if(err0) then
7140 id%INFO(1) = -72
7141 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written
7142 & ,id%INFO(2))
7143 endif
7144 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
7145 & id%COMM, id%MYID )
7146.LT. IF ( id%INFO(1) 0 ) GOTO 100
7147.EQ. elseif(trim(mode)"restore") then
7148 SIZE_VARIABLES_ROOT(i2)=SIZE_INT
7149 read(unit,iostat=err) id%root%SCHUR_LLD
7150.ne. if(err0) THEN
7151 id%INFO(1) = -75
7152 CALL MUMPS_SETI8TOI4(SIZE_VARIABLES_ROOT(i2),
7153 & id%INFO(2))
7154 endif
7155 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
7156 & id%COMM, id%MYID )
7157.LT. IF ( id%INFO(1) 0 ) GOTO 100
7158 endif
7159 CASE("rhs_nloc")
7160 NbRecords_ROOT(i2)=1
7161.EQ. if(trim(mode)"memory_save") then
7162 SIZE_VARIABLES_ROOT(i2)=SIZE_INT
7163.EQ. elseif(trim(mode)"save") then
7164 write(unit,iostat=err) id%root%RHS_NLOC
7165.ne. if(err0) then
7166 id%INFO(1) = -72
7167 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written
7168 & ,id%INFO(2))
7169 endif
7170 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
7171 & id%COMM, id%MYID )
7172.LT. IF ( id%INFO(1) 0 ) GOTO 100
7173.EQ. elseif(trim(mode)"restore") then
7174 SIZE_VARIABLES_ROOT(i2)=SIZE_INT
7175 read(unit,iostat=err) id%root%RHS_NLOC
7176.ne. if(err0) THEN
7177 id%INFO(1) = -75
7178 CALL MUMPS_SETI8TOI4(SIZE_VARIABLES_ROOT(i2),
7179 & id%INFO(2))
7180 endif
7181 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
7182 & id%COMM, id%MYID )
7183.LT. IF ( id%INFO(1) 0 ) GOTO 100
7184 endif
7185 CASE("root_size")
7186 nbrecords_root(i2)=1
7187 if(trim(mode).EQ."memory_save") then
7188 size_variables_root(i2)=size_int
7189 elseif(trim(mode).EQ."save") then
7190 write(unit,iostat=err) id%root%ROOT_SIZE
7191 if(err.ne.0) then
7192 id%INFO(1) = -72
7193 CALL mumps_seti8toi4(total_file_size-size_written
7194 & ,id%INFO(2))
7195 endif
7196 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
7197 & id%COMM, id%MYID )
7198 IF ( id%INFO(1) .LT. 0 ) GOTO 100
7199 elseif(trim(mode).EQ."restore") then
7200 SIZE_VARIABLES_ROOT(i2)=SIZE_INT
7201 read(unit,iostat=err) id%root%ROOT_SIZE
7202.ne. if(err0) THEN
7203 id%INFO(1) = -75
7204 CALL MUMPS_SETI8TOI4(SIZE_VARIABLES_ROOT(i2),
7205 & id%INFO(2))
7206 endif
7207 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
7208 & id%COMM, id%MYID )
7209.LT. IF ( id%INFO(1) 0 ) GOTO 100
7210 endif
7211 CASE("tot_root_size")
7212 NbRecords_ROOT(i2)=1
7213.EQ. if(trim(mode)"memory_save") then
7214 SIZE_VARIABLES_ROOT(i2)=SIZE_INT
7215.EQ. elseif(trim(mode)"save") then
7216 write(unit,iostat=err) id%root%TOT_ROOT_SIZE
7217.ne. if(err0) then
7218 id%INFO(1) = -72
7219 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written
7220 & ,id%INFO(2))
7221 endif
7222 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
7223 & id%COMM, id%MYID )
7224.LT. IF ( id%INFO(1) 0 ) GOTO 100
7225.EQ. elseif(trim(mode)"restore") then
7226 SIZE_VARIABLES_ROOT(i2)=SIZE_INT
7227 read(unit,iostat=err) id%root%TOT_ROOT_SIZE
7228.ne. if(err0) THEN
7229 id%INFO(1) = -75
7230 CALL MUMPS_SETI8TOI4(SIZE_VARIABLES_ROOT(i2),
7231 & id%INFO(2))
7232 endif
7233 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
7234 & id%COMM, id%MYID )
7235.LT. IF ( id%INFO(1) 0 ) GOTO 100
7236 endif
7237 CASE("descriptor")
7238 NbRecords_ROOT(i2)=1
7239.EQ. if(trim(mode)"memory_save") then
7240 SIZE_VARIABLES_ROOT(i2)=size(id%root%DESCRIPTOR,1)
7241 & *SIZE_INT
7242.EQ. elseif(trim(mode)"save") then
7243 write(unit,iostat=err) id%root%DESCRIPTOR
7244.ne. if(err0) then
7245 id%INFO(1) = -72
7246 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written
7247 & ,id%INFO(2))
7248 endif
7249 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
7250 & id%COMM, id%MYID )
7251.LT. IF ( id%INFO(1) 0 ) GOTO 100
7252.EQ. elseif(trim(mode)"restore") then
7253 SIZE_VARIABLES_ROOT(i2)=SIZE_INT*
7254 & size(id%root%DESCRIPTOR,1)
7255 read(unit,iostat=err) id%root%DESCRIPTOR
7256.ne. if(err0) THEN
7257 id%INFO(1) = -75
7258 CALL MUMPS_SETI8TOI4(SIZE_VARIABLES_ROOT(i2),
7259 & id%INFO(2))
7260 endif
7261 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
7262 & id%COMM, id%MYID )
7263.LT. IF ( id%INFO(1) 0 ) GOTO 100
7264 endif
7265 CASE("cntxt_blacs")
7266 NbRecords_ROOT(i2)=1
7267.EQ. if(trim(mode)"memory_save") then
7268 SIZE_VARIABLES_ROOT(i2)=SIZE_INT
7269.EQ. elseif(trim(mode)"save") then
7270 write(unit,iostat=err) id%root%CNTXT_BLACS
7271.ne. if(err0) then
7272 id%INFO(1) = -72
7273 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written
7274 & ,id%INFO(2))
7275 endif
7276 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
7277 & id%COMM, id%MYID )
7278.LT. IF ( id%INFO(1) 0 ) GOTO 100
7279.EQ. elseif(trim(mode)"restore") then
7280 SIZE_VARIABLES_ROOT(i2)=SIZE_INT
7281 read(unit,iostat=err) id%root%CNTXT_BLACS
7282.ne. if(err0) THEN
7283 id%INFO(1) = -75
7284 CALL MUMPS_SETI8TOI4(SIZE_VARIABLES_ROOT(i2),
7285 & id%INFO(2))
7286 endif
7287 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
7288 & id%COMM, id%MYID )
7289.LT. IF ( id%INFO(1) 0 ) GOTO 100
7290 endif
7291 CASE("lpiv")
7292 NbRecords_ROOT(i2)=1
7293.EQ. if(trim(mode)"memory_save") then
7294 SIZE_VARIABLES_ROOT(i2)=SIZE_INT
7295.EQ. elseif(trim(mode)"save") then
7296 write(unit,iostat=err) id%root%LPIV
7297.ne. if(err0) then
7298 id%INFO(1) = -72
7299 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written
7300 & ,id%INFO(2))
7301 endif
7302 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
7303 & id%COMM, id%MYID )
7304.LT. IF ( id%INFO(1) 0 ) GOTO 100
7305.EQ. elseif(trim(mode)"restore") then
7306 SIZE_VARIABLES_ROOT(i2)=SIZE_INT
7307 read(unit,iostat=err) id%root%LPIV
7308.ne. if(err0) THEN
7309 id%INFO(1) = -75
7310 CALL MUMPS_SETI8TOI4(SIZE_VARIABLES_ROOT(i2),
7311 & id%INFO(2))
7312 endif
7313 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
7314 & id%COMM, id%MYID )
7315.LT. IF ( id%INFO(1) 0 ) GOTO 100
7316 endif
7317 CASE("rg2l_row")
7318 CASE("rg2l_col")
7319 CASE("ipiv")
7320 NbRecords_ROOT(i2)=2
7321.EQ. if(trim(mode)"memory_save") then
7322 IF(associated(id%root%IPIV)) THEN
7323 SIZE_GEST_ROOT(i2)=SIZE_INT
7324 SIZE_VARIABLES_ROOT(i2)=
7325 & size(id%root%IPIV,1)*SIZE_INT
7326 ELSE
7327 SIZE_GEST_ROOT(i2)=SIZE_INT*2
7328 SIZE_VARIABLES_ROOT(i2)=0_8
7329 ENDIF
7330.EQ. elseif(trim(mode)"save") then
7331 IF(associated(id%root%IPIV)) THEN
7332 write(unit,iostat=err) size(id%root%IPIV,1)
7333.ne. if(err0) then
7334 id%INFO(1) = -72
7335 CALL MUMPS_SETI8TOI4(
7336 & TOTAL_FILE_SIZE-size_written
7337 & ,id%INFO(2))
7338 endif
7339 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
7340 & id%COMM, id%MYID )
7341.LT. IF ( id%INFO(1) 0 ) GOTO 100
7342 write(unit,iostat=err) id%root%IPIV
7343 ELSE
7344 write(unit,iostat=err) -999
7345.ne. if(err0) then
7346 id%INFO(1) = -72
7347 CALL MUMPS_SETI8TOI4(
7348 & TOTAL_FILE_SIZE-size_written
7349 & ,id%INFO(2))
7350 endif
7351 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
7352 & id%COMM, id%MYID )
7353.LT. IF ( id%INFO(1) 0 ) GOTO 100
7354 write(unit,iostat=err) -999
7355 ENDIF
7356.ne. if(err0) then
7357 id%INFO(1) = -72
7358 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written
7359 & ,id%INFO(2))
7360 endif
7361 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
7362 & id%COMM, id%MYID )
7363.LT. IF ( id%INFO(1) 0 ) GOTO 100
7364.EQ. elseif(trim(mode)"restore") then
7365 nullify(id%root%IPIV)
7366 read(unit,iostat=err) size_array1
7367.ne. if(err0) THEN
7368 id%INFO(1) = -75
7369 CALL MUMPS_SETI8TOI4(SIZE_VARIABLES_ROOT(i2),
7370 & id%INFO(2))
7371 endif
7372 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
7373 & id%COMM, id%MYID )
7374.LT. IF ( id%INFO(1) 0 ) GOTO 100
7375.EQ. if(size_array1-999) then
7376 SIZE_GEST_ROOT(i2)=SIZE_INT*2
7377 SIZE_VARIABLES_ROOT(i2)=0_8
7378 read(unit,iostat=err) dummy
7379 else
7380 SIZE_GEST_ROOT(i2)=SIZE_INT
7381 SIZE_VARIABLES_ROOT(i2)=size_array1*SIZE_INT
7382 allocate(id%root%IPIV(size_array1), stat=allocok)
7383.GT. if (allocok 0) THEN
7384 id%INFO(1) = -78
7385 CALL MUMPS_SETI8TOI4(
7386 & TOTAL_STRUC_SIZE-size_allocated
7387 & ,id%INFO(2))
7388 endif
7389 read(unit,iostat=err) id%root%IPIV
7390 endif
7391 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
7392 & id%COMM, id%MYID )
7393.LT. IF ( id%INFO(1) 0 ) GOTO 100
7394.ne. if(err0) THEN
7395 id%INFO(1) = -75
7396 CALL MUMPS_SETI8TOI4(SIZE_VARIABLES_ROOT(i2),
7397 & id%INFO(2))
7398 endif
7399 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
7400 & id%COMM, id%MYID )
7401.LT. IF ( id%INFO(1) 0 ) GOTO 100
7402 endif
7403 CASE("rhs_cntr_master_root")
7404 NbRecords_ROOT(i2)=2
7405.EQ. if(trim(mode)"memory_save") then
7406 IF(associated(id%root%RHS_CNTR_MASTER_ROOT)) THEN
7407 SIZE_GEST_ROOT(i2)=SIZE_INT
7408 SIZE_VARIABLES_ROOT(i2)=
7409 & size(id%root%RHS_CNTR_MASTER_ROOT,1)
7410 & *SIZE_ARITH_DEP
7411 ELSE
7412 SIZE_GEST_ROOT(i2)=SIZE_INT*2
7413 SIZE_VARIABLES_ROOT(i2)=0_8
7414 ENDIF
7415.EQ. elseif(trim(mode)"save") then
7416 IF(associated(id%root%RHS_CNTR_MASTER_ROOT)) THEN
7417 write(unit,iostat=err)
7418 & size(id%root%RHS_CNTR_MASTER_ROOT,1)
7419.ne. if(err0) then
7420 id%INFO(1) = -72
7421 CALL MUMPS_SETI8TOI4(
7422 & TOTAL_FILE_SIZE-size_written
7423 & ,id%INFO(2))
7424 endif
7425 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
7426 & id%COMM, id%MYID )
7427.LT. IF ( id%INFO(1) 0 ) GOTO 100
7428 write(unit,iostat=err) id%root%RHS_CNTR_MASTER_ROOT
7429 ELSE
7430 write(unit,iostat=err) -999
7431.ne. if(err0) then
7432 id%INFO(1) = -72
7433 CALL MUMPS_SETI8TOI4(
7434 & TOTAL_FILE_SIZE-size_written
7435 & ,id%INFO(2))
7436 endif
7437 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
7438 & id%COMM, id%MYID )
7439.LT. IF ( id%INFO(1) 0 ) GOTO 100
7440 write(unit,iostat=err) -999
7441 ENDIF
7442.ne. if(err0) then
7443 id%INFO(1) = -72
7444 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written
7445 & ,id%INFO(2))
7446 endif
7447 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
7448 & id%COMM, id%MYID )
7449.LT. IF ( id%INFO(1) 0 ) GOTO 100
7450.EQ. elseif(trim(mode)"restore") then
7451 nullify(id%root%RHS_CNTR_MASTER_ROOT)
7452 read(unit,iostat=err) size_array1
7453.ne. if(err0) THEN
7454 id%INFO(1) = -75
7455 CALL MUMPS_SETI8TOI4(SIZE_VARIABLES_ROOT(i2),
7456 & id%INFO(2))
7457 endif
7458 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
7459 & id%COMM, id%MYID )
7460.LT. IF ( id%INFO(1) 0 ) GOTO 100
7461.EQ. if(size_array1-999) then
7462 SIZE_GEST_ROOT(i2)=SIZE_INT*2
7463 SIZE_VARIABLES_ROOT(i2)=0_8
7464 read(unit,iostat=err) dummy
7465 else
7466 SIZE_GEST_ROOT(i2)=SIZE_INT
7467 SIZE_VARIABLES_ROOT(i2)=size_array1*SIZE_ARITH_DEP
7468 allocate(id%root%RHS_CNTR_MASTER_ROOT(size_array1),
7469 & stat=allocok)
7470.GT. if (allocok 0) THEN
7471 id%INFO(1) = -78
7472 CALL MUMPS_SETI8TOI4(
7473 & TOTAL_STRUC_SIZE-size_allocated
7474 & ,id%INFO(2))
7475 endif
7476 read(unit,iostat=err) id%root%RHS_CNTR_MASTER_ROOT
7477 endif
7478 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
7479 & id%COMM, id%MYID )
7480.LT. IF ( id%INFO(1) 0 ) GOTO 100
7481.ne. if(err0) THEN
7482 id%INFO(1) = -75
7483 CALL MUMPS_SETI8TOI4(SIZE_VARIABLES_ROOT(i2),
7484 & id%INFO(2))
7485 endif
7486 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
7487 & id%COMM, id%MYID )
7488.LT. IF ( id%INFO(1) 0 ) GOTO 100
7489 endif
7490 CASE("schur_pointer")
7491 CASE("qr_tau")
7492 CASE("rhs_root")
7493 NbRecords_ROOT(i2)=2
7494.EQ. if(trim(mode)"memory_save") then
7495 IF(associated(id%root%RHS_ROOT)) THEN
7496 SIZE_GEST_ROOT(i2)=SIZE_INT*2
7497 SIZE_VARIABLES_ROOT(i2)=size(id%root%RHS_ROOT,1)
7498 & *size(id%root%RHS_ROOT,2)*SIZE_ARITH_DEP
7499 ELSE
7500 SIZE_GEST_ROOT(i2)=SIZE_INT*3
7501 SIZE_VARIABLES_ROOT(i2)=0_8
7502 ENDIF
7503.EQ. elseif(trim(mode)"save") then
7504 IF(associated(id%root%RHS_ROOT)) THEN
7505 write(unit,iostat=err) size(id%root%RHS_ROOT,1)
7506 & ,size(id%root%RHS_ROOT,2)
7507.ne. if(err0) then
7508 id%INFO(1) = -72
7509 CALL MUMPS_SETI8TOI4(
7510 & TOTAL_FILE_SIZE-size_written
7511 & ,id%INFO(2))
7512 endif
7513 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
7514 & id%COMM, id%MYID )
7515.LT. IF ( id%INFO(1) 0 ) GOTO 100
7516 write(unit,iostat=err) id%root%RHS_ROOT
7517 ELSE
7518 write(unit,iostat=err) -999,-998
7519.ne. if(err0) then
7520 id%INFO(1) = -72
7521 CALL MUMPS_SETI8TOI4(
7522 & TOTAL_FILE_SIZE-size_written
7523 & ,id%INFO(2))
7524 endif
7525 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
7526 & id%COMM, id%MYID )
7527.LT. IF ( id%INFO(1) 0 ) GOTO 100
7528 write(unit,iostat=err) -999
7529 ENDIF
7530.ne. if(err0) then
7531 id%INFO(1) = -72
7532 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written
7533 & ,id%INFO(2))
7534 endif
7535 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
7536 & id%COMM, id%MYID )
7537.LT. IF ( id%INFO(1) 0 ) GOTO 100
7538.EQ. elseif(trim(mode)"restore") then
7539 nullify(id%root%RHS_ROOT)
7540 read(unit,iostat=err) size_array1,size_array2
7541.ne. if(err0) THEN
7542 id%INFO(1) = -75
7543 CALL MUMPS_SETI8TOI4(SIZE_VARIABLES_ROOT(i2),
7544 & id%INFO(2))
7545 endif
7546 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
7547 & id%COMM, id%MYID )
7548.LT. IF ( id%INFO(1) 0 ) GOTO 100
7549.EQ. if(size_array1-999) then
7550 SIZE_GEST_ROOT(i2)=SIZE_INT*3
7551 SIZE_VARIABLES_ROOT(i2)=0_8
7552 read(unit,iostat=err) dummy
7553 else
7554 SIZE_GEST_ROOT(i2)=SIZE_INT*2
7555 SIZE_VARIABLES_ROOT(i2)=size_array1*size_array2
7556 & *SIZE_ARITH_DEP
7557 allocate(id%root%RHS_ROOT(size_array1,size_array2),
7558 & stat=allocok)
7559.GT. if (allocok 0) THEN
7560 id%INFO(1) = -78
7561 CALL MUMPS_SETI8TOI4(
7562 & TOTAL_STRUC_SIZE-size_allocated
7563 & ,id%INFO(2))
7564 endif
7565 read(unit,iostat=err) id%root%RHS_ROOT
7566 endif
7567 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
7568 & id%COMM, id%MYID )
7569.LT. IF ( id%INFO(1) 0 ) GOTO 100
7570.ne. if(err0) THEN
7571 id%INFO(1) = -75
7572 CALL MUMPS_SETI8TOI4(SIZE_VARIABLES_ROOT(i2),
7573 & id%INFO(2))
7574 endif
7575 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
7576 & id%COMM, id%MYID )
7577.LT. IF ( id%INFO(1) 0 ) GOTO 100
7578 endif
7579 CASE("qr_rcond")
7580 NbRecords_ROOT(i2)=1
7581.EQ. if(trim(mode)"memory_save") then
7582 SIZE_VARIABLES_ROOT(i2)=SIZE_RL_OR_DBL
7583.EQ. elseif(trim(mode)"save") then
7584 write(unit,iostat=err) id%root%QR_RCOND
7585.ne. if(err0) then
7586 id%INFO(1) = -72
7587 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written
7588 & ,id%INFO(2))
7589 endif
7590 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
7591 & id%COMM, id%MYID )
7592.LT. IF ( id%INFO(1) 0 ) GOTO 100
7593.EQ. elseif(trim(mode)"restore") then
7594 SIZE_VARIABLES_ROOT(i2)=SIZE_RL_OR_DBL
7595 read(unit,iostat=err) id%root%QR_RCOND
7596.ne. if(err0) THEN
7597 id%INFO(1) = -75
7598 CALL MUMPS_SETI8TOI4(SIZE_VARIABLES_ROOT(i2),
7599 & id%INFO(2))
7600 endif
7601 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
7602 & id%COMM, id%MYID )
7603.LT. IF ( id%INFO(1) 0 ) GOTO 100
7604 endif
7605 CASE("yes")
7606 NbRecords_ROOT(i2)=1
7607.EQ. if(trim(mode)"memory_save") then
7608 SIZE_VARIABLES_ROOT(i2)=SIZE_LOGICAL
7609.EQ. elseif(trim(mode)"save") then
7610 write(unit,iostat=err) id%root%yes
7611.ne. if(err0) then
7612 id%INFO(1) = -72
7613 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written
7614 & ,id%INFO(2))
7615 endif
7616 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
7617 & id%COMM, id%MYID )
7618.LT. IF ( id%INFO(1) 0 ) GOTO 100
7619.EQ. elseif(trim(mode)"restore") then
7620 SIZE_VARIABLES_ROOT(i2)=SIZE_LOGICAL
7621 read(unit,iostat=err) id%root%yes
7622.ne. if(err0) THEN
7623 id%INFO(1) = -75
7624 CALL MUMPS_SETI8TOI4(SIZE_VARIABLES_ROOT(i2),
7625 & id%INFO(2))
7626 endif
7627 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
7628 & id%COMM, id%MYID )
7629.LT. IF ( id%INFO(1) 0 ) GOTO 100
7630 endif
7631 CASE("gridinit_done")
7632 NbRecords_ROOT(i2)=1
7633.EQ. if(trim(mode)"memory_save") then
7634 SIZE_VARIABLES_ROOT(i2)=SIZE_LOGICAL
7635.EQ. elseif(trim(mode)"save") then
7636 write(unit,iostat=err) id%root%gridinit_done
7637.ne. if(err0) then
7638 id%INFO(1) = -72
7639 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written
7640 & ,id%INFO(2))
7641 endif
7642 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
7643 & id%COMM, id%MYID )
7644.LT. IF ( id%INFO(1) 0 ) GOTO 100
7645.EQ. elseif(trim(mode)"restore") then
7646 SIZE_VARIABLES_ROOT(i2)=SIZE_LOGICAL
7647 read(unit,iostat=err) id%root%gridinit_done
7648.ne. if(err0) THEN
7649 id%INFO(1) = -75
7650 CALL MUMPS_SETI8TOI4(SIZE_VARIABLES_ROOT(i2),
7651 & id%INFO(2))
7652 endif
7653 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
7654 & id%COMM, id%MYID )
7655.LT. IF ( id%INFO(1) 0 ) GOTO 100
7656 endif
7657 CASE("svd_u")
7658 CASE("svd_vt")
7659 CASE("singular_values")
7660 CASE("nb_singular_values")
7661 NbRecords_ROOT(i2)=1
7662.EQ. if(trim(mode)"memory_save") then
7663 SIZE_VARIABLES_ROOT(i2)=SIZE_INT
7664.EQ. elseif(trim(mode)"save") then
7665 write(unit,iostat=err) id%root%NB_SINGULAR_VALUES
7666.ne. if(err0) then
7667 id%INFO(1) = -72
7668 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written
7669 & ,id%INFO(2))
7670 endif
7671 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
7672 & id%COMM, id%MYID )
7673.LT. IF ( id%INFO(1) 0 ) GOTO 100
7674.EQ. elseif(trim(mode)"restore") then
7675 SIZE_VARIABLES_ROOT(i2)=SIZE_INT
7676 read(unit,iostat=err) id%root%NB_SINGULAR_VALUES
7677.ne. if(err0) THEN
7678 id%INFO(1) = -75
7679 CALL MUMPS_SETI8TOI4(SIZE_VARIABLES_ROOT(i2)
7680 & ,id%INFO(2))
7681 endif
7682 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
7683 & id%COMM, id%MYID )
7684.LT. IF ( id%INFO(1) 0 ) GOTO 100
7685 endif
7686 CASE("rootpad0","rootpad1","rootpad2","rootpad",
7687 & "rootpad3","rootpad4")
7688 CASE DEFAULT
7689 END SELECT
7690 if(trim(mode).EQ."memory_save") then
7691 nbsubrecords=int(size_variables_root(i2)/huge(i4))
7692 IF(nbsubrecords.GT.0) then
7693 nbrecords_root(i2)=nbrecords_root(i2)+nbsubrecords
7694 ENDIF
7695 elseif(trim(mode).EQ."save") then
7696 size_written=size_written+size_variables_root(i2)
7697 & +size_gest_root(i2)
7698#if !defined(MUMPS_F2003)
7699 size_written=size_written
7700 & +int(2*id%KEEP(34)*nbrecords_root(i2),kind=8)
7701#endif
7702 elseif(trim(mode).EQ."restore") then
7703 size_allocated=size_allocated+size_variables_root(i2)+
7704 & diff_size_alloc_read_root(i2)
7705 size_read=size_read+size_variables_root(i2)
7706 & +int(size_gest_root(i2),kind=8)
7707#if !defined(MUMPS_F2003)
7708 size_read=size_read
7709 & +int(2*id%KEEP(34)*nbrecords_root(i2),kind=8)
7710#endif
7711 elseif(trim(mode).EQ."fake_restore") then
7712 endif
7713 ENDDO
7714 CASE("NBGRP")
7715 nbrecords(i1)=1
7716 if(trim(mode).EQ."memory_save") then
7717 size_variables(i1)=size_int
7718 elseif(trim(mode).EQ."save") then
7719 write(unit,iostat=err) id%NBGRP
7720 if(err.ne.0) then
7721 id%INFO(1) = -72
7722 CALL mumps_seti8toi4(total_file_size-size_written,
7723 & id%INFO(2))
7724 endif
7725 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
7726 & id%COMM, id%MYID )
7727 IF ( id%INFO(1) .LT. 0 ) GOTO 100
7728 elseif(trim(mode).EQ."restore") then
7729 size_variables(i1)=size_int
7730 read(unit,iostat=err) id%NBGRP
7731 if(err.ne.0) THEN
7732 id%INFO(1) = -75
7733 CALL mumps_seti8toi4(total_file_size-size_read
7734 & ,id%INFO(2))
7735 endif
7736 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
7737 & id%COMM, id%MYID )
7738 IF ( id%INFO(1) .LT. 0 ) GOTO 100
7739 endif
7740 CASE("LRGROUPS")
7741 nbrecords(i1)=2
7742 if(trim(mode).EQ."memory_save") then
7743 IF(associated(id%LRGROUPS)) THEN
7744 size_gest(i1)=size_int
7745 size_variables(i1)=size(id%LRGROUPS,1)*size_int
7746 ELSE
7747 size_gest(i1)=size_int*2
7748 size_variables(i1)=0_8
7749 ENDIF
7750 elseif(trim(mode).EQ."save") then
7751 IF(associated(id%LRGROUPS)) THEN
7752 write(unit,iostat=err) size(id%LRGROUPS,1)
7753 if(err.ne.0) then
7754 id%INFO(1) = -72
7755 CALL mumps_seti8toi4(total_file_size-size_written,
7756 & id%INFO(2))
7757 endif
7758 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
7759 & id%COMM, id%MYID )
7760 IF ( id%INFO(1) .LT. 0 ) GOTO 100
7761 write(unit,iostat=err) id%LRGROUPS
7762 ELSE
7763 write(unit,iostat=err) -999
7764 if(err.ne.0) then
7765 id%INFO(1) = -72
7766 CALL mumps_seti8toi4(total_file_size-size_written,
7767 & id%INFO(2))
7768 endif
7769 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
7770 & id%COMM, id%MYID )
7771 IF ( id%INFO(1) .LT. 0 ) GOTO 100
7772 write(unit,iostat=err) -999
7773 ENDIF
7774 if(err.ne.0) then
7775 id%INFO(1) = -72
7776 CALL mumps_seti8toi4(total_file_size-size_written,
7777 & id%INFO(2))
7778 endif
7779 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
7780 & id%COMM, id%MYID )
7781 IF ( id%INFO(1) .LT. 0 ) GOTO 100
7782 elseif(trim(mode).EQ."restore") then
7783 nullify(id%LRGROUPS)
7784 read(unit,iostat=err) size_array1
7785 if(err.ne.0) THEN
7786 id%INFO(1) = -75
7787 CALL mumps_seti8toi4(total_file_size-size_read
7788 & ,id%INFO(2))
7789 endif
7790 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
7791 & id%COMM, id%MYID )
7792 IF ( id%INFO(1) .LT. 0 ) GOTO 100
7793 if(size_array1.EQ.-999) then
7794 size_gest(i1)=size_int*2
7795 size_variables(i1)=0_8
7796 read(unit,iostat=err) dummy
7797 else
7798 size_gest(i1)=size_int
7799 size_variables(i1)=size_array1*size_int
7800 allocate(id%LRGROUPS(size_array1), stat=allocok)
7801 if (allocok .GT. 0) THEN
7802 id%INFO(1) = -78
7803 CALL mumps_seti8toi4(
7804 & total_struc_size-size_allocated
7805 & ,id%INFO(2))
7806 endif
7807 read(unit,iostat=err) id%LRGROUPS
7808 endif
7809 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
7810 & id%COMM, id%MYID )
7811 IF ( id%INFO(1) .LT. 0 ) GOTO 100
7812 if(err.ne.0) THEN
7813 id%INFO(1) = -75
7814 CALL mumps_seti8toi4(total_file_size-size_read
7815 & ,id%INFO(2))
7816 endif
7817 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
7818 & id%COMM, id%MYID )
7819 IF ( id%INFO(1) .LT. 0 ) GOTO 100
7820 endif
7821 CASE("FDM_F_ENCODING")
7822 nbrecords(i1)=1
7823 size_gest(i1)=size_int
7824 size_variables(i1)=0_8
7825 if(trim(mode).EQ."memory_save") then
7826 IF(associated(id%FDM_F_ENCODING)) THEN
7827 CALL mumps_save_restore_front_data(id%FDM_F_ENCODING
7828 & ,unit,id%MYID,"memory_save"
7829 & ,size_gest_front_data,size_variables_front_data
7830 & ,size_int,total_file_size,total_struc_size
7831 & ,size_read,size_allocated,size_written
7832 & ,id%INFO(1))
7833 ENDIF
7834 elseif(trim(mode).EQ."save") then
7835 IF(associated(id%FDM_F_ENCODING)) THEN
7836 write(unit,iostat=err) size(id%FDM_F_ENCODING,1)
7837 if(err.ne.0) then
7838 id%INFO(1) = -72
7839 CALL mumps_seti8toi4(total_file_size-size_written,
7840 & id%INFO(2))
7841 endif
7842 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
7843 & id%COMM, id%MYID )
7844 IF ( id%INFO(1) .LT. 0 ) GOTO 100
7845 CALL mumps_save_restore_front_data(id%FDM_F_ENCODING
7846 & ,unit,id%MYID,"save"
7847 & ,size_gest_front_data,size_variables_front_data
7848 & ,size_int,total_file_size,total_struc_size
7849 & ,size_read,size_allocated,size_written
7850 & ,id%INFO(1))
7851 ELSE
7852 write(unit,iostat=err) -999
7853 if(err.ne.0) then
7854 id%INFO(1) = -72
7855 CALL mumps_seti8toi4(total_file_size-size_written,
7856 & id%INFO(2))
7857 endif
7858 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
7859 & id%COMM, id%MYID )
7860 IF ( id%INFO(1) .LT. 0 ) GOTO 100
7861 ENDIF
7862 if(err.ne.0) then
7863 id%INFO(1) = -72
7864 CALL mumps_seti8toi4(total_file_size-size_written,
7865 & id%INFO(2))
7866 endif
7867 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
7868 & id%COMM, id%MYID )
7869 IF ( id%INFO(1) .LT. 0 ) GOTO 100
7870 elseif(trim(mode).EQ."restore") then
7871 nullify(id%FDM_F_ENCODING)
7872 read(unit,iostat=err) size_array1
7873 if(err.ne.0) THEN
7874 id%INFO(1) = -75
7875 CALL mumps_seti8toi4(total_file_size-size_read
7876 & ,id%INFO(2))
7877 endif
7878 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
7879 & id%COMM, id%MYID )
7880 IF ( id%INFO(1) .LT. 0 ) GOTO 100
7881 if(size_array1.NE.-999) then
7882 CALL mumps_save_restore_front_data(id%FDM_F_ENCODING
7883 & ,unit,id%MYID,"restore"
7884 & ,size_gest_front_data,size_variables_front_data
7885 & ,size_int,total_file_size,total_struc_size
7886 & ,size_read,size_allocated,size_written
7887 & ,id%INFO(1))
7888 endif
7889 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
7890 & id%COMM, id%MYID )
7891 IF ( id%INFO(1) .LT. 0 ) GOTO 100
7892 if(err.ne.0) THEN
7893 id%INFO(1) = -75
7894 CALL mumps_seti8toi4(total_file_size-size_read
7895 & ,id%INFO(2))
7896 endif
7897 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
7898 & id%COMM, id%MYID )
7899 IF ( id%INFO(1) .LT. 0 ) GOTO 100
7900 endif
7901 CASE("BLRARRAY_ENCODING")
7902 nbrecords(i1)=1
7903 size_gest(i1)=size_int
7904 size_variables(i1)=0_8
7905 if(trim(mode).EQ."memory_save") then
7906 IF(associated(id%BLRARRAY_ENCODING)) THEN
7907 CALL smumps_save_restore_blr(id%BLRARRAY_ENCODING
7908 & ,unit,id%MYID,"memory_save"
7909 & ,size_gest_blr,size_variables_blr
7910 & ,size_int, size_arith_dep, size_logical
7911 & ,total_file_size,total_struc_size
7912 & ,size_read,size_allocated,size_written
7913 & ,id%INFO(1))
7914 ENDIF
7915 elseif(trim(mode).EQ."save") then
7916 IF(associated(id%BLRARRAY_ENCODING)) THEN
7917 write(unit,iostat=err) size(id%BLRARRAY_ENCODING,1)
7918 if(err.ne.0) then
7919 id%INFO(1) = -72
7920 CALL mumps_seti8toi4(total_file_size-size_written,
7921 & id%INFO(2))
7922 endif
7923 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
7924 & id%COMM, id%MYID )
7925 IF ( id%INFO(1) .LT. 0 ) GOTO 100
7926 CALL smumps_save_restore_blr(id%BLRARRAY_ENCODING
7927 & ,unit,id%MYID,"save"
7928 & ,size_gest_blr,size_variables_blr
7929 & ,size_int, size_arith_dep, size_logical
7930 & ,total_file_size,total_struc_size
7931 & ,size_read,size_allocated,size_written
7932 & ,id%INFO(1))
7933 ELSE
7934 write(unit,iostat=err) -999
7935 if(err.ne.0) then
7936 id%INFO(1) = -72
7937 CALL mumps_seti8toi4(total_file_size-size_written,
7938 & id%INFO(2))
7939 endif
7940 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
7941 & id%COMM, id%MYID )
7942 IF ( id%INFO(1) .LT. 0 ) GOTO 100
7943 ENDIF
7944 if(err.ne.0) then
7945 id%INFO(1) = -72
7946 CALL mumps_seti8toi4(total_file_size-size_written,
7947 & id%INFO(2))
7948 endif
7949 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
7950 & id%COMM, id%MYID )
7951 IF ( id%INFO(1) .LT. 0 ) GOTO 100
7952 elseif(trim(mode).EQ."restore") then
7953 nullify(id%BLRARRAY_ENCODING)
7954 read(unit,iostat=err) size_array1
7955 if(err.ne.0) THEN
7956 id%INFO(1) = -75
7957 CALL mumps_seti8toi4(total_file_size-size_read
7958 & ,id%INFO(2))
7959 endif
7960 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
7961 & id%COMM, id%MYID )
7962 IF ( id%INFO(1) .LT. 0 ) GOTO 100
7963 if(size_array1.NE.-999) then
7964 CALL smumps_save_restore_blr(id%BLRARRAY_ENCODING
7965 & ,unit,id%MYID,"restore"
7966 & ,size_gest_blr,size_variables_blr
7967 & ,size_int, size_arith_dep, size_logical
7968 & ,total_file_size,total_struc_size
7969 & ,size_read,size_allocated,size_written
7970 & ,id%INFO(1))
7971 endif
7972 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
7973 & id%COMM, id%MYID )
7974 IF ( id%INFO(1) .LT. 0 ) GOTO 100
7975 if(err.ne.0) THEN
7976 id%INFO(1) = -75
7977 CALL mumps_seti8toi4(total_file_size-size_read
7978 & ,id%INFO(2))
7979 endif
7980 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
7981 & id%COMM, id%MYID )
7982 IF ( id%INFO(1) .LT. 0 ) GOTO 100
7983 endif
7984 CASE("L0_OMP_FACTORS")
7985 nbrecords(i1) =0
7986 size_gest(i1) =0
7987 size_variables(i1)=0_8
7988 CALL smumps_save_restore_l0facarray(id%L0_OMP_FACTORS
7989 & ,unit,id%MYID,trim(mode)
7990 & ,size_gest_l0fac,size_variables_l0fac
7991 & ,size_int, size_int8, size_arith_dep
7992 & ,total_file_size,total_struc_size
7993 & ,size_read,size_allocated,size_written
7994 & ,id%INFO(1))
7995 CASE("SCHED_SBTR")
7996 CASE("LPOOL_A_L0_OMP")
7997 nbrecords(i1)=1
7998 if(trim(mode).EQ."memory_save") then
7999 size_variables(i1)=size_int
8000 elseif(trim(mode).EQ."save") then
8001 write(unit,iostat=err) id%LPOOL_A_L0_OMP
8002 if(err.ne.0) then
8003 id%INFO(1) = -72
8004 CALL mumps_seti8toi4(total_file_size-size_written,
8005 & id%INFO(2))
8006 endif
8007 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
8008 & id%COMM, id%MYID )
8009 IF ( id%INFO(1) .LT. 0 ) GOTO 100
8010 elseif(trim(mode).EQ."restore") then
8011 size_variables(i1)=size_int
8012 read(unit,iostat=err) id%LPOOL_A_L0_OMP
8013 if(err.ne.0) THEN
8014 id%INFO(1) = -75
8015 CALL mumps_seti8toi4(total_file_size-size_read
8016 & ,id%INFO(2))
8017 endif
8018 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
8019 & id%COMM, id%MYID )
8020 IF ( id%INFO(1) .LT. 0 ) GOTO 100
8021 endif
8022 CASE("LPOOL_B_L0_OMP")
8023 nbrecords(i1)=1
8024 if(trim(mode).EQ."memory_save") then
8025 size_variables(i1)=size_int
8026 elseif(trim(mode).EQ."save") then
8027 write(unit,iostat=err) id%LPOOL_B_L0_OMP
8028 if(err.ne.0) then
8029 id%INFO(1) = -72
8030 CALL mumps_seti8toi4(total_file_size-size_written,
8031 & id%INFO(2))
8032 endif
8033 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
8034 & id%COMM, id%MYID )
8035 IF ( id%INFO(1) .LT. 0 ) GOTO 100
8036 elseif(trim(mode).EQ."restore") then
8037 SIZE_VARIABLES(i1)=SIZE_INT
8038 read(unit,iostat=err) id%LPOOL_B_L0_OMP
8039.ne. if(err0) THEN
8040 id%INFO(1) = -75
8041 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
8042 & ,id%INFO(2))
8043 endif
8044 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
8045 & id%COMM, id%MYID )
8046.LT. IF ( id%INFO(1) 0 ) GOTO 100
8047 endif
8048 CASE("l_phys_l0_omp")
8049 NbRecords(i1)=1
8050.EQ. if(trim(mode)"memory_save") then
8051 size_variables(i1)=size_int
8052 elseif(trim(mode).EQ."save") then
8053 write(unit,iostat=err) id%L_PHYS_L0_OMP
8054 if(err.ne.0) then
8055 id%INFO(1) = -72
8056 CALL mumps_seti8toi4(total_file_size-size_written,
8057 & id%INFO(2))
8058 endif
8059 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
8060 & id%COMM, id%MYID )
8061 IF ( id%INFO(1) .LT. 0 ) GOTO 100
8062 elseif(trim(mode).EQ."restore") then
8063 size_variables(i1)=size_int
8064 read(unit,iostat=err) id%L_PHYS_L0_OMP
8065 if(err.ne.0) THEN
8066 id%INFO(1) = -75
8067 CALL mumps_seti8toi4(total_file_size-size_read
8068 & ,id%INFO(2))
8069 endif
8070 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
8071 & id%COMM, id%MYID )
8072 IF ( id%INFO(1) .LT. 0 ) GOTO 100
8073 endif
8074 CASE("L_VIRT_L0_OMP")
8075 nbrecords(i1)=1
8076 if(trim(mode).EQ."memory_save") then
8077 size_variables(i1)=size_int
8078 elseif(trim(mode).EQ."save") then
8079 write(unit,iostat=err) id%L_VIRT_L0_OMP
8080 if(err.ne.0) then
8081 id%INFO(1) = -72
8082 CALL mumps_seti8toi4(total_file_size-size_written,
8083 & id%INFO(2))
8084 endif
8085 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
8086 & id%COMM, id%MYID )
8087 IF ( id%INFO(1) .LT. 0 ) GOTO 100
8088 elseif(trim(mode).EQ."restore") then
8089 size_variables(i1)=size_int
8090 read(unit,iostat=err) id%L_VIRT_L0_OMP
8091 if(err.ne.0) THEN
8092 id%INFO(1) = -75
8093 CALL mumps_seti8toi4(total_file_size-size_read
8094 & ,id%INFO(2))
8095 endif
8096 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
8097 & id%COMM, id%MYID )
8098 IF ( id%INFO(1) .LT. 0 ) GOTO 100
8099 endif
8100 CASE("LL0_OMP_MAPPING")
8101 nbrecords(i1)=1
8102 if(trim(mode).EQ."memory_save") then
8103 size_variables(i1)=size_int
8104 elseif(trim(mode).EQ."save") then
8105 write(unit,iostat=err) id%LL0_OMP_MAPPING
8106 if(err.ne.0) then
8107 id%INFO(1) = -72
8108 CALL mumps_seti8toi4(total_file_size-size_written,
8109 & id%INFO(2))
8110 endif
8111 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
8112 & id%COMM, id%MYID )
8113 IF ( id%INFO(1) .LT. 0 ) GOTO 100
8114 elseif(trim(mode).EQ."restore") then
8115 size_variables(i1)=size_int
8116 read(unit,iostat=err) id%LL0_OMP_MAPPING
8117 if(err.ne.0) THEN
8118 id%INFO(1) = -75
8119 CALL mumps_seti8toi4(total_file_size-size_read
8120 & ,id%INFO(2))
8121 endif
8122 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
8123 & id%COMM, id%MYID )
8124 IF ( id%INFO(1) .LT. 0 ) GOTO 100
8125 endif
8126 CASE("LL0_OMP_FACTORS")
8127 nbrecords(i1)=1
8128 if(trim(mode).EQ."memory_save") then
8129 size_variables(i1)=size_int
8130 elseif(trim(mode).EQ."save") then
8131 write(unit,iostat=err) id%LL0_OMP_FACTORS
8132 if(err.ne.0) then
8133 id%INFO(1) = -72
8134 CALL mumps_seti8toi4(total_file_size-size_written,
8135 & id%INFO(2))
8136 endif
8137 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
8138 & id%COMM, id%MYID )
8139 IF ( id%INFO(1) .LT. 0 ) GOTO 100
8140 elseif(trim(mode).EQ."restore") then
8141 size_variables(i1)=size_int
8142 read(unit,iostat=err) id%LL0_OMP_FACTORS
8143 if(err.ne.0) THEN
8144 id%INFO(1) = -75
8145 CALL mumps_seti8toi4(total_file_size-size_read
8146 & ,id%INFO(2))
8147 endif
8148 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
8149 & id%COMM, id%MYID )
8150 IF ( id%INFO(1) .LT. 0 ) GOTO 100
8151 endif
8152 CASE("THREAD_LA")
8153 nbrecords(i1)=1
8154 if(trim(mode).EQ."memory_save") then
8155 size_variables(i1)=size_int8
8156 elseif(trim(mode).EQ."save") then
8157 write(unit,iostat=err) id%THREAD_LA
8158 if(err.ne.0) then
8159 id%INFO(1) = -72
8160 CALL mumps_seti8toi4(total_file_size-size_written,
8161 & id%INFO(2))
8162 endif
8163 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
8164 & id%COMM, id%MYID )
8165 IF ( id%INFO(1) .LT. 0 ) GOTO 100
8166 elseif(trim(mode).EQ."restore") then
8167 size_variables(i1)=size_int8
8168 read(unit,iostat=err) id%THREAD_LA
8169 if(err.ne.0) THEN
8170 id%INFO(1) = -75
8171 CALL mumps_seti8toi4(total_file_size-size_read
8172 & ,id%INFO(2))
8173 endif
8174 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
8175 & id%COMM, id%MYID )
8176 IF ( id%INFO(1) .LT. 0 ) GOTO 100
8177 endif
8178 CASE("IPOOL_A_L0_OMP")
8179 nbrecords(i1)=2
8180 if(trim(mode).EQ."memory_save") then
8181 IF(associated(id%IPOOL_A_L0_OMP)) THEN
8182 size_gest(i1)=size_int
8183 size_variables(i1)=
8184 & size(id%IPOOL_A_L0_OMP,1)*size_int
8185 ELSE
8186 size_gest(i1)=size_int*2
8187 size_variables(i1)=0_8
8188 ENDIF
8189 elseif(trim(mode).EQ."save") then
8190 IF(associated(id%IPOOL_A_L0_OMP)) THEN
8191 write(unit,iostat=err) size(id%IPOOL_A_L0_OMP,1)
8192.ne. if(err0) then
8193 id%INFO(1) = -72
8194 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
8195 & id%INFO(2))
8196 endif
8197 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
8198 & id%COMM, id%MYID )
8199.LT. IF ( id%INFO(1) 0 ) GOTO 100
8200 write(unit,iostat=err) id%IPOOL_A_L0_OMP
8201 ELSE
8202 write(unit,iostat=err) -999
8203.ne. if(err0) then
8204 id%INFO(1) = -72
8205 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
8206 & id%INFO(2))
8207 endif
8208 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
8209 & id%COMM, id%MYID )
8210.LT. IF ( id%INFO(1) 0 ) GOTO 100
8211 write(unit,iostat=err) -999
8212 ENDIF
8213.ne. if(err0) then
8214 id%INFO(1) = -72
8215 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
8216 & id%INFO(2))
8217 endif
8218 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
8219 & id%COMM, id%MYID )
8220.LT. IF ( id%INFO(1) 0 ) GOTO 100
8221.EQ. elseif(trim(mode)"restore") then
8222 nullify(id%IPOOL_A_L0_OMP)
8223 read(unit,iostat=err) size_array1
8224.ne. if(err0) THEN
8225 id%INFO(1) = -75
8226 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
8227 & ,id%INFO(2))
8228 endif
8229 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
8230 & id%COMM, id%MYID )
8231.LT. IF ( id%INFO(1) 0 ) GOTO 100
8232.EQ. if(size_array1-999) then
8233 SIZE_GEST(i1)=SIZE_INT*2
8234 SIZE_VARIABLES(i1)=0_8
8235 read(unit,iostat=err) dummy
8236 else
8237 SIZE_GEST(i1)=SIZE_INT
8238 SIZE_VARIABLES(i1)=size_array1*SIZE_INT
8239 allocate(id%IPOOL_A_L0_OMP(size_array1),
8240 & stat=allocok)
8241.GT. if (allocok 0) THEN
8242 id%INFO(1) = -78
8243 CALL MUMPS_SETI8TOI4(
8244 & TOTAL_STRUC_SIZE-size_allocated
8245 & ,id%INFO(2))
8246 endif
8247 read(unit,iostat=err) id%IPOOL_A_L0_OMP
8248 endif
8249 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
8250 & id%COMM, id%MYID )
8251.LT. IF ( id%INFO(1) 0 ) GOTO 100
8252.ne. if(err0) THEN
8253 id%INFO(1) = -75
8254 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
8255 & ,id%INFO(2))
8256 endif
8257 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
8258 & id%COMM, id%MYID )
8259.LT. IF ( id%INFO(1) 0 ) GOTO 100
8260 endif
8261 CASE("ipool_b_l0_omp")
8262 NbRecords(i1)=2
8263.EQ. if(trim(mode)"memory_save") then
8264 IF(associated(id%IPOOL_B_L0_OMP)) THEN
8265 SIZE_GEST(i1)=SIZE_INT
8266 SIZE_VARIABLES(i1)=
8267 & size(id%IPOOL_B_L0_OMP,1)*SIZE_INT
8268 ELSE
8269 SIZE_GEST(i1)=SIZE_INT*2
8270 SIZE_VARIABLES(i1)=0_8
8271 ENDIF
8272.EQ. elseif(trim(mode)"save") then
8273 IF(associated(id%IPOOL_B_L0_OMP)) THEN
8274 write(unit,iostat=err) size(id%IPOOL_B_L0_OMP,1)
8275.ne. if(err0) then
8276 id%INFO(1) = -72
8277 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
8278 & id%INFO(2))
8279 endif
8280 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
8281 & id%COMM, id%MYID )
8282.LT. IF ( id%INFO(1) 0 ) GOTO 100
8283 write(unit,iostat=err) id%IPOOL_B_L0_OMP
8284 ELSE
8285 write(unit,iostat=err) -999
8286.ne. if(err0) then
8287 id%INFO(1) = -72
8288 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
8289 & id%INFO(2))
8290 endif
8291 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
8292 & id%COMM, id%MYID )
8293.LT. IF ( id%INFO(1) 0 ) GOTO 100
8294 write(unit,iostat=err) -999
8295 ENDIF
8296.ne. if(err0) then
8297 id%INFO(1) = -72
8298 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
8299 & id%INFO(2))
8300 endif
8301 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
8302 & id%COMM, id%MYID )
8303.LT. IF ( id%INFO(1) 0 ) GOTO 100
8304.EQ. elseif(trim(mode)"restore") then
8305 nullify(id%IPOOL_B_L0_OMP)
8306 read(unit,iostat=err) size_array1
8307.ne. if(err0) THEN
8308 id%INFO(1) = -75
8309 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
8310 & ,id%INFO(2))
8311 endif
8312 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
8313 & id%COMM, id%MYID )
8314.LT. IF ( id%INFO(1) 0 ) GOTO 100
8315.EQ. if(size_array1-999) then
8316 SIZE_GEST(i1)=SIZE_INT*2
8317 SIZE_VARIABLES(i1)=0_8
8318 read(unit,iostat=err) dummy
8319 else
8320 SIZE_GEST(i1)=SIZE_INT
8321 SIZE_VARIABLES(i1)=size_array1*SIZE_INT
8322 allocate(id%IPOOL_B_L0_OMP(size_array1),
8323 & stat=allocok)
8324.GT. if (allocok 0) THEN
8325 id%INFO(1) = -78
8326 CALL MUMPS_SETI8TOI4(
8327 & TOTAL_STRUC_SIZE-size_allocated
8328 & ,id%INFO(2))
8329 endif
8330 read(unit,iostat=err) id%IPOOL_B_L0_OMP
8331 endif
8332 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
8333 & id%COMM, id%MYID )
8334.LT. IF ( id%INFO(1) 0 ) GOTO 100
8335.ne. if(err0) THEN
8336 id%INFO(1) = -75
8337 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
8338 & ,id%INFO(2))
8339 endif
8340 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
8341 & id%COMM, id%MYID )
8342.LT. IF ( id%INFO(1) 0 ) GOTO 100
8343 endif
8344 CASE("phys_l0_omp")
8345 NbRecords(i1)=2
8346.EQ. if(trim(mode)"memory_save") then
8347 IF(associated(id%PHYS_L0_OMP)) THEN
8348 SIZE_GEST(i1)=SIZE_INT
8349 SIZE_VARIABLES(i1)=
8350 & size(id%PHYS_L0_OMP,1)*SIZE_INT
8351 ELSE
8352 SIZE_GEST(i1)=SIZE_INT*2
8353 SIZE_VARIABLES(i1)=0_8
8354 ENDIF
8355.EQ. elseif(trim(mode)"save") then
8356 IF(associated(id%PHYS_L0_OMP)) THEN
8357 write(unit,iostat=err) size(id%PHYS_L0_OMP,1)
8358.ne. if(err0) then
8359 id%INFO(1) = -72
8360 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
8361 & id%INFO(2))
8362 endif
8363 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
8364 & id%COMM, id%MYID )
8365.LT. IF ( id%INFO(1) 0 ) GOTO 100
8366 write(unit,iostat=err) id%PHYS_L0_OMP
8367 ELSE
8368 write(unit,iostat=err) -999
8369.ne. if(err0) then
8370 id%INFO(1) = -72
8371 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
8372 & id%INFO(2))
8373 endif
8374 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
8375 & id%COMM, id%MYID )
8376.LT. IF ( id%INFO(1) 0 ) GOTO 100
8377 write(unit,iostat=err) -999
8378 ENDIF
8379.ne. if(err0) then
8380 id%INFO(1) = -72
8381 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
8382 & id%INFO(2))
8383 endif
8384 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
8385 & id%COMM, id%MYID )
8386.LT. IF ( id%INFO(1) 0 ) GOTO 100
8387.EQ. elseif(trim(mode)"restore") then
8388 nullify(id%PHYS_L0_OMP)
8389 read(unit,iostat=err) size_array1
8390.ne. if(err0) THEN
8391 id%INFO(1) = -75
8392 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
8393 & ,id%INFO(2))
8394 endif
8395 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
8396 & id%COMM, id%MYID )
8397.LT. IF ( id%INFO(1) 0 ) GOTO 100
8398.EQ. if(size_array1-999) then
8399 SIZE_GEST(i1)=SIZE_INT*2
8400 SIZE_VARIABLES(i1)=0_8
8401 read(unit,iostat=err) dummy
8402 else
8403 SIZE_GEST(i1)=SIZE_INT
8404 SIZE_VARIABLES(i1)=size_array1*SIZE_INT
8405 allocate(id%PHYS_L0_OMP(size_array1), stat=allocok)
8406.GT. if (allocok 0) THEN
8407 id%INFO(1) = -78
8408 CALL MUMPS_SETI8TOI4(
8409 & TOTAL_STRUC_SIZE-size_allocated
8410 & ,id%INFO(2))
8411 endif
8412 read(unit,iostat=err) id%PHYS_L0_OMP
8413 endif
8414 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
8415 & id%COMM, id%MYID )
8416.LT. IF ( id%INFO(1) 0 ) GOTO 100
8417.ne. if(err0) THEN
8418 id%INFO(1) = -75
8419 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
8420 & ,id%INFO(2))
8421 endif
8422 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
8423 & id%COMM, id%MYID )
8424.LT. IF ( id%INFO(1) 0 ) GOTO 100
8425 endif
8426 CASE("virt_l0_omp")
8427 NbRecords(i1)=2
8428.EQ. if(trim(mode)"memory_save") then
8429 IF(associated(id%VIRT_L0_OMP)) THEN
8430 SIZE_GEST(i1)=SIZE_INT
8431 SIZE_VARIABLES(i1)=size(id%VIRT_L0_OMP,1)*SIZE_INT
8432 ELSE
8433 SIZE_GEST(i1)=SIZE_INT*2
8434 SIZE_VARIABLES(i1)=0_8
8435 ENDIF
8436.EQ. elseif(trim(mode)"save") then
8437 IF(associated(id%VIRT_L0_OMP)) THEN
8438 write(unit,iostat=err) size(id%VIRT_L0_OMP,1)
8439.ne. if(err0) then
8440 id%INFO(1) = -72
8441 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
8442 & id%INFO(2))
8443 endif
8444 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
8445 & id%COMM, id%MYID )
8446.LT. IF ( id%INFO(1) 0 ) GOTO 100
8447 write(unit,iostat=err) id%VIRT_L0_OMP
8448 ELSE
8449 write(unit,iostat=err) -999
8450.ne. if(err0) then
8451 id%INFO(1) = -72
8452 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
8453 & id%INFO(2))
8454 endif
8455 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
8456 & id%COMM, id%MYID )
8457.LT. IF ( id%INFO(1) 0 ) GOTO 100
8458 write(unit,iostat=err) -999
8459 ENDIF
8460.ne. if(err0) then
8461 id%INFO(1) = -72
8462 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
8463 & id%INFO(2))
8464 endif
8465 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
8466 & id%COMM, id%MYID )
8467.LT. IF ( id%INFO(1) 0 ) GOTO 100
8468.EQ. elseif(trim(mode)"restore") then
8469 nullify(id%VIRT_L0_OMP)
8470 read(unit,iostat=err) size_array1
8471.ne. if(err0) THEN
8472 id%INFO(1) = -75
8473 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
8474 & ,id%INFO(2))
8475 endif
8476 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
8477 & id%COMM, id%MYID )
8478.LT. IF ( id%INFO(1) 0 ) GOTO 100
8479.EQ. if(size_array1-999) then
8480 SIZE_GEST(i1)=SIZE_INT*2
8481 SIZE_VARIABLES(i1)=0_8
8482 read(unit,iostat=err) dummy
8483 else
8484 SIZE_GEST(i1)=SIZE_INT
8485 SIZE_VARIABLES(i1)=size_array1*SIZE_INT
8486 allocate(id%VIRT_L0_OMP(size_array1), stat=allocok)
8487.GT. if (allocok 0) THEN
8488 id%INFO(1) = -78
8489 CALL MUMPS_SETI8TOI4(
8490 & TOTAL_STRUC_SIZE-size_allocated
8491 & ,id%INFO(2))
8492 endif
8493 read(unit,iostat=err) id%VIRT_L0_OMP
8494 endif
8495 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
8496 & id%COMM, id%MYID )
8497.LT. IF ( id%INFO(1) 0 ) GOTO 100
8498.ne. if(err0) THEN
8499 id%INFO(1) = -75
8500 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
8501 & ,id%INFO(2))
8502 endif
8503 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
8504 & id%COMM, id%MYID )
8505.LT. IF ( id%INFO(1) 0 ) GOTO 100
8506 endif
8507 CASE("virt_l0_omp_mapping")
8508 NbRecords(i1)=2
8509.EQ. if(trim(mode)"memory_save") then
8510 IF(associated(id%VIRT_L0_OMP_MAPPING)) THEN
8511 SIZE_GEST(i1)=SIZE_INT
8512 SIZE_VARIABLES(i1)=size(id%VIRT_L0_OMP_MAPPING,1)
8513 & *SIZE_INT
8514 ELSE
8515 SIZE_GEST(i1)=SIZE_INT*2
8516 SIZE_VARIABLES(i1)=0_8
8517 ENDIF
8518.EQ. elseif(trim(mode)"save") then
8519 IF(associated(id%VIRT_L0_OMP_MAPPING)) THEN
8520 write(unit,iostat=err) size(id%VIRT_L0_OMP_MAPPING,1)
8521.ne. if(err0) then
8522 id%INFO(1) = -72
8523 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
8524 & id%INFO(2))
8525 endif
8526 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
8527 & id%COMM, id%MYID )
8528.LT. IF ( id%INFO(1) 0 ) GOTO 100
8529 write(unit,iostat=err) id%VIRT_L0_OMP_MAPPING
8530 ELSE
8531 write(unit,iostat=err) -999
8532.ne. if(err0) then
8533 id%INFO(1) = -72
8534 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
8535 & id%INFO(2))
8536 endif
8537 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
8538 & id%COMM, id%MYID )
8539.LT. IF ( id%INFO(1) 0 ) GOTO 100
8540 write(unit,iostat=err) -999
8541 ENDIF
8542.ne. if(err0) then
8543 id%INFO(1) = -72
8544 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
8545 & id%INFO(2))
8546 endif
8547 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
8548 & id%COMM, id%MYID )
8549.LT. IF ( id%INFO(1) 0 ) GOTO 100
8550.EQ. elseif(trim(mode)"restore") then
8551 nullify(id%VIRT_L0_OMP_MAPPING)
8552 read(unit,iostat=err) size_array1
8553.ne. if(err0) THEN
8554 id%INFO(1) = -75
8555 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
8556 & ,id%INFO(2))
8557 endif
8558 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
8559 & id%COMM, id%MYID )
8560.LT. IF ( id%INFO(1) 0 ) GOTO 100
8561.EQ. if(size_array1-999) then
8562 SIZE_GEST(i1)=SIZE_INT*2
8563 SIZE_VARIABLES(i1)=0_8
8564 read(unit,iostat=err) dummy
8565 else
8566 SIZE_GEST(i1)=SIZE_INT
8567 SIZE_VARIABLES(i1)=size_array1*SIZE_INT
8568 allocate(id%VIRT_L0_OMP_MAPPING(size_array1),
8569 & stat=allocok)
8570.GT. if (allocok 0) THEN
8571 id%INFO(1) = -78
8572 CALL MUMPS_SETI8TOI4(
8573 & TOTAL_STRUC_SIZE-size_allocated
8574 & ,id%INFO(2))
8575 endif
8576 read(unit,iostat=err) id%VIRT_L0_OMP_MAPPING
8577 endif
8578 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
8579 & id%COMM, id%MYID )
8580.LT. IF ( id%INFO(1) 0 ) GOTO 100
8581.ne. if(err0) THEN
8582 id%INFO(1) = -75
8583 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
8584 & ,id%INFO(2))
8585 endif
8586 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
8587 & id%COMM, id%MYID )
8588.LT. IF ( id%INFO(1) 0 ) GOTO 100
8589 endif
8590 CASE("perm_l0_omp")
8591 NbRecords(i1)=2
8592.EQ. if(trim(mode)"memory_save") then
8593 IF(associated(id%PERM_L0_OMP)) THEN
8594 SIZE_GEST(i1)=SIZE_INT
8595 SIZE_VARIABLES(i1)=size(id%PERM_L0_OMP,1)*SIZE_INT
8596 ELSE
8597 SIZE_GEST(i1)=SIZE_INT*2
8598 SIZE_VARIABLES(i1)=0_8
8599 ENDIF
8600.EQ. elseif(trim(mode)"save") then
8601 IF(associated(id%PERM_L0_OMP)) THEN
8602 write(unit,iostat=err) size(id%PERM_L0_OMP,1)
8603.ne. if(err0) then
8604 id%INFO(1) = -72
8605 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
8606 & id%INFO(2))
8607 endif
8608 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
8609 & id%COMM, id%MYID )
8610.LT. IF ( id%INFO(1) 0 ) GOTO 100
8611 write(unit,iostat=err) id%PERM_L0_OMP
8612 ELSE
8613 write(unit,iostat=err) -999
8614.ne. if(err0) then
8615 id%INFO(1) = -72
8616 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
8617 & id%INFO(2))
8618 endif
8619 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
8620 & id%COMM, id%MYID )
8621.LT. IF ( id%INFO(1) 0 ) GOTO 100
8622 write(unit,iostat=err) -999
8623 ENDIF
8624.ne. if(err0) then
8625 id%INFO(1) = -72
8626 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
8627 & id%INFO(2))
8628 endif
8629 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
8630 & id%COMM, id%MYID )
8631.LT. IF ( id%INFO(1) 0 ) GOTO 100
8632.EQ. elseif(trim(mode)"restore") then
8633 nullify(id%PERM_L0_OMP)
8634 read(unit,iostat=err) size_array1
8635.ne. if(err0) THEN
8636 id%INFO(1) = -75
8637 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
8638 & ,id%INFO(2))
8639 endif
8640 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
8641 & id%COMM, id%MYID )
8642.LT. IF ( id%INFO(1) 0 ) GOTO 100
8643.EQ. if(size_array1-999) then
8644 SIZE_GEST(i1)=SIZE_INT*2
8645 SIZE_VARIABLES(i1)=0_8
8646 read(unit,iostat=err) dummy
8647 else
8648 SIZE_GEST(i1)=SIZE_INT
8649 SIZE_VARIABLES(i1)=size_array1*SIZE_INT
8650 allocate(id%PERM_L0_OMP(size_array1), stat=allocok)
8651.GT. if (allocok 0) THEN
8652 id%INFO(1) = -78
8653 CALL MUMPS_SETI8TOI4(
8654 & TOTAL_STRUC_SIZE-size_allocated
8655 & ,id%INFO(2))
8656 endif
8657 read(unit,iostat=err) id%PERM_L0_OMP
8658 endif
8659 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
8660 & id%COMM, id%MYID )
8661.LT. IF ( id%INFO(1) 0 ) GOTO 100
8662.ne. if(err0) THEN
8663 id%INFO(1) = -75
8664 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
8665 & ,id%INFO(2))
8666 endif
8667 CALL MUMPS_PROPINFO( id%ICNTL(1), id%INFO(1),
8668 & id%COMM, id%MYID )
8669.LT. IF ( id%INFO(1) 0 ) GOTO 100
8670 endif
8671 CASE("ptr_leafs_l0_omp")
8672 NbRecords(i1)=2
8673.EQ. if(trim(mode)"memory_save") then
8674 IF(associated(id%PTR_LEAFS_L0_OMP)) THEN
8675 size_gest(i1)=size_int
8676 size_variables(i1)=
8677 & size(id%PTR_LEAFS_L0_OMP,1)*size_int
8678 ELSE
8679 size_gest(i1)=size_int*2
8680 size_variables(i1)=0_8
8681 ENDIF
8682 elseif(trim(mode).EQ."save") then
8683 IF(associated(id%PTR_LEAFS_L0_OMP)) THEN
8684 write(unit,iostat=err) size(id%PTR_LEAFS_L0_OMP,1)
8685 if(err.ne.0) then
8686 id%INFO(1) = -72
8687 CALL mumps_seti8toi4(total_file_size-size_written,
8688 & id%INFO(2))
8689 endif
8690 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
8691 & id%COMM, id%MYID )
8692 IF ( id%INFO(1) .LT. 0 ) GOTO 100
8693 write(unit,iostat=err) id%PTR_LEAFS_L0_OMP
8694 ELSE
8695 write(unit,iostat=err) -999
8696 if(err.ne.0) then
8697 id%INFO(1) = -72
8698 CALL mumps_seti8toi4(total_file_size-size_written,
8699 & id%INFO(2))
8700 endif
8701 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
8702 & id%COMM, id%MYID )
8703 IF ( id%INFO(1) .LT. 0 ) GOTO 100
8704 write(unit,iostat=err) -999
8705 ENDIF
8706 if(err.ne.0) then
8707 id%INFO(1) = -72
8708 CALL mumps_seti8toi4(total_file_size-size_written,
8709 & id%INFO(2))
8710 endif
8711 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
8712 & id%COMM, id%MYID )
8713 IF ( id%INFO(1) .LT. 0 ) GOTO 100
8714 elseif(trim(mode).EQ."restore") then
8715 nullify(id%PTR_LEAFS_L0_OMP)
8716 read(unit,iostat=err) size_array1
8717 if(err.ne.0) THEN
8718 id%INFO(1) = -75
8719 CALL mumps_seti8toi4(total_file_size-size_read
8720 & ,id%INFO(2))
8721 endif
8722 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
8723 & id%COMM, id%MYID )
8724 IF ( id%INFO(1) .LT. 0 ) GOTO 100
8725 if(size_array1.EQ.-999) then
8726 size_gest(i1)=size_int*2
8727 size_variables(i1)=0_8
8728 read(unit,iostat=err) dummy
8729 else
8730 size_gest(i1)=size_int
8731 size_variables(i1)=size_array1*size_int
8732 allocate(id%PTR_LEAFS_L0_OMP(size_array1),
8733 & stat=allocok)
8734 if (allocok .GT. 0) THEN
8735 id%INFO(1) = -78
8736 CALL mumps_seti8toi4(
8737 & total_struc_size-size_allocated
8738 & ,id%INFO(2))
8739 endif
8740 read(unit,iostat=err) id%PTR_LEAFS_L0_OMP
8741 endif
8742 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
8743 & id%COMM, id%MYID )
8744 IF ( id%INFO(1) .LT. 0 ) GOTO 100
8745 if(err.ne.0) THEN
8746 id%INFO(1) = -75
8747 CALL mumps_seti8toi4(total_file_size-size_read
8748 & ,id%INFO(2))
8749 endif
8750 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
8751 & id%COMM, id%MYID )
8752 IF ( id%INFO(1) .LT. 0 ) GOTO 100
8753 endif
8754 CASE("L0_OMP_MAPPING")
8755 nbrecords(i1)=2
8756 if(trim(mode).EQ."memory_save") then
8757 IF(associated(id%L0_OMP_MAPPING)) THEN
8758 size_gest(i1)=size_int
8759 size_variables(i1)=
8760 & size(id%L0_OMP_MAPPING,1)*size_int
8761 ELSE
8762 size_gest(i1)=size_int*2
8763 size_variables(i1)=0_8
8764 ENDIF
8765 elseif(trim(mode).EQ."save") then
8766 IF(associated(id%L0_OMP_MAPPING)) THEN
8767 write(unit,iostat=err) size(id%L0_OMP_MAPPING,1)
8768 if(err.ne.0) then
8769 id%INFO(1) = -72
8770 CALL mumps_seti8toi4(total_file_size-size_written,
8771 & id%INFO(2))
8772 endif
8773 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
8774 & id%COMM, id%MYID )
8775 IF ( id%INFO(1) .LT. 0 ) GOTO 100
8776 write(unit,iostat=err) id%L0_OMP_MAPPING
8777 ELSE
8778 write(unit,iostat=err) -999
8779 if(err.ne.0) then
8780 id%INFO(1) = -72
8781 CALL mumps_seti8toi4(total_file_size-size_written,
8782 & id%INFO(2))
8783 endif
8784 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
8785 & id%COMM, id%MYID )
8786 IF ( id%INFO(1) .LT. 0 ) GOTO 100
8787 write(unit,iostat=err) -999
8788 ENDIF
8789 if(err.ne.0) then
8790 id%INFO(1) = -72
8791 CALL mumps_seti8toi4(total_file_size-size_written,
8792 & id%INFO(2))
8793 endif
8794 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
8795 & id%COMM, id%MYID )
8796 IF ( id%INFO(1) .LT. 0 ) GOTO 100
8797 elseif(trim(mode).EQ."restore") then
8798 nullify(id%L0_OMP_MAPPING)
8799 read(unit,iostat=err) size_array1
8800 if(err.ne.0) THEN
8801 id%INFO(1) = -75
8802 CALL mumps_seti8toi4(total_file_size-size_read
8803 & ,id%INFO(2))
8804 endif
8805 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
8806 & id%COMM, id%MYID )
8807 IF ( id%INFO(1) .LT. 0 ) GOTO 100
8808 if(size_array1.EQ.-999) then
8809 size_gest(i1)=size_int*2
8810 size_variables(i1)=0_8
8811 read(unit,iostat=err) dummy
8812 else
8813 size_gest(i1)=size_int
8814 size_variables(i1)=size_array1*size_int
8815 allocate(id%L0_OMP_MAPPING(size_array1), stat=allocok)
8816 if (allocok .GT. 0) THEN
8817 id%INFO(1) = -78
8818 CALL mumps_seti8toi4(
8819 & total_struc_size-size_allocated
8820 & ,id%INFO(2))
8821 endif
8822 read(unit,iostat=err) id%L0_OMP_MAPPING
8823 endif
8824 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
8825 & id%COMM, id%MYID )
8826 IF ( id%INFO(1) .LT. 0 ) GOTO 100
8827 if(err.ne.0) THEN
8828 id%INFO(1) = -75
8829 CALL mumps_seti8toi4(total_file_size-size_read
8830 & ,id%INFO(2))
8831 endif
8832 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
8833 & id%COMM, id%MYID )
8834 IF ( id%INFO(1) .LT. 0 ) GOTO 100
8835 endif
8836 CASE("SINGULAR_VALUES")
8837 CASE("NB_SINGULAR_VALUES")
8838 nbrecords(i1)=1
8839 if(trim(mode).EQ."memory_save") then
8840 size_variables(i1)=size_int
8841 elseif(trim(mode).EQ."save") then
8842 write(unit,iostat=err) id%NB_SINGULAR_VALUES
8843 if(err.ne.0) then
8844 id%INFO(1) = -72
8845 CALL mumps_seti8toi4(total_file_size-size_written,
8846 & id%INFO(2))
8847 endif
8848 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
8849 & id%COMM, id%MYID )
8850 IF ( id%INFO(1) .LT. 0 ) GOTO 100
8851 elseif(trim(mode).EQ."restore") then
8852 size_variables(i1)=size_int
8853 read(unit,iostat=err) id%NB_SINGULAR_VALUES
8854 if(err.ne.0) THEN
8855 id%INFO(1) = -75
8856 CALL mumps_seti8toi4(total_file_size-size_read
8857 & ,id%INFO(2))
8858 endif
8859 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
8860 & id%COMM, id%MYID )
8861 IF ( id%INFO(1) .LT. 0 ) GOTO 100
8862 endif
8863 CASE("ASSOCIATED_OOC_FILES")
8864 if(trim(mode).EQ."memory_save") then
8865 diff_size_alloc_read(i1)=size_logical
8866 elseif(trim(mode).EQ."save") then
8867 diff_size_alloc_read(i1)=size_logical
8868 elseif(trim(mode).EQ."restore") then
8869 diff_size_alloc_read(i1)=size_logical
8870 endif
8871 CASE("SAVE_DIR")
8872 nbrecords(i1)=1
8873 if(trim(mode).EQ."memory_save") then
8874 size_variables(i1)=len(id%SAVE_DIR)*size_character
8875 elseif(trim(mode).EQ."save") then
8876 write(unit,iostat=err) id%SAVE_DIR
8877 if(err.ne.0) then
8878 id%INFO(1) = -72
8879 CALL mumps_seti8toi4(total_file_size-size_written,
8880 & id%INFO(2))
8881 endif
8882 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
8883 & id%COMM, id%MYID )
8884 IF ( id%INFO(1) .LT. 0 ) GOTO 100
8885 elseif(trim(mode).EQ."restore") then
8886 size_variables(i1)=len(id%SAVE_DIR)*size_character
8887 read(unit,iostat=err) id%SAVE_DIR
8888 if(err.ne.0) THEN
8889 id%INFO(1) = -75
8890 CALL mumps_seti8toi4(total_file_size-size_read
8891 & ,id%INFO(2))
8892 endif
8893 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
8894 & id%COMM, id%MYID )
8895 IF ( id%INFO(1) .LT. 0 ) GOTO 100
8896 endif
8897 CASE("SAVE_PREFIX")
8898 nbrecords(i1)=1
8899 if(trim(mode).EQ."memory_save") then
8900 size_variables(i1)=len(id%SAVE_PREFIX)*size_character
8901 elseif(trim(mode).EQ."save") then
8902 write(unit,iostat=err) id%SAVE_PREFIX
8903 if(err.ne.0) then
8904 id%INFO(1) = -72
8905 CALL mumps_seti8toi4(total_file_size-size_written,
8906 & id%INFO(2))
8907 endif
8908 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
8909 & id%COMM, id%MYID )
8910 IF ( id%INFO(1) .LT. 0 ) GOTO 100
8911 elseif(trim(mode).EQ."restore") then
8912 size_variables(i1)=len(id%SAVE_PREFIX)*size_character
8913 read(unit,iostat=err) id%SAVE_PREFIX
8914 if(err.ne.0) THEN
8915 id%INFO(1) = -75
8916 CALL mumps_seti8toi4(total_file_size-size_read
8917 & ,id%INFO(2))
8918 endif
8919 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
8920 & id%COMM, id%MYID )
8921 IF ( id%INFO(1) .LT. 0 ) GOTO 100
8922 endif
8923 CASE("MPITOOMP_PROCS_MAP")
8924 nbrecords(i1)=2
8925 if(trim(mode).EQ."memory_save") then
8926 IF(associated(id%MPITOOMP_PROCS_MAP)) THEN
8927 size_gest(i1)=size_int
8928 size_variables(i1)=
8929 & size(id%MPITOOMP_PROCS_MAP,1)*size_int
8930 ELSE
8931 size_gest(i1)=size_int*2
8932 size_variables(i1)=0_8
8933 ENDIF
8934 elseif(trim(mode).EQ."save") then
8935 IF(associated(id%MPITOOMP_PROCS_MAP)) THEN
8936 write(unit,iostat=err) size(id%MPITOOMP_PROCS_MAP,1)
8937 if(err.ne.0) then
8938 id%INFO(1) = -72
8939 CALL mumps_seti8toi4(total_file_size-size_written,
8940 & id%INFO(2))
8941 endif
8942 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
8943 & id%COMM, id%MYID )
8944 IF ( id%INFO(1) .LT. 0 ) GOTO 100
8945 write(unit,iostat=err) id%MPITOOMP_PROCS_MAP
8946 ELSE
8947 write(unit,iostat=err) -999
8948 if(err.ne.0) then
8949 id%INFO(1) = -72
8950 CALL mumps_seti8toi4(total_file_size-size_written,
8951 & id%INFO(2))
8952 endif
8953 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
8954 & id%COMM, id%MYID )
8955 IF ( id%INFO(1) .LT. 0 ) GOTO 100
8956 write(unit,iostat=err) -999
8957 ENDIF
8958 if(err.ne.0) then
8959 id%INFO(1) = -72
8960 CALL mumps_seti8toi4(total_file_size-size_written,
8961 & id%INFO(2))
8962 endif
8963 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
8964 & id%COMM, id%MYID )
8965 IF ( id%INFO(1) .LT. 0 ) GOTO 100
8966 elseif(trim(mode).EQ."restore") then
8967 nullify(id%MPITOOMP_PROCS_MAP)
8968 read(unit,iostat=err) size_array1
8969 if(err.ne.0) THEN
8970 id%INFO(1) = -75
8971 CALL mumps_seti8toi4(total_file_size-size_read
8972 & ,id%INFO(2))
8973 endif
8974 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
8975 & id%COMM, id%MYID )
8976 IF ( id%INFO(1) .LT. 0 ) GOTO 100
8977 if(size_array1.EQ.-999) then
8978 size_gest(i1)=size_int*2
8979 size_variables(i1)=0_8
8980 read(unit,iostat=err) dummy
8981 else
8982 size_gest(i1)=size_int
8983 size_variables(i1)=size_array1*size_int
8984 allocate(id%MPITOOMP_PROCS_MAP(size_array1),
8985 & stat=allocok)
8986 if (allocok .GT. 0) THEN
8987 id%INFO(1) = -78
8988 CALL mumps_seti8toi4(
8989 & total_struc_size-size_allocated
8990 & ,id%INFO(2))
8991 endif
8992 read(unit,iostat=err) id%MPITOOMP_PROCS_MAP
8993 endif
8994 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
8995 & id%COMM, id%MYID )
8996 IF ( id%INFO(1) .LT. 0 ) GOTO 100
8997 if(err.ne.0) THEN
8998 id%INFO(1) = -75
8999 CALL mumps_seti8toi4(total_file_size-size_read
9000 & ,id%INFO(2))
9001 endif
9002 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
9003 & id%COMM, id%MYID )
9004 IF ( id%INFO(1) .LT. 0 ) GOTO 100
9005 endif
9006 CASE("METIS_OPTIONS")
9007 nbrecords(i1)=1
9008 if(trim(mode).EQ."memory_save") then
9009 size_variables(i1)=size_int*size(id%METIS_OPTIONS,1)
9010 elseif(trim(mode).EQ."save") then
9011 write(unit,iostat=err) id%METIS_OPTIONS
9012 if(err.ne.0) then
9013 id%INFO(1) = -72
9014 CALL mumps_seti8toi4(total_file_size-size_written,
9015 & id%INFO(2))
9016 endif
9017 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
9018 & id%COMM, id%MYID )
9019 IF ( id%INFO(1) .LT. 0 ) GOTO 100
9020 elseif(trim(mode).EQ."restore") then
9021 size_variables(i1)=size_int*size(id%METIS_OPTIONS,1)
9022 read(unit,iostat=err) id%METIS_OPTIONS
9023 if(err.ne.0) THEN
9024 id%INFO(1) = -75
9025 CALL mumps_seti8toi4(total_file_size-size_read
9026 & ,id%INFO(2))
9027 endif
9028 CALL mumps_propinfo( id%ICNTL(1), id%INFO(1),
9029 & id%COMM, id%MYID )
9030 IF ( id%INFO(1) .LT. 0 ) GOTO 100
9031 endif
9032 CASE("pad0","pad1","pad2","pad3","pad4","pad5","pad6","pad7",
9033 & "pad11","pad111", "pad12","pad13","pad14","pad15","pad16")
9034 CASE DEFAULT
9035 END SELECT
9036 if(trim(mode).EQ."memory_save") then
9037 nbsubrecords=int(size_variables(i1)/huge(i4))
9038 IF(nbsubrecords.GT.0) then
9039 nbrecords(i1)=nbrecords(i1)+nbsubrecords
9040 ENDIF
9041 elseif(trim(mode).EQ."save") then
9042 size_written=size_written+size_variables(i1)
9043 & +int(size_gest(i1),kind=8)
9044#if !defined(MUMPS_F2003)
9045 size_written=size_written
9046 & +int(2*id%KEEP(34)*nbrecords(i1),kind=8)
9047#endif
9048 elseif(trim(mode).EQ."restore") then
9049 size_allocated=size_allocated+size_variables(i1)+
9050 & diff_size_alloc_read(i1)
9051 size_read=size_read+size_variables(i1)
9052 & +int(size_gest(i1),kind=8)
9053#if !defined(MUMPS_F2003)
9054 size_read=size_read
9055 & +int(2*id%KEEP(34)*nbrecords(i1),kind=8)
9056#endif
9057 elseif(trim(mode).EQ."fake_restore") then
9058 endif
9059 ENDDO
9060 200 continue
9061 if(trim(mode).EQ."memory_save") then
9062 written_struc_size=sum(size_variables)+sum(size_variables_root)
9063 & +size_variables_blr+size_variables_front_data+
9064 & size_variables_l0fac
9065 total_struc_size=written_struc_size
9066 & +sum(diff_size_alloc_read)
9067 & +sum(diff_size_alloc_read_root)
9068 gest_size=sum(size_gest)+sum(size_gest_root)
9069 & +size_gest_blr+size_gest_front_data
9070 & +size_gest_l0fac
9071 & +int(5*size_character,kind=8)
9072 & +int(23*size_character,kind=8)
9073 & +int(2*size_int8,kind=8)+int(1,kind=8)
9074 & +int(3*size_int,kind=8)
9075 & +int(size_logical,kind=8)
9076 IF(associated(id%OOC_FILE_NAME_LENGTH).AND.
9077 & associated(id%OOC_FILE_NAMES)) THEN
9078 gest_size=gest_size+int(size_int,kind=8)
9079 & +int(id%OOC_FILE_NAME_LENGTH(1)*size_character,kind=8)
9080 ELSE
9081 gest_size=gest_size+int(2*size_int,kind=8)
9082 ENDIF
9083#if !defined(MUMPS_F2003)
9084 tot_nbrecords=sum(nbrecords)+sum(nbrecords_root)+8
9085 gest_size=gest_size+int(2*id%KEEP(34)*tot_nbrecords,kind=8)
9086#endif
9087 total_file_size=written_struc_size+gest_size
9088 elseif(trim(mode).EQ."save") then
9089 elseif(trim(mode).EQ."restore") then
9090 if(id%root%gridinit_done) then
9091 id%root%CNTXT_BLACS = id%COMM_NODES
9092 CALL blacs_gridinit( id%root%CNTXT_BLACS, 'R',
9093 & id%root%NPROW, id%root%NPCOL )
9094 id%root%gridinit_done = .true.
9095 endif
9096 elseif(trim(mode).EQ."fake_restore") then
9097 elseif(trim(mode).EQ."restore_ooc") then
9098 endif
9099 100 continue
9100 deallocate(variables, variables_root)
9101 RETURN
9102 END SUBROUTINE smumps_save_restore_structure
9103 END MODULE smumps_save_restore
#define mumps_abort
Definition VE_Metis.h:25
subroutine mumps_propinfo(icntl, info, comm, id)
end diagonal values have been computed in the(sparse) matrix id.SOL
subroutine blacs_gridinit(cntxt, c, nprow, npcol)
Definition mpi.f:745
subroutine mpi_allreduce(sendbuf, recvbuf, cnt, datatype, operation, comm, ierr)
Definition mpi.f:103
subroutine mpi_bcast(buffer, cnt, datatype, root, comm, ierr)
Definition mpi.f:205
initmumps id
subroutine, public mumps_save_restore_front_data(id_fdm_f_encoding, unit, myid, mode, size_gest, size_variables, size_int, total_file_size, total_struc_size, size_read, size_allocated, size_written, info)
subroutine, public smumps_save_restore_blr(id_blrarray_encoding, unit, myid, mode, size_gest, size_variables, size_int, size_arith_dep, size_logical, total_file_size, total_struc_size, size_read, size_allocated, size_written, info)
subroutine smumps_ooc_clean_files(id, ierr)
Definition smumps_ooc.F:523
subroutine smumps_check_file_name(id, name_length, file_name, check)
subroutine smumps_get_save_files(id, save_file, info_file)
subroutine smumps_check_header(id, basic_check, read_int_type_64, read_hash, read_nprocs, read_arith, read_sym, read_par)
subroutine mumps_read_header(fileunit, ierr, size_read, size_int, size_int8, total_file_size, total_struc_size, read_arith, read_int_type_64, read_ooc_file_name_length, read_ooc_first_file_name, read_hash, read_sym, read_par, read_nprocs, fortran_version_ok)
subroutine mumps_clean_saved_data(myid, ierr, suppfile, infofile)
subroutine smumps_compute_memory_save(id, total_file_size, total_struc_size)
subroutine smumps_restore_ooc(localid)
subroutine smumps_save_restore_structure(id, unit, mode, nbvariables, size_variables, size_gest, nbvariables_root, size_variables_root, size_gest_root, total_file_size, total_struc_size, info1, info2, infog1, infog2)
subroutine smumps_remove_saved(id)
subroutine smumps(id)
subroutine mumps_seti8toi4(i8, i)
subroutine mumps_find_unit(iunit)