379 & ,SIZE_GEST,SIZE_VARIABLES
380 & ,SIZE_INT, TOTAL_FILE_SIZE,TOTAL_STRUC_SIZE
381 & ,size_read,size_allocated,size_written
411 CHARACTER,
DIMENSION(:),
POINTER :: id_fdm_f_encoding
412 INTEGER,
intent(IN)::unit,myid
413 CHARACTER(len=*),
intent(IN) :: mode
414 INTEGER,
INTENT(OUT) :: size_gest
415 INTEGER(8),
intent(OUT) :: size_variables
416 INTEGER(8),
intent(IN) :: total_file_size,total_struc_size
417 INTEGER,
intent(INOUT):: info(2)
418 INTEGER,
intent(IN):: size_int
419 INTEGER(8),
intent(INOUT):: size_read,size_allocated,size_written
420 INTEGER:: nbrecords,nbsubrecords
421 INTEGER:: size_gest_fdm_f
422 INTEGER(8):: size_variables_fdm_f
426 size_variables_fdm_f=0_8
429 if((trim(mode).EQ.
"memory_save").OR.(trim(mode).EQ.
"save"))
then
432 if(trim(mode).EQ.
"memory_save")
then
435 & ,unit,myid,
"memory_save"
437 & ,size_variables_fdm_f
438 & ,size_int,total_file_size,total_struc_size
439 & ,size_read,size_allocated,size_written
441 elseif(trim(mode).EQ.
"save")
then
446 & ,size_variables_fdm_f
447 & ,size_int,total_file_size,total_struc_size
448 & ,size_read,size_allocated,size_written
450 IF ( info(1) .LT. 0 )
GOTO 100
451 elseif(trim(mode).EQ.
"restore")
then
454 & ,unit,myid,
"restore"
456 & ,size_variables_fdm_f
457 & ,size_int, total_file_size,total_struc_size
458 & ,size_read,size_allocated,size_written
460 IF ( info(1) .LT. 0 )
GOTO 100
462 if(trim(mode).EQ.
"memory_save")
then
466 nbsubrecords=int(size_variables/huge(i4))
467 IF(nbsubrecords.GT.0)
then
468 nbrecords=nbrecords+nbsubrecords
470 elseif(trim(mode).EQ.
"save")
then
471 size_written=size_written+size_variables
472 & +int(size_gest,kind=8)
473#if !defined(MUMPS_F2003)
474 size_written=size_written
475 & +int(2*size_int*nbrecords,kind=8)
477 elseif(trim(mode).EQ.
"restore")
then
478 size_allocated=size_allocated+size_variables
479 size_read=size_read+size_variables
480 & +int(size_gest,kind=8)
481#if !defined(MUMPS_F2003)
483 & +int(2*size_int*nbrecords,kind=8)
486 if(trim(mode).EQ.
"memory_save")
then
487 size_variables=size_variables+size_variables_fdm_f
488 size_gest=size_gest+size_gest_fdm_f
489#if !defined(MUMPS_F2003)
493 size_gest=size_gest+2*size_int*nbrecords
503 & ,Local_SIZE_GEST,Local_SIZE_VARIABLES
504 & ,SIZE_INT ,TOTAL_FILE_SIZE,TOTAL_STRUC_SIZE
505 & ,size_read,size_allocated,size_written
536 INTEGER,
intent(IN)::unit,MYID
537 CHARACTER(len=*),
intent(IN) :: mode
538 INTEGER,
INTENT(OUT) :: Local_SIZE_GEST
539 INTEGER(8),
intent(OUT) :: Local_SIZE_VARIABLES
540 INTEGER,
intent(INOUT):: INFO(2)
541 INTEGER,
intent(IN):: SIZE_INT
542 INTEGER(8),
intent(IN) :: TOTAL_FILE_SIZE,TOTAL_STRUC_SIZE
543 INTEGER(8),
intent(INOUT):: size_read,size_allocated,size_written
544 INTEGER :: NBVARIABLES_FDM_STRUC_T
545 parameter(nbvariables_fdm_struc_t = 3)
546 CHARACTER(len=30),
dimension(NBVARIABLES_FDM_STRUC_T)::
547 & variables_fdm_struc_t
548 CHARACTER(len=30) :: TMP_STRING
549 INTEGER(8),
dimension(NBVARIABLES_FDM_STRUC_T)::
550 & size_variables_fdm_struc_t
551 INTEGER,
dimension(NBVARIABLES_FDM_STRUC_T)::SIZE_GEST_FDM_STRUC_T
552 INTEGER,
dimension(NBVARIABLES_FDM_STRUC_T)::NbRecords_FDM_STRUC_T
553 INTEGER:: size_array1,dummy,allocok
554 INTEGER:: err,i1,NbSubRecords,Local_NbRecords
556 variables_fdm_struc_t(1)=
"NB_FREE_IDX"
557 variables_fdm_struc_t(2)=
"STACK_FREE_IDX"
558 variables_fdm_struc_t(3)=
"COUNT_ACCESS"
559 size_variables_fdm_struc_t(:)=0_8
560 size_gest_fdm_struc_t(:)=0
561 nbrecords_fdm_struc_t(:)=0
565 DO i1=1,nbvariables_fdm_struc_t
566 tmp_string = variables_fdm_struc_t(i1)
567 SELECT CASE(tmp_string)
569 nbrecords_fdm_struc_t(i1)=1
570 if(trim(mode).EQ.
"memory_save")
then
571 size_variables_fdm_struc_t(i1)=size_int
572 elseif(trim(mode).EQ.
"save")
then
573 size_variables_fdm_struc_t(i1)=size_int
574 write(unit,iostat=err) fdm_struc%NB_FREE_IDX
580 IF ( info(1) .LT. 0 )
GOTO 100
581 elseif(trim(mode).EQ.
"restore")
then
582 size_variables_fdm_struc_t(i1)=size_int
583 read(unit,iostat=err) fdm_struc%NB_FREE_IDX
589 IF ( info(1) .LT. 0 )
GOTO 100
591 CASE(
"STACK_FREE_IDX")
592 nbrecords_fdm_struc_t(i1)=2
593 if(trim(mode).EQ.
"memory_save")
then
594 IF(
associated(fdm_struc%STACK_FREE_IDX))
THEN
595 size_gest_fdm_struc_t(i1)=size_int
596 size_variables_fdm_struc_t(i1)=
597 &
size(fdm_struc%STACK_FREE_IDX,1)*size_int
599 size_gest_fdm_struc_t(i1)=size_int*2
600 size_variables_fdm_struc_t(i1)=0_8
602 elseif(trim(mode).EQ.
"save")
then
603 IF(
associated(fdm_struc%STACK_FREE_IDX))
THEN
604 size_gest_fdm_struc_t(i1)=size_int
605 size_variables_fdm_struc_t(i1)=
606 &
size(fdm_struc%STACK_FREE_IDX,1)*size_int
607 write(unit,iostat=err)
608 &
size(fdm_struc%STACK_FREE_IDX,1)
614 IF ( info(1) .LT. 0 )
GOTO 100
615 write(unit,iostat=err) fdm_struc%STACK_FREE_IDX
617 size_gest_fdm_struc_t(i1)=size_int*2
618 size_variables_fdm_struc_t(i1)=0_8
619 write(unit,iostat=err) -999
625 IF ( info(1) .LT. 0 )
GOTO 100
626 write(unit,iostat=err) -999
633 IF ( info(1) .LT. 0 )
GOTO 100
634 elseif(trim(mode).EQ.
"restore")
then
635 nullify(fdm_struc%STACK_FREE_IDX)
636 read(unit,iostat=err) size_array1
642 IF ( info(1) .LT. 0 )
GOTO 100
643 if(size_array1.EQ.-999)
then
644 size_gest_fdm_struc_t(i1)=size_int*2
645 size_variables_fdm_struc_t(i1)=0_8
646 read(unit,iostat=err) dummy
648 size_gest_fdm_struc_t(i1)=size_int
649 size_variables_fdm_struc_t(i1)=size_array1*size_int
650 allocate(fdm_struc%STACK_FREE_IDX(size_array1),
652 if (allocok .GT. 0)
THEN
655 & total_struc_size-size_allocated
658 read(unit,iostat=err) fdm_struc%STACK_FREE_IDX
660 IF ( info(1) .LT. 0 )
GOTO 100
666 IF ( info(1) .LT. 0 )
GOTO 100
669 nbrecords_fdm_struc_t(i1)=2
670 if(trim(mode).EQ.
"memory_save")
then
671 IF(
associated(fdm_struc%COUNT_ACCESS))
THEN
672 size_gest_fdm_struc_t(i1)=size_int
673 size_variables_fdm_struc_t(i1)=
674 &
size(fdm_struc%COUNT_ACCESS,1)*size_int
676 size_gest_fdm_struc_t(i1)=size_int*2
677 size_variables_fdm_struc_t(i1)=0_8
679 elseif(trim(mode).EQ.
"save")
then
680 IF(
associated(fdm_struc%COUNT_ACCESS))
THEN
681 size_gest_fdm_struc_t(i1)=size_int
682 size_variables_fdm_struc_t(i1)=
683 &
size(fdm_struc%COUNT_ACCESS,1)*size_int
684 write(unit,iostat=err)
685 &
size(fdm_struc%COUNT_ACCESS,1)
691 IF ( info(1) .LT. 0 )
GOTO 100
692 write(unit,iostat=err) fdm_struc%COUNT_ACCESS
694 size_gest_fdm_struc_t(i1)=size_int*2
695 size_variables_fdm_struc_t(i1)=0_8
696 write(unit,iostat=err) -999
702 IF ( info(1) .LT. 0 )
GOTO 100
703 write(unit,iostat=err) -999
710 IF ( info(1) .LT. 0 )
GOTO 100
711 elseif(trim(mode).EQ.
"restore")
then
712 nullify(fdm_struc%COUNT_ACCESS)
713 read(unit,iostat=err) size_array1
719 IF ( info(1) .LT. 0 )
GOTO 100
720 if(size_array1.EQ.-999)
then
721 size_gest_fdm_struc_t(i1)=size_int*2
722 size_variables_fdm_struc_t(i1)=0_8
723 read(unit,iostat=err) dummy
725 size_gest_fdm_struc_t(i1)=size_int
726 size_variables_fdm_struc_t(i1)=size_array1*size_int
727 allocate(fdm_struc%COUNT_ACCESS(size_array1),
729 if (allocok .GT. 0)
THEN
732 & total_struc_size-size_allocated
735 read(unit,iostat=err) fdm_struc%COUNT_ACCESS
737 IF ( info(1) .LT. 0 )
GOTO 100
743 IF ( info(1) .LT. 0 )
GOTO 100
747 if(trim(mode).EQ.
"memory_save")
then
751 nbsubrecords=int(size_variables_fdm_struc_t(i1)/huge(i4))
752 IF(nbsubrecords.GT.0)
then
753 nbrecords_fdm_struc_t(i1)=nbrecords_fdm_struc_t(i1)
756 elseif(trim(mode).EQ.
"save")
then
757 size_written=size_written+size_variables_fdm_struc_t(i1)
758 & +int(size_gest_fdm_struc_t
759#if !defined(MUMPS_F2003)
760 size_written=size_written
761 & +int(2*size_int*nbrecords_fdm_struc_t(i1),kind=8)
763 elseif(trim(mode).EQ.
"restore")
then
764 size_allocated=size_allocated+
765 & size_variables_fdm_struc_t(i1)
766 size_read=size_read+size_variables_fdm_struc_t(i1)
767 & +int(size_gest_fdm_struc_t(i1),kind=8)
768#if !defined(MUMPS_F2003)
770 & +int(2*size_int*nbrecords_fdm_struc_t(i1),kind=8)
774 if(trim(mode).EQ.
"memory_save")
then
775 local_size_variables=sum(size_variables_fdm_struc_t)
776 local_size_gest=sum(size_gest_fdm_struc_t)
777#if !defined(MUMPS_F2003)
778 local_nbrecords=sum(nbrecords_fdm_struc_t)
779 local_size_gest=local_size_gest+2*size_int*local_nbrecords