resize_alloc.f90.html | |
Source file: resize_alloc.f90 | |
Directory: /home/rjl/git/rjleveque/clawpack-4.x/amrclaw/2d/lib | |
Converted: Sun May 15 2011 at 19:16:16 using clawcode2html | |
This documentation file will not reflect any later changes in the source file. |
! ============================================================================ ! Program: AMRClaw ! File: resize_storage.f90 ! Created: 2009-01-21 ! Author: Kyle Mandli and Marsha Berger ! ============================================================================ ! Description: Resize the alloc array for AMR storage ! ============================================================================ ! NOTE: Older f90 compilers (e.g. gfortran prior to 4.2?) ! may not implement move_alloc. If this fails, you may need to use ! resize_storage_static.f90 instead of this routine and set the ! allocation large enough in init_alloc.f90 to avoid running out of space. subroutine resize_storage(new_size,status) use mem_storage implicit none integer, intent(out) :: status integer, intent(in) :: new_size double precision, pointer, dimension(:) :: alloc integer :: memsize common /calloc/ alloc,memsize double precision, allocatable, target, dimension(:) :: new_storage if (memsize < new_size) then print *, "Expanding storage from ", memsize," to ", new_size allocate(new_storage(new_size),STAT=status) if (status > 0) then return endif new_storage(1:memsize) = storage call move_alloc(new_storage,storage) alloc => storage memsize = new_size else print *,'new_size < memsize,' stop endif return end subroutine resize_storage