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 | 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