OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
smumps_save_restore Module Reference

Functions/Subroutines

subroutine smumps_remove_saved (id)
subroutine smumps_restore_ooc (localid)
subroutine smumps_compute_memory_save (id, total_file_size, total_struc_size)
subroutine smumps_save (id)
subroutine smumps_restore (id)
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)

Function/Subroutine Documentation

◆ smumps_compute_memory_save()

subroutine smumps_save_restore::smumps_compute_memory_save ( type (smumps_struc) id,
integer(8) total_file_size,
integer(8) total_struc_size )

Definition at line 235 of file smumps_save_restore.F.

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
subroutine mumps_propinfo(icntl, info, comm, id)
initmumps id

◆ smumps_remove_saved()

subroutine smumps_save_restore::smumps_remove_saved ( type (smumps_struc) id)

Definition at line 21 of file smumps_save_restore.F.

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 )
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
subroutine smumps_ooc_clean_files(id, ierr)
Definition smumps_ooc.F:523
subroutine mumps_seti8toi4(i8, i)
subroutine mumps_find_unit(iunit)

◆ smumps_restore()

subroutine smumps_save_restore::smumps_restore ( type (smumps_struc) id)

Definition at line 508 of file smumps_save_restore.F.

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 if (allocok .GT. 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 IF ( id%INFO(1) .LT. 0 ) RETURN
532 allocate(size_variables_root(nbvariables_root), stat=allocok)
533 if (allocok .GT. 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 IF ( id%INFO(1) .LT. 0 ) RETURN
540 allocate(size_gest(nbvariables), stat=allocok)
541 if (allocok .GT. 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 IF ( id%INFO(1) .LT. 0 ) RETURN
548 allocate(size_gest_root(nbvariables_root), stat=allocok)
549 if (allocok .GT. 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 IF ( id%INFO(1) .LT. 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 IF ( id%INFO(1) .LT. 0 ) RETURN
569 CALL mumps_find_unit(in)
570 IF ( in .EQ. -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 IF ( id%INFO(1) .LT. 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 if(ierr.ne.0) 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 IF ( id%INFO(1) .LT. 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 prokg = ( mpg .GT. 0 .and. id%MYID .eq. 0 )
597 if(id%INFO(1).EQ.0) then
598 id%INFO(1)=info1
599 id%INFO(2)=info2
600 id%INFOG(1)=infog1
601 id%INFOG(2)=infog2
602 if(id%INFO(1).NE.0) then
603 write(mpg,*) "Warning: "
604 & ,"restored instance has negative INFO(1):"
605 & , id%INFO(1)
606 endif
607 if(mp.GT.0) then
608 job=id%KEEP(40)+456789
609 write(mp,*) "Restore done successfully"
610 write(mp,*) "From file ",trim(adjustl(restore_file))
611 if((id%ICNTL(18).EQ.0).AND.(id%ICNTL(5).EQ.0)) then
612 write(mp,*) "with JOB, N, NNZ ",job, id%N,id%NNZ
613 elseif((id%ICNTL(18).EQ.1).AND.(id%ICNTL(5).EQ. 0)) then
614 write(mp,*) "with JOB, N, NNZ_loc=", job, id%N,
615 & id%NNZ_loc
616 elseif((id%ICNTL(18).EQ.0).AND.(id%ICNTL(5).EQ. 1)) then
617 write(mp,*) "with JOB, N, NELT=", job, id%N, id%NELT
618 endif
619 endif
620 IF(prokg) THEN
621 IF(id%KEEP(201).EQ.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 if (id%KEEP(201) .GT. 0) THEN
644 id%ASSOCIATED_OOC_FILES=.true.
645 ENDIF
646 RETURN

◆ smumps_restore_ooc()

subroutine smumps_save_restore::smumps_restore_ooc ( type (smumps_struc) localid)

Definition at line 148 of file smumps_save_restore.F.

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

◆ smumps_save()

subroutine smumps_save_restore::smumps_save ( type (smumps_struc) id)

Definition at line 299 of file smumps_save_restore.F.

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 if((id%ICNTL(18).EQ.0).AND.(id%ICNTL(5).EQ.0)) then
463 write(outinfo,*) "with N, NNZ ", id%N, id%NNZ
464 elseif((id%ICNTL(18).EQ.1).AND.(id%ICNTL(5).EQ. 0)) then
465 write(outinfo,*) "with N, NNZ_loc=", id%N, id%NNZ_loc
466 elseif((id%ICNTL(18).EQ.0).AND.(id%ICNTL(5).EQ. 1)) then
467 write(outinfo,*) "with N, NELT=", id%N, id%NELT
468 endif
469 IF(id%KEEP(10).EQ.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 IF(id%KEEP(201).EQ.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 if (id%KEEP(201) .GT. 0) THEN
504 id%ASSOCIATED_OOC_FILES=.true.
505 ENDIF
506 RETURN

◆ smumps_save_restore_structure()

subroutine smumps_save_restore::smumps_save_restore_structure ( type (smumps_struc) id,
integer, intent(in) unit,
character(len=*), intent(in) mode,
integer, intent(in) nbvariables,
integer(8), dimension(nbvariables) size_variables,
integer, dimension(nbvariables) size_gest,
integer, intent(in) nbvariables_root,
integer(8), dimension(nbvariables_root) size_variables_root,
integer, dimension(nbvariables_root) size_gest_root,
integer(8) total_file_size,
integer(8) total_struc_size,
integer info1,
integer info2,
integer infog1,
integer infog2 )

Definition at line 648 of file smumps_save_restore.F.

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 if (allocok .GT. 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 IF ( id%INFO(1) .LT. 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 elseif(trim(mode).EQ."save") then
1602 write(unit,iostat=err) infog1,infog2
1603 & ,id%INFOG(3:size(id%INFOG,1))
1604 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
1612 elseif(trim(mode).EQ."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 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
1624 endif
1625 CASE("COST_SUBTREES")
1626 nbrecords(i1)=1
1627 if(trim(mode).EQ."memory_save") then
1628 size_variables(i1)=size_rl_or_dbl
1629 elseif(trim(mode).EQ."save") then
1630 write(unit,iostat=err) id%COST_SUBTREES
1631 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
1639 elseif(trim(mode).EQ."restore") then
1640 size_variables(i1)=size_rl_or_dbl
1641 read(unit,iostat=err) id%COST_SUBTREES
1642 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
1650 endif
1651 CASE("CNTL")
1652 nbrecords(i1)=1
1653 if(trim(mode).EQ."memory_save") then
1654 size_variables(i1)=size_rl_or_dbl*size(id%CNTL,1)
1655 elseif(trim(mode).EQ."save") then
1656 write(unit,iostat=err) id%CNTL
1657 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
1665 elseif(trim(mode).EQ."restore") then
1666 size_variables(i1)=size_rl_or_dbl*size(id%CNTL,1)
1667 read(unit,iostat=err) id%CNTL
1668 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
1676 endif
1677 CASE("RINFO")
1678 nbrecords(i1)=1
1679 if(trim(mode).EQ."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 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
2171 endif
2172 CASE("NRHS")
2173 nbrecords(i1)=1
2174 if(trim(mode).EQ."memory_save") then
2175 size_variables(i1)=size_int
2176 elseif(trim(mode).EQ."save") then
2177 write(unit,iostat=err) id%NRHS
2178 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
2186 elseif(trim(mode).EQ."restore") then
2187 size_variables(i1)=size_int
2188 read(unit,iostat=err) id%NRHS
2189 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
2197 endif
2198 CASE("NZ_RHS")
2199 nbrecords(i1)=1
2200 if(trim(mode).EQ."memory_save") then
2201 size_variables(i1)=size_int
2202 elseif(trim(mode).EQ."save") then
2203 write(unit,iostat=err) id%NZ_RHS
2204 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
2212 elseif(trim(mode).EQ."restore") then
2213 size_variables(i1)=size_int
2214 read(unit,iostat=err) id%NZ_RHS
2215 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
2223 endif
2224 CASE("LRHS_loc")
2225 CASE("Nloc_RHS")
2226 CASE("LSOL_loc")
2227 nbrecords(i1)=1
2228 if(trim(mode).EQ."memory_save") then
2229 size_variables(i1)=size_int
2230 elseif(trim(mode).EQ."save") then
2231 write(unit,iostat=err) id%LSOL_loc
2232 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
2240 elseif(trim(mode).EQ."restore") then
2241 size_variables(i1)=size_int
2242 read(unit,iostat=err) id%LSOL_loc
2243 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
2251 endif
2252 CASE("LREDRHS")
2253 nbrecords(i1)=1
2254 if(trim(mode).EQ."memory_save") then
2255 size_variables(i1)=size_int
2256 elseif(trim(mode).EQ."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 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
2623 endif
2624 CASE("SIZE_SCHUR")
2625 nbrecords(i1)=1
2626 if(trim(mode).EQ."memory_save") then
2627 size_variables(i1)=size_int
2628 elseif(trim(mode).EQ."save") then
2629 write(unit,iostat=err) id%SIZE_SCHUR
2630 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
2638 nbrecords(i1)=1
2639 elseif(trim(mode).EQ."restore") then
2640 size_variables(i1)=size_int
2641 read(unit,iostat=err) id%SIZE_SCHUR
2642 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
2650 endif
2651 CASE("SCHUR")
2652 CASE("SCHUR_CINTERFACE")
2653 CASE("LISTVAR_SCHUR")
2654 CASE("MAPPING")
2655 nbrecords(i1)=2
2656 if(trim(mode).EQ."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 elseif(trim(mode).EQ."save") then
2665 IF(associated(id%MAPPING)) THEN
2666 write(unit,iostat=err) id%KEEP8(28)
2667 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
2675 write(unit,iostat=err) id%MAPPING
2676 ELSE
2677 write(unit,iostat=err) int(-999,8)
2678 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
2686 write(unit,iostat=err) -999
2687 ENDIF
2688 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
2696 elseif(trim(mode).EQ."restore") then
2697 nullify(id%MAPPING)
2698 read(unit,iostat=err) size_array_int8_1
2699 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
2707 if(size_array_int8_1.EQ.int(-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 if (allocok .GT. 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
2726 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
2734 endif
2735 CASE("VERSION_NUMBER")
2736 nbrecords(i1)=1
2737 if(trim(mode).EQ."memory_save") then
2738 size_variables(i1)=len(id%VERSION_NUMBER)
2739 & *size_character
2740 elseif(trim(mode).EQ."save") then
2741 write(unit,iostat=err) id%VERSION_NUMBER
2742 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
2750 elseif(trim(mode).EQ."restore") then
2751 size_variables(i1)=len(id%VERSION_NUMBER)
2752 & *size_character
2753 read(unit,iostat=err) id%VERSION_NUMBER
2754 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
2762 endif
2763 CASE("OOC_TMPDIR")
2764 nbrecords(i1)=1
2765 if(trim(mode).EQ."memory_save") then
2766 size_variables(i1)=len(id%OOC_TMPDIR)
2767 & *size_character
2768 elseif(trim(mode).EQ."save") then
2769 write(unit,iostat=err) id%OOC_TMPDIR
2770 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
2778 elseif(trim(mode).EQ."restore") then
2779 size_variables(i1)=len(id%OOC_TMPDIR)
2780 & *size_character
2781 read(unit,iostat=err) id%OOC_TMPDIR
2782 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
2790 endif
2791 CASE("OOC_PREFIX")
2792 nbrecords(i1)=1
2793 if(trim(mode).EQ."memory_save") then
2794 size_variables(i1)=len(id%OOC_PREFIX)
2795 & *size_character
2796 elseif(trim(mode).EQ."save") then
2797 write(unit,iostat=err) id%OOC_PREFIX
2798 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
2806 nbrecords(i1)=1
2807 elseif(trim(mode).EQ."restore") then
2808 size_variables(i1)=len(id%OOC_PREFIX)
2809 & *size_character
2810 read(unit,iostat=err) id%OOC_PREFIX
2811 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
2819 endif
2820 CASE("WRITE_PROBLEM")
2821 nbrecords(i1)=1
2822 if(trim(mode).EQ."memory_save") then
2823 size_variables(i1)=len(id%WRITE_PROBLEM)
2824 & *size_character
2825 elseif(trim(mode).EQ."save") then
2826 write(unit,iostat=err) id%WRITE_PROBLEM
2827 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
2835 elseif(trim(mode).EQ."restore") then
2836 size_variables(i1)=len(id%WRITE_PROBLEM)
2837 & *size_character
2838 read(unit,iostat=err) id%WRITE_PROBLEM
2839 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
2847 endif
2848 CASE("MAX_SURF_MASTER")
2849 nbrecords(i1)=1
2850 if(trim(mode).EQ."memory_save") then
2851 size_variables(i1)=size_int8
2852 elseif(trim(mode).EQ."save") then
2853 write(unit,iostat=err) id%MAX_SURF_MASTER
2854 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
2862 elseif(trim(mode).EQ."restore") then
2863 size_variables(i1)=size_int8
2864 read(unit,iostat=err) id%MAX_SURF_MASTER
2865 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
2873 endif
2874 CASE("INST_Number")
2875 nbrecords(i1)=1
2876 if(trim(mode).EQ."memory_save") then
2877 size_variables(i1)=size_int
2878 elseif(trim(mode).EQ."save") then
2879 write(unit,iostat=err) id%INST_Number
2880 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
2888 elseif(trim(mode).EQ."restore") then
2889 size_variables(i1)=size_int
2890 read(unit,iostat=err) id%INST_Number
2891 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
2899 endif
2900 CASE("COMM_NODES")
2901 if(trim(mode).EQ."memory_save") then
2902 diff_size_alloc_read(i1)=size_int
2903 elseif(trim(mode).EQ."save") then
2904 diff_size_alloc_read(i1)=size_int
2905 elseif(trim(mode).EQ."restore") then
2906 diff_size_alloc_read(i1)=size_int
2907 endif
2908 CASE("MYID_NODES")
2909 nbrecords(i1)=1
2910 if(trim(mode).EQ."memory_save") then
2911 size_variables(i1)=size_int
2912 elseif(trim(mode).EQ."save") then
2913 write(unit,iostat=err) id%MYID_NODES
2914 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
2922 elseif(trim(mode).EQ."restore") then
2923 size_variables(i1)=size_int
2924 read(unit,iostat=err) id%MYID_NODES
2925 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
2933 endif
2934 CASE("COMM_LOAD")
2935 if(trim(mode).EQ."memory_save") then
2936 diff_size_alloc_read(i1)=size_int
2937 elseif(trim(mode).EQ."save") then
2938 diff_size_alloc_read(i1)=size_int
2939 elseif(trim(mode).EQ."restore") then
2940 diff_size_alloc_read(i1)=size_int
2941 endif
2942 CASE("MYID")
2943 nbrecords(i1)=1
2944 if(trim(mode).EQ."memory_save") then
2945 size_variables(i1)=size_int
2946 elseif(trim(mode).EQ."save") then
2947 write(unit,iostat=err) id%MYID
2948 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
2956 elseif(trim(mode).EQ."restore") then
2957 size_variables(i1)=size_int
2958 read(unit,iostat=err) id%MYID
2959 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
2967 endif
2968 CASE("NPROCS")
2969 nbrecords(i1)=1
2970 if(trim(mode).EQ."memory_save") then
2971 size_variables(i1)=size_int
2972 elseif(trim(mode).EQ."save") then
2973 write(unit,iostat=err) id%NPROCS
2974 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
2982 elseif(trim(mode).EQ."restore") then
2983 size_variables(i1)=size_int
2984 read(unit,iostat=err) id%NPROCS
2985 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
2993 endif
2994 CASE("NSLAVES")
2995 nbrecords(i1)=1
2996 if(trim(mode).EQ."memory_save") then
2997 size_variables(i1)=size_int
2998 elseif(trim(mode).EQ."save") then
2999 write(unit,iostat=err) id%NSLAVES
3000 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
3008 elseif(trim(mode).EQ."restore") then
3009 size_variables(i1)=size_int
3010 read(unit,iostat=err) id%NSLAVES
3011 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
3019 endif
3020 CASE("ASS_IRECV")
3021 nbrecords(i1)=1
3022 if(trim(mode).EQ."memory_save") then
3023 size_variables(i1)=size_int
3024 elseif(trim(mode).EQ."save") then
3025 write(unit,iostat=err) id%ASS_IRECV
3026 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
3034 elseif(trim(mode).EQ."restore") then
3035 size_variables(i1)=size_int
3036 read(unit,iostat=err) id%ASS_IRECV
3037 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
3045 endif
3046 CASE("IS")
3047 nbrecords(i1)=2
3048 if(trim(mode).EQ."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 elseif(trim(mode).EQ."save") then
3059 IF(associated(id%IS)) THEN
3060 write(unit,iostat=err) size(id%IS,1),id%KEEP(32)
3061 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 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 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
3082 write(unit,iostat=err) -999
3083 ENDIF
3084 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
3092 elseif(trim(mode).EQ."restore") then
3093 nullify(id%IS)
3094 read(unit,iostat=err) size_array1,size_array2
3095 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
3103 if(size_array1.EQ.-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 if (allocok .GT. 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
3124 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
3132 endif
3133 CASE("Deficiency")
3134 nbrecords(i1)=1
3135 if(trim(mode).EQ."memory_save") then
3136 size_variables(i1)=size_int
3137 elseif(trim(mode).EQ."save") then
3138 write(unit,iostat=err) id%Deficiency
3139 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
3147 elseif(trim(mode).EQ."restore") then
3148 size_variables(i1)=size_int
3149 read(unit,iostat=err) id%Deficiency
3150 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
3158 endif
3159 CASE("LNA")
3160 nbrecords(i1)=1
3161 if(trim(mode).EQ."memory_save") then
3162 size_variables(i1)=size_int
3163 elseif(trim(mode).EQ."save") then
3164 write(unit,iostat=err) id%LNA
3165 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
3173 elseif(trim(mode).EQ."restore") then
3174 size_variables(i1)=size_int
3175 read(unit,iostat=err) id%LNA
3176 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
3184 endif
3185 CASE("NBSA")
3186 nbrecords(i1)=1
3187 if(trim(mode).EQ."memory_save") then
3188 size_variables(i1)=size_int
3189 elseif(trim(mode).EQ."save") then
3190 write(unit,iostat=err) id%NBSA
3191 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
3199 elseif(trim(mode).EQ."restore") then
3200 size_variables(i1)=size_int
3201 read(unit,iostat=err) id%NBSA
3202 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
3210 endif
3211 CASE("STEP")
3212 nbrecords(i1)=2
3213 if(trim(mode).EQ."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 elseif(trim(mode).EQ."save") then
3222 IF(associated(id%STEP)) THEN
3223 write(unit,iostat=err) size(id%STEP,1)
3224 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
3232 write(unit,iostat=err) id%STEP
3233 ELSE
3234 write(unit,iostat=err) -999
3235 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
3243 write(unit,iostat=err) -999
3244 ENDIF
3245 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
3253 elseif(trim(mode).EQ."restore") then
3254 nullify(id%STEP)
3255 read(unit,iostat=err) size_array1
3256 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
3263 if(size_array1.EQ.-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 if (allocok .GT. 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
3282 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
3290 endif
3291 CASE("NE_STEPS")
3292 nbrecords(i1)=2
3293 if(trim(mode).EQ."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 elseif(trim(mode).EQ."save") then
3302 IF(associated(id%NE_STEPS)) THEN
3303 write(unit,iostat=err) size(id%NE_STEPS,1)
3304 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
3312 write(unit,iostat=err) id%NE_STEPS
3313 ELSE
3314 write(unit,iostat=err) -999
3315 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
3323 write(unit,iostat=err) -999
3324 ENDIF
3325 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
3333 elseif(trim(mode).EQ."restore") then
3334 nullify(id%NE_STEPS)
3335 read(unit,iostat=err) size_array1
3336 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
3344 if(size_array1.EQ.-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 if (allocok .GT. 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
3363 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
3371 endif
3372 CASE("ND_STEPS")
3373 nbrecords(i1)=2
3374 if(trim(mode).EQ."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 elseif(trim(mode).EQ."save") then
3383 IF(associated(id%ND_STEPS)) THEN
3384 write(unit,iostat=err) size(id%ND_STEPS,1)
3385 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
3393 write(unit,iostat=err) id%ND_STEPS
3394 ELSE
3395 write(unit,iostat=err) -999
3396 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
3404 write(unit,iostat=err) -999
3405 ENDIF
3406 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
3414 elseif(trim(mode).EQ."restore") then
3415 nullify(id%ND_STEPS)
3416 read(unit,iostat=err) size_array1
3417 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
3425 if(size_array1.EQ.-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 if (allocok .GT. 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
3444 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
3452 endif
3453 CASE("Step2node")
3454 nbrecords(i1)=2
3455 if(trim(mode).EQ."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 elseif(trim(mode).EQ."save") then
3464 IF(associated(id%Step2node)) THEN
3465 write(unit,iostat=err) size(id%Step2node,1)
3466 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
3474 write(unit,iostat=err) id%Step2node
3475 ELSE
3476 write(unit,iostat=err) -999
3477 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
3485 write(unit,iostat=err) -999
3486 ENDIF
3487 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
3495 elseif(trim(mode).EQ."restore") then
3496 nullify(id%Step2node)
3497 read(unit,iostat=err) size_array1
3498 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
3506 if(size_array1.EQ.-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 if (allocok .GT. 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
3525 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
3533 endif
3534 CASE("FRERE_STEPS")
3535 nbrecords(i1)=2
3536 if(trim(mode).EQ."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 elseif(trim(mode).EQ."save") then
3545 IF(associated(id%FRERE_STEPS)) THEN
3546 write(unit,iostat=err) size(id%FRERE_STEPS,1)
3547 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
3555 write(unit,iostat=err) id%FRERE_STEPS
3556 ELSE
3557 write(unit,iostat=err) -999
3558 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
3566 write(unit,iostat=err) -999
3567 ENDIF
3568 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
3576 elseif(trim(mode).EQ."restore") then
3577 nullify(id%FRERE_STEPS)
3578 read(unit,iostat=err) size_array1
3579 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
3587 if(size_array1.EQ.-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 if (allocok .GT. 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
3606 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
3614 endif
3615 CASE("DAD_STEPS")
3616 nbrecords(i1)=2
3617 if(trim(mode).EQ."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 elseif(trim(mode).EQ."save") then
3626 IF(associated(id%DAD_STEPS)) THEN
3627 write(unit,iostat=err) size(id%DAD_STEPS,1)
3628 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
3636 write(unit,iostat=err) id%DAD_STEPS
3637 ELSE
3638 write(unit,iostat=err) -999
3639 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
3647 write(unit,iostat=err) -999
3648 ENDIF
3649 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
3657 elseif(trim(mode).EQ."restore") then
3658 nullify(id%DAD_STEPS)
3659 read(unit,iostat=err) size_array1
3660 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
3668 if(size_array1.EQ.-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 if (allocok .GT. 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
3687 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
3695 endif
3696 CASE("FILS")
3697 nbrecords(i1)=2
3698 if(trim(mode).EQ."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 elseif(trim(mode).EQ."save") then
3707 IF(associated(id%FILS)) THEN
3708 write(unit,iostat=err) size(id%FILS,1)
3709 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
3717 write(unit,iostat=err) id%FILS
3718 ELSE
3719 write(unit,iostat=err) -999
3720 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
3728 write(unit,iostat=err) -999
3729 ENDIF
3730 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
3738 elseif(trim(mode).EQ."restore") then
3739 nullify(id%FILS)
3740 read(unit,iostat=err) size_array1
3741 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
3749 if(size_array1.EQ.-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 if (allocok .GT. 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
3768 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
3776 endif
3777 CASE("PTRAR")
3778 nbrecords(i1)=2
3779 if(trim(mode).EQ."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 elseif(trim(mode).EQ."save") then
3788 IF(associated(id%PTRAR)) THEN
3789 write(unit,iostat=err) size(id%PTRAR,1)
3790 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
3798 write(unit,iostat=err) id%PTRAR
3799 ELSE
3800 write(unit,iostat=err) -999
3801 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
3809 write(unit,iostat=err) -999
3810 ENDIF
3811 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
3819 nbrecords(i1)=2
3820 elseif(trim(mode).EQ."restore") then
3821 nullify(id%PTRAR)
3822 read(unit,iostat=err) size_array1
3823 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
3831 if(size_array1.EQ.-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 if (allocok .GT. 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
3850 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
3858 endif
3859 CASE("FRTPTR")
3860 nbrecords(i1)=2
3861 if(trim(mode).EQ."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 elseif(trim(mode).EQ."save") then
3870 IF(associated(id%FRTPTR)) THEN
3871 write(unit,iostat=err) size(id%FRTPTR,1)
3872 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
3880 write(unit,iostat=err) id%FRTPTR
3881 ELSE
3882 write(unit,iostat=err) -999
3883 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
3891 write(unit,iostat=err) -999
3892 ENDIF
3893 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
3901 elseif(trim(mode).EQ."restore") then
3902 nullify(id%FRTPTR)
3903 read(unit,iostat=err) size_array1
3904 if(err.ne.0) 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 if(size_array1.EQ.-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 if (allocok .GT. 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
3930 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
3938 endif
3939 CASE("FRTELT")
3940 nbrecords(i1)=2
3941 if(trim(mode).EQ."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 elseif(trim(mode).EQ."save") then
3950 IF(associated(id%FRTELT)) THEN
3951 write(unit,iostat=err) size(id%FRTELT,1)
3952 if(err.ne.0) 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 if(err.ne.0) 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 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
3975 elseif(trim(mode).EQ."restore") then
3976 nullify(id%FRTELT)
3977 read(unit,iostat=err) size_array1
3978 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
3986 if(size_array1.EQ.-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 if (allocok .GT. 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
4005 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
4013 endif
4014 CASE("NA")
4015 nbrecords(i1)=2
4016 if(trim(mode).EQ."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 elseif(trim(mode).EQ."save") then
4025 IF(associated(id%NA)) THEN
4026 write(unit,iostat=err) size(id%NA,1)
4027 if(err.ne.0) 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 if(err.ne.0) 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 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
4050 elseif(trim(mode).EQ."restore") then
4051 nullify(id%NA)
4052 read(unit,iostat=err) size_array1
4053 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
4061 if(size_array1.EQ.-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 if (allocok .GT. 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
4080 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
4088 endif
4089 CASE("PROCNODE_STEPS")
4090 nbrecords(i1)=2
4091 if(trim(mode).EQ."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 elseif(trim(mode).EQ."save") then
4101 IF(associated(id%PROCNODE_STEPS)) THEN
4102 write(unit,iostat=err) size(id%PROCNODE_STEPS,1)
4103 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
4111 write(unit,iostat=err) id%PROCNODE_STEPS
4112 ELSE
4113 write(unit,iostat=err) -999
4114 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
4122 write(unit,iostat=err) -999
4123 ENDIF
4124 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
4132 elseif(trim(mode).EQ."restore") then
4133 nullify(id%PROCNODE_STEPS)
4134 read(unit,iostat=err) size_array1
4135 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
4143 if(size_array1.EQ.-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 if (allocok .GT. 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
4162 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
4170 endif
4171 CASE("PTLUST_S")
4172 nbrecords(i1)=2
4173 if(trim(mode).EQ."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 elseif(trim(mode).EQ."save") then
4182 IF(associated(id%PTLUST_S)) THEN
4183 write(unit,iostat=err) size(id%PTLUST_S,1)
4184 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
4192 write(unit,iostat=err) id%PTLUST_S
4193 ELSE
4194 write(unit,iostat=err) -999
4195 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
4203 write(unit,iostat=err) -999
4204 ENDIF
4205 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
4213 elseif(trim(mode).EQ."restore") then
4214 nullify(id%PTLUST_S)
4215 read(unit,iostat=err) size_array1
4216 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
4224 if(size_array1.EQ.-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 if (allocok .GT. 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
4243 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
4251 endif
4252 CASE("PTRFAC")
4253 nbrecords(i1)=2
4254 if(trim(mode).EQ."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 elseif(trim(mode).EQ."save") then
4263 IF(associated(id%PTRFAC)) THEN
4264 write(unit,iostat=err) size(id%PTRFAC,1)
4265 if(err.ne.0) 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 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
4283 write(unit,iostat=err) -999
4284 ENDIF
4285 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
4293 elseif(trim(mode).EQ."restore") then
4294 nullify(id%PTRFAC)
4295 read(unit,iostat=err) size_array1
4296 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
4304 if(size_array1.EQ.-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 if (allocok .GT. 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
4323 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
4331 endif
4332 CASE("S")
4333 nbrecords(i1)=2
4334 if(trim(mode).EQ."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 elseif(trim(mode).EQ."save") then
4345 IF(associated(id%S)) THEN
4346 write(unit,iostat=err) id%KEEP8(23),id%KEEP8(31)
4347 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 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 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
4369 write(unit,iostat=err) -999
4370 ENDIF
4371 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
4379 elseif(trim(mode).EQ."restore") then
4380 nullify(id%S)
4381 read(unit,iostat=err) size_array_int8_1,size_array_int8_2
4382 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
4390 if(size_array_int8_1.EQ.int(-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 if (allocok .GT. 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
4412 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
4420 endif
4421 CASE("PROCNODE")
4422 CASE("INTARR")
4423 nbrecords(i1)=2
4424 if(trim(mode).EQ."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 elseif(trim(mode).EQ."save") then
4433 IF(associated(id%INTARR)) THEN
4434 write(unit,iostat=err) id%KEEP8(27)
4435 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
4443 write(unit,iostat=err) id%INTARR
4444 ELSE
4445 write(unit,iostat=err) int(-999,8)
4446 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
4454 write(unit,iostat=err) -999
4455 ENDIF
4456 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
4464 elseif(trim(mode).EQ."restore") then
4465 nullify(id%INTARR)
4466 read(unit,iostat=err) size_array_int8_1
4467 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
4475 if(size_array_int8_1.EQ.int(-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 if (allocok .GT. 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
4494 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
4502 endif
4503 CASE("DBLARR")
4504 CASE("NELT_loc")
4505 nbrecords(i1)=1
4506 if(trim(mode).EQ."memory_save") then
4507 size_variables(i1)=size_int
4508 elseif(trim(mode).EQ."save") then
4509 write(unit,iostat=err) id%NELT_loc
4510 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
4518 elseif(trim(mode).EQ."restore") then
4519 size_variables(i1)=size_int
4520 read(unit,iostat=err) id%NELT_loc
4521 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
4529 endif
4530 CASE("LELTVAR")
4531 nbrecords(i1)=1
4532 if(trim(mode).EQ."memory_save") then
4533 size_variables(i1)=size_int
4534 elseif(trim(mode).EQ."save") then
4535 write(unit,iostat=err) id%LELTVAR
4536 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
4544 elseif(trim(mode).EQ."restore") then
4545 size_variables(i1)=size_int
4546 read(unit,iostat=err) id%LELTVAR
4547 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
4555 endif
4556 CASE("ELTPROC")
4557 nbrecords(i1)=2
4558 if(trim(mode).EQ."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 elseif(trim(mode).EQ."save") then
4567 IF(associated(id%ELTPROC)) THEN
4568 write(unit,iostat=err) size(id%ELTPROC,1)
4569 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
4577 write(unit,iostat=err) id%ELTPROC
4578 ELSE
4579 write(unit,iostat=err) -999
4580 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
4588 write(unit,iostat=err) -999
4589 ENDIF
4590 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
4598 elseif(trim(mode).EQ."restore") then
4599 nullify(id%ELTPROC)
4600 read(unit,iostat=err) size_array1
4601 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
4609 if(size_array1.EQ.-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 if (allocok .GT. 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
4628 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
4636 endif
4637 CASE("I4_L0_OMP")
4638 nbrecords(i1)=2
4639 if(trim(mode).EQ."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 elseif(trim(mode).EQ."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 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
4660 write(unit,iostat=err) id%I4_L0_OMP
4661 ELSE
4662 write(unit,iostat=err) -999,-998
4663 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
4671 write(unit,iostat=err) -999
4672 ENDIF
4673 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
4681 elseif(trim(mode).EQ."restore") then
4682 nullify(id%I4_L0_OMP)
4683 read(unit,iostat=err) size_array1,size_array2
4684 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
4692 if(size_array1.EQ.-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 if (allocok .GT. 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
4712 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
4720 endif
4721 CASE("I8_L0_OMP")
4722 nbrecords(i1)=2
4723 if(trim(mode).EQ."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 elseif(trim(mode).EQ."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 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
4744 write(unit,iostat=err) id%I8_L0_OMP
4745 ELSE
4746 write(unit,iostat=err) -999,-998
4747 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
4755 write(unit,iostat=err) -999
4756 ENDIF
4757 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
4765 elseif(trim(mode).EQ."restore") then
4766 nullify(id%I8_L0_OMP)
4767 read(unit,iostat=err) size_array1,size_array2
4768 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
4776 if(size_array1.EQ.-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 if (allocok .GT. 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
4796 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
4804 endif
4805 CASE("CANDIDATES")
4806 nbrecords(i1)=2
4807 if(trim(mode).EQ."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 elseif(trim(mode).EQ."save") then
4817 IF(associated(id%CANDIDATES)) THEN
4818 write(unit,iostat=err) size(id%CANDIDATES,1)
4819 & ,size(id%CANDIDATES,2)
4820 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
4828 write(unit,iostat=err) id%CANDIDATES
4829 ELSE
4830 write(unit,iostat=err) -999,-998
4831 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
4839 write(unit,iostat=err) -999
4840 ENDIF
4841 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
4849 elseif(trim(mode).EQ."restore") then
4850 nullify(id%CANDIDATES)
4851 read(unit,iostat=err) size_array1,size_array2
4852 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
4860 if(size_array1.EQ.-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 if (allocok .GT. 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
4880 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
4888 endif
4889 CASE("ISTEP_TO_INIV2")
4890 nbrecords(i1)=2
4891 if(trim(mode).EQ."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 elseif(trim(mode).EQ."save") then
4900 IF(associated(id%ISTEP_TO_INIV2)) THEN
4901 write(unit,iostat=err) size(id%ISTEP_TO_INIV2,1)
4902 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
4910 write(unit,iostat=err) id%ISTEP_TO_INIV2
4911 ELSE
4912 write(unit,iostat=err) -999
4913 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
4921 write(unit,iostat=err) -999
4922 ENDIF
4923 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
4931 elseif(trim(mode).EQ."restore") then
4932 nullify(id%ISTEP_TO_INIV2)
4933 read(unit,iostat=err) size_array1
4934 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
4942 if(size_array1.EQ.-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 if (allocok .GT. 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
4961 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
4969 endif
4970 CASE("FUTURE_NIV2")
4971 nbrecords(i1)=2
4972 if(trim(mode).EQ."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 elseif(trim(mode).EQ."save") then
4981 IF(associated(id%FUTURE_NIV2)) THEN
4982 write(unit,iostat=err) size(id%FUTURE_NIV2,1)
4983 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
4991 write(unit,iostat=err) id%FUTURE_NIV2
4992 ELSE
4993 write(unit,iostat=err) -999
4994 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
5002 write(unit,iostat=err) -999
5003 ENDIF
5004 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
5012 elseif(trim(mode).EQ."restore") then
5013 nullify(id%FUTURE_NIV2)
5014 read(unit,iostat=err) size_array1
5015 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
5023 if(size_array1.EQ.-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 if (allocok .GT. 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
5042 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
5050 endif
5051 CASE("TAB_POS_IN_PERE")
5052 nbrecords(i1)=2
5053 if(trim(mode).EQ."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 elseif(trim(mode).EQ."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 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
5074 write(unit,iostat=err) id%TAB_POS_IN_PERE
5075 ELSE
5076 write(unit,iostat=err) -999,-998
5077 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
5085 write(unit,iostat=err) -999
5086 ENDIF
5087 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
5095 elseif(trim(mode).EQ."restore") then
5096 nullify(id%TAB_POS_IN_PERE)
5097 read(unit,iostat=err) size_array1,size_array2
5098 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
5106 if(size_array1.EQ.-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 if (allocok .GT. 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
5126 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
5134 endif
5135 CASE("I_AM_CAND")
5136 nbrecords(i1)=2
5137 if(trim(mode).EQ."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 elseif(trim(mode).EQ."save") then
6094 IF(associated(id%DEPTH_FIRST_SEQ)) THEN
6095 write(unit,iostat=err) size(id%DEPTH_FIRST_SEQ,1)
6096 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
6104 write(unit,iostat=err) id%DEPTH_FIRST_SEQ
6105 ELSE
6106 write(unit,iostat=err) -999
6107 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
6115 write(unit,iostat=err) -999
6116 ENDIF
6117 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
6125 elseif(trim(mode).EQ."restore") then
6126 nullify(id%DEPTH_FIRST_SEQ)
6127 read(unit,iostat=err) size_array1
6128 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
6136 if(size_array1.EQ.-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 if (allocok .GT. 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
6156 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
6164 endif
6165 CASE("SBTR_ID")
6166 nbrecords(i1)=2
6167 if(trim(mode).EQ."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 elseif(trim(mode).EQ."save") then
6176 IF(associated(id%SBTR_ID)) THEN
6177 write(unit,iostat=err) size(id%SBTR_ID,1)
6178 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
6186 write(unit,iostat=err) id%SBTR_ID
6187 ELSE
6188 write(unit,iostat=err) -999
6189 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
6197 write(unit,iostat=err) -999
6198 ENDIF
6199 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
6207 elseif(trim(mode).EQ."restore") then
6208 nullify(id%SBTR_ID)
6209 read(unit,iostat=err) size_array1
6210 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
6218 if(size_array1.EQ.-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 if (allocok .GT. 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
6237 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 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 if(trim(mode).EQ."memory_save") then
6253 size_variables(i1)=size_int
6254 elseif(trim(mode).EQ."save") then
6255 write(unit,iostat=err) id%NBSA_LOCAL
6256 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
6264 elseif(trim(mode).EQ."restore") then
6265 size_variables(i1)=size_int
6266 read(unit,iostat=err) id%NBSA_LOCAL
6267 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
6275 endif
6276 CASE("LWK_USER")
6277 if(trim(mode).EQ."memory_save") then
6278 diff_size_alloc_read(i1)=size_int
6279 elseif(trim(mode).EQ."save") then
6280 diff_size_alloc_read(i1)=size_int
6281 elseif(trim(mode).EQ."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 if(trim(mode).EQ."memory_save") then
6288 size_variables(i1)=size_int
6289 elseif(trim(mode).EQ."save") then
6290 write(unit,iostat=err) id%INSTANCE_NUMBER
6291 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
6299 elseif(trim(mode).EQ."restore") then
6300 size_variables(i1)=size_int
6301 read(unit,iostat=err) id%INSTANCE_NUMBER
6302 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
6310 endif
6311 CASE("OOC_MAX_NB_NODES_FOR_ZONE")
6312 nbrecords(i1)=1
6313 if(trim(mode).EQ."memory_save") then
6314 size_variables(i1)=size_int
6315 elseif(trim(mode).EQ."save") then
6316 write(unit,iostat=err) id%OOC_MAX_NB_NODES_FOR_ZONE
6317 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
6325 elseif(trim(mode).EQ."restore") then
6326 size_variables(i1)=size_int
6327 read(unit,iostat=err) id%OOC_MAX_NB_NODES_FOR_ZONE
6328 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
6336 endif
6337 CASE("OOC_INODE_SEQUENCE")
6338 nbrecords(i1)=2
6339 if(trim(mode).EQ."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 elseif(trim(mode).EQ."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 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
6360 write(unit,iostat=err) id%OOC_INODE_SEQUENCE
6361 ELSE
6362 write(unit,iostat=err) -999,-998
6363 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
6371 write(unit,iostat=err) -999
6372 ENDIF
6373 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
6381 elseif(trim(mode).EQ."restore") then
6382 nullify(id%OOC_INODE_SEQUENCE)
6383 read(unit,iostat=err) size_array1,size_array2
6384 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
6392 if(size_array1.EQ.-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 if (allocok .GT. 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
6412 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
6420 endif
6421 CASE("OOC_SIZE_OF_BLOCK")
6422 nbrecords(i1)=2
6423 if(trim(mode).EQ."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 elseif(trim(mode).EQ."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 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
6444 write(unit,iostat=err) id%OOC_SIZE_OF_BLOCK
6445 ELSE
6446 write(unit,iostat=err) -999,-998
6447 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
6455 write(unit,iostat=err) -999
6456 ENDIF
6457 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
6465 elseif(trim(mode).EQ."restore") then
6466 nullify(id%OOC_SIZE_OF_BLOCK)
6467 read(unit,iostat=err) size_array1,size_array2
6468 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
6476 if(size_array1.EQ.-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 if (allocok .GT. 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
6496 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
6504 endif
6505 CASE("OOC_VADDR")
6506 nbrecords(i1)=2
6507 if(trim(mode).EQ."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 elseif(trim(mode).EQ."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 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
6528 write(unit,iostat=err) id%OOC_VADDR
6529 ELSE
6530 write(unit,iostat=err) -999,-998
6531 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
6539 write(unit,iostat=err) -999
6540 ENDIF
6541 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
6549 elseif(trim(mode).EQ."restore") then
6550 nullify(id%OOC_VADDR)
6551 read(unit,iostat=err) size_array1,size_array2
6552 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
6560 if(size_array1.EQ.-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 if (allocok .GT. 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
6580 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
6588 endif
6589 CASE("OOC_TOTAL_NB_NODES")
6590 nbrecords(i1)=2
6591 if(trim(mode).EQ."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 elseif(trim(mode).EQ."save") then
6601 IF(associated(id%OOC_TOTAL_NB_NODES)) THEN
6602 write(unit,iostat=err) size(id%OOC_TOTAL_NB_NODES,1)
6603 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
6611 write(unit,iostat=err) id%OOC_TOTAL_NB_NODES
6612 ELSE
6613 write(unit,iostat=err) -999
6614 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
6622 write(unit,iostat=err) -999
6623 ENDIF
6624 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
6632 elseif(trim(mode).EQ."restore") then
6633 nullify(id%OOC_TOTAL_NB_NODES)
6634 read(unit,iostat=err) size_array1
6635 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
6643 if(size_array1.EQ.-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 if (allocok .GT. 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
6663 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 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 if(trim(mode).EQ."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 elseif(trim(mode).EQ."save") then
6687 IF(associated(id%PIVNUL_LIST)) THEN
6688 write(unit,iostat=err) size(id%PIVNUL_LIST,1)
6689 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
6697 write(unit,iostat=err) id%PIVNUL_LIST
6698 ELSE
6699 write(unit,iostat=err) -999
6700 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
6708 write(unit,iostat=err) -999
6709 ENDIF
6710 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
6718 elseif(trim(mode).EQ."restore") then
6719 nullify(id%PIVNUL_LIST)
6720 read(unit,iostat=err) size_array1
6721 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
6729 if(size_array1.EQ.-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 if (allocok .GT. 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
6748 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
6756 endif
6757 CASE("SUP_PROC")
6758 CASE("IPTR_WORKING")
6759 nbrecords(i1)=2
6760 if(trim(mode).EQ."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 elseif(trim(mode).EQ."save") then
6769 IF(associated(id%IPTR_WORKING)) THEN
6770 write(unit,iostat=err) size(id%IPTR_WORKING,1)
6771 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
6779 write(unit,iostat=err) id%IPTR_WORKING
6780 ELSE
6781 write(unit,iostat=err) -999
6782 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
6790 write(unit,iostat=err) -999
6791 ENDIF
6792 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
6800 elseif(trim(mode).EQ."restore") then
6801 nullify(id%IPTR_WORKING)
6802 read(unit,iostat=err) size_array1
6803 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
6811 if(size_array1.EQ.-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 if (allocok .GT. 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
6830 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
6838 endif
6839 CASE("WORKING")
6840 nbrecords(i1)=2
6841 if(trim(mode).EQ."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 elseif(trim(mode).EQ."save") then
6850 IF(associated(id%WORKING)) THEN
6851 write(unit,iostat=err) size(id%WORKING,1)
6852 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
6860 write(unit,iostat=err) id%WORKING
6861 ELSE
6862 write(unit,iostat=err) -999
6863 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
6871 write(unit,iostat=err) -999
6872 ENDIF
6873 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
6881 elseif(trim(mode).EQ."restore") then
6882 nullify(id%WORKING)
6883 read(unit,iostat=err) size_array1
6884 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
6892 if(size_array1.EQ.-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 if (allocok .GT. 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
6911 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 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 if(trim(mode).EQ."memory_save") then
6927 size_variables_root(i2)=size_int
6928 elseif(trim(mode).EQ."save") then
6929 write(unit,iostat=err) id%root%MBLOCK
6930 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
6938 elseif(trim(mode).EQ."restore") then
6939 size_variables_root(i2)=size_int
6940 read(unit,iostat=err) id%root%MBLOCK
6941 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
6949 endif
6950 CASE("NBLOCK")
6951 nbrecords_root(i2)=1
6952 if(trim(mode).EQ."memory_save") then
6953 size_variables_root(i2)=size_int
6954 elseif(trim(mode).EQ."save") then
6955 write(unit,iostat=err) id%root%NBLOCK
6956 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
6964 elseif(trim(mode).EQ."restore") then
6965 size_variables_root(i2)=size_int
6966 read(unit,iostat=err) id%root%NBLOCK
6967 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
6975 endif
6976 CASE("NPROW")
6977 nbrecords_root(i2)=1
6978 if(trim(mode).EQ."memory_save") then
6979 size_variables_root(i2)=size_int
6980 elseif(trim(mode).EQ."save") then
6981 write(unit,iostat=err) id%root%NPROW
6982 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
6990 elseif(trim(mode).EQ."restore") then
6991 size_variables_root(i2)=size_int
6992 read(unit,iostat=err) id%root%NPROW
6993 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
7001 endif
7002 CASE("NPCOL")
7003 nbrecords_root(i2)=1
7004 if(trim(mode).EQ."memory_save") then
7005 size_variables_root(i2)=size_int
7006 elseif(trim(mode).EQ."save") then
7007 write(unit,iostat=err) id%root%NPCOL
7008 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
7016 elseif(trim(mode).EQ."restore") then
7017 size_variables_root(i2)=size_int
7018 read(unit,iostat=err) id%root%NPCOL
7019 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
7027 endif
7028 CASE("MYROW")
7029 nbrecords_root(i2)=1
7030 if(trim(mode).EQ."memory_save") then
7031 nbrecords_root(i2)=1
7032 size_variables_root(i2)=size_int
7033 elseif(trim(mode).EQ."save") then
7034 write(unit,iostat=err) id%root%MYROW
7035 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
7043 elseif(trim(mode).EQ."restore") then
7044 size_variables_root(i2)=size_int
7045 read(unit,iostat=err) id%root%MYROW
7046 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
7054 endif
7055 CASE("MYCOL")
7056 nbrecords_root(i2)=1
7057 if(trim(mode).EQ."memory_save") then
7058 size_variables_root(i2)=size_int
7059 elseif(trim(mode).EQ."save") then
7060 write(unit,iostat=err) id%root%MYCOL
7061 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
7069 elseif(trim(mode).EQ."restore") then
7070 size_variables_root(i2)=size_int
7071 read(unit,iostat=err) id%root%MYCOL
7072 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
7080 endif
7081 CASE("SCHUR_MLOC")
7082 nbrecords_root(i2)=1
7083 if(trim(mode).EQ."memory_save") then
7084 size_variables_root(i2)=size_int
7085 elseif(trim(mode).EQ."save") then
7086 write(unit,iostat=err) id%root%SCHUR_MLOC
7087 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
7095 elseif(trim(mode).EQ."restore") then
7096 size_variables_root(i2)=size_int
7097 read(unit,iostat=err) id%root%SCHUR_MLOC
7098 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
7106 endif
7107 CASE("SCHUR_NLOC")
7108 nbrecords_root(i2)=1
7109 if(trim(mode).EQ."memory_save") then
7110 size_variables_root(i2)=size_int
7111 elseif(trim(mode).EQ."save") then
7112 write(unit,iostat=err) id%root%SCHUR_NLOC
7113 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
7121 elseif(trim(mode).EQ."restore") then
7122 size_variables_root(i2)=size_int
7123 read(unit,iostat=err) id%root%SCHUR_NLOC
7124 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
7132 endif
7133 CASE("SCHUR_LLD")
7134 nbrecords_root(i2)=1
7135 if(trim(mode).EQ."memory_save") then
7136 size_variables_root(i2)=size_int
7137 elseif(trim(mode).EQ."save") then
7138 write(unit,iostat=err) id%root%SCHUR_LLD
7139 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
7147 elseif(trim(mode).EQ."restore") then
7148 size_variables_root(i2)=size_int
7149 read(unit,iostat=err) id%root%SCHUR_LLD
7150 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
7158 endif
7159 CASE("RHS_NLOC")
7160 nbrecords_root(i2)=1
7161 if(trim(mode).EQ."memory_save") then
7162 size_variables_root(i2)=size_int
7163 elseif(trim(mode).EQ."save") then
7164 write(unit,iostat=err) id%root%RHS_NLOC
7165 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
7173 elseif(trim(mode).EQ."restore") then
7174 size_variables_root(i2)=size_int
7175 read(unit,iostat=err) id%root%RHS_NLOC
7176 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 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 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
7210 endif
7211 CASE("TOT_ROOT_SIZE")
7212 nbrecords_root(i2)=1
7213 if(trim(mode).EQ."memory_save") then
7214 size_variables_root(i2)=size_int
7215 elseif(trim(mode).EQ."save") then
7216 write(unit,iostat=err) id%root%TOT_ROOT_SIZE
7217 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
7225 elseif(trim(mode).EQ."restore") then
7226 size_variables_root(i2)=size_int
7227 read(unit,iostat=err) id%root%TOT_ROOT_SIZE
7228 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
7236 endif
7237 CASE("DESCRIPTOR")
7238 nbrecords_root(i2)=1
7239 if(trim(mode).EQ."memory_save") then
7240 size_variables_root(i2)=size(id%root%DESCRIPTOR,1)
7241 & *size_int
7242 elseif(trim(mode).EQ."save") then
7243 write(unit,iostat=err) id%root%DESCRIPTOR
7244 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
7252 elseif(trim(mode).EQ."restore") then
7253 size_variables_root(i2)=size_int*
7254 & size(id%root%DESCRIPTOR,1)
7255 read(unit,iostat=err) id%root%DESCRIPTOR
7256 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
7264 endif
7265 CASE("CNTXT_BLACS")
7266 nbrecords_root(i2)=1
7267 if(trim(mode).EQ."memory_save") then
7268 size_variables_root(i2)=size_int
7269 elseif(trim(mode).EQ."save") then
7270 write(unit,iostat=err) id%root%CNTXT_BLACS
7271 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
7279 elseif(trim(mode).EQ."restore") then
7280 size_variables_root(i2)=size_int
7281 read(unit,iostat=err) id%root%CNTXT_BLACS
7282 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
7290 endif
7291 CASE("LPIV")
7292 nbrecords_root(i2)=1
7293 if(trim(mode).EQ."memory_save") then
7294 size_variables_root(i2)=size_int
7295 elseif(trim(mode).EQ."save") then
7296 write(unit,iostat=err) id%root%LPIV
7297 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
7305 elseif(trim(mode).EQ."restore") then
7306 size_variables_root(i2)=size_int
7307 read(unit,iostat=err) id%root%LPIV
7308 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
7316 endif
7317 CASE("RG2L_ROW")
7318 CASE("RG2L_COL")
7319 CASE("IPIV")
7320 nbrecords_root(i2)=2
7321 if(trim(mode).EQ."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 elseif(trim(mode).EQ."save") then
7331 IF(associated(id%root%IPIV)) THEN
7332 write(unit,iostat=err) size(id%root%IPIV,1)
7333 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
7342 write(unit,iostat=err) id%root%IPIV
7343 ELSE
7344 write(unit,iostat=err) -999
7345 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
7354 write(unit,iostat=err) -999
7355 ENDIF
7356 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
7364 elseif(trim(mode).EQ."restore") then
7365 nullify(id%root%IPIV)
7366 read(unit,iostat=err) size_array1
7367 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
7375 if(size_array1.EQ.-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 if (allocok .GT. 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
7394 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
7402 endif
7403 CASE("RHS_CNTR_MASTER_ROOT")
7404 nbrecords_root(i2)=2
7405 if(trim(mode).EQ."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 elseif(trim(mode).EQ."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 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
7428 write(unit,iostat=err) id%root%RHS_CNTR_MASTER_ROOT
7429 ELSE
7430 write(unit,iostat=err) -999
7431 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
7440 write(unit,iostat=err) -999
7441 ENDIF
7442 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
7450 elseif(trim(mode).EQ."restore") then
7451 nullify(id%root%RHS_CNTR_MASTER_ROOT)
7452 read(unit,iostat=err) size_array1
7453 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
7461 if(size_array1.EQ.-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 if (allocok .GT. 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
7481 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
7489 endif
7490 CASE("SCHUR_POINTER")
7491 CASE("QR_TAU")
7492 CASE("RHS_ROOT")
7493 nbrecords_root(i2)=2
7494 if(trim(mode).EQ."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 elseif(trim(mode).EQ."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 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
7516 write(unit,iostat=err) id%root%RHS_ROOT
7517 ELSE
7518 write(unit,iostat=err) -999,-998
7519 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
7528 write(unit,iostat=err) -999
7529 ENDIF
7530 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
7538 elseif(trim(mode).EQ."restore") then
7539 nullify(id%root%RHS_ROOT)
7540 read(unit,iostat=err) size_array1,size_array2
7541 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
7549 if(size_array1.EQ.-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 if (allocok .GT. 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
7570 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
7578 endif
7579 CASE("QR_RCOND")
7580 nbrecords_root(i2)=1
7581 if(trim(mode).EQ."memory_save") then
7582 size_variables_root(i2)=size_rl_or_dbl
7583 elseif(trim(mode).EQ."save") then
7584 write(unit,iostat=err) id%root%QR_RCOND
7585 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
7593 elseif(trim(mode).EQ."restore") then
7594 size_variables_root(i2)=size_rl_or_dbl
7595 read(unit,iostat=err) id%root%QR_RCOND
7596 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
7604 endif
7605 CASE("yes")
7606 nbrecords_root(i2)=1
7607 if(trim(mode).EQ."memory_save") then
7608 size_variables_root(i2)=size_logical
7609 elseif(trim(mode).EQ."save") then
7610 write(unit,iostat=err) id%root%yes
7611 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
7619 elseif(trim(mode).EQ."restore") then
7620 size_variables_root(i2)=size_logical
7621 read(unit,iostat=err) id%root%yes
7622 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
7630 endif
7631 CASE("gridinit_done")
7632 nbrecords_root(i2)=1
7633 if(trim(mode).EQ."memory_save") then
7634 size_variables_root(i2)=size_logical
7635 elseif(trim(mode).EQ."save") then
7636 write(unit,iostat=err) id%root%gridinit_done
7637 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
7645 elseif(trim(mode).EQ."restore") then
7646 size_variables_root(i2)=size_logical
7647 read(unit,iostat=err) id%root%gridinit_done
7648 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 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 if(trim(mode).EQ."memory_save") then
7663 size_variables_root(i2)=size_int
7664 elseif(trim(mode).EQ."save") then
7665 write(unit,iostat=err) id%root%NB_SINGULAR_VALUES
7666 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
7674 elseif(trim(mode).EQ."restore") then
7675 size_variables_root(i2)=size_int
7676 read(unit,iostat=err) id%root%NB_SINGULAR_VALUES
7677 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 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 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
8047 endif
8048 CASE("L_PHYS_L0_OMP")
8049 nbrecords(i1)=1
8050 if(trim(mode).EQ."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 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
8200 write(unit,iostat=err) id%IPOOL_A_L0_OMP
8201 ELSE
8202 write(unit,iostat=err) -999
8203 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
8211 write(unit,iostat=err) -999
8212 ENDIF
8213 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
8221 elseif(trim(mode).EQ."restore") then
8222 nullify(id%IPOOL_A_L0_OMP)
8223 read(unit,iostat=err) size_array1
8224 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
8232 if(size_array1.EQ.-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 if (allocok .GT. 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
8252 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
8260 endif
8261 CASE("IPOOL_B_L0_OMP")
8262 nbrecords(i1)=2
8263 if(trim(mode).EQ."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 elseif(trim(mode).EQ."save") then
8273 IF(associated(id%IPOOL_B_L0_OMP)) THEN
8274 write(unit,iostat=err) size(id%IPOOL_B_L0_OMP,1)
8275 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
8283 write(unit,iostat=err) id%IPOOL_B_L0_OMP
8284 ELSE
8285 write(unit,iostat=err) -999
8286 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
8294 write(unit,iostat=err) -999
8295 ENDIF
8296 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
8304 elseif(trim(mode).EQ."restore") then
8305 nullify(id%IPOOL_B_L0_OMP)
8306 read(unit,iostat=err) size_array1
8307 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
8315 if(size_array1.EQ.-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 if (allocok .GT. 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
8335 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
8343 endif
8344 CASE("PHYS_L0_OMP")
8345 nbrecords(i1)=2
8346 if(trim(mode).EQ."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 elseif(trim(mode).EQ."save") then
8356 IF(associated(id%PHYS_L0_OMP)) THEN
8357 write(unit,iostat=err) size(id%PHYS_L0_OMP,1)
8358 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
8366 write(unit,iostat=err) id%PHYS_L0_OMP
8367 ELSE
8368 write(unit,iostat=err) -999
8369 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
8377 write(unit,iostat=err) -999
8378 ENDIF
8379 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
8387 elseif(trim(mode).EQ."restore") then
8388 nullify(id%PHYS_L0_OMP)
8389 read(unit,iostat=err) size_array1
8390 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
8398 if(size_array1.EQ.-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 if (allocok .GT. 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
8417 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
8425 endif
8426 CASE("VIRT_L0_OMP")
8427 nbrecords(i1)=2
8428 if(trim(mode).EQ."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 elseif(trim(mode).EQ."save") then
8437 IF(associated(id%VIRT_L0_OMP)) THEN
8438 write(unit,iostat=err) size(id%VIRT_L0_OMP,1)
8439 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
8447 write(unit,iostat=err) id%VIRT_L0_OMP
8448 ELSE
8449 write(unit,iostat=err) -999
8450 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
8458 write(unit,iostat=err) -999
8459 ENDIF
8460 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
8468 elseif(trim(mode).EQ."restore") then
8469 nullify(id%VIRT_L0_OMP)
8470 read(unit,iostat=err) size_array1
8471 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
8479 if(size_array1.EQ.-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 if (allocok .GT. 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
8498 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
8506 endif
8507 CASE("VIRT_L0_OMP_MAPPING")
8508 nbrecords(i1)=2
8509 if(trim(mode).EQ."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 elseif(trim(mode).EQ."save") then
8519 IF(associated(id%VIRT_L0_OMP_MAPPING)) THEN
8520 write(unit,iostat=err) size(id%VIRT_L0_OMP_MAPPING,1)
8521 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
8529 write(unit,iostat=err) id%VIRT_L0_OMP_MAPPING
8530 ELSE
8531 write(unit,iostat=err) -999
8532 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
8540 write(unit,iostat=err) -999
8541 ENDIF
8542 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
8550 elseif(trim(mode).EQ."restore") then
8551 nullify(id%VIRT_L0_OMP_MAPPING)
8552 read(unit,iostat=err) size_array1
8553 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
8561 if(size_array1.EQ.-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 if (allocok .GT. 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
8581 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
8589 endif
8590 CASE("PERM_L0_OMP")
8591 nbrecords(i1)=2
8592 if(trim(mode).EQ."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 elseif(trim(mode).EQ."save") then
8601 IF(associated(id%PERM_L0_OMP)) THEN
8602 write(unit,iostat=err) size(id%PERM_L0_OMP,1)
8603 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
8611 write(unit,iostat=err) id%PERM_L0_OMP
8612 ELSE
8613 write(unit,iostat=err) -999
8614 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
8622 write(unit,iostat=err) -999
8623 ENDIF
8624 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
8632 elseif(trim(mode).EQ."restore") then
8633 nullify(id%PERM_L0_OMP)
8634 read(unit,iostat=err) size_array1
8635 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
8643 if(size_array1.EQ.-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 if (allocok .GT. 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
8662 if(err.ne.0) 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 IF ( id%INFO(1) .LT. 0 ) GOTO 100
8670 endif
8671 CASE("PTR_LEAFS_L0_OMP")
8672 nbrecords(i1)=2
8673 if(trim(mode).EQ."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
#define mumps_abort
Definition VE_Metis.h:25
subroutine blacs_gridinit(cntxt, c, nprow, npcol)
Definition mpi.f:745
subroutine, public smumps_save_restore_l0facarray(l0_omp_factors, unit, myid, mode, size_gest, size_variables, size_int, size_int8, size_arith_dep, total_file_size, total_struc_size, size_read, size_allocated, size_written, info)