subroutine assign_allocatable_I8P_6D(lhs, rhs, file_unit, msg, verbose)
!< Assign CPU variable with memory checking (kind I8P, rank 6).
!< Variable is returned not allocated if right hand side is not allocated.
!<
!<```fortran
!< use penf
!< integer(I8P), allocatable :: a(:,:,:,:,:,:), b(:,:,:,:,:,:)
!< allocate(b(1:1,1:2,1:3,1:4,1:5,1:6))
!< call assign_allocatable(a, b)
!< print*, allocated(a)
!<```
!=> T <<<
integer(I8P), allocatable, intent(inout) :: lhs(:,:,:,:,:,:) !< Left hand side of assignement.
integer(I8P), allocatable, intent(in) :: rhs(:,:,:,:,:,:) !< Right hand side of assignement.
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.
if (allocated(lhs)) deallocate(lhs)
if (allocated(rhs)) then
if (size(rhs, dim=1)*size(rhs, dim=2)*size(rhs, dim=3)*size(rhs, dim=4)*size(rhs, dim=5)*size(rhs, dim=6)>0) then
call allocate_variable(var=lhs, &
ulb=reshape([lbound(rhs,dim=1),ubound(rhs,dim=1), &
lbound(rhs,dim=2),ubound(rhs,dim=2), &
lbound(rhs,dim=3),ubound(rhs,dim=3), &
lbound(rhs,dim=4),ubound(rhs,dim=4), &
lbound(rhs,dim=5),ubound(rhs,dim=5), &
lbound(rhs,dim=6),ubound(rhs,dim=6)],[2,6]), &
file_unit=file_unit, msg=msg, verbose=verbose)
lhs = rhs
endif
endif
endsubroutine assign_allocatable_I8P_6D