read_gdata_hdf5 Subroutine

private subroutine read_gdata_hdf5(this, gdata_buf, pos)

Type Bound

gdata_io_t

Arguments

Type IntentOptional Attributes Name
class(gdata_io_t), intent(in) :: this
integer(kind=hsize_t), intent(in) :: gdata_buf(:)
integer, intent(in) :: pos

Contents

Source Code


Source Code

    subroutine read_gdata_hdf5(this, gdata_buf, pos)
        ! Read the gdata of a single determinant from an hdf5 file
        ! Input: gdata_buf - gdata for the determinant at pos, has to be of size this%entry_size
        !        pos - position to put read data into
        class(gdata_io_t), intent(in) :: this
        integer(hsize_t), intent(in) :: gdata_buf(:)
        integer, intent(in) :: pos
        ! only print one warning
        logical, save :: t_warn = .true.

        if (this%t_io()) then
            if (this%entry_size() <= size(gdata_buf)) then
                if (tAutoAdaptiveShift) then
                    call readFValsAsInt(gdata_buf(this%fvals_start:this%fvals_end), pos)
                end if
                if (tScaleBlooms) then
                    ! set the global det data for bloom scaling
                    call set_max_ratio_hdf5Int( &
                        gdata_buf(this%max_ratio_start:this%max_ratio_end), pos)
                end if
                if (tAccumPopsActive) then
                    call readAPValsAsInt(gdata_buf(this%apvals_start:this%apvals_end), pos)
                end if
            else
                if (t_warn) then
                    write(stderr, *) "WARNING: Dimension mismatch in read_gdata_hdf5, ignoring read data"
                    t_warn = .false.
                end if
            end if
        end if
    end subroutine read_gdata_hdf5