append_sp Module Subroutine

pure module subroutine append_sp(array_, element_)

append element to an array (single precision version)

Arguments

Type IntentOptional Attributes Name
real(kind=sp), intent(inout), allocatable :: array_(:)
real(kind=sp), intent(in) :: element_

Contents

Source Code


Variables

Type Visibility Attributes Name Initial
real(kind=sp), private, allocatable :: tmp_array_(:)

Source Code

      pure module subroutine append_sp(array_, element_)
         !! append element to an array (single precision version)
         real(sp), allocatable, intent(inout)  :: array_(:)
         real(sp), intent(in)               :: element_
         !---------------------------------------------------------------------!
         real(sp), allocatable :: tmp_array_(:)
         !---------------------------------------------------------------------!
         if (allocated(array_)) then
            allocate(tmp_array_(size(array_)+1))
            tmp_array_(:size(array_)) = array_(:)
            tmp_array_(size(array_)+1)    = element_
            deallocate(array_)
            allocate(array_(size(tmp_array_)))
            call move_alloc(tmp_array_, array_)
         else
            allocate(array_(1))
            array_(1) = element_
         endif
      !------------------------------------------------------------------------!
      !------------------------------------------------------------------------!
      end subroutine append_sp