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

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(:,:)

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