Skip to content

Commit

Permalink
Changed the regotracking write tool to write out whole arrays of stac…
Browse files Browse the repository at this point in the history
…ks rather than going layer-by-layer
  • Loading branch information
daminton committed Jul 18, 2022
1 parent 3ce8126 commit c33b2e9
Showing 1 changed file with 25 additions and 5 deletions.
30 changes: 25 additions & 5 deletions src/io/io_write_regotrack.f90
Original file line number Diff line number Diff line change
Expand Up @@ -34,10 +34,12 @@ subroutine io_write_regotrack(user,surf)
integer(I4B), parameter :: FAGE = 13
type(regolisttype),pointer :: current => null()
integer(I4B),dimension(user%gridsize,user%gridsize) :: stacks_num
real(DP),dimension(:),allocatable :: meltfrac, thickness, comp
real(SP),dimension(:,:),allocatable :: age
integer(kind=8) :: recsize
real(DP) :: dtmp
real(SP) :: stmp
integer(I4B) :: itmp
integer(I4B) :: itmp, N
real(DP),dimension(user%gridsize,user%gridsize) :: comptop, rego
real(DP),dimension(:),allocatable :: marehisto

Expand All @@ -47,21 +49,39 @@ subroutine io_write_regotrack(user,surf)
open(FCOMP,file=COMPFILE,status='replace',form='unformatted')
open(FAGE,file=AGEFILE,status='replace',form='unformatted')

! First pass to get stack numbers
stacks_num(:,:) = 0
do j=1,user%gridsize
do i=1,user%gridsize
current => surf(i,j)%regolayer
do
if (.not. associated(current)) exit ! We've reached the bottom of the linked list
stacks_num(i,j) = stacks_num(i,j) + 1
write(FMELT) current%regodata%meltfrac
write(FREGO) current%regodata%thickness
write(FCOMP) current%regodata%comp
write(FAGE) current%regodata%age(:)
current => current%next
end do
end do
end do

! Second pass to get data and save it
do j=1,user%gridsize
do i=1,user%gridsize
current => surf(i,j)%regolayer
N = stacks_num(i,j)
allocate(meltfrac(N),thickness(N),comp(N),age(MAXAGEBINS,N))
do k=1,N
meltfrac(k) = current%regodata%meltfrac
thickness(k) = current%regodata%thickness
comp(k) = current%regodata%comp
age(:,k) = current%regodata%age(:)
current => current%next
end do
write(FMELT) meltfrac(:)
write(FREGO) thickness(:)
write(FCOMP) comp(:)
write(FAGE) age(:,:)
deallocate(meltfrac,thickness,comp,age)
end do
end do
close(FMELT)
close(FREGO)
close(FCOMP)
Expand Down

0 comments on commit c33b2e9

Please sign in to comment.