read_op_dense_hdf5 Subroutine

private subroutine read_op_dense_hdf5(this, indices, entries)

This is the operation to be performed on each block of data read from an hdf5 file both arguments may or may not be still allocated upon return @param[in,out] indices chunk of indices read in from the file @param[in,out] entries chunk of corresponding values

Type Bound

dense_lMat_t

Arguments

Type IntentOptional Attributes Name
class(dense_lMat_t), intent(inout) :: this
integer(kind=int64), intent(inout), allocatable :: indices(:,:)
integer(kind=int64), intent(inout), allocatable :: entries(:,:)

Contents

Source Code


Source Code

    subroutine read_op_dense_hdf5(this, indices, entries)
        class(dense_lMat_t), intent(inout) :: this
        integer(int64), allocatable, intent(inout) :: indices(:, :), entries(:, :)
        integer(int64) :: i, this_blocksize
        HElement_t(dp) :: rVal
        routine_name("read_op_dense_hdf5")

        this_blocksize = size(entries, dim=2)

        do i = 1, this_blocksize
            ! truncate down to lMatEps
#ifdef CMPLX_
            call stop_all(this_routine, "not implemented for complex")
#else
            rVal = 3.0_dp * transfer(entries(1, i), rVal)
#endif
            call freeze_lmat(rVal, indices(:,i))
            if(abs(rVal)>lMatEps) then
                call this%set_elem(this%indexFunc(int(indices(1,i),int64),int(indices(2,i),int64),&
                    int(indices(3,i),int64),&
                    int(indices(4,i),int64),int(indices(5,i),int64),int(indices(6,i),int64)) &
                    , rVal)
            endif
        end do
    end subroutine read_op_dense_hdf5