adds the values starting from a given position inside the growing array.
if the requested position is outside the current array bounds, the array
will be resized accordingly. if it is inside the current array bounds, the
elements starting from the requested position will be replaced up to
the element at position pos + size(val) - 1
.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(grw_stencilheaderarray_type) | :: | me | ||||
type(tem_stencilHeader_type), | intent(in) | :: | val(:) | |||
integer, | intent(in) | :: | pos | |||
integer, | intent(in), | optional | :: | length |
optional length to expand the array |
subroutine placeat_ga_stencilheader_vec(me, val, pos, length) type(grw_stencilheaderarray_type) :: me !< array to append the value to type(tem_stencilheader_type), intent(in) :: val(:) !< values to append integer, intent(in) :: pos !< predefined position !> optional length to expand the array integer, intent(in), optional :: length integer :: ub, ii if (me%nvals == huge(me%nvals)) then write(*,*) "reached end of integer range for growing array!" write(*,*) "aborting!!" stop end if ub = pos + size(val) - 1 if (ub > me%containersize) then ! expand the array, if its boundary is reached call expand(me = me, pos = ub, length = length) end if me%nvals = max( ub, me%nvals ) do ii = pos, ub me%val(ii) = val(1+ii-pos) end do end subroutine placeat_ga_stencilheader_vec