Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
corrected volumes when popping arrays
  • Loading branch information
Austin Blevins committed Mar 1, 2023
1 parent e60cd36 commit 31b9b8c
Show file tree
Hide file tree
Showing 6 changed files with 19 additions and 7 deletions.
3 changes: 2 additions & 1 deletion src/regolith/module_regolith.f90
Original file line number Diff line number Diff line change
Expand Up @@ -235,8 +235,9 @@ end subroutine regolith_subcrater_mix
end interface

interface
subroutine regolith_mix(surfi,mixing_depth,domain)
subroutine regolith_mix(user,surfi,mixing_depth,domain)
use module_globals
type(usertype),intent(in) :: user
type(surftype),intent(inout) :: surfi
real(DP),intent(in) :: mixing_depth
type(domaintype),intent(in) :: domain
Expand Down
2 changes: 1 addition & 1 deletion src/regolith/regolith_interior.f90
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ subroutine regolith_interior(user,surf,crater,domain,incval,nmeltsheet,vmeltshee
lradsq = x_relative**2 + y_relative**2

if (lradsq > crater%frad**2) cycle
call util_traverse_pop_array(surf(xpi,ypi)%regolayer,surf(xpi,ypi)%abselc,poppedarray)
call util_traverse_pop_array(user,surf(xpi,ypi)%regolayer,surf(xpi,ypi)%abselc,poppedarray)
deallocate(poppedarray)

!fill top layer with melt sheet of given thickness hmeltsheet
Expand Down
5 changes: 3 additions & 2 deletions src/regolith/regolith_mix.f90
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,14 @@
! Notes :
!
!**********************************************************************************************************************************
subroutine regolith_mix(surfi,mixing_depth,domain)
subroutine regolith_mix(user,surfi,mixing_depth,domain)
use module_globals
use module_util
use module_regolith, EXCEPT_THIS_ONE => regolith_mix
implicit none

! Arguments
type(usertype),intent(in) :: user
type(surftype),intent(inout) :: surfi
real(DP), intent(in) :: mixing_depth
type(domaintype),intent(in) :: domain
Expand All @@ -40,7 +41,7 @@ subroutine regolith_mix(surfi,mixing_depth,domain)
! if(domain%currentqmc .eqv. .true.) then
! j = 0
! end if
call util_traverse_pop_array(surfi%regolayer,mixing_depth,poppedarray)
call util_traverse_pop_array(user,surfi%regolayer,mixing_depth,poppedarray)

newlayer%thickness = 0.0_DP
newlayer%comp = 0.0_DP
Expand Down
2 changes: 1 addition & 1 deletion src/regolith/regolith_subcrater_mix.f90
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ subroutine regolith_subcrater_mix(user,surf,domain,nflux,finterval,p)
N = size(surf(i,j)%regolayer)

if (surf(i,j)%regolayer(N)%thickness < dd) then
call regolith_mix(surf(i,j),dd,domain)
call regolith_mix(user,surf(i,j),dd,domain)
end if

end do
Expand Down
3 changes: 2 additions & 1 deletion src/util/module_util.f90
Original file line number Diff line number Diff line change
Expand Up @@ -83,9 +83,10 @@ end subroutine util_pop
! end interface

interface
subroutine util_traverse_pop_array(regolayer,traverse_depth,poppedarray)
subroutine util_traverse_pop_array(user,regolayer,traverse_depth,poppedarray)
use module_globals
implicit none
type(usertype),intent(in) :: user
type(regodatatype),dimension(:),allocatable,intent(inout) :: regolayer
real(DP),intent(in) :: traverse_depth
type(regodatatype),dimension(:),allocatable,intent(out) :: poppedarray
Expand Down
11 changes: 10 additions & 1 deletion src/util/util_traverse_pop_array.f90
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,14 @@
! Notes : Popped list will be in reversed order from the original list
!
!**********************************************************************************************************************************
subroutine util_traverse_pop_array(regolayer,traverse_depth,poppedarray)
subroutine util_traverse_pop_array(user,regolayer,traverse_depth,poppedarray)
use module_globals
use module_util, EXCEPT_THIS_ONE => util_traverse_pop_array
implicit none

! Arguments
!type(regolisttype),pointer :: regolayer
type(usertype),intent(in) :: user
type(regodatatype),dimension(:),allocatable,intent(inout) :: regolayer
real(DP),intent(in) :: traverse_depth
!type(regolisttype),pointer :: poppedlist
Expand Down Expand Up @@ -69,6 +70,14 @@ subroutine util_traverse_pop_array(regolayer,traverse_depth,poppedarray)

poppedarray(1)%thickness = poppedarray(1)%thickness - depth_diff
regolayer(maxi)%thickness = regolayer(maxi)%thickness - poppedarray(1)%thickness
poppedarray(1)%totvolume = poppedarray(1)%thickness * user%pix * user%pix
poppedarray(1)%meltvolume = poppedarray(1)%meltfrac * poppedarray(1)%totvolume
poppedarray(1)%distvol(:) = poppedarray(1)%meltdist(:) * poppedarray(1)%totvolume
poppedarray(1)%ejm = poppedarray(1)%ejmf * poppedarray(1)%totvolume
regolayer(maxi)%totvolume = regolayer(maxi)%thickness * user%pix * user%pix
regolayer(maxi)%distvol(:) = regolayer(maxi)%meltdist(:) * regolayer(maxi)%totvolume
regolayer(maxi)%meltvolume = regolayer(maxi)%meltfrac * regolayer(maxi)%totvolume
regolayer(maxi)%ejm = regolayer(maxi)%ejmf * regolayer(maxi)%totvolume

! copy regolayer from 1 to maxi to temp variable, then deallocate regolayer, then movealloc templayer onto regolayer <--may need temp array
allocate(oldregodata,source=regolayer(1:maxi))
Expand Down

0 comments on commit 31b9b8c

Please sign in to comment.