append_ga_dtint2d_vec Subroutine

public subroutine append_ga_dtint2d_vec(me, val, length)


Type IntentOptional Attributes Name
type(grw_dtint2darray_type) :: me
type(intArray2d_type), intent(in) :: val(:)
integer, intent(in), optional :: length

optional length to expand the array


proc~~append_ga_dtint2d_vec~~CallsGraph proc~append_ga_dtint2d_vec append_ga_dtint2d_vec interface~expand~22 expand proc~append_ga_dtint2d_vec->interface~expand~22 proc~expand_ga2d_real expand_ga2d_real interface~expand~22->proc~expand_ga2d_real

Called by

proc~~append_ga_dtint2d_vec~~CalledByGraph proc~append_ga_dtint2d_vec append_ga_dtint2d_vec interface~append~16 append interface~append~16->proc~append_ga_dtint2d_vec


Source Code

Source Code

  subroutine append_ga_dtint2d_vec(me, val, length)
    type(grw_dtint2darray_type) :: me !< array to append the value to
    type(intarray2d_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!!"
    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_dtint2d_vec