25 parameter( master = 0 )
26 TYPE (DMUMPS_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
37 INTEGER :: ICNTL34, MAX_LENGTH, FLAG_SAME, SUM_FLAG_SAME
38 TYPE (DMUMPS_STRUC) :: localid
43 IF ( id%INFO(1) .LT. 0 )
RETURN
45 IF ( fileunit .EQ. -1 )
THEN
51 IF ( id%INFO(1) .LT. 0 )
RETURN
54 IF ( id%INFO(1) .LT. 0 )
RETURN
55 open(unit=fileunit,file=restorefile
56#if defined(MUMPS_F2003)
59 & ,status=
'old',form=
'unformatted',iostat=ierr)
66 IF ( id%INFO(1) .LT. 0 )
RETURN
67 size_int = id%KEEP(34)
68 size_int8 = id%KEEP(34)*id%KEEP(10)
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,
81 elseif (.NOT.fortran_version_ok)
THEN
87 IF ( id%INFO(1) .LT. 0 )
RETURN
89 & read_hash, read_nprocs,
90 & read_arith, read_sym, read_par)
91 IF ( id%INFO(1) .LT. 0 )
RETURN
93 IF (id%MYID.EQ.master)
THEN
94 icntl34 = id%ICNTL(34)
96 CALL mpi_bcast( icntl34, 1, mpi_integer, master, id%COMM, ierr )
98 & read_ooc_first_file_name, same_ooc)
100 & mpi_integer,mpi_max,id%COMM,ierr)
101 IF (max_length.NE.-999)
THEN
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.
112 id%ASSOCIATED_OOC_FILES = .false.
115 IF (icntl34 .NE. 1)
THEN
116 localid%COMM = id%COMM
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
124 IF ( localid%INFO(1) .EQ. 0 )
THEN
125 localid%ASSOCIATED_OOC_FILES = .false.
126 IF (read_ooc_file_name_length.NE.-999)
THEN
128 IF ( ierr.ne.0 )
THEN
136 IF ( id%INFO(1) .LT. 0 )
RETURN
150 INTEGER::,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 (DMUMPS_STRUC) :: localid
161 allocate(size_variables(nbvariables), stat=allocok)
162 if (allocok .GT. 0)
THEN
164 localid%INFO(2) = nbvariables
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
172 localid%INFO(2) = nbvariables_root
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
180 localid%INFO(2) = nbvariables
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
188 localid%INFO(2) = nbvariables_root
191 & localid%COMM, localid%MYID )
192 IF ( localid%INFO(1) .LT. 0 )
RETURN
193 size_variables(:)=0_8
194 size_variables_root(:)=0_8
204 IF ( localid%INFO(1) .LT. 0 )
RETURN
206 IF ( in .EQ. -1 )
THEN
207 localid%INFO(1) = -79
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)
217 & ,status='old
',form='unformatted
',iostat=ierr)
219 localid%INFO(1) = -74
222 CALL MUMPS_PROPINFO( localid%ICNTL(1), localid%INFO(1),
223 & localid%COMM, localid%MYID )
224.LT.
IF ( localid%INFO(1) 0 ) RETURN
225 CALL DMUMPS_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)
231 deallocate(SIZE_VARIABLES,SIZE_VARIABLES_ROOT)
232 deallocate(SIZE_GEST,SIZE_GEST_ROOT)
subroutine mumps_read_header(fileunit, ierr, size_read, size_int, size_int8, total_file_size, total_struc_size, read_arith, read_int_type_64, read_ooc_file_name_length, read_ooc_first_file_name, read_hash, read_sym, read_par, read_nprocs, fortran_version_ok)