Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
corrected the scale factor
  • Loading branch information
Austin Blevins committed Mar 2, 2023
1 parent 9f64164 commit 3b6fa1c
Showing 1 changed file with 21 additions and 21 deletions.
42 changes: 21 additions & 21 deletions src/regolith/regolith_streamtube.f90
Original file line number Diff line number Diff line change
Expand Up @@ -332,30 +332,30 @@ subroutine regolith_streamtube(user,surf,crater,domain,ejb,ejtble,xp,yp,xpi,ypi,
!Apply a correction factor to ensure conservation of volume


factor = newlayer%totvolume / (totvol - newlayer%ejm)
factor = (newlayer%totvolume-newlayer%ejm) / totvol
meltinejecta = meltinejecta * factor
distvol(:) = distvol(:) * factor
totvol = newlayer%totvolume - meltinejecta
!totvol = newlayer%totvolume - meltinejecta
if (newlayer%ejm > newlayer%totvolume) then !entire pixel is ejected melt
newlayer%ejm = newlayer%totvolume
newlayer%meltfrac = 1.0
newlayer%meltvolume = newlayer%ejm
else
meltinejecta = meltinejecta * factor
if (meltinejecta + newlayer%ejm > newlayer%totvolume) then !entire pixel is melt, but not all of it is ejected
meltinejecta = newlayer%totvolume - newlayer%ejm
end if
newlayer%meltvolume = meltinejecta + newlayer%ejm
newlayer%meltfrac = newlayer%meltvolume / newlayer%totvolume
if (newlayer%meltfrac > 1.0_DP) then !edge case caused by floating point math could result in melt fraction slightly higher than 1
newlayer%meltfrac = 1.0_DP
factor = newlayer%totvolume / newlayer%meltvolume
newlayer%meltvolume = newlayer%totvolume
distvol(:) = distvol(:) * factor
end if
newlayer%distvol(:) = newlayer%distvol(:) + distvol(:)
newlayer%meltdist(:) = newlayer%distvol(:) / newlayer%totvolume
newlayer%meltfrac = newlayer%meltvolume / newlayer%totvolume
newlayer%ejm = newlayer%totvolume
newlayer%meltfrac = 1.0_DP
newlayer%meltvolume = newlayer%ejm
newlayer%ejmf = 1.0_DP
else
if (meltinejecta + newlayer%ejm > newlayer%totvolume) then !entire pixel is melt, but not all of it is ejected
meltinejecta = newlayer%totvolume - newlayer%ejm
end if
newlayer%meltvolume = meltinejecta + newlayer%ejm
newlayer%meltfrac = newlayer%meltvolume / newlayer%totvolume
if (newlayer%meltfrac > 1.0_DP) then !edge case caused by floating point math could result in melt fraction slightly higher than 1
newlayer%meltfrac = 1.0_DP
factor = newlayer%totvolume / newlayer%meltvolume
newlayer%meltvolume = newlayer%totvolume
distvol(:) = distvol(:) * factor
end if
newlayer%distvol(:) = newlayer%distvol(:) + distvol(:)
newlayer%meltdist(:) = newlayer%distvol(:) / newlayer%totvolume
newlayer%meltfrac = newlayer%meltvolume / newlayer%totvolume
end if

call util_push_array(surf(xpi,ypi)%regolayer,newlayer)
Expand Down

0 comments on commit 3b6fa1c

Please sign in to comment.