34#if ! defined(MUMPS_F2003)
40 integer :: nb_accesses_left
44 COMPLEX(kind=8),
POINTER :: diag_block(:)
47 LOGICAL :: issym, ist2, isslave
52 INTEGER,
DIMENSION(:),
POINTER :: begs_blr_static
53 INTEGER,
DIMENSION(:),
POINTER :: begs_blr_dynamic
54 INTEGER,
DIMENSION(:),
POINTER :: begs_blr_l
55 INTEGER,
DIMENSION(:),
POINTER :: begs_blr_col
56 INTEGER :: nb_accesses_init
59 DOUBLE PRECISION,
DIMENSION(:),
POINTER :: m_array
73 INTEGER,
INTENT(IN) :: initial_size
74 INTEGER,
INTENT(INOUT) :: info(2)
76 ALLOCATE(
blr_array( initial_size ), stat=ierr)
101 INTEGER,
INTENT(IN) :: info1, k34
102 LOGICAL,
OPTIONAL,
INTENT(IN) :: lrsolve_act_opt
103 INTEGER(8) :: keep8(150)
105 LOGICAL :: is_fixme_already_printed
106 is_fixme_already_printed = .false.
108 WRITE(*,*)
"Internal error 1 in ZMUMPS_BLR_END_MODULE"
113 IF (
associated(
blr_array(i)%PANELS_L).OR.
118 IF (
present(lrsolve_act_opt))
THEN
132# if defined(MUMPS_F2003)
133 CHARACTER,
DIMENSION(:),
POINTER,
intent(inout) ::
134 & id_blrarray_encoding
136 CHARACTER,
DIMENSION(:),
POINTER :: id_blrarray_encoding
138 CHARACTER :: char_array(1)
139 INTEGER :: char_length, ierr
141 IF (
associated(id_blrarray_encoding))
THEN
142 WRITE(*,*)
"Internal error 1 in MUMPS_BLR_MOD_TO_STRUC"
146 char_length=
size(transfer(blr_array_var,char_array))
147 ALLOCATE(id_blrarray_encoding(char_length), stat=ierr)
149 WRITE(*,*)
"Allocation error in MUMPS_BLR_MOD_TO_STRUC"
152 id_blrarray_encoding=transfer(blr_array_var,char_array)
157# if defined(MUMPS_F2003)
158 CHARACTER,
DIMENSION(:),
POINTER,
intent(inout) ::
159 & id_blrarray_encoding
161 CHARACTER,
DIMENSION(:),
POINTER :: id_blrarray_encoding
164 if (.NOT.associated(id_blrarray_encoding)) then
165 WRITE(*,*)
"Internal error 1 in ZMUMPS_BLR_STRUC_TO_MOD"
167 blr_array_var = transfer(id_blrarray_encoding,blr_array_var)
169 DEALLOCATE(id_blrarray_encoding)
170 NULLIFY(id_blrarray_encoding)
177 INTEGER,
INTENT(INOUT) :: iwhandler, info(2)
178 INTEGER,
INTENT(IN),
OPTIONAL :: mtk405
179 TYPE(
blr_struc_t),
POINTER,
DIMENSION(:) :: blr_array_tmp
180 INTEGER :: old_size, new_size
183 LOGICAL :: needs_thread_safety
184 needs_thread_safety = .false.
185 IF (
present(mtk405))
THEN
186 IF (mtk405 .EQ. 1 )
THEN
187 needs_thread_safety = .true.
190 IF ( needs_thread_safety )
THEN
199 new_size =
max( (old_size * 3) / 2 + 1, iwhandler)
200 ALLOCATE(blr_array_tmp(new_size),stat=ierr)
209 DO i=old_size+1, new_size
210 NULLIFY(blr_array_tmp(i)%PANELS_L)
211 NULLIFY(blr_array_tmp(i)%PANELS_U)
212 NULLIFY(blr_array_tmp(i)%CB_LRB)
213 NULLIFY(blr_array_tmp(i)%DIAG_BLOCKS)
214 NULLIFY(blr_array_tmp(i)%BEGS_BLR_STATIC)
215 NULLIFY(blr_array_tmp(i)%BEGS_BLR_DYNAMIC)
218 NULLIFY(blr_array_tmp(i)%BEGS_BLR_L)
219 NULLIFY(blr_array_tmp(i)%BEGS_BLR_COL)
221 NULLIFY(blr_array_tmp(i)%M_ARRAY)
225 NULLIFY(blr_array_tmp)
231 & IsSYM, IsT2, IsSLAVE,
233 & BEGS_BLR_L, BEGS_BLR_COL,
234 & NB_ACCESSES_INIT, INFO)
235 LOGICAL,
INTENT(IN) :: issym, ist2, isslave
236 INTEGER,
INTENT(IN) :: nb_panels, iwhandler
237 INTEGER,
INTENT(INOUT) :: info(2)
238 INTEGER,
INTENT(IN) :: nb_accesses_init
239 INTEGER,
INTENT(IN),
DIMENSION(:) :: begs_blr_l
240 INTEGER,
DIMENSION(:),
POINTER :: begs_blr_col
243 IF (nb_panels.EQ.0)
THEN
244 WRITE(6,*)
" Internal error 1 in ZMUMPS_BLR_SAVE_INIT ",
247 IF (iwhandler .LE.0 )
THEN
248 WRITE(6,*)
" Internal error 2 in ZMUMPS_BLR_SAVE_INIT ",
251 IF (
associated(begs_blr_col))
THEN
253 &
blr_array(iwhandler)%BEGS_BLR_COL(
size(begs_blr_col)),
255 IF (ierr .GT. 0)
THEN
257 info(2)=
size(begs_blr_col)
261 IF (nb_accesses_init.EQ.0)
THEN
265 NULLIFY(
blr_array(iwhandler)%DIAG_BLOCKS)
267 &
blr_array(iwhandler)%BEGS_BLR_L(
size(begs_blr_l)),
268 &
blr_array(iwhandler)%BEGS_BLR_STATIC(
size(begs_blr_l)),
269 &
blr_array(iwhandler)%BEGS_BLR_DYNAMIC(
size(begs_blr_l)),
271 IF (ierr .GT. 0)
THEN
273 info(2)=3*
size(begs_blr_l)
278 ALLOCATE(
blr_array(iwhandler)%PANELS_L(nb_panels),
279 &
blr_array(iwhandler)%BEGS_BLR_L(
size(begs_blr_l)),
280 &
blr_array(iwhandler)%BEGS_BLR_STATIC(
size(begs_blr_l)),
281 &
blr_array(iwhandler)%BEGS_BLR_DYNAMIC(
size(begs_blr_l)),
284 ALLOCATE(
blr_array(iwhandler)%PANELS_L(nb_panels),
285 &
blr_array(iwhandler)%PANELS_U(nb_panels),
286 &
blr_array(iwhandler)%BEGS_BLR_STATIC(
size(begs_blr_l)),
287 &
blr_array(iwhandler)%BEGS_BLR_DYNAMIC(
size(begs_blr_l)),
288 &
blr_array(iwhandler)%BEGS_BLR_L(
size(begs_blr_l)),
291 IF (ierr .GT. 0)
THEN
294 info(2)=nb_panels+3*
size(begs_blr_l)
296 info(2)=nb_panels+nb_panels+3*
size(begs_blr_l)
300 IF (.NOT.isslave)
THEN
301 ALLOCATE(
blr_array(iwhandler)%DIAG_BLOCKS(nb_panels),
303 IF (ierr .GT. 0)
THEN
310 NULLIFY(
blr_array(iwhandler)%PANELS_L(i)%LRB_PANEL)
312 NULLIFY(
blr_array(iwhandler)%PANELS_U(i)%LRB_PANEL)
314 IF (.NOT.isslave)
THEN
315 NULLIFY(
blr_array(iwhandler)%DIAG_BLOCKS(i)%DIAG_BLOCK)
322 blr_array(iwhandler)%NB_PANELS = nb_panels
323 blr_array(iwhandler)%BEGS_BLR_L = begs_blr_l
324 blr_array(iwhandler)%BEGS_BLR_STATIC = begs_blr_l
325 blr_array(iwhandler)%BEGS_BLR_DYNAMIC = -999991
326 IF (nb_accesses_init.EQ.0)
THEN
329 blr_array(iwhandler)%NB_ACCESSES_INIT = nb_accesses_init
331 IF (
associated(begs_blr_col))
THEN
332 DO i=1,
size(begs_blr_col)
333 blr_array(iwhandler)%BEGS_BLR_COL(i) = begs_blr_col(i)
336 NULLIFY(
blr_array(iwhandler)%BEGS_BLR_COL )
341 & , LRSOLVE_ACT_OPT, MTK405 )
343 INTEGER,
INTENT(INOUT) :: iwhandler
344 INTEGER,
INTENT(IN) :: info1
345 INTEGER(8) :: keep8(150)
346 INTEGER,
INTENT(IN) :: k34
347 LOGICAL,
OPTIONAL,
INTENT(IN) :: lrsolve_act_opt
348 INTEGER,
OPTIONAL,
INTENT(IN) :: mtk405
349 INTEGER :: ipanel, jpanel
350 INTEGER(8) :: mem_freed
351 INTEGER :: idummy, jdummy
353 LOGICAL :: lrsolve_act, needs_thread_safety
355 lrsolve_act = .false.
356 IF (
present(lrsolve_act_opt)) lrsolve_act = lrsolve_act_opt
357 IF (iwhandler.LE.0)
THEN
360 needs_thread_safety = .false.
361 IF (
present(mtk405))
THEN
362 IF (mtk405 .EQ. 1 )
THEN
363 needs_thread_safety = .true.
371 IF (
blr_array(iwhandler)%NB_ACCESSES_INIT.NE.
373 DO ipanel = 1,
size(
blr_array(iwhandler)%PANELS_L)
374 thepanel =>
blr_array(iwhandler)%PANELS_L(ipanel)
375 IF (
associated(thepanel%LRB_PANEL))
THEN
377 & .AND..NOT.lrsolve_act
379 WRITE(*,*)
" Internal Error 2a in MUMPS_BLR_END_FRONT ",
380 & iwhandler,
"NB_ACCESSES_INIT=",
382 &
"Pointer to panel number ",ipanel,
" still associated",
383 &
"NB_ACCESSES_LEFT= ",thepanel%NB_ACCESSES_LEFT
387 &
size(thepanel%LRB_PANEL), keep8, k34)
390 DEALLOCATE(thepanel%LRB_PANEL)
391 NULLIFY(thepanel%LRB_PANEL)
394 IF (
associated(
blr_array(iwhandler)%PANELS_L))
THEN
395 DEALLOCATE(
blr_array(iwhandler)%PANELS_L)
398 IF (.NOT.
blr_array(iwhandler)%IsSYM)
THEN
399 DO ipanel = 1,
size(
blr_array(iwhandler)%PANELS_U)
400 thepanel =>
blr_array(iwhandler)%PANELS_U(ipanel)
401 IF (
associated(thepanel%LRB_PANEL))
THEN
403 & .AND..NOT.lrsolve_act
405 WRITE(*,*)
" Internal Error 2b in MUMPS_BLR_END_FRONT ",
406 & iwhandler,
"NB_ACCESSES_INIT=",
408 &
"Pointer to panel number ",ipanel,
" still associated"
412 &
size(thepanel%LRB_PANEL), keep8, k34)
415 DEALLOCATE(thepanel%LRB_PANEL)
416 NULLIFY(thepanel%LRB_PANEL)
419 IF (
associated(
blr_array(iwhandler)%PANELS_U))
THEN
420 DEALLOCATE(
blr_array(iwhandler)%PANELS_U)
424 IF (.NOT.
blr_array(iwhandler)%IsSLAVE)
THEN
426 DO ipanel = 1,
size(
blr_array(iwhandler)%DIAG_BLOCKS)
427 theblock =>
blr_array(iwhandler)%DIAG_BLOCKS(ipanel)
428 IF (
associated(theblock%DIAG_BLOCK))
THEN
430 & .AND..NOT.lrsolve_act
432 WRITE(*,*)
" Internal Error 3 in MUMPS_BLR_END_FRONT ",
433 & iwhandler,
"NB_ACCESSES_INIT=",
435 &
"Pointer to panel number ",ipanel,
" still associated"
438 DEALLOCATE (theblock%DIAG_BLOCK)
439 NULLIFY (theblock%DIAG_BLOCK)
440 mem_freed = mem_freed + int(
size
444 IF ( mem_freed .GT. 0_8 )
THEN
446 & needs_thread_safety, keep8,
450 IF (
associated(
blr_array(iwhandler)%DIAG_BLOCKS))
THEN
451 DEALLOCATE(
blr_array(iwhandler)%DIAG_BLOCKS)
452 NULLIFY(
blr_array(iwhandler)%DIAG_BLOCKS)
457 IF (
associated(
blr_array(iwhandler)%CB_LRB))
THEN
458 IF (info1 .GE. 0)
THEN
459 WRITE(*,*)
" Internal Error 4 in MUMPS_BLR_END_FRONT ",
460 & iwhandler,
"CB block still associated",
465 DO ipanel = 1,
size(
blr_array(iwhandler)%CB_LRB,1)
466 DO jpanel = 1,
size(
blr_array(iwhandler)%CB_LRB,2)
468 &
blr_array(iwhandler)%CB_LRB(ipanel,jpanel),
478 IF (
associated(
blr_array(iwhandler)%BEGS_BLR_STATIC))
THEN
479 DEALLOCATE(
blr_array(iwhandler)%BEGS_BLR_STATIC)
480 NULLIFY(
blr_array(iwhandler)%BEGS_BLR_STATIC)
482 IF (
associated(
blr_array(iwhandler)%BEGS_BLR_DYNAMIC))
THEN
483 DEALLOCATE(
blr_array(iwhandler)%BEGS_BLR_DYNAMIC)
484 NULLIFY(
blr_array(iwhandler)%BEGS_BLR_DYNAMIC)
486 IF (
associated(
blr_array(iwhandler)%BEGS_BLR_L))
THEN
487 DEALLOCATE(
blr_array(iwhandler)%BEGS_BLR_L)
490 IF (
associated(
blr_array(iwhandler)%BEGS_BLR_COL))
THEN
491 DEALLOCATE(
blr_array(iwhandler)%BEGS_BLR_COL)
492 NULLIFY(
blr_array(iwhandler)%BEGS_BLR_COL)
497 IF (
associated(
blr_array(iwhandler)%M_ARRAY))
THEN
501 IF (needs_thread_safety)
THEN
511 & IWHANDLER, LORU, IPANEL, LRB_PANEL )
512 type(
lrb_type),
DIMENSION(:),
pointer :: lrb_panel
513 INTEGER,
INTENT(IN) :: iwhandler, ipanel
514 INTEGER,
INTENT(IN) :: loru
516 IF ( iwhandler .GT.
size(
blr_array) .OR. iwhandler .LE. 0 )
THEN
517 WRITE(*,*)
"Internal error 1 in ZMUMPS_BLR_SAVE_PANEL_LORU"
521 thepanel =>
blr_array(iwhandler)%PANELS_L(ipanel)
523 thepanel =>
blr_array(iwhandler)%PANELS_U(ipanel)
525 thepanel%NB_ACCESSES_LEFT =
527 thepanel%LRB_PANEL => lrb_panel
531 & IWHANDLER, CB_LRB )
532#if defined(MUMPS_F2003)
533 TYPE(
lrb_type),
POINTER,
INTENT(IN) :: cb_lrb(:,:)
535 TYPE(
lrb_type),
POINTER :: cb_lrb(:,:)
537 INTEGER,
INTENT(IN) :: iwhandler
538 IF ( iwhandler .GT.
size(
blr_array) .OR. iwhandler .LE. 0 )
THEN
539 WRITE(*,*)
"Internal error 1 in ZMUMPS_BLR_SAVE_CB_LRB"
546 & IWHANDLER, IPANEL, D )
547 COMPLEX(kind=8),
POINTER :: d(:)
548 INTEGER,
INTENT(IN) :: iwhandler, ipanel
549 IF ( iwhandler .GT.
size(
blr_array) .OR. iwhandler .LE. 0 )
THEN
550 WRITE(*,*)
"Internal error 1 in ZMUMPS_BLR_SAVE_DIAG_BLOCK"
553 IF (
blr_array(iwhandler)%NB_ACCESSES_INIT.LT.0)
THEN
554 WRITE(*,*)
"Internal error 2 in ZMUMPS_BLR_SAVE_DIAG_BLOCK"
557 blr_array(iwhandler)%DIAG_BLOCKS(ipanel)%DIAG_BLOCK => d
561 & IWHANDLER, BEGS_BLR_COL, INFO)
562 INTEGER,
DIMENSION(:),
POINTER :: begs_blr_col
563 INTEGER,
INTENT(IN) :: iwhandler
564 INTEGER,
INTENT(INOUT) :: info(2)
566 IF ( iwhandler .GT.
size(
blr_array) .OR. iwhandler .LE. 0 )
THEN
567 WRITE(*,*)
"Internal error 1 in ZMUMPS_BLR_SAVE_BEGS_BLR_C"
570 IF (
blr_array(iwhandler)%NB_ACCESSES_INIT.LT.0)
THEN
571 WRITE(*,*)
"Internal error 2 in ZMUMPS_BLR_SAVE_BEGS_BLR_C"
574 ALLOCATE(
blr_array(iwhandler)%BEGS_BLR_COL(
size(begs_blr_col)),
578 info(2)=
size(begs_blr_col)
581 DO i=1,
size(begs_blr_col)
582 blr_array(iwhandler)%BEGS_BLR_COL(i) = begs_blr_col(i)
587 & IWHANDLER, BEGS_BLR_DYNAMIC )
588 INTEGER,
DIMENSION(:),
POINTER :: begs_blr_dynamic
589 INTEGER,
INTENT(IN) :: iwhandler
591 IF ( iwhandler .GT.
size(
blr_array) .OR. iwhandler .LE. 0 )
THEN
592 WRITE(*,*)
"Internal error 1 in ZMUMPS_BLR_SAVE_BEGS_BLR_DYN"
595 IF (
blr_array(iwhandler)%NB_ACCESSES_INIT.LT.0)
THEN
596 WRITE(*,*)
"Internal error 2 in ZMUMPS_BLR_SAVE_BEGS_BLR_DYN"
599 DO i=1,
size(begs_blr_dynamic)
600 blr_array(iwhandler)%BEGS_BLR_DYNAMIC(i) = begs_blr_dynamic(i)
605 & ( iwhandler, begs_blr_l )
606 INTEGER,
INTENT(IN) :: iwhandler
607#if defined(MUMPS_F2003)
608 INTEGER,
POINTER,
DIMENSION(:),
INTENT(OUT) :: begs_blr_l
610 INTEGER,
POINTER,
DIMENSION(:) :: begs_blr_l
612 IF ( iwhandler .GT.
size(
blr_array) .OR. iwhandler .LE. 0 )
THEN
614 &
"Internal error 1 in ZMUMPS_BLR_RETRIEVE_BEGS_BLR_L"
617 begs_blr_l =>
blr_array(iwhandler)%BEGS_BLR_L
621 & ( iwhandler, begs_blr_static )
622 INTEGER,
INTENT(IN) :: iwhandler
623#if defined(MUMPS_F2003)
624 INTEGER,
POINTER,
DIMENSION(:),
INTENT(OUT) :: begs_blr_static
626 INTEGER,
POINTER,
DIMENSION(:) :: begs_blr_static
628 IF ( iwhandler .GT.
size(
blr_array) .OR. iwhandler .LE. 0 )
THEN
630 &
"Internal error 1 in ZMUMPS_BLR_RETRIEVE_BEGSBLR_STA"
633 begs_blr_static =>
blr_array(iwhandler)%BEGS_BLR_STATIC
637 & ( iwhandler, begs_blr_dynamic )
638 INTEGER,
INTENT(IN) :: iwhandler
639#if defined(MUMPS_F2003)
640 INTEGER,
POINTER,
DIMENSION(:),
INTENT(OUT) :: begs_blr_dynamic
642 INTEGER,
POINTER,
DIMENSION(:) :: begs_blr_dynamic
644 IF ( iwhandler .GT.
size(
blr_array) .OR. iwhandler .LE. 0 )
THEN
646 &
"Internal error 1 in ZMUMPS_BLR_RETRIEVE_BEGSBLR_DYN"
649 begs_blr_dynamic =>
blr_array(iwhandler)%BEGS_BLR_DYNAMIC
653 & ( iwhandler, begs_blr_col, nb_panels )
654 INTEGER,
INTENT(IN) :: iwhandler
655 INTEGER,
INTENT(OUT) :: nb_panels
656#
if defined(mumps_f2003)
657 INTEGER,
POINTER,
DIMENSION(:),
INTENT(OUT) :: begs_blr_col
659 INTEGER,
POINTER,
DIMENSION(:) :: begs_blr_col
661 IF ( iwhandler .GT.
size(
blr_array) .OR. iwhandler .LE. 0 )
THEN
663 &
"Internal error 1 in ZMUMPS_BLR_RETRIEVE_BEGS_BLR_C"
666 begs_blr_col =>
blr_array(iwhandler)%BEGS_BLR_COL
667 nb_panels =
blr_array(iwhandler)%NB_PANELS
671 & ( iwhandler, nb_panels )
672 INTEGER,
INTENT(IN) :: iwhandler
673 INTEGER,
INTENT(OUT) :: nb_panels
674 IF ( iwhandler .GT.
size(
blr_array) .OR. iwhandler .LE. 0 )
THEN
676 &
"Internal error 1 in ZMUMPS_BLR_RETRIEVE_NB_PANELS"
679 nb_panels =
blr_array(iwhandler)%NB_PANELS
683 & BEGS_BLR_L, THELRBPANEL)
684 INTEGER,
INTENT(IN) :: iwhandler
685 INTEGER,
INTENT(IN) :: ipanel
686#if defined(MUMPS_F2003)
687 INTEGER,
POINTER,
DIMENSION(:),
INTENT(OUT) :: begs_blr_l
688 TYPE(
lrb_type),
INTENT(OUT),
DIMENSION(:),
POINTER :: thelrbpanel
690 INTEGER,
POINTER,
DIMENSION(:) :: begs_blr_l
691 TYPE(
lrb_type),
POINTER,
DIMENSION(:) :: thelrbpanel
693 IF ( iwhandler .GT.
size(
blr_array) .OR. iwhandler .LE. 0 )
THEN
694 WRITE(*,*)
"Internal error 1 in ZMUMPS_BLR_DEC_AND_RETRIEVE_L",
698 IF ( .NOT.
associated(
blr_array(iwhandler)%PANELS_L))
THEN
699 WRITE(*,*)
"Internal error 2 in ZMUMPS_BLR_DEC_AND_RETRIEVE_L",
704 &
associated(
blr_array(iwhandler)%PANELS_L(ipanel)%LRB_PANEL) )
706 WRITE(*,*)
"Internal error 3 in ZMUMPS_BLR_DEC_AND_RETRIEVE_L",
712 &
blr_array(iwhandler)%PANELS_L(ipanel)%LRB_PANEL
713 blr_array(iwhandler)%PANELS_L(ipanel)%NB_ACCESSES_LEFT =
714 &
blr_array(iwhandler)%PANELS_L(ipanel)%NB_ACCESSES_LEFT - 1
718 & (iwhandler, loru, ipanel)
719 INTEGER,
INTENT(IN) :: loru, ipanel, iwhandler
720 IF ( iwhandler .GT.
size(
blr_array) .OR. iwhandler .LE. 0 )
THEN
722 &
"Internal error 1 in ZMUMPS_BLR_EMPTY_PANEL_LORU, ",
723 &
"IWHANDLER=", iwhandler
727 IF ( .NOT.
associated(
blr_array(iwhandler)%PANELS_L))
THEN
729 &
"Internal error 2 in ZMUMPS_BLR_EMPTY_PANEL_LORU, ",
730 &
"IWHANDLER=", iwhandler
734 &
associated(
blr_array(iwhandler)%PANELS_L(ipanel)%LRB_PANEL)
736 IF ( .NOT.
associated(
blr_array(iwhandler)%PANELS_U))
THEN
738 &
"Internal error 3 in ZMUMPS_BLR_EMPTY_PANEL_LORU, ",
739 &
"IWHANDLER=", iwhandler
743 &
associated(
blr_array(iwhandler)%PANELS_U(ipanel)%LRB_PANEL)
748 & (iwhandler, loru, ipanel,
750 INTEGER,
INTENT(IN) :: iwhandler
751 INTEGER,
INTENT(IN) :: loru
752 INTEGER,
INTENT(IN) :: ipanel
753#
if defined(mumps_f2003)
754 TYPE(
lrb_type),
INTENT(OUT),
DIMENSION(:),
POINTER :: thelrbpanel
756 TYPE(
lrb_type),
POINTER,
DIMENSION(:) :: thelrbpanel
758 IF ( iwhandler .GT.
size(
blr_array) .OR. iwhandler .LE. 0 )
THEN
760 &
"Internal error 1 in ZMUMPS_BLR_RETRIEVE_PANEL_LORU",
761 &
"IWHANDLER=", iwhandler
765 IF ( .NOT.
associated(
blr_array(iwhandler)%PANELS_L))
THEN
767 &
"Internal error 2 in ZMUMPS_BLR_RETRIEVE_PANEL_LORU",
768 &
" IWHANDLER=", iwhandler
772 &
associated(
blr_array(iwhandler)%PANELS_L(ipanel)%LRB_PANEL) )
775 &
"Internal error 3 in ZMUMPS_BLR_RETRIEVE_PANEL_LORU",
780 &
blr_array(iwhandler)%PANELS_L(ipanel)%LRB_PANEL
782 IF ( .NOT.
associated(
blr_array(iwhandler)%PANELS_U))
THEN
784 &
"Internal error 4 in ZMUMPS_BLR_RETRIEVE_PANEL_LORU",
785 &
" IWHANDLER=", iwhandler
789 &
associated(
blr_array(iwhandler)%PANELS_U(ipanel)%LRB_PANEL) )
792 &
"Internal error 5 in ZMUMPS_BLR_RETRIEVE_PANEL_LORU",
797 &
blr_array(iwhandler)%PANELS_U(ipanel)%LRB_PANEL
802 & (iwhandler, ipanel,
804 INTEGER,
INTENT(IN) :: iwhandler
805 INTEGER,
INTENT(IN) :: ipanel
806#
if defined(mumps_f2003)
807 COMPLEX(kind=8),
POINTER,
INTENT(OUT) :: theblock(:)
809 COMPLEX(kind=8),
POINTER :: theblock(:)
811 IF ( iwhandler .GT.
size(
blr_array) .OR. iwhandler .LE. 0 )
THEN
813 &
"Internal error 1 in ZMUMPS_BLR_RETRIEVE_DIAG_BLOCK",
817 IF ( .NOT.
associated(
blr_array(iwhandler)%DIAG_BLOCKS))
THEN
819 &
"Internal error 2 in ZMUMPS_BLR_RETRIEVE_DIAG_BLOCK",
824 &
associated(
blr_array(iwhandler)%DIAG_BLOCKS(ipanel)%DIAG_BLOCK))
827 &
"Internal error 3 in ZMUMPS_BLR_RETRIEVE_DIAG_BLOCK",
832 &
blr_array(iwhandler)%DIAG_BLOCKS(ipanel)%DIAG_BLOCK
837 INTEGER,
INTENT(IN) :: iwhandler
838#
if defined(mumps_f2003)
839 TYPE(
lrb_type),
POINTER,
INTENT(OUT) :: thecb(:,:)
841 TYPE(
lrb_type),
POINTER :: thecb(:,:)
843 IF ( iwhandler .GT.
size(
blr_array) .OR. iwhandler .LE. 0 )
THEN
844 WRITE(*,*)
"Internal error 1 in ZMUMPS_BLR_RETRIEVE_CB_LRB"
847 IF ( .NOT.
associated(
blr_array(iwhandler)%CB_LRB))
THEN
848 WRITE(*,*)
"Internal error 2 in ZMUMPS_BLR_RETRIEVE_CB_LRB"
855 & ( iwhandler, nfs4father )
856 INTEGER,
INTENT(IN) :: iwhandler
857 INTEGER,
INTENT(IN) :: nfs4father
858 IF ( iwhandler .GT.
size(
blr_array) .OR. iwhandler .LE. 0 )
THEN
860 &
"Internal error 1 in ZMUMPS_BLR_RETRIEVE_NFS4FATHER"
863 blr_array(iwhandler)%NFS4FATHER = nfs4father
867 & ( iwhandler, nfs4father )
868 INTEGER,
INTENT(IN) :: iwhandler
869 INTEGER,
INTENT(OUT) :: nfs4father
870 IF ( iwhandler .GT.
size(
blr_array) .OR. iwhandler .LE. 0 )
THEN
872 &
"Internal error 1 in ZMUMPS_BLR_RETRIEVE_NFS4FATHER"
875 nfs4father =
blr_array(iwhandler)%NFS4FATHER
879 & IWHANDLER, M_ARRAY, INFO)
880 DOUBLE PRECISION,
DIMENSION(:),
INTENT(IN) :: m_array
881 INTEGER,
INTENT(IN) :: iwhandler
882 INTEGER,
INTENT(INOUT) :: info(2)
884 IF ( iwhandler .GT.
size(
blr_array) .OR. iwhandler .LE. 0 )
THEN
885 WRITE(*,*)
"Internal error 1 in ZMUMPS_BLR_SAVE_M_ARRAY"
888 ALLOCATE(
blr_array(iwhandler)%M_ARRAY(
size(m_array)),
892 info(2)=
size(m_array)
896 blr_array(iwhandler)%M_ARRAY(i) = m_array(i)
898 blr_array(iwhandler)%NFS4FATHER =
size(m_array)
903 INTEGER,
INTENT(IN) :: iwhandler
904#
if defined(mumps_f2003)
905 DOUBLE PRECISION,
DIMENSION(:),
POINTER,
INTENT(OUT) :: m_array
907 DOUBLE PRECISION,
DIMENSION(:),
POINTER :: m_array
909 IF ( iwhandler .GT.
size(
blr_array) .OR. iwhandler .LE. 0 )
THEN
910 WRITE(*,*)
"Internal error 1 in ZMUMPS_BLR_RETRIEVE_M_ARRAY"
918 INTEGER,
INTENT(IN) :: iwhandler
919 if ( iwhandler .GT. size(
blr_array) .OR. iwhandler .LE. 0 ) then
920 WRITE(*,*)
"Internal error 1 in ZMUMPS_BLR_FREE_M_ARRAY"
923 IF (
associated(
blr_array(iwhandler)%M_ARRAY))
THEN
933 INTEGER,
INTENT(IN) :: iwhandler, ipanel, k34
934 INTEGER(8) :: keep8(150)
935 IF (iwhandler.LE.0)
RETURN
936 IF (
blr_array(iwhandler)%NB_ACCESSES_INIT.LT.0)
938 blr_array(iwhandler)%PANELS_L(ipanel)%NB_ACCESSES_LEFT =
939 &
blr_array(iwhandler)%PANELS_L(ipanel)%NB_ACCESSES_LEFT - 1
947 INTEGER,
INTENT(IN) :: iwhandler, ipanel
948 INTEGER(8) :: keep8(150)
949 INTEGER,
INTENT(IN) :: k34
951 IF (iwhandler.LE.0)
RETURN
952 IF (
blr_array(iwhandler)%NB_ACCESSES_INIT.LT.0)
954 thepanel =>
blr_array(iwhandler)%PANELS_L(ipanel)
955 IF ( thepanel%NB_ACCESSES_LEFT .EQ. 0 )
THEN
956 IF (
associated(thepanel%LRB_PANEL))
THEN
957 IF (
size(thepanel%LRB_PANEL) .GT.0)
THEN
959 &
size(thepanel%LRB_PANEL), keep8, k34)
961 DEALLOCATE(thepanel%LRB_PANEL)
962 NULLIFY(thepanel%LRB_PANEL)
971 INTEGER,
INTENT(IN) :: iwhandler, k34
972 LOGICAL,
INTENT(IN) :: free_only_struct
973 INTEGER(8) :: keep8(150)
974 TYPE(
lrb_type),
POINTER :: cb_lrb(:,:)
975 INTEGER :: ipanel, jpanel
978 & .NOT.
blr_array(iwhandler)%IsSLAVE)
THEN
979 write(*,*)
'Internal error 1 in ZMUMPS_BLR_FREE_CB_LRB'
983 IF (.NOT.
associated(cb_lrb))
THEN
987.NOT.
IF (FREE_ONLY_STRUCT) THEN
988 DO IPANEL = 1,size(CB_LRB,1)
989 DO JPANEL = 1,size(CB_LRB,2)
990 THELRB => CB_LRB(IPANEL,JPANEL)
991 IF (associated(THELRB)) THEN
992 CALL DEALLOC_LRB(THELRB, KEEP8, K34)
997 DEALLOCATE(BLR_ARRAY(IWHANDLER)%CB_LRB)
998 NULLIFY(BLR_ARRAY(IWHANDLER)%CB_LRB)
1000 END SUBROUTINE ZMUMPS_BLR_FREE_CB_LRB
1001 SUBROUTINE ZMUMPS_BLR_FREE_ALL_PANELS ( IWHANDLER,
1004 INTEGER, INTENT(IN) :: IWHANDLER, LorU, K34
1005 INTEGER(8) :: KEEP8(150)
1007 INTEGER :: IDUMMY, JDUMMY
1008 TYPE(blr_panel_type), POINTER :: THEPANEL
1009 TYPE(diag_block_type), POINTER :: THEBLOCK
1010 INTEGER(8) :: MEM_FREED
1011.LE.
IF (IWHANDLER0) RETURN
1012.EQ.
IF (BLR_ARRAY(IWHANDLER)%NB_ACCESSES_INIT
1013 & PANELS_NOTUSED) RETURN
1014.EQ..OR..EQ.
IF (LorU0LorU2) THEN
1015 IF (associated(BLR_ARRAY(IWHANDLER)%PANELS_L)) THEN
1016 DO IPANEL = 1, size(BLR_ARRAY(IWHANDLER)%PANELS_L)
1017 THEPANEL => BLR_ARRAY(IWHANDLER)%PANELS_L(IPANEL)
1018 IF (associated(THEPANEL%LRB_PANEL)) THEN
1019.GT.
IF (size(THEPANEL%LRB_PANEL) 0) THEN
1020 CALL DEALLOC_BLR_PANEL(THEPANEL%LRB_PANEL,
1021 & size(THEPANEL%LRB_PANEL), KEEP8, K34)
1023 DEALLOCATE(THEPANEL%LRB_PANEL)
1024 NULLIFY(THEPANEL%LRB_PANEL)
1026 THEPANEL%NB_ACCESSES_LEFT = PANELS_FREED
1030.GE..AND..NOT.
IF (LorU1BLR_ARRAY(IWHANDLER)%IsSYM) THEN
1031 IF (associated(BLR_ARRAY(IWHANDLER)%PANELS_U)) THEN
1032 DO IPANEL = 1, size(BLR_ARRAY(IWHANDLER)%PANELS_U)
1033 THEPANEL => BLR_ARRAY(IWHANDLER)%PANELS_U(IPANEL)
1034 IF (associated(THEPANEL%LRB_PANEL)) THEN
1035.GT.
IF (size(THEPANEL%LRB_PANEL) 0) THEN
1036 CALL DEALLOC_BLR_PANEL(THEPANEL%LRB_PANEL,
1037 & size(THEPANEL%LRB_PANEL), KEEP8, K34)
1039 DEALLOCATE(THEPANEL%LRB_PANEL)
1040 NULLIFY(THEPANEL%LRB_PANEL)
1042 THEPANEL%NB_ACCESSES_LEFT = PANELS_FREED
1046.NOT.
IF (BLR_ARRAY(IWHANDLER)%IsSLAVE) THEN
1047 IF (associated(BLR_ARRAY(IWHANDLER)%DIAG_BLOCKS)) THEN
1049 DO IPANEL = 1, size(BLR_ARRAY(IWHANDLER)%DIAG_BLOCKS)
1050 THEBLOCK => BLR_ARRAY(IWHANDLER)%DIAG_BLOCKS(IPANEL)
1051 IF (associated(THEBLOCK%DIAG_BLOCK)) THEN
1052 DEALLOCATE(THEBLOCK%DIAG_BLOCK)
1053 NULLIFY (THEBLOCK%DIAG_BLOCK)
1054 MEM_FREED = MEM_FREED + int(size(THEBLOCK%DIAG_BLOCK),8)
1057.GT.
IF (MEM_FREED 0 ) THEN
1058 CALL MUMPS_DM_FAC_UPD_DYN_MEMCNTS(-MEM_FREED,
1066 END SUBROUTINE ZMUMPS_BLR_FREE_ALL_PANELS
1067 SUBROUTINE ZMUMPS_SAVE_RESTORE_BLR(id_BLRARRAY_ENCODING
1069 & ,SIZE_GEST,SIZE_VARIABLES
1070 & ,SIZE_INT, SIZE_ARITH_DEP, SIZE_LOGICAL
1071 & ,TOTAL_FILE_SIZE,TOTAL_STRUC_SIZE
1072 & ,size_read,size_allocated,size_written
1075 CHARACTER, DIMENSION(:), POINTER :: id_BLRARRAY_ENCODING
1076 INTEGER,intent(IN)::unit,MYID
1077 CHARACTER(len=*),intent(IN) :: mode
1078 INTEGER,INTENT(OUT) :: SIZE_GEST
1079 INTEGER(8),intent(OUT) :: SIZE_VARIABLES
1080 INTEGER(8),intent(IN) :: TOTAL_FILE_SIZE,TOTAL_STRUC_SIZE
1081 INTEGER,intent(INOUT):: INFO(2)
1082 INTEGER,intent(IN):: SIZE_INT, SIZE_ARITH_DEP, SIZE_LOGICAL
1083 INTEGER(8),intent(INOUT):: size_read,size_allocated,size_written
1084 INTEGER:: j1,NbRecords,NbSubRecords,size_array1,dummy,allocok,err
1085 INTEGER:: SIZE_GEST_BLR_ARRAY,SIZE_GEST_BLR_ARRAY_j1
1086 INTEGER(8):: SIZE_VARIABLES_BLR_ARRAY,SIZE_VARIABLES_BLR_ARRAY_j1
1089 SIZE_GEST_BLR_ARRAY=0
1090 SIZE_GEST_BLR_ARRAY_j1=0
1091 SIZE_VARIABLES_BLR_ARRAY=0_8
1092 SIZE_VARIABLES_BLR_ARRAY_j1=0_8
1095.EQ..OR..EQ.
if((trim(mode)"memory_save")(trim(mode)"save")) then
1096 call ZMUMPS_BLR_STRUC_TO_MOD(id_BLRARRAY_ENCODING)
1098.EQ.
if(trim(mode)"memory_save") then
1099 IF(associated(BLR_ARRAY)) THEN
1103 DO j1=1,size(BLR_ARRAY,1)
1104 CALL ZMUMPS_SAVE_RESTORE_BLR_STRUC(
1106 & ,unit,MYID,"memory_save"
1107 & ,SIZE_GEST_BLR_ARRAY_j1
1108 & ,SIZE_VARIABLES_BLR_ARRAY_j1
1109 & ,SIZE_INT, SIZE_ARITH_DEP, SIZE_LOGICAL
1110 & ,TOTAL_FILE_SIZE,TOTAL_STRUC_SIZE
1111 & ,size_read,size_allocated,size_written
1113 SIZE_GEST_BLR_ARRAY=SIZE_GEST_BLR_ARRAY+
1114 & SIZE_GEST_BLR_ARRAY_j1
1115 SIZE_VARIABLES_BLR_ARRAY=SIZE_VARIABLES_BLR_ARRAY+
1116 & SIZE_VARIABLES_BLR_ARRAY_j1
1120 SIZE_GEST=SIZE_INT*2
1123.EQ.
elseif(trim(mode)"save") then
1124 IF(associated(BLR_ARRAY)) THEN
1128 write(unit,iostat=err) size(BLR_ARRAY,1)
1131 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
1134.LT.
IF ( INFO(1) 0 ) GOTO 100
1135 DO j1=1,size(BLR_ARRAY,1)
1136 CALL ZMUMPS_SAVE_RESTORE_BLR_STRUC(
1139 & ,SIZE_GEST_BLR_ARRAY_j1
1140 & ,SIZE_VARIABLES_BLR_ARRAY_j1
1141 & ,SIZE_INT, SIZE_ARITH_DEP, SIZE_LOGICAL
1142 & ,TOTAL_FILE_SIZE,TOTAL_STRUC_SIZE
1143 & ,size_read,size_allocated,size_written
1145.LT.
IF ( INFO(1) 0 ) GOTO 100
1149 SIZE_GEST=SIZE_INT*2
1151 write(unit,iostat=err) -999
1154 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
1157.LT.
IF ( INFO(1) 0 ) GOTO 100
1158 write(unit,iostat=err) -999
1161 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
1164.LT.
IF ( INFO(1) 0 ) GOTO 100
1166.EQ.
elseif(trim(mode)"restore") then
1168 read(unit,iostat=err) size_array1
1171 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
1174.LT.
IF ( INFO(1) 0 ) GOTO 100
1175.EQ.
if(size_array1-999) then
1177 SIZE_GEST=SIZE_INT*2
1179 read(unit,iostat=err) dummy
1182 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
1185.LT.
IF ( INFO(1) 0 ) GOTO 100
1190 allocate(BLR_ARRAY(size_array1), stat=allocok)
1191.GT.
if (allocok 0) THEN
1193 CALL MUMPS_SETI8TOI4(
1194 & TOTAL_STRUC_SIZE-size_allocated
1198 CALL ZMUMPS_SAVE_RESTORE_BLR_STRUC(
1200 & ,unit,MYID,"restore"
1201 & ,SIZE_GEST_BLR_ARRAY_j1
1202 & ,SIZE_VARIABLES_BLR_ARRAY_j1
1203 & ,SIZE_INT, SIZE_ARITH_DEP, SIZE_LOGICAL
1204 & ,TOTAL_FILE_SIZE,TOTAL_STRUC_SIZE
1205 & ,size_read,size_allocated,size_written
1207 SIZE_GEST_BLR_ARRAY=SIZE_GEST_BLR_ARRAY+
1208 & SIZE_GEST_BLR_ARRAY_j1
1209 SIZE_VARIABLES_BLR_ARRAY=SIZE_VARIABLES_BLR_ARRAY+
1210 & SIZE_VARIABLES_BLR_ARRAY_j1
1214.EQ.
if(trim(mode)"memory_save") then
1215 NbSubRecords=int(SIZE_VARIABLES/huge(I4))
1216.GT.
IF(NbSubRecords0) then
1217 NbRecords=NbRecords+NbSubRecords
1219.EQ.
elseif(trim(mode)"save") then
1220 size_written=size_written+SIZE_VARIABLES
1221 & +int(SIZE_GEST,kind=8)
1222#if !defined(MUMPS_F2003)
1223 size_written=size_written
1224 & +int(2*SIZE_INT*NbRecords,kind=8)
1226.EQ.
elseif(trim(mode)"restore") then
1227 size_allocated=size_allocated+SIZE_VARIABLES
1228 size_read=size_read+SIZE_VARIABLES
1229 & +int(SIZE_GEST,kind=8)
1230#if !defined(MUMPS_F2003)
1232 & +int(2*SIZE_INT*NbRecords,kind=8)
1235.EQ.
if(trim(mode)"memory_save") then
1236 SIZE_VARIABLES=SIZE_VARIABLES+SIZE_VARIABLES_BLR_ARRAY
1237 SIZE_GEST=SIZE_GEST+SIZE_GEST_BLR_ARRAY
1238#if !defined(MUMPS_F2003)
1239 SIZE_GEST=SIZE_GEST+2*SIZE_INT*NbRecords
1242 call ZMUMPS_BLR_MOD_TO_STRUC(id_BLRARRAY_ENCODING)
1245 END SUBROUTINE ZMUMPS_SAVE_RESTORE_BLR
1246 SUBROUTINE ZMUMPS_SAVE_RESTORE_BLR_STRUC(BLR_STRUC
1248 & ,Local_SIZE_GEST,Local_SIZE_VARIABLES
1249 & ,SIZE_INT, SIZE_ARITH_DEP, SIZE_LOGICAL
1250 & ,TOTAL_FILE_SIZE,TOTAL_STRUC_SIZE
1251 & ,size_read,size_allocated,size_written
1254 TYPE(BLR_STRUC_T) :: BLR_STRUC
1255 INTEGER,intent(IN)::unit,MYID
1256 CHARACTER(len=*),intent(IN) :: mode
1257 INTEGER,INTENT(OUT) :: Local_SIZE_GEST
1258 INTEGER(8),intent(OUT) :: Local_SIZE_VARIABLES
1259 INTEGER,intent(INOUT):: INFO(2)
1260 INTEGER,intent(IN):: SIZE_INT, SIZE_ARITH_DEP, SIZE_LOGICAL
1261 INTEGER(8),intent(IN) :: TOTAL_FILE_SIZE,TOTAL_STRUC_SIZE
1262 INTEGER(8),intent(INOUT):: size_read,size_allocated,size_written
1263 INTEGER :: NBVARIABLES_BLR_STRUC_T
1264 PARAMETER (NBVARIABLES_BLR_STRUC_T = 15)
1265 CHARACTER(len=30), dimension(NBVARIABLES_BLR_STRUC_T)::
1266 & VARIABLES_BLR_STRUC_T
1267 CHARACTER(len=30) :: TMP_STRING
1268 INTEGER(8),dimension(NBVARIABLES_BLR_STRUC_T)::
1269 & SIZE_VARIABLES_BLR_STRUC_T
1270 INTEGER,dimension(NBVARIABLES_BLR_STRUC_T)::SIZE_GEST_BLR_STRUC_T
1271 INTEGER,dimension(NBVARIABLES_BLR_STRUC_T)::NbRecords_BLR_STRUC_T
1272 INTEGER:: size_array1,size_array2,dummy,allocok
1273 INTEGER:: err,i1,j1,j2,NbSubRecords,Local_NbRecords
1274 INTEGER::SIZE_GEST_PANELS_L,SIZE_GEST_PANELS_L_j1
1275 INTEGER(8)::SIZE_VARIABLES_PANELS_L,SIZE_VARIABLES_PANELS_L_j1
1276 INTEGER::SIZE_GEST_PANELS_U,SIZE_GEST_PANELS_U_j1
1277 INTEGER(8)::SIZE_VARIABLES_PANELS_U,SIZE_VARIABLES_PANELS_U_j1
1278 INTEGER::SIZE_GEST_CB_LRB,SIZE_GEST_CB_LRB_j1j2
1279 INTEGER(8)::SIZE_VARIABLES_CB_LRB,SIZE_VARIABLES_CB_LRB_j1j2
1280 INTEGER::SIZE_GEST_DIAG_BLOCKS,SIZE_GEST_DIAG_BLOCKS_j1
1281 INTEGER(8)::SIZE_VARIABLES_DIAG_BLOCKS
1282 INTEGER(8)::SIZE_VARIABLES_DIAG_BLOCKS_j1
1284 VARIABLES_BLR_STRUC_T(1)="IsSYM"
1285 VARIABLES_BLR_STRUC_T(2)="IsT2"
1286 VARIABLES_BLR_STRUC_T(3)="IsSLAVE"
1287 VARIABLES_BLR_STRUC_T(4)="PANELS_L"
1288 VARIABLES_BLR_STRUC_T(5)="PANELS_U"
1289 VARIABLES_BLR_STRUC_T(6)="CB_LRB"
1290 VARIABLES_BLR_STRUC_T(7)="BEGS_BLR_STATIC"
1291 VARIABLES_BLR_STRUC_T(8)="BEGS_BLR_DYNAMIC"
1292 VARIABLES_BLR_STRUC_T(9)="BEGS_BLR_L"
1293 VARIABLES_BLR_STRUC_T(10)="BEGS_BLR_COL"
1294 VARIABLES_BLR_STRUC_T(11)="NB_ACCESSES_INIT"
1295 VARIABLES_BLR_STRUC_T(12)="NB_PANELS"
1296 VARIABLES_BLR_STRUC_T(13)="DIAG_BLOCKS"
1297 VARIABLES_BLR_STRUC_T(14)="NFS4FATHER"
1298 VARIABLES_BLR_STRUC_T(15)="M_ARRAY"
1299 SIZE_VARIABLES_BLR_STRUC_T(:)=0_8
1300 SIZE_GEST_BLR_STRUC_T(:)=0
1301 NbRecords_BLR_STRUC_T(:)=0
1302 SIZE_GEST_PANELS_L=0
1303 SIZE_GEST_PANELS_L_j1=0
1304 SIZE_VARIABLES_PANELS_L=0_8
1305 SIZE_VARIABLES_PANELS_L_j1=0_8
1306 SIZE_GEST_PANELS_U=0
1307 SIZE_GEST_PANELS_U_j1=0
1308 SIZE_VARIABLES_PANELS_U=0_8
1309 SIZE_VARIABLES_PANELS_U_j1=0_8
1311 SIZE_GEST_CB_LRB_j1j2=0
1312 SIZE_VARIABLES_CB_LRB=0_8
1313 SIZE_VARIABLES_CB_LRB_j1j2=0_8
1314 SIZE_GEST_DIAG_BLOCKS=0
1315 SIZE_GEST_DIAG_BLOCKS_j1=0
1316 SIZE_VARIABLES_DIAG_BLOCKS=0_8
1317 SIZE_VARIABLES_DIAG_BLOCKS_j1=0_8
1318 DO i1=1,NBVARIABLES_BLR_STRUC_T
1319 TMP_STRING = VARIABLES_BLR_STRUC_T(i1)
1320 SELECT CASE(TMP_STRING)
1322 NbRecords_BLR_STRUC_T(i1)=1
1323.EQ.
if(trim(mode)"memory_save") then
1324 SIZE_VARIABLES_BLR_STRUC_T(i1)=SIZE_LOGICAL
1325.EQ.
elseif(trim(mode)"save") then
1326 SIZE_VARIABLES_BLR_STRUC_T(i1)=SIZE_LOGICAL
1327 write(unit,iostat=err) BLR_STRUC%IsSYM
1330 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
1333.LT.
IF ( INFO(1) 0 ) GOTO 100
1334.EQ.
elseif(trim(mode)"restore") then
1335 SIZE_VARIABLES_BLR_STRUC_T(i1)=SIZE_LOGICAL
1336 read(unit,iostat=err) BLR_STRUC%IsSYM
1339 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
1342.LT.
IF (INFO(1) 0 ) GOTO 100
1345 NbRecords_BLR_STRUC_T(i1)=1
1346.EQ.
if(trim(mode)"memory_save") then
1347 SIZE_VARIABLES_BLR_STRUC_T(i1)=SIZE_LOGICAL
1348.EQ.
elseif(trim(mode)"save") then
1349 SIZE_VARIABLES_BLR_STRUC_T(i1)=SIZE_LOGICAL
1350 write(unit,iostat=err) BLR_STRUC%IsT2
1353 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
1356.LT.
IF ( INFO(1) 0 ) GOTO 100
1357.EQ.
elseif(trim(mode)"restore") then
1358 SIZE_VARIABLES_BLR_STRUC_T(i1)=SIZE_LOGICAL
1359 read(unit,iostat=err) BLR_STRUC%IsT2
1362 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
1365.LT.
IF (INFO(1) 0 ) GOTO 100
1368 NbRecords_BLR_STRUC_T(i1)=1
1369.EQ.
if(trim(mode)"memory_save") then
1370 SIZE_VARIABLES_BLR_STRUC_T(i1)=SIZE_LOGICAL
1371.EQ.
elseif(trim(mode)"save") then
1372 SIZE_VARIABLES_BLR_STRUC_T(i1)=SIZE_LOGICAL
1373 write(unit,iostat=err) BLR_STRUC%IsSLAVE
1376 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
1379.LT.
IF ( INFO(1) 0 ) GOTO 100
1380.EQ.
elseif(trim(mode)"restore") then
1381 SIZE_VARIABLES_BLR_STRUC_T(i1)=SIZE_LOGICAL
1382 read(unit,iostat=err) BLR_STRUC%IsSLAVE
1385 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
1388.LT.
IF (INFO(1) 0 ) GOTO 100
1390 CASE("BEGS_BLR_STATIC")
1391 NbRecords_BLR_STRUC_T(i1)=2
1392.EQ.
if(trim(mode)"memory_save") then
1393 IF(associated(BLR_STRUC%BEGS_BLR_STATIC)) THEN
1394 SIZE_GEST_BLR_STRUC_T(i1)=SIZE_INT
1395 SIZE_VARIABLES_BLR_STRUC_T(i1)=
1396 & size(BLR_STRUC%BEGS_BLR_STATIC,1)*SIZE_INT
1398 SIZE_GEST_BLR_STRUC_T(i1)=SIZE_INT*2
1399 SIZE_VARIABLES_BLR_STRUC_T(i1)=0
1401.EQ.
elseif(trim(mode)"save") then
1402 IF(associated(BLR_STRUC%BEGS_BLR_STATIC)) THEN
1403 SIZE_GEST_BLR_STRUC_T(i1)=SIZE_INT
1404 SIZE_VARIABLES_BLR_STRUC_T(i1)=
1405 & size(BLR_STRUC%BEGS_BLR_STATIC,1)*SIZE_INT
1406 write(unit,iostat=err)
1407 & size(BLR_STRUC%BEGS_BLR_STATIC,1)
1410 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
1413.LT.
IF ( INFO(1) 0 ) GOTO 100
1414 write(unit,iostat=err) BLR_STRUC%BEGS_BLR_STATIC
1416 SIZE_GEST_BLR_STRUC_T(i1)=SIZE_INT*2
1417 SIZE_VARIABLES_BLR_STRUC_T(i1)=0
1418 write(unit,iostat=err) -999
1421 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
1424.LT.
IF ( INFO(1) 0 ) GOTO 100
1425 write(unit,iostat=err) -999
1429 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
1432.LT.
IF ( INFO(1) 0 ) GOTO 100
1433.EQ.
elseif(trim(mode)"restore") then
1434 nullify(BLR_STRUC%BEGS_BLR_STATIC)
1435 read(unit,iostat=err) size_array1
1438 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
1441.LT.
IF ( INFO(1) 0 ) GOTO 100
1442.EQ.
if(size_array1-999) then
1443 SIZE_GEST_BLR_STRUC_T(i1)=SIZE_INT*2
1444 SIZE_VARIABLES_BLR_STRUC_T(i1)=0
1445 read(unit,iostat=err) dummy
1447 SIZE_GEST_BLR_STRUC_T(i1)=SIZE_INT
1448 SIZE_VARIABLES_BLR_STRUC_T(i1)=size_array1*SIZE_INT
1449 allocate(BLR_STRUC%BEGS_BLR_STATIC(size_array1)
1451.GT.
if (allocok 0) THEN
1453 CALL MUMPS_SETI8TOI4(
1454 & TOTAL_STRUC_SIZE-size_allocated
1457 read(unit,iostat=err) BLR_STRUC%BEGS_BLR_STATIC
1459.LT.
IF ( INFO(1) 0 ) GOTO 100
1462 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
1465.LT.
IF ( INFO(1) 0 ) GOTO 100
1467 CASE("BEGS_BLR_DYNAMIC")
1468 NbRecords_BLR_STRUC_T(i1)=2
1469.EQ.
if(trim(mode)"memory_save") then
1470 IF(associated(BLR_STRUC%BEGS_BLR_DYNAMIC)) THEN
1471 SIZE_GEST_BLR_STRUC_T(i1)=SIZE_INT
1472 SIZE_VARIABLES_BLR_STRUC_T(i1)=
1473 & size(BLR_STRUC%BEGS_BLR_DYNAMIC,1)*SIZE_INT
1475 SIZE_GEST_BLR_STRUC_T(i1)=SIZE_INT*2
1476 SIZE_VARIABLES_BLR_STRUC_T(i1)=0
1478.EQ.
elseif(trim(mode)"save") then
1479 IF(associated(BLR_STRUC%BEGS_BLR_DYNAMIC)) THEN
1480 SIZE_GEST_BLR_STRUC_T(i1)=SIZE_INT
1481 SIZE_VARIABLES_BLR_STRUC_T(i1)=
1482 & size(BLR_STRUC%BEGS_BLR_DYNAMIC,1)*SIZE_INT
1483 write(unit,iostat=err)
1484 & size(BLR_STRUC%BEGS_BLR_DYNAMIC,1)
1487 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
1490.LT.
IF ( INFO(1) 0 ) GOTO 100
1491 write(unit,iostat=err) BLR_STRUC%BEGS_BLR_DYNAMIC
1493 SIZE_GEST_BLR_STRUC_T(i1)=SIZE_INT*2
1494 SIZE_VARIABLES_BLR_STRUC_T(i1)=0
1495 write(unit,iostat=err) -999
1498 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
1501.LT.
IF ( INFO(1) 0 ) GOTO 100
1502 write(unit,iostat=err) -999
1506 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
1509.LT.
IF ( INFO(1) 0 ) GOTO 100
1510.EQ.
elseif(trim(mode)"restore") then
1511 nullify(BLR_STRUC%BEGS_BLR_DYNAMIC)
1512 read(unit,iostat=err) size_array1
1515 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
1518.LT.
IF ( INFO(1) 0 ) GOTO 100
1519.EQ.
if(size_array1-999) then
1520 SIZE_GEST_BLR_STRUC_T(i1)=SIZE_INT*2
1521 SIZE_VARIABLES_BLR_STRUC_T(i1)=0
1522 read(unit,iostat=err) dummy
1524 SIZE_GEST_BLR_STRUC_T(i1)=SIZE_INT
1525 SIZE_VARIABLES_BLR_STRUC_T(i1)=size_array1*SIZE_INT
1526 allocate(BLR_STRUC%BEGS_BLR_DYNAMIC(size_array1)
1528.GT.
if (allocok 0) THEN
1530 CALL MUMPS_SETI8TOI4(
1531 & TOTAL_STRUC_SIZE-size_allocated
1534 read(unit,iostat=err) BLR_STRUC%BEGS_BLR_DYNAMIC
1536.LT.
IF ( INFO(1) 0 ) GOTO 100
1539 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
1542.LT.
IF ( INFO(1) 0 ) GOTO 100
1545 NbRecords_BLR_STRUC_T(i1)=2
1546.EQ.
if(trim(mode)"memory_save") then
1547 IF(associated(BLR_STRUC%BEGS_BLR_L)) THEN
1548 SIZE_GEST_BLR_STRUC_T(i1)=SIZE_INT
1549 SIZE_VARIABLES_BLR_STRUC_T(i1)=
1550 & size(BLR_STRUC%BEGS_BLR_L,1)*SIZE_INT
1552 SIZE_GEST_BLR_STRUC_T(i1)=SIZE_INT*2
1553 SIZE_VARIABLES_BLR_STRUC_T(i1)=0
1555.EQ.
elseif(trim(mode)"save") then
1556 IF(associated(BLR_STRUC%BEGS_BLR_L)) THEN
1557 SIZE_GEST_BLR_STRUC_T(i1)=SIZE_INT
1558 SIZE_VARIABLES_BLR_STRUC_T(i1)=
1559 & size(BLR_STRUC%BEGS_BLR_L,1)*SIZE_INT
1560 write(unit,iostat=err)
1561 & size(BLR_STRUC%BEGS_BLR_L,1)
1564 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
1567.LT.
IF ( INFO(1) 0 ) GOTO 100
1568 write(unit,iostat=err) BLR_STRUC%BEGS_BLR_L
1570 SIZE_GEST_BLR_STRUC_T(i1)=SIZE_INT*2
1571 SIZE_VARIABLES_BLR_STRUC_T(i1)=0
1572 write(unit,iostat=err) -999
1575 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
1578.LT.
IF ( INFO(1) 0 ) GOTO 100
1579 write(unit,iostat=err) -999
1583 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
1586.LT.
IF ( INFO(1) 0 ) GOTO 100
1587.EQ.
elseif(trim(mode)"restore") then
1588 nullify(BLR_STRUC%BEGS_BLR_L)
1589 read(unit,iostat=err) size_array1
1592 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
1595.LT.
IF ( INFO(1) 0 ) GOTO 100
1596.EQ.
if(size_array1-999) then
1597 SIZE_GEST_BLR_STRUC_T(i1)=SIZE_INT*2
1598 SIZE_VARIABLES_BLR_STRUC_T(i1)=0
1599 read(unit,iostat=err) dummy
1601 SIZE_GEST_BLR_STRUC_T(i1)=SIZE_INT
1602 SIZE_VARIABLES_BLR_STRUC_T(i1)=size_array1*SIZE_INT
1603 allocate(BLR_STRUC%BEGS_BLR_L(size_array1)
1605.GT.
if (allocok 0) THEN
1607 CALL MUMPS_SETI8TOI4(
1608 & TOTAL_STRUC_SIZE-size_allocated
1611 read(unit,iostat=err) BLR_STRUC%BEGS_BLR_L
1613.LT.
IF ( INFO(1) 0 ) GOTO 100
1616 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
1619.LT.
IF ( INFO(1) 0 ) GOTO 100
1621 CASE("BEGS_BLR_COL")
1622 NbRecords_BLR_STRUC_T(i1)=2
1623.EQ.
if(trim(mode)"memory_save") then
1624 IF(associated(BLR_STRUC%BEGS_BLR_COL)) THEN
1625 SIZE_GEST_BLR_STRUC_T(i1)=SIZE_INT
1626 SIZE_VARIABLES_BLR_STRUC_T(i1)=
1627 & size(BLR_STRUC%BEGS_BLR_COL,1)*SIZE_INT
1629 SIZE_GEST_BLR_STRUC_T(i1)=SIZE_INT*2
1630 SIZE_VARIABLES_BLR_STRUC_T(i1)=0
1632.EQ.
elseif(trim(mode)"save") then
1633 IF(associated(BLR_STRUC%BEGS_BLR_COL)) THEN
1634 SIZE_GEST_BLR_STRUC_T(i1)=SIZE_INT
1635 SIZE_VARIABLES_BLR_STRUC_T(i1)=
1636 & size(BLR_STRUC%BEGS_BLR_COL,1)*SIZE_INT
1637 write(unit,iostat=err)
1638 & size(BLR_STRUC%BEGS_BLR_COL,1)
1641 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
1644.LT.
IF ( INFO(1) 0 ) GOTO 100
1645 write(unit,iostat=err) BLR_STRUC%BEGS_BLR_COL
1647 SIZE_GEST_BLR_STRUC_T(i1)=SIZE_INT*2
1648 SIZE_VARIABLES_BLR_STRUC_T(i1)=0
1649 write(unit,iostat=err) -999
1652 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
1655.LT.
IF ( INFO(1) 0 ) GOTO 100
1656 write(unit,iostat=err) -999
1660 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
1663.LT.
IF ( INFO(1) 0 ) GOTO 100
1664.EQ.
elseif(trim(mode)"restore") then
1665 nullify(BLR_STRUC%BEGS_BLR_COL)
1666 read(unit,iostat=err) size_array1
1669 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
1672.LT.
IF ( INFO(1) 0 ) GOTO 100
1673.EQ.
if(size_array1-999) then
1674 SIZE_GEST_BLR_STRUC_T(i1)=SIZE_INT*2
1675 SIZE_VARIABLES_BLR_STRUC_T(i1)=0
1676 read(unit,iostat=err) dummy
1678 SIZE_GEST_BLR_STRUC_T(i1)=SIZE_INT
1679 SIZE_VARIABLES_BLR_STRUC_T(i1)=size_array1*SIZE_INT
1680 allocate(BLR_STRUC%BEGS_BLR_COL(size_array1)
1682.GT.
if (allocok 0) THEN
1684 CALL MUMPS_SETI8TOI4(
1685 & TOTAL_STRUC_SIZE-size_allocated
1688 read(unit,iostat=err) BLR_STRUC%BEGS_BLR_COL
1690.LT.
IF ( INFO(1) 0 ) GOTO 100
1693 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
1696.LT.
IF ( INFO(1) 0 ) GOTO 100
1698 CASE("NB_ACCESSES_INIT")
1699 NbRecords_BLR_STRUC_T(i1)=1
1700.EQ.
if(trim(mode)"memory_save") then
1701 SIZE_VARIABLES_BLR_STRUC_T(i1)=SIZE_INT
1702.EQ.
elseif(trim(mode)"save") then
1703 SIZE_VARIABLES_BLR_STRUC_T(i1)=SIZE_INT
1704 write(unit,iostat=err) BLR_STRUC%NB_ACCESSES_INIT
1707 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
1710.LT.
IF ( INFO(1) 0 ) GOTO 100
1711.EQ.
elseif(trim(mode)"restore") then
1712 SIZE_VARIABLES_BLR_STRUC_T(i1)=SIZE_INT
1713 read(unit,iostat=err) BLR_STRUC%NB_ACCESSES_INIT
1716 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
1719.LT.
IF (INFO(1) 0 ) GOTO 100
1722 NbRecords_BLR_STRUC_T(i1)=1
1723.EQ.
if(trim(mode)"memory_save") then
1724 SIZE_VARIABLES_BLR_STRUC_T(i1)=SIZE_INT
1725.EQ.
elseif(trim(mode)"save") then
1726 SIZE_VARIABLES_BLR_STRUC_T(i1)=SIZE_INT
1727 write(unit,iostat=err) BLR_STRUC%NB_PANELS
1730 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
1733.LT.
IF ( INFO(1) 0 ) GOTO 100
1734.EQ.
elseif(trim(mode)"restore") then
1735 SIZE_VARIABLES_BLR_STRUC_T(i1)=SIZE_INT
1736 read(unit,iostat=err) BLR_STRUC%NB_PANELS
1739 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
1742.LT.
IF (INFO(1) 0 ) GOTO 100
1745.EQ.
if(trim(mode)"memory_save") then
1746 IF(associated(BLR_STRUC%PANELS_L)) THEN
1747 NbRecords_BLR_STRUC_T(i1)=1
1748 SIZE_GEST_BLR_STRUC_T(i1)=SIZE_INT
1749 SIZE_VARIABLES_BLR_STRUC_T(i1)=0
1750 DO j1=1,size(BLR_STRUC%PANELS_L,1)
1751 CALL ZMUMPS_SAVE_RESTORE_BLR_PANEL(
1752 & BLR_STRUC%PANELS_L(j1)
1753 & ,unit,MYID,"memory_save"
1754 & ,SIZE_GEST_PANELS_L_j1
1755 & ,SIZE_VARIABLES_PANELS_L_j1
1756 & ,SIZE_INT, SIZE_ARITH_DEP, SIZE_LOGICAL
1757 & ,TOTAL_FILE_SIZE,TOTAL_STRUC_SIZE
1758 & ,size_read,size_allocated,size_written
1760 SIZE_GEST_PANELS_L=SIZE_GEST_PANELS_L+
1761 & SIZE_GEST_PANELS_L_j1
1762 SIZE_VARIABLES_PANELS_L=SIZE_VARIABLES_PANELS_L+
1763 & SIZE_VARIABLES_PANELS_L_j1
1766 NbRecords_BLR_STRUC_T(i1)=2
1767 SIZE_GEST_BLR_STRUC_T(i1)=SIZE_INT*2
1768 SIZE_VARIABLES_BLR_STRUC_T(i1)=0
1770.EQ.
elseif(trim(mode)"save") then
1771 IF(associated(BLR_STRUC%PANELS_L)) THEN
1772 NbRecords_BLR_STRUC_T(i1)=1
1773 SIZE_GEST_BLR_STRUC_T(i1)=SIZE_INT
1774 SIZE_VARIABLES_BLR_STRUC_T(i1)=0
1775 write(unit,iostat=err)
1776 & size(BLR_STRUC%PANELS_L,1)
1779 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
1782 DO j1=1,size(BLR_STRUC%PANELS_L,1)
1783 CALL ZMUMPS_SAVE_RESTORE_BLR_PANEL(
1784 & BLR_STRUC%PANELS_L(j1)
1786 & ,SIZE_GEST_PANELS_L_j1
1787 & ,SIZE_VARIABLES_PANELS_L_j1
1788 & ,SIZE_INT, SIZE_ARITH_DEP, SIZE_LOGICAL
1789 & ,TOTAL_FILE_SIZE,TOTAL_STRUC_SIZE
1790 & ,size_read,size_allocated,size_written
1792.LT.
IF ( INFO(1) 0 ) GOTO 100
1795 NbRecords_BLR_STRUC_T(i1)=2
1796 SIZE_GEST_BLR_STRUC_T(i1)=SIZE_INT*2
1797 SIZE_VARIABLES_BLR_STRUC_T(i1)=0
1798 write(unit,iostat=err) -999
1801 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
1804.LT.
IF ( INFO(1) 0 ) GOTO 100
1805 write(unit,iostat=err) -999
1808 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
1811.LT.
IF ( INFO(1) 0 ) GOTO 100
1813.EQ.
elseif(trim(mode)"restore") then
1814 nullify(BLR_STRUC%PANELS_L)
1815 read(unit,iostat=err) size_array1
1818 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
1821.LT.
IF ( INFO(1) 0 ) GOTO 100
1822.EQ.
if(size_array1-999) then
1823 NbRecords_BLR_STRUC_T(i1)=2
1824 SIZE_GEST_BLR_STRUC_T(i1)=SIZE_INT*2
1825 SIZE_VARIABLES_BLR_STRUC_T(i1)=0
1826 read(unit,iostat=err) dummy
1829 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
1832.LT.
IF ( INFO(1) 0 ) GOTO 100
1834 NbRecords_BLR_STRUC_T(i1)=1
1835 SIZE_GEST_BLR_STRUC_T(i1)=SIZE_INT
1836 SIZE_VARIABLES_BLR_STRUC_T(i1)=0
1837 allocate(BLR_STRUC%PANELS_L(size_array1)
1839.GT.
if (allocok 0) THEN
1841 CALL MUMPS_SETI8TOI4(
1842 & TOTAL_STRUC_SIZE-size_allocated
1846 CALL ZMUMPS_SAVE_RESTORE_BLR_PANEL(
1847 & BLR_STRUC%PANELS_L(j1)
1848 & ,unit,MYID,"restore"
1849 & ,SIZE_GEST_PANELS_L_j1
1850 & ,SIZE_VARIABLES_PANELS_L_j1
1851 & ,SIZE_INT, SIZE_ARITH_DEP, SIZE_LOGICAL
1852 & ,TOTAL_FILE_SIZE,TOTAL_STRUC_SIZE
1853 & ,size_read,size_allocated,size_written
1855 SIZE_GEST_PANELS_L=SIZE_GEST_PANELS_L+
1856 & SIZE_GEST_PANELS_L_j1
1857 SIZE_VARIABLES_PANELS_L=SIZE_VARIABLES_PANELS_L+
1858 & SIZE_VARIABLES_PANELS_L_j1
1863.EQ.
if(trim(mode)"memory_save") then
1864 IF(associated(BLR_STRUC%PANELS_U)) THEN
1865 NbRecords_BLR_STRUC_T(i1)=1
1866 SIZE_GEST_BLR_STRUC_T(i1)=SIZE_INT
1867 SIZE_VARIABLES_BLR_STRUC_T(i1)=0
1868 DO j1=1,size(BLR_STRUC%PANELS_U,1)
1869 CALL ZMUMPS_SAVE_RESTORE_BLR_PANEL(
1870 & BLR_STRUC%PANELS_U(j1)
1871 & ,unit,MYID,"memory_save"
1872 & ,SIZE_GEST_PANELS_U_j1
1873 & ,SIZE_VARIABLES_PANELS_U_j1
1874 & ,SIZE_INT, SIZE_ARITH_DEP, SIZE_LOGICAL
1875 & ,TOTAL_FILE_SIZE,TOTAL_STRUC_SIZE
1876 & ,size_read,size_allocated,size_written
1878 SIZE_GEST_PANELS_U=SIZE_GEST_PANELS_U+
1879 & SIZE_GEST_PANELS_U_j1
1880 SIZE_VARIABLES_PANELS_U=SIZE_VARIABLES_PANELS_U+
1881 & SIZE_VARIABLES_PANELS_U_j1
1884 NbRecords_BLR_STRUC_T(i1)=2
1885 SIZE_GEST_BLR_STRUC_T(i1)=SIZE_INT*2
1886 SIZE_VARIABLES_BLR_STRUC_T(i1)=0
1888.EQ.
elseif(trim(mode)"save") then
1889 IF(associated(BLR_STRUC%PANELS_U)) THEN
1890 NbRecords_BLR_STRUC_T(i1)=1
1891 SIZE_GEST_BLR_STRUC_T(i1)=SIZE_INT
1892 SIZE_VARIABLES_BLR_STRUC_T(i1)=0
1893 write(unit,iostat=err)
1894 & size(BLR_STRUC%PANELS_U,1)
1897 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
1900 DO j1=1,size(BLR_STRUC%PANELS_U,1)
1901 CALL ZMUMPS_SAVE_RESTORE_BLR_PANEL(
1902 & BLR_STRUC%PANELS_U(j1)
1904 & ,SIZE_GEST_PANELS_U_j1
1905 & ,SIZE_VARIABLES_PANELS_U_j1
1906 & ,SIZE_INT, SIZE_ARITH_DEP, SIZE_LOGICAL
1907 & ,TOTAL_FILE_SIZE,TOTAL_STRUC_SIZE
1908 & ,size_read,size_allocated,size_written
1910.LT.
IF ( INFO(1) 0 ) GOTO 100
1913 NbRecords_BLR_STRUC_T(i1)=2
1914 SIZE_GEST_BLR_STRUC_T(i1)=SIZE_INT*2
1915 SIZE_VARIABLES_BLR_STRUC_T(i1)=0
1916 write(unit,iostat=err) -999
1919 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
1922.LT.
IF ( INFO(1) 0 ) GOTO 100
1923 write(unit,iostat=err) -999
1926 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
1929.LT.
IF ( INFO(1) 0 ) GOTO 100
1931.EQ.
elseif(trim(mode)"restore") then
1932 nullify(BLR_STRUC%PANELS_U)
1933 read(unit,iostat=err) size_array1
1936 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
1939.LT.
IF ( INFO(1) 0 ) GOTO 100
1940.EQ.
if(size_array1-999) then
1941 NbRecords_BLR_STRUC_T(i1)=2
1942 SIZE_GEST_BLR_STRUC_T(i1)=SIZE_INT*2
1943 SIZE_VARIABLES_BLR_STRUC_T(i1)=0
1944 read(unit,iostat=err) dummy
1947 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
1950.LT.
IF ( INFO(1) 0 ) GOTO 100
1952 NbRecords_BLR_STRUC_T(i1)=1
1953 SIZE_GEST_BLR_STRUC_T(i1)=SIZE_INT
1954 SIZE_VARIABLES_BLR_STRUC_T(i1)=0
1955 allocate(BLR_STRUC%PANELS_U(size_array1)
1957.GT.
if (allocok 0) THEN
1959 CALL MUMPS_SETI8TOI4(
1960 & TOTAL_STRUC_SIZE-size_allocated
1964 CALL ZMUMPS_SAVE_RESTORE_BLR_PANEL(
1965 & BLR_STRUC%PANELS_U(j1)
1966 & ,unit,MYID,"restore"
1967 & ,SIZE_GEST_PANELS_U_j1
1968 & ,SIZE_VARIABLES_PANELS_U_j1
1969 & ,SIZE_INT, SIZE_ARITH_DEP, SIZE_LOGICAL
1970 & ,TOTAL_FILE_SIZE,TOTAL_STRUC_SIZE
1971 & ,size_read,size_allocated,size_written
1973 SIZE_GEST_PANELS_U=SIZE_GEST_PANELS_U+
1974 & SIZE_GEST_PANELS_U_j1
1975 SIZE_VARIABLES_PANELS_U=SIZE_VARIABLES_PANELS_U+
1976 & SIZE_VARIABLES_PANELS_U_j1
1981.EQ.
if(trim(mode)"memory_save") then
1982 IF(associated(BLR_STRUC%CB_LRB)) THEN
1983 NbRecords_BLR_STRUC_T(i1)=1
1984 SIZE_GEST_BLR_STRUC_T(i1)=SIZE_INT*2
1985 SIZE_VARIABLES_BLR_STRUC_T(i1)=0
1986 DO j1=1,size(BLR_STRUC%CB_LRB,1)
1987 DO j2=1,size(BLR_STRUC%CB_LRB,2)
1988 CALL ZMUMPS_SAVE_RESTORE_LRB(
1989 & BLR_STRUC%CB_LRB(j1,j2)
1990 & ,unit,MYID,"memory_save"
1991 & ,SIZE_GEST_CB_LRB_j1j2
1992 & ,SIZE_VARIABLES_CB_LRB_j1j2
1993 & ,SIZE_INT, SIZE_ARITH_DEP, SIZE_LOGICAL
1994 & ,TOTAL_FILE_SIZE,TOTAL_STRUC_SIZE
1995 & ,size_read,size_allocated,size_written
1997 SIZE_GEST_CB_LRB=SIZE_GEST_CB_LRB+
1998 & SIZE_GEST_CB_LRB_j1j2
1999 SIZE_VARIABLES_CB_LRB=SIZE_VARIABLES_CB_LRB+
2000 & SIZE_VARIABLES_CB_LRB_j1j2
2004 NbRecords_BLR_STRUC_T(i1)=2
2005 SIZE_GEST_BLR_STRUC_T(i1)=SIZE_INT*3
2006 SIZE_VARIABLES_BLR_STRUC_T(i1)=0
2008.EQ.
elseif(trim(mode)"save") then
2009 IF(associated(BLR_STRUC%CB_LRB)) THEN
2010 NbRecords_BLR_STRUC_T(i1)=1
2011 SIZE_GEST_BLR_STRUC_T(i1)=SIZE_INT*2
2012 SIZE_VARIABLES_BLR_STRUC_T(i1)=0
2013 write(unit,iostat=err)
2014 & size(BLR_STRUC%CB_LRB,1),size(BLR_STRUC%CB_LRB,2)
2017 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
2020 DO j1=1,size(BLR_STRUC%CB_LRB,1)
2021 DO j2=1,size(BLR_STRUC%CB_LRB,2)
2022 CALL ZMUMPS_SAVE_RESTORE_LRB(
2023 & BLR_STRUC%CB_LRB(j1,j2)
2025 & ,SIZE_GEST_CB_LRB_j1j2
2026 & ,SIZE_VARIABLES_CB_LRB_j1j2
2027 & ,SIZE_INT, SIZE_ARITH_DEP, SIZE_LOGICAL
2028 & ,TOTAL_FILE_SIZE,TOTAL_STRUC_SIZE
2029 & ,size_read,size_allocated,size_written
2031.LT.
IF ( INFO(1) 0 ) GOTO 100
2035 NbRecords_BLR_STRUC_T(i1)=2
2036 SIZE_GEST_BLR_STRUC_T(i1)=SIZE_INT*3
2037 SIZE_VARIABLES_BLR_STRUC_T(i1)=0
2038 write(unit,iostat=err) -999,-998
2041 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
2044.LT.
IF ( INFO(1) 0 ) GOTO 100
2045 write(unit,iostat=err) -999
2048 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
2051.LT.
IF ( INFO(1) 0 ) GOTO 100
2053.EQ.
elseif(trim(mode)"restore") then
2054 nullify(BLR_STRUC%CB_LRB)
2055 read(unit,iostat=err) size_array1,size_array2
2058 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
2061.LT.
IF ( INFO(1) 0 ) GOTO 100
2062.EQ.
if(size_array1-999) then
2063 NbRecords_BLR_STRUC_T(i1)=2
2064 SIZE_GEST_BLR_STRUC_T(i1)=SIZE_INT*3
2065 SIZE_VARIABLES_BLR_STRUC_T(i1)=0
2066 read(unit,iostat=err) dummy
2069 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
2072.LT.
IF ( INFO(1) 0 ) GOTO 100
2074 NbRecords_BLR_STRUC_T(i1)=1
2075 SIZE_GEST_BLR_STRUC_T(i1)=SIZE_INT*2
2076 SIZE_VARIABLES_BLR_STRUC_T(i1)=0
2077 allocate(BLR_STRUC%CB_LRB(size_array1,size_array2)
2079.GT.
if (allocok 0) THEN
2081 CALL MUMPS_SETI8TOI4(
2082 & TOTAL_STRUC_SIZE-size_allocated
2087 CALL ZMUMPS_SAVE_RESTORE_LRB(
2088 & BLR_STRUC%CB_LRB(j1,j2)
2089 & ,unit,MYID,"restore"
2090 & ,SIZE_GEST_CB_LRB_j1j2
2091 & ,SIZE_VARIABLES_CB_LRB_j1j2
2092 & ,SIZE_INT, SIZE_ARITH_DEP, SIZE_LOGICAL
2093 & ,TOTAL_FILE_SIZE,TOTAL_STRUC_SIZE
2094 & ,size_read,size_allocated,size_written
2096 SIZE_GEST_CB_LRB=SIZE_GEST_CB_LRB+
2097 & SIZE_GEST_CB_LRB_j1j2
2098 SIZE_VARIABLES_CB_LRB=SIZE_VARIABLES_CB_LRB+
2099 & SIZE_VARIABLES_CB_LRB_j1j2
2105.EQ.
if(trim(mode)"memory_save") then
2106 IF(associated(BLR_STRUC%DIAG_BLOCKS)) THEN
2107 NbRecords_BLR_STRUC_T(i1)=1
2108 SIZE_GEST_BLR_STRUC_T(i1)=SIZE_INT
2109 SIZE_VARIABLES_BLR_STRUC_T(i1)=0
2110 DO j1=1,size(BLR_STRUC%DIAG_BLOCKS,1)
2111 CALL ZMUMPS_SAVE_RESTORE_DIAG_BLOCK(
2112 & BLR_STRUC%DIAG_BLOCKS(j1)
2113 & ,unit,MYID,"memory_save"
2114 & ,SIZE_GEST_DIAG_BLOCKS_j1
2115 & ,SIZE_VARIABLES_DIAG_BLOCKS_j1
2116 & ,SIZE_INT, SIZE_ARITH_DEP
2117 & ,TOTAL_FILE_SIZE,TOTAL_STRUC_SIZE
2118 & ,size_read,size_allocated,size_written
2120 SIZE_GEST_DIAG_BLOCKS=SIZE_GEST_DIAG_BLOCKS+
2121 & SIZE_GEST_DIAG_BLOCKS_j1
2122 SIZE_VARIABLES_DIAG_BLOCKS=
2123 & SIZE_VARIABLES_DIAG_BLOCKS+
2124 & SIZE_VARIABLES_DIAG_BLOCKS_j1
2127 NbRecords_BLR_STRUC_T(i1)=2
2128 SIZE_GEST_BLR_STRUC_T(i1)=SIZE_INT*2
2129 SIZE_VARIABLES_BLR_STRUC_T(i1)=0
2131.EQ.
elseif(trim(mode)"save") then
2132 IF(associated(BLR_STRUC%DIAG_BLOCKS)) THEN
2133 NbRecords_BLR_STRUC_T(i1)=1
2134 SIZE_GEST_BLR_STRUC_T(i1)=SIZE_INT
2135 SIZE_VARIABLES_BLR_STRUC_T(i1)=0
2136 write(unit,iostat=err)
2137 & size(BLR_STRUC%DIAG_BLOCKS,1)
2140 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
2143 DO j1=1,size(BLR_STRUC%DIAG_BLOCKS,1)
2144 CALL ZMUMPS_SAVE_RESTORE_DIAG_BLOCK(
2145 & BLR_STRUC%DIAG_BLOCKS(j1)
2147 & ,SIZE_GEST_DIAG_BLOCKS_j1
2148 & ,SIZE_VARIABLES_DIAG_BLOCKS_j1
2149 & ,SIZE_INT, SIZE_ARITH_DEP
2150 & ,TOTAL_FILE_SIZE,TOTAL_STRUC_SIZE
2151 & ,size_read,size_allocated,size_written
2153.LT.
IF ( INFO(1) 0 ) GOTO 100
2156 NbRecords_BLR_STRUC_T(i1)=2
2157 SIZE_GEST_BLR_STRUC_T(i1)=SIZE_INT*2
2158 SIZE_VARIABLES_BLR_STRUC_T(i1)=0
2159 write(unit,iostat=err) -999
2162 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
2165.LT.
IF ( INFO(1) 0 ) GOTO 100
2166 write(unit,iostat=err) -999
2169 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
2172.LT.
IF ( INFO(1) 0 ) GOTO 100
2174.EQ.
elseif(trim(mode)"restore") then
2175 nullify(BLR_STRUC%DIAG_BLOCKS)
2176 read(unit,iostat=err) size_array1
2179 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
2182.LT.
IF ( INFO(1) 0 ) GOTO 100
2183.EQ.
if(size_array1-999) then
2184 NbRecords_BLR_STRUC_T(i1)=2
2185 SIZE_GEST_BLR_STRUC_T(i1)=SIZE_INT*2
2186 SIZE_VARIABLES_BLR_STRUC_T(i1)=0
2187 read(unit,iostat=err) dummy
2190 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
2193.LT.
IF ( INFO(1) 0 ) GOTO 100
2195 NbRecords_BLR_STRUC_T(i1)=1
2196 SIZE_GEST_BLR_STRUC_T(i1)=SIZE_INT
2197 SIZE_VARIABLES_BLR_STRUC_T(i1)=0
2198 allocate(BLR_STRUC%DIAG_BLOCKS(size_array1)
2200.GT.
if (allocok 0) THEN
2202 CALL MUMPS_SETI8TOI4(
2203 & TOTAL_STRUC_SIZE-size_allocated
2207 CALL ZMUMPS_SAVE_RESTORE_DIAG_BLOCK(
2208 & BLR_STRUC%DIAG_BLOCKS(j1)
2209 & ,unit,MYID,"restore"
2210 & ,SIZE_GEST_DIAG_BLOCKS_j1
2211 & ,SIZE_VARIABLES_DIAG_BLOCKS_j1
2212 & ,SIZE_INT, SIZE_ARITH_DEP
2213 & ,TOTAL_FILE_SIZE,TOTAL_STRUC_SIZE
2214 & ,size_read,size_allocated,size_written
2216 SIZE_GEST_DIAG_BLOCKS=SIZE_GEST_DIAG_BLOCKS+
2217 & SIZE_GEST_DIAG_BLOCKS_j1
2218 SIZE_VARIABLES_DIAG_BLOCKS=
2219 & SIZE_VARIABLES_DIAG_BLOCKS+
2220 & SIZE_VARIABLES_DIAG_BLOCKS_j1
2225 NbRecords_BLR_STRUC_T(i1)=1
2226.EQ.
if(trim(mode)"memory_save") then
2227 SIZE_VARIABLES_BLR_STRUC_T(i1)=SIZE_INT
2228.EQ.
elseif(trim(mode)"save") then
2229 SIZE_VARIABLES_BLR_STRUC_T(i1)=SIZE_INT
2230 write(unit,iostat=err) BLR_STRUC%NFS4FATHER
2233 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
2236.LT.
IF ( INFO(1) 0 ) GOTO 100
2237.EQ.
elseif(trim(mode)"restore") then
2238 SIZE_VARIABLES_BLR_STRUC_T(i1)=SIZE_INT
2239 read(unit,iostat=err) BLR_STRUC%NFS4FATHER
2242 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
2245.LT.
IF (INFO(1) 0 ) GOTO 100
2248.EQ.
if(trim(mode)"restore") then
2249 nullify(BLR_STRUC%M_ARRAY)
2253.EQ.
if(trim(mode)"memory_save") then
2254 NbSubRecords=int(SIZE_VARIABLES_BLR_STRUC_T(i1)/huge(I4))
2255.GT.
IF(NbSubRecords0) then
2256 NbRecords_BLR_STRUC_T(i1)=NbRecords_BLR_STRUC_T(i1)
2259.EQ.
elseif(trim(mode)"save") then
2260 size_written=size_written+SIZE_VARIABLES_BLR_STRUC_T(i1)
2261 & +int(SIZE_GEST_BLR_STRUC_T(i1),kind=8)
2262#if !defined(MUMPS_F2003)
2263 size_written=size_written
2264 & +int(2*SIZE_INT*NbRecords_BLR_STRUC_T(i1),kind=8)
2266.EQ.
elseif(trim(mode)"restore") then
2267 size_allocated=size_allocated+
2268 & SIZE_VARIABLES_BLR_STRUC_T(i1)
2269 size_read=size_read+SIZE_VARIABLES_BLR_STRUC_T(i1)
2270 & +int(SIZE_GEST_BLR_STRUC_T(i1),kind=8)
2271#if !defined(MUMPS_F2003)
2273 & +int(2*SIZE_INT*NbRecords_BLR_STRUC_T(i1),kind=8)
2277.EQ.
if(trim(mode)"memory_save") then
2278 Local_SIZE_VARIABLES=sum(SIZE_VARIABLES_BLR_STRUC_T)
2279 & +SIZE_VARIABLES_PANELS_L
2280 & +SIZE_VARIABLES_PANELS_U
2281 & +SIZE_VARIABLES_CB_LRB
2282 & +SIZE_VARIABLES_DIAG_BLOCKS
2283 Local_SIZE_GEST=sum(SIZE_GEST_BLR_STRUC_T)
2284 & +SIZE_GEST_PANELS_L
2285 & +SIZE_GEST_PANELS_U
2287 & +SIZE_GEST_DIAG_BLOCKS
2288#if !defined(MUMPS_F2003)
2289 Local_NbRecords=sum(NbRecords_BLR_STRUC_T)
2290 Local_SIZE_GEST=Local_SIZE_GEST+2*SIZE_INT*Local_NbRecords
2295 END SUBROUTINE ZMUMPS_SAVE_RESTORE_BLR_STRUC
2296 SUBROUTINE ZMUMPS_SAVE_RESTORE_LRB(LRB_T
2298 & ,Local_SIZE_GEST,Local_SIZE_VARIABLES
2299 & ,SIZE_INT, SIZE_ARITH_DEP, SIZE_LOGICAL
2300 & ,TOTAL_FILE_SIZE,TOTAL_STRUC_SIZE
2301 & ,size_read,size_allocated,size_written
2304 TYPE(LRB_TYPE) :: LRB_T
2305 INTEGER,intent(IN)::unit,MYID
2306 CHARACTER(len=*),intent(IN) :: mode
2307 INTEGER,INTENT(OUT) :: Local_SIZE_GEST
2308 INTEGER(8),intent(OUT) :: Local_SIZE_VARIABLES
2309 INTEGER,intent(INOUT):: INFO(2)
2310 INTEGER,intent(IN):: SIZE_INT, SIZE_ARITH_DEP, SIZE_LOGICAL
2311 INTEGER(8),intent(IN) :: TOTAL_FILE_SIZE,TOTAL_STRUC_SIZE
2312 INTEGER(8),intent(INOUT):: size_read,size_allocated,size_written
2313 INTEGER :: NBVARIABLES_LRB_TYPE
2314 PARAMETER (NBVARIABLES_LRB_TYPE = 6)
2315 CHARACTER(len=30), dimension(NBVARIABLES_LRB_TYPE)::
2316 & VARIABLES_LRB_TYPE
2317 CHARACTER(len=30) :: TMP_STRING
2318 INTEGER(8),dimension(NBVARIABLES_LRB_TYPE)::
2319 & SIZE_VARIABLES_LRB_TYPE
2320 INTEGER,dimension(NBVARIABLES_LRB_TYPE)::
2321 & SIZE_GEST_LRB_TYPE
2322 INTEGER,dimension(NBVARIABLES_LRB_TYPE)::
2323 & NbRecords_LRB_TYPE
2324 INTEGER:: size_array1,size_array2,dummy,allocok
2325 INTEGER:: err,i1,NbSubRecords,Local_NbRecords
2327 VARIABLES_LRB_TYPE(1)="Q"
2328 VARIABLES_LRB_TYPE(2)="R"
2329 VARIABLES_LRB_TYPE(3)="K"
2330 VARIABLES_LRB_TYPE(4)="M"
2331 VARIABLES_LRB_TYPE(5)="N"
2332 VARIABLES_LRB_TYPE(6)="ISLR"
2333 SIZE_VARIABLES_LRB_TYPE(:)=0_8
2334 SIZE_GEST_LRB_TYPE(:)=0
2335 NbRecords_LRB_TYPE(:)=0
2336 DO i1=1,NBVARIABLES_LRB_TYPE
2337 TMP_STRING = VARIABLES_LRB_TYPE(i1)
2338 SELECT CASE(TMP_STRING)
2340 NbRecords_LRB_TYPE(i1)=2
2341.EQ.
if(trim(mode)"memory_save") then
2342 IF(associated(LRB_T%Q)) THEN
2343 SIZE_GEST_LRB_TYPE(i1)=SIZE_INT*2
2344 SIZE_VARIABLES_LRB_TYPE(i1)=
2345 & size(LRB_T%Q,1)*size(LRB_T%Q,2)
2348 SIZE_GEST_LRB_TYPE(i1)=SIZE_INT*3
2349 SIZE_VARIABLES_LRB_TYPE(i1)=0
2351.EQ.
elseif(trim(mode)"save") then
2352 IF(associated(LRB_T%Q)) THEN
2353 SIZE_GEST_LRB_TYPE(i1)=SIZE_INT*2
2354 SIZE_VARIABLES_LRB_TYPE(i1)=
2355 & size(LRB_T%Q,1)*size(LRB_T%Q,2)
2357 write(unit,iostat=err) size(LRB_T%Q,1),size(LRB_T%Q,2)
2360 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
2363.LT.
IF ( INFO(1) 0 ) GOTO 300
2364 write(unit,iostat=err) LRB_T%Q
2366 SIZE_GEST_LRB_TYPE(i1)=SIZE_INT*3
2367 SIZE_VARIABLES_LRB_TYPE(i1)=0
2368 write(unit,iostat=err) -999,-998
2371 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
2374.LT.
IF ( INFO(1) 0 ) GOTO 300
2375 write(unit,iostat=err) -999
2379 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
2382.LT.
IF ( INFO(1) 0 ) GOTO 300
2383.EQ.
elseif(trim(mode)"restore") then
2385 read(unit,iostat=err) size_array1,size_array2
2388 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
2391.LT.
IF ( INFO(1) 0 ) GOTO 300
2392.EQ.
if(size_array1-999) then
2393 SIZE_GEST_LRB_TYPE(i1)=SIZE_INT*3
2394 SIZE_VARIABLES_LRB_TYPE(i1)=0
2395 read(unit,iostat=err) dummy
2397 SIZE_GEST_LRB_TYPE(i1)=SIZE_INT*2
2398 SIZE_VARIABLES_LRB_TYPE(i1)=
2399 & size_array1*size_array2*SIZE_ARITH_DEP
2400 allocate(LRB_T%Q(size_array1,size_array2),
2402.GT.
if (allocok 0) THEN
2404 CALL MUMPS_SETI8TOI4(
2405 & TOTAL_STRUC_SIZE-size_allocated
2408 read(unit,iostat=err) LRB_T%Q
2410.LT.
IF ( INFO(1) 0 ) GOTO 300
2413 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
2416.LT.
IF ( INFO(1) 0 ) GOTO 300
2419 NbRecords_LRB_TYPE(i1)=2
2420.EQ.
if(trim(mode)"memory_save") then
2421 IF(associated(LRB_T%R)) THEN
2422 SIZE_GEST_LRB_TYPE(i1)=SIZE_INT*2
2423 SIZE_VARIABLES_LRB_TYPE(i1)=
2424 & size(LRB_T%R,1)*size(LRB_T%R,2)
2427 SIZE_GEST_LRB_TYPE(i1)=SIZE_INT*3
2428 SIZE_VARIABLES_LRB_TYPE(i1)=0
2430.EQ.
elseif(trim(mode)"save") then
2431 IF(associated(LRB_T%R)) THEN
2432 SIZE_GEST_LRB_TYPE(i1)=SIZE_INT*2
2433 SIZE_VARIABLES_LRB_TYPE(i1)=
2434 & size(LRB_T%R,1)*size(LRB_T%R,2)
2436 write(unit,iostat=err) size(LRB_T%R,1),size(LRB_T%R,2)
2439 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
2442.LT.
IF ( INFO(1) 0 ) GOTO 300
2443 write(unit,iostat=err) LRB_T%R
2445 SIZE_GEST_LRB_TYPE(i1)=SIZE_INT*3
2446 SIZE_VARIABLES_LRB_TYPE(i1)=0
2447 write(unit,iostat=err) -999,-998
2450 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
2453.LT.
IF ( INFO(1) 0 ) GOTO 300
2454 write(unit,iostat=err) -999
2458 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
2461.LT.
IF ( INFO(1) 0 ) GOTO 300
2462.EQ.
elseif(trim(mode)"restore") then
2464 read(unit,iostat=err) size_array1,size_array2
2467 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
2470.LT.
IF ( INFO(1) 0 ) GOTO 300
2471.EQ.
if(size_array1-999) then
2472 SIZE_GEST_LRB_TYPE(i1)=SIZE_INT*3
2473 SIZE_VARIABLES_LRB_TYPE(i1)=0
2474 read(unit,iostat=err) dummy
2476 SIZE_GEST_LRB_TYPE(i1)=SIZE_INT*2
2477 SIZE_VARIABLES_LRB_TYPE(i1)=
2478 & size_array1*size_array2*SIZE_ARITH_DEP
2479 allocate(LRB_T%R(size_array1,size_array2),
2481.GT.
if (allocok 0) THEN
2483 CALL MUMPS_SETI8TOI4(
2484 & TOTAL_STRUC_SIZE-size_allocated
2487 read(unit,iostat=err) LRB_T%R
2489.LT.
IF ( INFO(1) 0 ) GOTO 300
2492 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
2495.LT.
IF ( INFO(1) 0 ) GOTO 300
2498 NbRecords_LRB_TYPE(i1)=1
2499.EQ.
if(trim(mode)"memory_save") then
2500 SIZE_VARIABLES_LRB_TYPE(i1)=SIZE_INT
2501.EQ.
elseif(trim(mode)"save") then
2502 SIZE_VARIABLES_LRB_TYPE(i1)=SIZE_INT
2503 write(unit,iostat=err) LRB_T%K
2506 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
2509.LT.
IF ( INFO(1) 0 ) GOTO 300
2510.EQ.
elseif(trim(mode)"restore") then
2511 SIZE_VARIABLES_LRB_TYPE(i1)=SIZE_INT
2512 read(unit,iostat=err) LRB_T%K
2515 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
2518.LT.
IF ( INFO(1) 0 ) GOTO 300
2521 NbRecords_LRB_TYPE(i1)=1
2522.EQ.
if(trim(mode)"memory_save") then
2523 SIZE_VARIABLES_LRB_TYPE(i1)=SIZE_INT
2524.EQ.
elseif(trim(mode)"save") then
2525 SIZE_VARIABLES_LRB_TYPE(i1)=SIZE_INT
2526 write(unit,iostat=err) LRB_T%M
2529 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
2532.LT.
IF ( INFO(1) 0 ) GOTO 300
2533.EQ.
elseif(trim(mode)"restore") then
2534 SIZE_VARIABLES_LRB_TYPE(i1)=SIZE_INT
2535 read(unit,iostat=err) LRB_T%M
2538 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
2541.LT.
IF ( INFO(1) 0 ) GOTO 300
2544 NbRecords_LRB_TYPE(i1)=1
2545.EQ.
if(trim(mode)"memory_save") then
2546 SIZE_VARIABLES_LRB_TYPE(i1)=SIZE_INT
2547.EQ.
elseif(trim(mode)"save") then
2548 SIZE_VARIABLES_LRB_TYPE(i1)=SIZE_INT
2549 write(unit,iostat=err) LRB_T%N
2552 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
2555.LT.
IF ( INFO(1) 0 ) GOTO 300
2556.EQ.
elseif(trim(mode)"restore") then
2557 SIZE_VARIABLES_LRB_TYPE(i1)=SIZE_INT
2558 read(unit,iostat=err) LRB_T%N
2561 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
2564.LT.
IF ( INFO(1) 0 ) GOTO 300
2567 NbRecords_LRB_TYPE(i1)=1
2568.EQ.
if(trim(mode)"memory_save") then
2569 SIZE_VARIABLES_LRB_TYPE(i1)=SIZE_LOGICAL
2570.EQ.
elseif(trim(mode)"save") then
2571 SIZE_VARIABLES_LRB_TYPE(i1)=SIZE_LOGICAL
2572 write(unit,iostat=err) LRB_T%ISLR
2575 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
2578.LT.
IF ( INFO(1) 0 ) GOTO 300
2579.EQ.
elseif(trim(mode)"restore") then
2580 SIZE_VARIABLES_LRB_TYPE(i1)=SIZE_LOGICAL
2581 read(unit,iostat=err) LRB_T%ISLR
2584 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
2587.LT.
IF ( INFO(1) 0 ) GOTO 300
2591.EQ.
if(trim(mode)"memory_save") then
2592 NbSubRecords=int(SIZE_VARIABLES_LRB_TYPE(i1)/huge(I4))
2593.GT.
IF(NbSubRecords0) then
2594 NbRecords_LRB_TYPE(i1)=
2595 & NbRecords_LRB_TYPE(i1)
2598.EQ.
elseif(trim(mode)"save") then
2599 size_written=size_written+SIZE_VARIABLES_LRB_TYPE(i1)
2600 & +int(SIZE_GEST_LRB_TYPE(i1),kind=8)
2601#if !defined(MUMPS_F2003)
2602 size_written=size_written
2603 & +int(2*SIZE_INT*NbRecords_LRB_TYPE(i1),kind=8)
2605.EQ.
elseif(trim(mode)"restore") then
2606 size_allocated=size_allocated+
2607 & SIZE_VARIABLES_LRB_TYPE(i1)
2608 size_read=size_read+SIZE_VARIABLES_LRB_TYPE(i1)
2609 & +int(SIZE_GEST_LRB_TYPE(i1),kind=8)
2610#if !defined(MUMPS_F2003)
2612 & +int(2*SIZE_INT*NbRecords_LRB_TYPE(i1),kind=8)
2616.EQ.
if(trim(mode)"memory_save") then
2617 Local_SIZE_VARIABLES=sum(SIZE_VARIABLES_LRB_TYPE)
2618 Local_SIZE_GEST=sum(SIZE_GEST_LRB_TYPE)
2619#if !defined(MUMPS_F2003)
2620 Local_NbRecords=sum(NbRecords_LRB_TYPE)
2621 Local_SIZE_GEST=Local_SIZE_GEST+2*SIZE_INT*Local_NbRecords
2626 END SUBROUTINE ZMUMPS_SAVE_RESTORE_LRB
2627 SUBROUTINE ZMUMPS_SAVE_RESTORE_BLR_PANEL(BLR_PANEL_T
2629 & ,Local_SIZE_GEST,Local_SIZE_VARIABLES
2630 & ,SIZE_INT, SIZE_ARITH_DEP, SIZE_LOGICAL
2631 & ,TOTAL_FILE_SIZE,TOTAL_STRUC_SIZE
2632 & ,size_read,size_allocated,size_written
2635 TYPE(blr_panel_type) :: BLR_PANEL_T
2636 INTEGER,intent(IN)::unit,MYID
2637 CHARACTER(len=*),intent(IN) :: mode
2638 INTEGER,INTENT(OUT) :: Local_SIZE_GEST
2639 INTEGER(8),intent(OUT) :: Local_SIZE_VARIABLES
2640 INTEGER,intent(INOUT):: INFO(2)
2641 INTEGER,intent(IN):: SIZE_INT, SIZE_ARITH_DEP, SIZE_LOGICAL
2642 INTEGER(8),intent(IN) :: TOTAL_FILE_SIZE,TOTAL_STRUC_SIZE
2643 INTEGER(8),intent(INOUT):: size_read,size_allocated,size_written
2644 INTEGER :: NBVARIABLES_BLR_PANEL_TYPE
2645 PARAMETER (NBVARIABLES_BLR_PANEL_TYPE = 2)
2646 CHARACTER(len=30), dimension(NBVARIABLES_BLR_PANEL_TYPE)::
2647 & VARIABLES_BLR_PANEL_TYPE
2648 CHARACTER(len=30) :: TMP_STRING
2649 INTEGER(8),dimension(NBVARIABLES_BLR_PANEL_TYPE)::
2650 & SIZE_VARIABLES_BLR_PANEL_TYPE
2651 INTEGER,dimension(NBVARIABLES_BLR_PANEL_TYPE)::
2652 & SIZE_GEST_BLR_PANEL_TYPE
2653 INTEGER,dimension(NBVARIABLES_BLR_PANEL_TYPE)::
2654 & NbRecords_BLR_PANEL_TYPE
2655 INTEGER:: size_array1,dummy,allocok
2656 INTEGER:: err,i1,j1,NbSubRecords,Local_NbRecords
2657 INTEGER:: SIZE_GEST_LRB_PANEL_j1,SIZE_GEST_LRB_PANEL
2658 INTEGER(8)::SIZE_VARIABLES_LRB_PANEL_j1,SIZE_VARIABLES_LRB_PANEL
2660 VARIABLES_BLR_PANEL_TYPE(1)="NB_ACCESSES_LEFT"
2661 VARIABLES_BLR_PANEL_TYPE(2)="LRB_PANEL"
2662 SIZE_VARIABLES_BLR_PANEL_TYPE(:)=0_8
2663 SIZE_GEST_BLR_PANEL_TYPE(:)=0
2664 NbRecords_BLR_PANEL_TYPE(:)=0
2665 SIZE_GEST_LRB_PANEL_j1=0
2666 SIZE_GEST_LRB_PANEL=0
2667 SIZE_VARIABLES_LRB_PANEL_j1=0_8
2668 SIZE_VARIABLES_LRB_PANEL=0_8
2669 DO i1=1,NBVARIABLES_BLR_PANEL_TYPE
2670 TMP_STRING = VARIABLES_BLR_PANEL_TYPE(i1)
2671 SELECT CASE(TMP_STRING)
2672 CASE("NB_ACCESSES_LEFT")
2673 NbRecords_BLR_PANEL_TYPE(i1)=1
2674.EQ.
if(trim(mode)"memory_save") then
2675 SIZE_VARIABLES_BLR_PANEL_TYPE(i1)=SIZE_INT
2676.EQ.
elseif(trim(mode)"save") then
2677 SIZE_VARIABLES_BLR_PANEL_TYPE(i1)=SIZE_INT
2678 write(unit,iostat=err) BLR_PANEL_T%NB_ACCESSES_LEFT
2681 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
2684.LT.
IF ( INFO(1) 0 ) GOTO 400
2685.EQ.
elseif(trim(mode)"restore") then
2686 SIZE_VARIABLES_BLR_PANEL_TYPE(i1)=SIZE_INT
2687 read(unit,iostat=err) BLR_PANEL_T%NB_ACCESSES_LEFT
2690 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
2693.LT.
IF ( INFO(1) 0 ) GOTO 400
2696.EQ.
if(trim(mode)"memory_save") then
2697 IF(associated(BLR_PANEL_T%LRB_PANEL)) THEN
2698 NbRecords_BLR_PANEL_TYPE(i1)=1
2699 SIZE_GEST_BLR_PANEL_TYPE(i1)=SIZE_INT
2700 SIZE_VARIABLES_BLR_PANEL_TYPE(i1)=0
2701 DO j1=1,size(BLR_PANEL_T%LRB_PANEL,1)
2702 CALL ZMUMPS_SAVE_RESTORE_LRB(
2703 & BLR_PANEL_T%LRB_PANEL(j1)
2704 & ,unit,MYID,"memory_save"
2705 & ,SIZE_GEST_LRB_PANEL_j1
2706 & ,SIZE_VARIABLES_LRB_PANEL_j1
2707 & ,SIZE_INT, SIZE_ARITH_DEP, SIZE_LOGICAL
2708 & ,TOTAL_FILE_SIZE,TOTAL_STRUC_SIZE
2709 & ,size_read,size_allocated,size_written
2711 SIZE_GEST_LRB_PANEL=SIZE_GEST_LRB_PANEL+
2712 & SIZE_GEST_LRB_PANEL_j1
2713 SIZE_VARIABLES_LRB_PANEL=SIZE_VARIABLES_LRB_PANEL+
2714 & SIZE_VARIABLES_LRB_PANEL_j1
2717 NbRecords_BLR_PANEL_TYPE(i1)=2
2718 SIZE_GEST_BLR_PANEL_TYPE(i1)=SIZE_INT*2
2719 SIZE_VARIABLES_BLR_PANEL_TYPE(i1)=0
2721.EQ.
elseif(trim(mode)"save") then
2722 IF(associated(BLR_PANEL_T%LRB_PANEL)) THEN
2723 NbRecords_BLR_PANEL_TYPE(i1)=1
2724 SIZE_GEST_BLR_PANEL_TYPE(i1)=SIZE_INT
2725 SIZE_VARIABLES_BLR_PANEL_TYPE(i1)=0
2726 write(unit,iostat=err) size(BLR_PANEL_T%LRB_PANEL,1)
2729 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
2732.LT.
IF ( INFO(1) 0 ) GOTO 400
2733 DO j1=1,size(BLR_PANEL_T%LRB_PANEL,1)
2734 CALL ZMUMPS_SAVE_RESTORE_LRB(
2735 & BLR_PANEL_T%LRB_PANEL(j1)
2737 & ,SIZE_GEST_LRB_PANEL_j1
2738 & ,SIZE_VARIABLES_LRB_PANEL_j1
2739 & ,SIZE_INT, SIZE_ARITH_DEP, SIZE_LOGICAL
2740 & ,TOTAL_FILE_SIZE,TOTAL_STRUC_SIZE
2741 & ,size_read,size_allocated,size_written
2743.LT.
IF ( INFO(1) 0 ) GOTO 400
2746 NbRecords_BLR_PANEL_TYPE(i1)=2
2747 SIZE_GEST_BLR_PANEL_TYPE(i1)=SIZE_INT*2
2748 SIZE_VARIABLES_BLR_PANEL_TYPE(i1)=0
2749 write(unit,iostat=err) -999
2752 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
2755.LT.
IF ( INFO(1) 0 ) GOTO 400
2756 write(unit,iostat=err) -999
2759 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
2762.LT.
IF ( INFO(1) 0 ) GOTO 400
2764.EQ.
elseif(trim(mode)"restore") then
2765 nullify(BLR_PANEL_T%LRB_PANEL)
2766 read(unit,iostat=err) size_array1
2769 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
2772.LT.
IF ( INFO(1) 0 ) GOTO 400
2773.EQ.
if(size_array1-999) then
2774 NbRecords_BLR_PANEL_TYPE(i1)=2
2775 SIZE_GEST_BLR_PANEL_TYPE(i1)=SIZE_INT*2
2776 SIZE_VARIABLES_BLR_PANEL_TYPE(i1)=0
2777 read(unit,iostat=err) dummy
2780 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
2783.LT.
IF ( INFO(1) 0 ) GOTO 400
2785 NbRecords_BLR_PANEL_TYPE(i1)=1
2786 SIZE_GEST_BLR_PANEL_TYPE(i1)=SIZE_INT
2787 SIZE_VARIABLES_BLR_PANEL_TYPE(i1)=0
2788 allocate(BLR_PANEL_T%LRB_PANEL(size_array1)
2790.GT.
if (allocok 0) THEN
2792 CALL MUMPS_SETI8TOI4(
2793 & TOTAL_STRUC_SIZE-size_allocated
2797 CALL ZMUMPS_SAVE_RESTORE_LRB(
2798 & BLR_PANEL_T%LRB_PANEL(j1)
2799 & ,unit,MYID,"restore"
2800 & ,SIZE_GEST_LRB_PANEL_j1
2801 & ,SIZE_VARIABLES_LRB_PANEL_j1
2802 & ,SIZE_INT, SIZE_ARITH_DEP, SIZE_LOGICAL
2803 & ,TOTAL_FILE_SIZE,TOTAL_STRUC_SIZE
2804 & ,size_read,size_allocated,size_written
2806 SIZE_GEST_LRB_PANEL=SIZE_GEST_LRB_PANEL+
2807 & SIZE_GEST_LRB_PANEL_j1
2808 SIZE_VARIABLES_LRB_PANEL=SIZE_VARIABLES_LRB_PANEL+
2809 & SIZE_VARIABLES_LRB_PANEL_j1
2815.EQ.
if(trim(mode)"memory_save") then
2816 NbSubRecords=int(SIZE_VARIABLES_BLR_PANEL_TYPE(i1)/huge(I4))
2817.GT.
IF(NbSubRecords0) then
2818 NbRecords_BLR_PANEL_TYPE(i1)=
2819 & NbRecords_BLR_PANEL_TYPE(i1)
2822.EQ.
elseif(trim(mode)"save") then
2823 size_written=size_written+SIZE_VARIABLES_BLR_PANEL_TYPE(i1)
2824 & +int(SIZE_GEST_BLR_PANEL_TYPE(i1),kind=8)
2825#if !defined(MUMPS_F2003)
2826 size_written=size_written
2827 & +int(2*SIZE_INT*NbRecords_BLR_PANEL_TYPE(i1),kind=8)
2829.EQ.
elseif(trim(mode)"restore") then
2830 size_allocated=size_allocated+
2831 & SIZE_VARIABLES_BLR_PANEL_TYPE(i1)
2832 size_read=size_read+SIZE_VARIABLES_BLR_PANEL_TYPE(i1)
2833 & +int(SIZE_GEST_BLR_PANEL_TYPE(i1),kind=8)
2834#if !defined(MUMPS_F2003)
2836 & +int(2*SIZE_INT*NbRecords_BLR_PANEL_TYPE(i1),kind=8)
2840.EQ.
if(trim(mode)"memory_save") then
2841 Local_SIZE_VARIABLES=sum(SIZE_VARIABLES_BLR_PANEL_TYPE)+
2842 & SIZE_VARIABLES_LRB_PANEL
2843 Local_SIZE_GEST=sum(SIZE_GEST_BLR_PANEL_TYPE)+
2844 & SIZE_GEST_LRB_PANEL
2845#if !defined(MUMPS_F2003)
2846 Local_NbRecords=sum(NbRecords_BLR_PANEL_TYPE)
2847 Local_SIZE_GEST=Local_SIZE_GEST+2*SIZE_INT*Local_NbRecords
2852 END SUBROUTINE ZMUMPS_SAVE_RESTORE_BLR_PANEL
2853 SUBROUTINE ZMUMPS_SAVE_RESTORE_DIAG_BLOCK(DIAG_BLOCK_T
2855 & ,Local_SIZE_GEST,Local_SIZE_VARIABLES
2856 & ,SIZE_INT, SIZE_ARITH_DEP
2857 & ,TOTAL_FILE_SIZE,TOTAL_STRUC_SIZE
2858 & ,size_read,size_allocated,size_written
2861 TYPE(diag_block_type) :: DIAG_BLOCK_T
2862 INTEGER,intent(IN)::unit,MYID
2863 CHARACTER(len=*),intent(IN) :: mode
2864 INTEGER,INTENT(OUT) :: Local_SIZE_GEST
2865 INTEGER(8),intent(OUT) :: Local_SIZE_VARIABLES
2866 INTEGER,intent(INOUT):: INFO(2)
2867 INTEGER,intent(IN):: SIZE_INT, SIZE_ARITH_DEP
2868 INTEGER(8),intent(IN) :: TOTAL_FILE_SIZE,TOTAL_STRUC_SIZE
2869 INTEGER(8),intent(INOUT):: size_read,size_allocated,size_written
2870 INTEGER :: NBVARIABLES_DIAG_BLOCK_TYPE
2871 PARAMETER (NBVARIABLES_DIAG_BLOCK_TYPE = 1)
2872 CHARACTER(len=30), dimension(NBVARIABLES_DIAG_BLOCK_TYPE)::
2873 & VARIABLES_DIAG_BLOCK_TYPE
2874 CHARACTER(len=30) :: TMP_STRING
2875 INTEGER(8),dimension(NBVARIABLES_DIAG_BLOCK_TYPE)::
2876 & SIZE_VARIABLES_DIAG_BLOCK_TYPE
2877 INTEGER,dimension(NBVARIABLES_DIAG_BLOCK_TYPE)::
2878 & SIZE_GEST_DIAG_BLOCK_TYPE
2879 INTEGER,dimension(NBVARIABLES_DIAG_BLOCK_TYPE)::
2880 & NbRecords_DIAG_BLOCK_TYPE
2881 INTEGER:: size_array1,dummy,allocok
2882 INTEGER:: err,i1,NbSubRecords,Local_NbRecords
2884 VARIABLES_DIAG_BLOCK_TYPE(1)="DIAG_BLOCK"
2885 SIZE_VARIABLES_DIAG_BLOCK_TYPE(:)=0_8
2886 SIZE_GEST_DIAG_BLOCK_TYPE(:)=0
2887 NbRecords_DIAG_BLOCK_TYPE(:)=0
2888 DO i1=1,NBVARIABLES_DIAG_BLOCK_TYPE
2889 TMP_STRING = VARIABLES_DIAG_BLOCK_TYPE(i1)
2890 SELECT CASE(TMP_STRING)
2892 NbRecords_DIAG_BLOCK_TYPE(i1)=2
2893.EQ.
if(trim(mode)"memory_save") then
2894 IF(associated(DIAG_BLOCK_T%DIAG_BLOCK)) THEN
2895 SIZE_GEST_DIAG_BLOCK_TYPE(i1)=SIZE_INT
2896 SIZE_VARIABLES_DIAG_BLOCK_TYPE(i1)=
2897 & size(DIAG_BLOCK_T%DIAG_BLOCK,1)
2900 SIZE_GEST_DIAG_BLOCK_TYPE(i1)=SIZE_INT*2
2901 SIZE_VARIABLES_DIAG_BLOCK_TYPE(i1)=0
2903.EQ.
elseif(trim(mode)"save") then
2904 IF(associated(DIAG_BLOCK_T%DIAG_BLOCK)) THEN
2905 SIZE_GEST_DIAG_BLOCK_TYPE(i1)=SIZE_INT
2906 SIZE_VARIABLES_DIAG_BLOCK_TYPE(i1)=
2907 & size(DIAG_BLOCK_T%DIAG_BLOCK,1)
2909 write(unit,iostat=err) size(DIAG_BLOCK_T%DIAG_BLOCK,1)
2912 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
2915.LT.
IF ( INFO(1) 0 ) GOTO 200
2916 write(unit,iostat=err) DIAG_BLOCK_T%DIAG_BLOCK
2918 SIZE_GEST_DIAG_BLOCK_TYPE(i1)=SIZE_INT*2
2919 SIZE_VARIABLES_DIAG_BLOCK_TYPE(i1)=0
2920 write(unit,iostat=err) -999
2923 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
2926.LT.
IF ( INFO(1) 0 ) GOTO 200
2927 write(unit,iostat=err) -999
2931 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_written,
2934.LT.
IF ( INFO(1) 0 ) GOTO 200
2935.EQ.
elseif(trim(mode)"restore") then
2936 nullify(DIAG_BLOCK_T%DIAG_BLOCK)
2937 read(unit,iostat=err) size_array1
2940 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
2943.LT.
IF ( INFO(1) 0 ) GOTO 200
2944.EQ.
if(size_array1-999) then
2945 SIZE_GEST_DIAG_BLOCK_TYPE(i1)=SIZE_INT*2
2946 SIZE_VARIABLES_DIAG_BLOCK_TYPE(i1)=0
2947 read(unit,iostat=err) dummy
2949 SIZE_GEST_DIAG_BLOCK_TYPE(i1)=SIZE_INT
2950 SIZE_VARIABLES_DIAG_BLOCK_TYPE(i1)=
2951 & size_array1*SIZE_ARITH_DEP
2952 allocate(DIAG_BLOCK_T%DIAG_BLOCK(size_array1),
2954.GT.
if (allocok 0) THEN
2956 CALL MUMPS_SETI8TOI4(
2957 & TOTAL_STRUC_SIZE-size_allocated
2961 read(unit,iostat=err) DIAG_BLOCK_T%DIAG_BLOCK
2965 CALL MUMPS_SETI8TOI4(TOTAL_FILE_SIZE-size_read
2972.EQ.
if(trim(mode)"memory_save") then
2973 NbSubRecords=int(SIZE_VARIABLES_DIAG_BLOCK_TYPE(i1)/
2975.GT.
IF(NbSubRecords0) then
2976 NbRecords_DIAG_BLOCK_TYPE(i1)=
2977 & NbRecords_DIAG_BLOCK_TYPE(i1)
2980.EQ.
elseif(trim(mode)"save") then
2981 size_written=size_written+SIZE_VARIABLES_DIAG_BLOCK_TYPE(i1)
2982 & +int(SIZE_GEST_DIAG_BLOCK_TYPE(i1),kind=8)
2983#if !defined(MUMPS_F2003)
2984 size_written=size_written
2985 & +int(2*SIZE_INT*NbRecords_DIAG_BLOCK_TYPE(i1),kind=8)
2987.EQ.
elseif(trim(mode)"restore") then
2988 size_allocated=size_allocated+
2989 & SIZE_VARIABLES_DIAG_BLOCK_TYPE(i1)
2990 size_read=size_read+SIZE_VARIABLES_DIAG_BLOCK_TYPE(i1)
2991 & +int(SIZE_GEST_DIAG_BLOCK_TYPE(i1),kind=8)
2992#if !defined(MUMPS_F2003)
2994 & +int(2*SIZE_INT*NbRecords_DIAG_BLOCK_TYPE(i1),kind=8)
2998.EQ.
if(trim(mode)"memory_save") then
2999 Local_SIZE_VARIABLES=sum(SIZE_VARIABLES_DIAG_BLOCK_TYPE)
3000 Local_SIZE_GEST=sum(SIZE_GEST_DIAG_BLOCK_TYPE)
3001#if !defined(MUMPS_F2003)
3002 Local_NbRecords=sum(NbRecords_DIAG_BLOCK_TYPE)
3003 Local_SIZE_GEST=Local_SIZE_GEST+2*SIZE_INT*Local_NbRecords
3008 END SUBROUTINE ZMUMPS_SAVE_RESTORE_DIAG_BLOCK
3009 END MODULE ZMUMPS_LR_DATA_M
if(complex_arithmetic) id
subroutine, public mumps_fdm_end_idx(what, from, iwhandler)
subroutine, public mumps_fdm_start_idx(what, from, iwhandler, info)
subroutine, public zmumps_blr_retrieve_begs_blr_l(iwhandler, begs_blr_l)
subroutine, public zmumps_blr_free_all_panels(iwhandler, loru, keep8, k34)
subroutine, public zmumps_blr_save_diag_block(iwhandler, ipanel, d)
subroutine, public zmumps_blr_struc_to_mod(id_blrarray_encoding)
type(blr_struc_t), dimension(:), pointer, save, public blr_array
subroutine, public zmumps_blr_retrieve_m_array(iwhandler, m_array)
subroutine, public zmumps_blr_save_nfs4father(iwhandler, nfs4father)
subroutine, public zmumps_blr_end_front(iwhandler, info1, keep8, k34, lrsolve_act_opt, mtk405)
subroutine, public zmumps_save_restore_blr(id_blrarray_encoding, unit, myid, mode, size_gest, size_variables, size_int, size_arith_dep, size_logical, total_file_size, total_struc_size, size_read, size_allocated, size_written, info)
subroutine, public zmumps_blr_retrieve_begsblr_sta(iwhandler, begs_blr_static)
subroutine, public zmumps_blr_save_begs_blr_c(iwhandler, begs_blr_col, info)
subroutine, public zmumps_blr_free_m_array(iwhandler)
subroutine, public zmumps_blr_save_m_array(iwhandler, m_array, info)
subroutine, public zmumps_blr_retrieve_panel_loru(iwhandler, loru, ipanel, thelrbpanel)
integer nfs4father_notinit
subroutine, public zmumps_blr_dec_and_tryfree_l(iwhandler, ipanel, keep8, k34)
logical function, public zmumps_blr_empty_panel_loru(iwhandler, loru, ipanel)
subroutine, public zmumps_blr_retrieve_cb_lrb(iwhandler, thecb)
subroutine, public zmumps_blr_init_front(iwhandler, info, mtk405)
subroutine, public zmumps_blr_save_init(iwhandler, issym, ist2, isslave, nb_panels, begs_blr_l, begs_blr_col, nb_accesses_init, info)
subroutine, public zmumps_blr_free_cb_lrb(iwhandler, free_only_struct, keep8, k34)
subroutine, public zmumps_blr_init_module(initial_size, info)
subroutine, public zmumps_blr_mod_to_struc(id_blrarray_encoding)
subroutine, public zmumps_blr_save_begs_blr_dyn(iwhandler, begs_blr_dynamic)
subroutine, public zmumps_blr_retrieve_nfs4father(iwhandler, nfs4father)
subroutine, public zmumps_blr_retrieve_nb_panels(iwhandler, nb_panels)
subroutine, public zmumps_blr_save_cb_lrb(iwhandler, cb_lrb)
integer nb_panels_notinit
subroutine, public zmumps_blr_end_module(info1, keep8, k34, lrsolve_act_opt)
subroutine, public zmumps_blr_dec_and_retrieve_l(iwhandler, ipanel, begs_blr_l, thelrbpanel)
subroutine, public zmumps_blr_retrieve_begsblr_dyn(iwhandler, begs_blr_dynamic)
subroutine, public zmumps_blr_retrieve_diag_block(iwhandler, ipanel, theblock)
subroutine, public zmumps_blr_retrieve_begs_blr_c(iwhandler, begs_blr_col, nb_panels)
subroutine, public zmumps_blr_save_panel_loru(iwhandler, loru, ipanel, lrb_panel)
subroutine, public zmumps_blr_try_free_panel(iwhandler, ipanel, keep8, k34)
subroutine dealloc_lrb(lrb_out, keep8, k34)
subroutine dealloc_blr_panel(blr_panel, iend, keep8, k34, ibeg_in)