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 | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(dense_lMat_t), | intent(inout) | :: | this | |||
integer(kind=int64), | intent(inout), | allocatable | :: | indices(:,:) | ||
integer(kind=int64), | intent(inout), | allocatable | :: | entries(:,:) |
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