alloc_var_I2P_4D Subroutine

private subroutine alloc_var_I2P_4D(var, ulb, file_unit, msg, verbose)

Arguments

Type IntentOptional Attributes Name
integer(kind=I2P), intent(inout), allocatable :: var(:,:,:,:)
integer(kind=I4P), intent(in) :: ulb(2,4)
integer(kind=I4P), intent(in), optional :: file_unit
character(len=*), intent(in), optional :: msg
logical, intent(in), optional :: verbose

Calls

proc~~alloc_var_i2p_4d~7~~CallsGraph proc~alloc_var_i2p_4d~7 alloc_var_I2P_4D interface~str str proc~alloc_var_i2p_4d~7->interface~str proc~get_memory_info~7 get_memory_info proc~alloc_var_i2p_4d~7->proc~get_memory_info~7 proc~str_a_i1p str_a_I1P interface~str->proc~str_a_i1p proc~str_a_i2p str_a_I2P interface~str->proc~str_a_i2p proc~str_a_i4p str_a_I4P interface~str->proc~str_a_i4p proc~str_a_i8p str_a_I8P interface~str->proc~str_a_i8p proc~str_a_r4p str_a_R4P interface~str->proc~str_a_r4p proc~str_a_r8p str_a_R8P interface~str->proc~str_a_r8p proc~str_bol str_bol interface~str->proc~str_bol proc~str_i1p str_I1P interface~str->proc~str_i1p proc~str_i2p str_I2P interface~str->proc~str_i2p proc~str_i4p str_I4P interface~str->proc~str_i4p proc~str_i8p str_I8P interface~str->proc~str_i8p proc~str_r4p str_R4P interface~str->proc~str_r4p proc~str_r8p str_R8P interface~str->proc~str_r8p proc~strf_i1p strf_I1P interface~str->proc~strf_i1p proc~strf_i2p strf_I2P interface~str->proc~strf_i2p proc~strf_i4p strf_I4P interface~str->proc~strf_i4p proc~strf_i8p strf_I8P interface~str->proc~strf_i8p proc~strf_r4p strf_R4P interface~str->proc~strf_r4p proc~strf_r8p strf_R8P interface~str->proc~strf_r8p interface~cton cton proc~get_memory_info~7->interface~cton proc~ctoi_i1p ctoi_I1P interface~cton->proc~ctoi_i1p proc~ctoi_i2p ctoi_I2P interface~cton->proc~ctoi_i2p proc~ctoi_i4p ctoi_I4P interface~cton->proc~ctoi_i4p proc~ctoi_i8p ctoi_I8P interface~cton->proc~ctoi_i8p proc~ctor_r4p ctor_R4P interface~cton->proc~ctor_r4p proc~ctor_r8p ctor_R8P interface~cton->proc~ctor_r8p proc~str_a_i1p->proc~str_i1p proc~str_a_i2p->proc~str_i2p proc~str_a_i4p->proc~str_i4p proc~str_a_i8p->proc~str_i8p proc~str_a_r4p->proc~str_r4p proc~str_a_r8p->proc~str_r8p proc~compact_real_string compact_real_string proc~str_r4p->proc~compact_real_string proc~str_r8p->proc~compact_real_string

Called by

proc~~alloc_var_i2p_4d~7~~CalledByGraph proc~alloc_var_i2p_4d~7 alloc_var_I2P_4D interface~allocate_variable~7 allocate_variable interface~allocate_variable~7->proc~alloc_var_i2p_4d~7 proc~assign_allocatable_i1p_1d~7 assign_allocatable_I1P_1D proc~assign_allocatable_i1p_1d~7->interface~allocate_variable~7 proc~assign_allocatable_i1p_2d~7 assign_allocatable_I1P_2D proc~assign_allocatable_i1p_2d~7->interface~allocate_variable~7 proc~assign_allocatable_i1p_3d~7 assign_allocatable_I1P_3D proc~assign_allocatable_i1p_3d~7->interface~allocate_variable~7 proc~assign_allocatable_i1p_4d~7 assign_allocatable_I1P_4D proc~assign_allocatable_i1p_4d~7->interface~allocate_variable~7 proc~assign_allocatable_i1p_5d~7 assign_allocatable_I1P_5D proc~assign_allocatable_i1p_5d~7->interface~allocate_variable~7 proc~assign_allocatable_i1p_6d~7 assign_allocatable_I1P_6D proc~assign_allocatable_i1p_6d~7->interface~allocate_variable~7 proc~assign_allocatable_i1p_7d~7 assign_allocatable_I1P_7D proc~assign_allocatable_i1p_7d~7->interface~allocate_variable~7 proc~assign_allocatable_i2p_1d~7 assign_allocatable_I2P_1D proc~assign_allocatable_i2p_1d~7->interface~allocate_variable~7 proc~assign_allocatable_i2p_2d~7 assign_allocatable_I2P_2D proc~assign_allocatable_i2p_2d~7->interface~allocate_variable~7 proc~assign_allocatable_i2p_3d~7 assign_allocatable_I2P_3D proc~assign_allocatable_i2p_3d~7->interface~allocate_variable~7 proc~assign_allocatable_i2p_4d~7 assign_allocatable_I2P_4D proc~assign_allocatable_i2p_4d~7->interface~allocate_variable~7 proc~assign_allocatable_i2p_5d~7 assign_allocatable_I2P_5D proc~assign_allocatable_i2p_5d~7->interface~allocate_variable~7 proc~assign_allocatable_i2p_6d~7 assign_allocatable_I2P_6D proc~assign_allocatable_i2p_6d~7->interface~allocate_variable~7 proc~assign_allocatable_i2p_7d~7 assign_allocatable_I2P_7D proc~assign_allocatable_i2p_7d~7->interface~allocate_variable~7 proc~assign_allocatable_i4p_1d~7 assign_allocatable_I4P_1D proc~assign_allocatable_i4p_1d~7->interface~allocate_variable~7 proc~assign_allocatable_i4p_2d~7 assign_allocatable_I4P_2D proc~assign_allocatable_i4p_2d~7->interface~allocate_variable~7 proc~assign_allocatable_i4p_3d~7 assign_allocatable_I4P_3D proc~assign_allocatable_i4p_3d~7->interface~allocate_variable~7 proc~assign_allocatable_i4p_4d~7 assign_allocatable_I4P_4D proc~assign_allocatable_i4p_4d~7->interface~allocate_variable~7 proc~assign_allocatable_i4p_5d~7 assign_allocatable_I4P_5D proc~assign_allocatable_i4p_5d~7->interface~allocate_variable~7 proc~assign_allocatable_i4p_6d~7 assign_allocatable_I4P_6D proc~assign_allocatable_i4p_6d~7->interface~allocate_variable~7 proc~assign_allocatable_i4p_7d~7 assign_allocatable_I4P_7D proc~assign_allocatable_i4p_7d~7->interface~allocate_variable~7 proc~assign_allocatable_i8p_1d~7 assign_allocatable_I8P_1D proc~assign_allocatable_i8p_1d~7->interface~allocate_variable~7 proc~assign_allocatable_i8p_2d~7 assign_allocatable_I8P_2D proc~assign_allocatable_i8p_2d~7->interface~allocate_variable~7 proc~assign_allocatable_i8p_3d~7 assign_allocatable_I8P_3D proc~assign_allocatable_i8p_3d~7->interface~allocate_variable~7 proc~assign_allocatable_i8p_4d~7 assign_allocatable_I8P_4D proc~assign_allocatable_i8p_4d~7->interface~allocate_variable~7 proc~assign_allocatable_i8p_5d~7 assign_allocatable_I8P_5D proc~assign_allocatable_i8p_5d~7->interface~allocate_variable~7 proc~assign_allocatable_i8p_6d~7 assign_allocatable_I8P_6D proc~assign_allocatable_i8p_6d~7->interface~allocate_variable~7 proc~assign_allocatable_i8p_7d~7 assign_allocatable_I8P_7D proc~assign_allocatable_i8p_7d~7->interface~allocate_variable~7 proc~assign_allocatable_r16p_1d~7 assign_allocatable_R16P_1D proc~assign_allocatable_r16p_1d~7->interface~allocate_variable~7 proc~assign_allocatable_r16p_2d~7 assign_allocatable_R16P_2D proc~assign_allocatable_r16p_2d~7->interface~allocate_variable~7 proc~assign_allocatable_r16p_3d~7 assign_allocatable_R16P_3D proc~assign_allocatable_r16p_3d~7->interface~allocate_variable~7 proc~assign_allocatable_r16p_4d~7 assign_allocatable_R16P_4D proc~assign_allocatable_r16p_4d~7->interface~allocate_variable~7 proc~assign_allocatable_r16p_5d~7 assign_allocatable_R16P_5D proc~assign_allocatable_r16p_5d~7->interface~allocate_variable~7 proc~assign_allocatable_r16p_6d~7 assign_allocatable_R16P_6D proc~assign_allocatable_r16p_6d~7->interface~allocate_variable~7 proc~assign_allocatable_r16p_7d~7 assign_allocatable_R16P_7D proc~assign_allocatable_r16p_7d~7->interface~allocate_variable~7 proc~assign_allocatable_r4p_1d~7 assign_allocatable_R4P_1D proc~assign_allocatable_r4p_1d~7->interface~allocate_variable~7 proc~assign_allocatable_r4p_2d~7 assign_allocatable_R4P_2D proc~assign_allocatable_r4p_2d~7->interface~allocate_variable~7 proc~assign_allocatable_r4p_3d~7 assign_allocatable_R4P_3D proc~assign_allocatable_r4p_3d~7->interface~allocate_variable~7 proc~assign_allocatable_r4p_4d~7 assign_allocatable_R4P_4D proc~assign_allocatable_r4p_4d~7->interface~allocate_variable~7 proc~assign_allocatable_r4p_5d~7 assign_allocatable_R4P_5D proc~assign_allocatable_r4p_5d~7->interface~allocate_variable~7 proc~assign_allocatable_r4p_6d~7 assign_allocatable_R4P_6D proc~assign_allocatable_r4p_6d~7->interface~allocate_variable~7 proc~assign_allocatable_r4p_7d~7 assign_allocatable_R4P_7D proc~assign_allocatable_r4p_7d~7->interface~allocate_variable~7 proc~assign_allocatable_r8p_1d~7 assign_allocatable_R8P_1D proc~assign_allocatable_r8p_1d~7->interface~allocate_variable~7 proc~assign_allocatable_r8p_2d~7 assign_allocatable_R8P_2D proc~assign_allocatable_r8p_2d~7->interface~allocate_variable~7 proc~assign_allocatable_r8p_3d~7 assign_allocatable_R8P_3D proc~assign_allocatable_r8p_3d~7->interface~allocate_variable~7 proc~assign_allocatable_r8p_4d~7 assign_allocatable_R8P_4D proc~assign_allocatable_r8p_4d~7->interface~allocate_variable~7 proc~assign_allocatable_r8p_5d~7 assign_allocatable_R8P_5D proc~assign_allocatable_r8p_5d~7->interface~allocate_variable~7 proc~assign_allocatable_r8p_6d~7 assign_allocatable_R8P_6D proc~assign_allocatable_r8p_6d~7->interface~allocate_variable~7 proc~assign_allocatable_r8p_7d~7 assign_allocatable_R8P_7D proc~assign_allocatable_r8p_7d~7->interface~allocate_variable~7 interface~assign_allocatable~7 assign_allocatable interface~assign_allocatable~7->proc~assign_allocatable_i1p_1d~7 interface~assign_allocatable~7->proc~assign_allocatable_i1p_2d~7 interface~assign_allocatable~7->proc~assign_allocatable_i1p_3d~7 interface~assign_allocatable~7->proc~assign_allocatable_i1p_4d~7 interface~assign_allocatable~7->proc~assign_allocatable_i1p_5d~7 interface~assign_allocatable~7->proc~assign_allocatable_i1p_6d~7 interface~assign_allocatable~7->proc~assign_allocatable_i1p_7d~7 interface~assign_allocatable~7->proc~assign_allocatable_i2p_1d~7 interface~assign_allocatable~7->proc~assign_allocatable_i2p_2d~7 interface~assign_allocatable~7->proc~assign_allocatable_i2p_3d~7 interface~assign_allocatable~7->proc~assign_allocatable_i2p_4d~7 interface~assign_allocatable~7->proc~assign_allocatable_i2p_5d~7 interface~assign_allocatable~7->proc~assign_allocatable_i2p_6d~7 interface~assign_allocatable~7->proc~assign_allocatable_i2p_7d~7 interface~assign_allocatable~7->proc~assign_allocatable_i4p_1d~7 interface~assign_allocatable~7->proc~assign_allocatable_i4p_2d~7 interface~assign_allocatable~7->proc~assign_allocatable_i4p_3d~7 interface~assign_allocatable~7->proc~assign_allocatable_i4p_4d~7 interface~assign_allocatable~7->proc~assign_allocatable_i4p_5d~7 interface~assign_allocatable~7->proc~assign_allocatable_i4p_6d~7 interface~assign_allocatable~7->proc~assign_allocatable_i4p_7d~7 interface~assign_allocatable~7->proc~assign_allocatable_i8p_1d~7 interface~assign_allocatable~7->proc~assign_allocatable_i8p_2d~7 interface~assign_allocatable~7->proc~assign_allocatable_i8p_3d~7 interface~assign_allocatable~7->proc~assign_allocatable_i8p_4d~7 interface~assign_allocatable~7->proc~assign_allocatable_i8p_5d~7 interface~assign_allocatable~7->proc~assign_allocatable_i8p_6d~7 interface~assign_allocatable~7->proc~assign_allocatable_i8p_7d~7 interface~assign_allocatable~7->proc~assign_allocatable_r4p_1d~7 interface~assign_allocatable~7->proc~assign_allocatable_r4p_2d~7 interface~assign_allocatable~7->proc~assign_allocatable_r4p_3d~7 interface~assign_allocatable~7->proc~assign_allocatable_r4p_4d~7 interface~assign_allocatable~7->proc~assign_allocatable_r4p_5d~7 interface~assign_allocatable~7->proc~assign_allocatable_r4p_6d~7 interface~assign_allocatable~7->proc~assign_allocatable_r4p_7d~7 interface~assign_allocatable~7->proc~assign_allocatable_r8p_1d~7 interface~assign_allocatable~7->proc~assign_allocatable_r8p_2d~7 interface~assign_allocatable~7->proc~assign_allocatable_r8p_3d~7 interface~assign_allocatable~7->proc~assign_allocatable_r8p_4d~7 interface~assign_allocatable~7->proc~assign_allocatable_r8p_5d~7 interface~assign_allocatable~7->proc~assign_allocatable_r8p_6d~7 interface~assign_allocatable~7->proc~assign_allocatable_r8p_7d~7

Source Code

   subroutine alloc_var_I2P_4D(var, ulb, file_unit, msg, verbose)
   !< Allocate CPU variable with memory checking (kind I2P, rank 4).
   !<
   !<```fortran
   !< use penf
   !< integer(I2P), allocatable :: a(:,:,:,:)
   !< integer(I4P)              :: ulb(2,4)=reshape([1,1, &
   !<                                                1,2, &
   !<                                                1,3, &
   !<                                                1,4],&
   !<                                               [2,4])
   !< open(unit=666, file='doctest-mem.log')
   !< call allocate_variable(a, ulb, file_unit=666, verbose=.true.)
   !< close(666, status='delete')
   !< print*, allocated(a)
   !<```
   !=> T <<<
   integer(I2P), allocatable, intent(inout)        :: var(:,:,:,:)        !< Varibale to be allocate on CPU.
   integer(I4P),              intent(in)           :: ulb(2,4)            !< Upper/lower bounds of variable.
   integer(I4P),              intent(in), optional :: file_unit           !< File unit for verbose output.
   character(*),              intent(in), optional :: msg                 !< Message to be printed in verbose mode.
   logical,                   intent(in), optional :: verbose             !< Flag to activate verbose mode.
   integer(I4P)                                    :: file_unit_          !< File unit for verbose output, local var.
   character(:), allocatable                       :: msg_                !< Message to be printed in verbose mode, local var.
   logical                                         :: verbose_            !< Flag to activate verbose mode, local var.
   integer(I8P)                                    :: mem_free, mem_total !< CPU memory.

   file_unit_ = stdout  ; if (present(file_unit)) file_unit_ = file_unit
   msg_       = ''      ; if (present(msg    ))   msg_       = msg
   verbose_   = .false. ; if (present(verbose))   verbose_   = verbose
   if (allocated(var)) deallocate(var)
   if (verbose_) then
      call get_memory_info(mem_total, mem_free)
      write(file_unit_,'(A)') msg_//'free/total memory BEFORE allocate:'//trim(str([mem_free,mem_total]))//'[bytes]'
   endif
   allocate(var(ulb(1,1):ulb(2,1), ulb(1,2):ulb(2,2), ulb(1,3):ulb(2,3), ulb(1,4):ulb(2,4)))
   if (verbose_) then
      call get_memory_info(mem_total, mem_free)
      write(file_unit_,'(A)') msg_//'free/total memory AFTER  allocate:'//trim(str([mem_free,mem_total]))//'[bytes]'
   endif
   endsubroutine alloc_var_I2P_4D