Skip to content
Snippets Groups Projects
Commit 6fc9a1c3 authored by Douglas Guptill's avatar Douglas Guptill
Browse files

same as octreesolve_shrink_xyz, for different type

parent 3b44929e
No related branches found
No related tags found
No related merge requests found
subroutine octreelsf_shrink_xyz(os, threadinfo)
! resize the x,y,z arrays.
! Author: Douglas Guptill
! Copyright (c) 2009 Douglas Guptill. All rights reserved.
! 2009-07-27: new, from a copy of octreesolve_shring_xyz,
! and identical to it,
! except for the type of the first parameter.
! I wish I knew a better way.!
use threads
use definitions
implicit none
! parameters, in
type (thread) threadinfo
! parameters, in/out
type (octreelsf) os
! local variables
integer i, new_size
double precision, dimension(:),pointer::t
new_size = os%nnode
! make a temporary array
allocate (t(new_size),stat=threadinfo%err)
call heap (threadinfo, 't', 'octreelsf_shrink_xyz...', size(t), 'dp', +1)
! shrink x...............................................
! transfer the x data to it
do i = 1, new_size
t(i) = os%x(i)
enddo
! delete and re-create the x array
call heap (threadinfo, 'os%x', 'octreelsf_shrink_xyz...', size(os%x), 'dp', -1)
deallocate(os%x)
allocate (os%x(new_size),stat=threadinfo%err)
call heap (threadinfo, 'os%x', 'octreelsf_shrink_xyz...', size(os%x), 'dp', +1)
! transfer the data from the temporary array to the new x aray
do i = 1, new_size
os%x(i) = t(i)
enddo
! shrink y...............................................
! transfer the y data to it
do i = 1, new_size
t(i) = os%y(i)
enddo
! delete and re-create the y array
call heap (threadinfo, 'os%y', 'octreelsf_shrink_xyz...', size(os%y), 'dp', -1)
deallocate(os%y)
allocate (os%y(new_size),stat=threadinfo%err)
call heap (threadinfo, 'os%y', 'octreelsf_shrink_xyz...', size(os%y), 'dp', +1)
! transfer the data from the temporary array to the new y aray
do i = 1, new_size
os%y(i) = t(i)
enddo
! shrink z...............................................
! transfer the z data to it
do i = 1, new_size
t(i) = os%z(i)
enddo
! delete and re-create the z array
call heap (threadinfo, 'os%z', 'octreelsf_shrink_xyz...', size(os%z), 'dp', -1)
deallocate(os%z)
allocate (os%z(new_size),stat=threadinfo%err)
call heap (threadinfo, 'os%z', 'octreelsf_shrink_xyz...', size(os%z), 'dp', +1)
! transfer the data from the temporary array to the new z aray
do i = 1, new_size
os%z(i) = t(i)
enddo
! delete the temporary array
call heap (threadinfo, 't', 'octreelsf_shrink_xyz...', size(t), 'dp', -1)
deallocate(t)
return
end
subroutine octreev_shrink_xyz(os, threadinfo)
! resize the x,y,z arrays.
! Author: Douglas Guptill
! Copyright (c) 2009 Douglas Guptill. All rights reserved.
! 2009-07-27: new, from a copy of octreesolve_shring_xyz,
! and identical to it,
! except for the type of the first parameter.
! I wish I knew a better way.!
use threads
use definitions
implicit none
! parameters, in
type (thread) threadinfo
! parameters, in/out
type (octreev) os
! local variables
integer i, new_size
double precision, dimension(:),pointer::t
new_size = os%nnode
! make a temporary array
allocate (t(new_size),stat=threadinfo%err)
call heap (threadinfo, 't', 'octreev_shrink_xyz...', size(t), 'dp', +1)
! shrink x...............................................
! transfer the x data to it
do i = 1, new_size
t(i) = os%x(i)
enddo
! delete and re-create the x array
call heap (threadinfo, 'os%x', 'octreev_shrink_xyz...', size(os%x), 'dp', -1)
deallocate(os%x)
allocate (os%x(new_size),stat=threadinfo%err)
call heap (threadinfo, 'os%x', 'octreev_shrink_xyz...', size(os%x), 'dp', +1)
! transfer the data from the temporary array to the new x aray
do i = 1, new_size
os%x(i) = t(i)
enddo
! shrink y...............................................
! transfer the y data to it
do i = 1, new_size
t(i) = os%y(i)
enddo
! delete and re-create the y array
call heap (threadinfo, 'os%y', 'octreev_shrink_xyz...', size(os%y), 'dp', -1)
deallocate(os%y)
allocate (os%y(new_size),stat=threadinfo%err)
call heap (threadinfo, 'os%y', 'octreev_shrink_xyz...', size(os%y), 'dp', +1)
! transfer the data from the temporary array to the new y aray
do i = 1, new_size
os%y(i) = t(i)
enddo
! shrink z...............................................
! transfer the z data to it
do i = 1, new_size
t(i) = os%z(i)
enddo
! delete and re-create the z array
call heap (threadinfo, 'os%z', 'octreev_shrink_xyz...', size(os%z), 'dp', -1)
deallocate(os%z)
allocate (os%z(new_size),stat=threadinfo%err)
call heap (threadinfo, 'os%z', 'octreev_shrink_xyz...', size(os%z), 'dp', +1)
! transfer the data from the temporary array to the new z aray
do i = 1, new_size
os%z(i) = t(i)
enddo
! delete the temporary array
call heap (threadinfo, 't', 'octreev_shrink_xyz...', size(t), 'dp', -1)
deallocate(t)
return
end
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment