53 & ,SIZE_GEST,SIZE_VARIABLES
54 & ,SIZE_INT,SIZE_INT8,SIZE_ARITH_DEP
55 & ,TOTAL_FILE_SIZE,TOTAL_STRUC_SIZE
56 & ,size_read,size_allocated,size_written
60 TYPE (zmumps_l0ompfac_t),
DIMENSION(:),
POINTER :: l0_omp_factors
61 INTEGER,
intent(IN)::unit,myid
62 CHARACTER(len=*),
intent(IN) :: mode
63 INTEGER,
INTENT(OUT) :: size_gest
64 INTEGER(8),
intent(OUT) :: size_variables
65 INTEGER,
intent(INOUT):: info(2)
66 INTEGER,
intent(IN):: size_int
67 INTEGER(8),
intent(IN) :: total_file_size,total_struc_size
68 INTEGER(8),
intent(INOUT):: size_read,size_allocated,size_written
69 INTEGER:: j1,nbrecords,nbsubrecords,size_array1,dummy,allocok,err
70 INTEGER:: size_gest_l0fac_array,
71 & size_gest_l0fac_array_j1
73 INTEGER(8):: size_variables_l0fac_array,
74 & size_variables_l0fac_array_j1
77 size_gest_l0fac_array=0
78 size_variables_l0fac_array=0
79 size_gest_l0fac_array_j1=0
80 size_variables_l0fac_array_j1=0
82 IF (trim(mode).EQ.
"memory_save")
THEN
83 IF (
associated(l0_omp_factors))
THEN
87 DO j1=1,
size(l0_omp_factors)
90 & ,unit,myid,
"memory_save"
91 & ,size_gest_l0fac_array_j1
92 & ,size_variables_l0fac_array_j1
93 & ,size_int,size_int8,size_arith_dep
94 & ,total_file_size,total_struc_size
95 & ,size_read,size_allocated,size_written
97 size_gest_l0fac_array=size_gest_l0fac_array+
98 & size_gest_l0fac_array_j1
99 size_variables_l0fac_array=size_variables_l0fac_array+
100 & size_variables_l0fac_array_j1
101 IF ( info(1) .LT. 0 )
GOTO 100
105 size_gest = 2*size_int
108 ELSEIF (trim(mode).EQ.
"save")
THEN
109 IF (
associated(l0_omp_factors))
THEN
113 write(unit,iostat=err)
size(l0_omp_factors)
119 IF ( info(1) .LT. 0 )
GOTO 100
120 DO j1=1,
size(l0_omp_factors)
124 & ,size_gest_l0fac_array_j1
125 & ,size_variables_l0fac_array_j1
126 & ,size_int,size_int8,size_arith_dep
127 & ,total_file_size,total_struc_size
128 & ,size_read,size_allocated,size_written
135 write(unit,iostat=err) -999
141 IF ( info(1) .LT. 0 )
GOTO 100
142 write(unit,iostat=err) -999
148 IF ( info(1) .LT. 0 )
GOTO 100
150 ELSE IF (trim(mode).EQ.
"restore")
THEN
151 NULLIFY(l0_omp_factors)
152 read(unit,iostat=err) size_array1
158 IF ( info(1) .LT. 0 )
GOTO 100
159 if(size_array1.EQ.-999)
then
163 read(unit,iostat=err) dummy
169 IF ( info(1) .LT. 0 )
GOTO 100
174 allocate(l0_omp_factors(size_array1), stat=allocok)
175 if (allocok .GT. 0)
THEN
178 & total_struc_size-size_allocated
181 DO j1=1,
size(l0_omp_factors)
184 & ,unit,myid,
"restore"
185 & ,size_gest_l0fac_array_j1
186 & ,size_variables_l0fac_array_j1
187 & ,size_int, size_int8, size_arith_dep
188 & ,total_file_size,total_struc_size
189 & ,size_read,size_allocated,size_written
191 size_gest_l0fac_array=size_gest_l0fac_array+
192 & size_gest_l0fac_array_j1
193 size_variables_l0fac_array=size_variables_l0fac_array+
194 & size_variables_l0fac_array_j1
195 IF ( info(1) .LT. 0 )
GOTO 100
199 if(trim(mode).EQ.
"memory_save")
then
200 nbsubrecords=int(size_variables/huge(i4))
201 IF(nbsubrecords.GT.0)
then
202 nbrecords=nbrecords+nbsubrecords
204 elseif(trim(mode).EQ.
"save")
then
205 size_written=size_written+size_variables
206 & +int(size_gest,kind=8)
207#if !defined(MUMPS_F2003)
208 size_written=size_written
209 & +int(2*size_int*nbrecords,kind=8)
211 elseif(trim(mode).EQ.
"restore")
then
212 size_allocated=size_allocated+size_variables
213 size_read=size_read+size_variables
214 & +int(size_gest,kind=8)
215#if !defined(MUMPS_F2003)
217 & +int(2*size_int*nbrecords,kind=8)
220 if(trim(mode).EQ.
"memory_save")
then
221 size_variables=size_variables+size_variables_l0fac_array
222 size_gest=size_gest+size_gest_l0fac_array
223#if !defined(MUMPS_F2003)
224 size_gest=size_gest+2*size_int*nbrecords
231 & L0_OMP_FACTORS_1THREAD
233 & ,Local_SIZE_GEST, Local_SIZE_VARIABLES
234 & ,SIZE_INT, SIZE_INT8, SIZE_ARITH_DEP
235 & ,TOTAL_FILE_SIZE,TOTAL_STRUC_SIZE
236 & ,size_read,size_allocated,size_written
240 TYPE (ZMUMPS_L0OMPFAC_T) :: L0_OMP_FACTORS_1THREAD
241 INTEGER,
intent(IN)::unit,MYID
242 CHARACTER(len=*),
intent(IN) :: mode
243 INTEGER,
INTENT(OUT) :: Local_SIZE_GEST
244 INTEGER(8),
intent(OUT) :: Local_SIZE_VARIABLES
245 INTEGER,
intent(INOUT):: INFO(2)
246 INTEGER,
intent(IN):: SIZE_INT, SIZE_INT8, SIZE_ARITH_DEP
247 INTEGER(8),
intent(IN) :: TOTAL_FILE_SIZE,TOTAL_STRUC_SIZE
248 INTEGER(8),
intent(INOUT):: size_read,size_allocated,size_written
249 INTEGER:: Local_NbRecords, allocok, err
253 local_size_variables = 0_8
254 local_nbrecords = local_nbrecords+1
255 IF (trim(mode) .EQ.
"memory_save")
THEN
256 local_size_variables = local_size_variables + size_int8
257 ELSE IF (trim(mode) .EQ.
"save")
THEN
258 local_size_variables = local_size_variables + size_int8
259 WRITE(unit,iostat=err) l0_omp_factors_1thread%LA
266 size_written=size_written+size_int8
267 ELSE IF (trim(mode) .EQ.
"restore")
THEN
268 local_size_variables = local_size_variables + size_int8
269 READ(unit,iostat=err) l0_omp_factors_1thread%LA
276 size_read=size_read+size_int8
278 IF (trim(mode).EQ.
"memory_save")
THEN
279 IF (
associated(l0_omp_factors_1thread%A))
THEN
280 local_nbrecords = local_nbrecords + 2
281 local_size_gest = local_size_gest + size_int8
283 &
max(1_8,l0_omp_factors_1thread%LA)*size_arith_dep
285 local_nbrecords = local_nbrecords + 1
286 local_size_gest = local_size_gest + size_int8
287 local_size_variables = local_size_variables + 0
289 ELSEIF (trim(mode).EQ.
"save")
THEN
290 IF (
associated(l0_omp_factors_1thread%A))
THEN
291 local_nbrecords = local_nbrecords + 2
292 write(unit,iostat=err) int(0,8)
299 size_written=size_written+size_int8
300 write(unit,iostat=err) l0_omp_factors_1thread%A
307 size_written = size_written +
308 &
max(l0_omp_factors_1thread%LA,1_8)*size_arith_dep
310 local_nbrecords = local_nbrecords + 1
311 write(unit,iostat=err) int(-999,8)
318 size_written=size_written+size_int8
320 ELSEIF (trim(mode).EQ.
"restore")
THEN
321 NULLIFY(l0_omp_factors_1thread%A)
322 READ(unit,iostat=err) itmp
329 size_read = size_read + size_int8
330 size_allocated = size_allocated + size_int8
331 IF (itmp .eq. -999)
THEN
332 local_nbrecords = local_nbrecords + 1
334 local_nbrecords = local_nbrecords + 2
335 ALLOCATE(l0_omp_factors_1thread%A(
336 &
max(l0_omp_factors_1thread%LA,1_8)),
338 IF (allocok .GT. 0)
THEN
341 & total_struc_size-size_allocated
345 READ(unit,iostat=err) l0_omp_factors_1thread%A
352 size_read = size_read +
353 &
max(1_8,l0_omp_factors_1thread%LA)*size_arith_dep
354 size_allocated = size_allocated+
355 &
max(1_8,l0_omp_factors_1thread%LA)*size_arith_dep
358#if !defined(MUMPS_F2003)
359 IF (trim(mode).EQ.
"memory_save")
THEN
360 local_size_gest = local_size_gest+2*size_int*local_nbrecords
361 ELSE IF (trim(mode).EQ.
"save")
THEN
362 size_written = size_written+2*size_int*local_nbrecords
363 ELSE IF (trim(mode).EQ.
"restore")
THEN
364 size_read = size_read+2*size_int*local_nbrecords