Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(grw_matrixarray_type) | :: | me | ||||
type(tem_matrix_type), | intent(in) | :: | val(:) | |||
integer, | intent(in), | optional | :: | length |
optional length to expand the array |
subroutine append_ga_matrix_vec(me, val, length)
type(grw_matrixarray_type) :: me !< array to append the value to
type(tem_matrix_type), intent(in) :: val(:) !< values to append
!> optional length to expand the array
integer, intent(in), optional :: length
integer :: lb, ub, ii
if (me%nvals == huge(me%nvals)) then
write(*,*) "reached end of integer range for growing array!"
write(*,*) "aborting!!"
stop
end if
lb = me%nvals + 1
ub = lb + 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 = lb, ub
me%val(ii) = val(1+ii-lb)
end do
end subroutine append_ga_matrix_vec