append_dp Module Subroutine

pure module subroutine append_dp(array_, element_)

append element to an array (double precision version)

Arguments

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

Contents

Source Code


Variables

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

Source Code

      pure module subroutine append_dp(array_, element_)
         !! append element to an array (double precision version)
         real(dp), allocatable, intent(inout)  :: array_(:)
         real(dp), intent(in)               :: element_
         !---------------------------------------------------------------------!
         real(dp), 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_dp