diff --git a/src/regolith/regolith_streamtube_head.f90 b/src/regolith/regolith_streamtube_head.f90 index 3ed34b93..730ea1ef 100644 --- a/src/regolith/regolith_streamtube_head.f90 +++ b/src/regolith/regolith_streamtube_head.f90 @@ -66,7 +66,7 @@ subroutine regolith_streamtube_head(user,surfi,deltar,totmare,tots,age_collector totmare = totmare + vsgly * current(M)%comp recyratio = vsgly / (user%pix**2) /current(M)%thickness age_collector(:) = age_collector(:) + current(M)%age(:) * recyratio - headmeltvol = current(M)%meltfrac * vsgly * recyratio + headmeltvol = current(M)%meltfrac * vsgly! * recyratio meltinejecta = meltinejecta + headmeltvol distvol(:) = distvol(:) + (current(M)%meltdist(:)*vsgly)!*recyratio) totvol = totvol + vsgly diff --git a/src/regolith/regolith_streamtube_lineseg.f90 b/src/regolith/regolith_streamtube_lineseg.f90 index 5dc1cb92..e8e673ba 100644 --- a/src/regolith/regolith_streamtube_lineseg.f90 +++ b/src/regolith/regolith_streamtube_lineseg.f90 @@ -84,9 +84,9 @@ subroutine regolith_streamtube_lineseg(user,surfi,thetast,ri,rip1,zmin,zmax,erad recyratio = max(ebh_recyl,0.0_DP) / current(N-1)%thickness age_collector(:) = age_collector(:) + current(N-1)%age(:) * recyratio vol = vol + sum(current(N-1)%age(:)) * recyratio - linmelt = current(N-1)%meltfrac * (vsgly-vsh)! * recyratio + linmelt = current(N-1)%meltfrac * max(vsgly-vsh,0.0_DP)! * recyratio meltinejecta = meltinejecta + linmelt - distvol(:) = distvol(:) + (current(N-1)%meltdist(:)*(vsgly-vsh))!*recyratio) + distvol(:) = distvol(:) + (current(N-1)%meltdist(:)*max(vsgly-vsh,0.0_DP))!*recyratio) totvol = totvol + vsgly else if (ri <= xmints .and. rip1 > xmints) then vseg = regolith_streamtube_volume_func(eradi,xmints,rip1,deltar) @@ -94,9 +94,9 @@ subroutine regolith_streamtube_lineseg(user,surfi,thetast,ri,rip1,zmin,zmax,erad recyratio = max((vseg-vsh),0.0_DP) / (user%pix**2) / current(N-1)%thickness age_collector(:) = age_collector(:) + current(N-1)%age(:) * recyratio vol = vol + sum(current(N-1)%age(:)) * recyratio - linmelt = current(N-1)%meltfrac * (vseg-vsh)! * recyratio + linmelt = current(N-1)%meltfrac * max(vseg-vsh,0.0_DP)! * recyratio meltinejecta = meltinejecta + linmelt - distvol(:) = distvol(:) + (current(N-1)%meltdist(:)*(vseg-vsh))!*recyratio) + distvol(:) = distvol(:) + (current(N-1)%meltdist(:)*max(vseg-vsh,0.0_DP))!*recyratio) totvol = totvol + vseg end if exit @@ -124,9 +124,9 @@ subroutine regolith_streamtube_lineseg(user,surfi,thetast,ri,rip1,zmin,zmax,erad recyratio = max((vseg-vsh),0.0_DP) / (user%pix**2) / current(N)%thickness age_collector(:) = age_collector(:) + current(N)%age(:) * recyratio vol = vol + sum(current(N)%age(:)) * recyratio - linmelt = current(N)%meltfrac * (vseg-vsh)! * recyratio + linmelt = current(N)%meltfrac * max(vseg-vsh,0.0_DP)! * recyratio meltinejecta = meltinejecta + linmelt - distvol(:) = distvol(:) + (current(N)%meltdist(:)*(vseg-vsh))!*recyratio) + distvol(:) = distvol(:) + (current(N)%meltdist(:)*max(vseg-vsh,0.0_DP))!*recyratio) totvol = totvol + vseg end if @@ -137,9 +137,9 @@ subroutine regolith_streamtube_lineseg(user,surfi,thetast,ri,rip1,zmin,zmax,erad recyratio = max((vseg-vsh),0.0_DP) / (user%pix**2) / current(N)%thickness age_collector(:) = age_collector(:) + current(N)%age(:) * recyratio vol = vol + sum(current(N)%age(:)) * recyratio - linmelt = current(N)%meltfrac * (vseg-vsh)! * recyratio + linmelt = current(N)%meltfrac * max(vseg-vsh,0.0_DP)! * recyratio meltinejecta = meltinejecta + linmelt - distvol(:) = distvol(:) + (current(N)%meltdist(:)*(vseg-vsh))!*recyratio) + distvol(:) = distvol(:) + (current(N)%meltdist(:)*max(vseg-vsh,0.0_DP))!*recyratio) totvol = totvol + vseg end if !current => current%next @@ -162,9 +162,9 @@ subroutine regolith_streamtube_lineseg(user,surfi,thetast,ri,rip1,zmin,zmax,erad recyratio = max((vseg-vsh),0.0_DP) / (user%pix**2) / current(N)%thickness age_collector(:) = age_collector(:) + current(N)%age(:) * recyratio vol = vol + sum(current(N)%age(:)) * recyratio - linmelt = current(N)%meltfrac * vseg! * recyratio + linmelt = current(N)%meltfrac * max(vseg-vsh,0.0_DP)! * recyratio meltinejecta = meltinejecta + linmelt - distvol(:) = distvol(:) + (current(N)%meltdist(:)*(vseg-vsh))!*recyratio) + distvol(:) = distvol(:) + (current(N)%meltdist(:)*max(vseg-vsh,0.0_DP))!*recyratio) totvol = totvol + vseg end if diff --git a/src/regolith/regolith_subpixel_streamtube.f90 b/src/regolith/regolith_subpixel_streamtube.f90 index 3a668407..a12f0d1d 100644 --- a/src/regolith/regolith_subpixel_streamtube.f90 +++ b/src/regolith/regolith_subpixel_streamtube.f90 @@ -188,26 +188,26 @@ subroutine regolith_subpixel_streamtube(user,surfi,deltar,ri,rip1,eradi,newlayer !if (rrighti>max(xmints,sqrt(rm**2 - z**2))) then if (rrighti > xmints) then vsh = regolith_shock_damage(eradi,deltar,xmints,xsfints,rrighti,rrightf) - recyratio = max((vsgly2 -vsh),0.0)/ (user%pix**2) / current(N)%thickness + recyratio = max((vsgly2 -vsh),0.0_DP)/ (user%pix**2) / current(N)%thickness age_collector(:) = age_collector(:) + current(N)%age(:) * recyratio vol = vol + sum(current(N)%age(:)) * recyratio - mvr = (vsgly2-vsh) * current(N)%meltfrac! * recyratio + mvr = max((vsgly2 -vsh),0.0_DP) * current(N)%meltfrac! * recyratio recyratio2 = recyratio vsh2 = vsh end if if (rlefti > xmints) then vsh = regolith_shock_damage(eradi,deltar,xmints,xsfints,rlefti,rleftf) - recyratio = max((vsgly1-vsh),0.0) / (user%pix**2) / current(N)%thickness + recyratio = max((vsgly1-vsh),0.0_DP) / (user%pix**2) / current(N)%thickness age_collector(:) = age_collector(:) + current(N)%age(:) * recyratio vol = vol + sum(current(N)%age(:)) * recyratio - mvl = (vsgly1-vsh) * current(N)%meltfrac!*recyratio + mvl = max((vsgly1-vsh),0.0_DP) * current(N)%meltfrac!*recyratio end if !current => current%next meltinejecta = meltinejecta + mvl + mvr !distvol(:) = distvol(:) + (current(N)%meltdist(:)*((vsgly1-vsh)*recyratio)+((vsgly2-vsh2)*recyratio2)) - distvol(:) = distvol(:) + (current(N)%meltdist(:)*((vsgly1-vsh)+(vsgly2-vsh2))) + distvol(:) = distvol(:) + (current(N)%meltdist(:)*(max((vsgly1-vsh),0.0_DP)+max((vsgly2-vsh),0.0_DP))) totvol = totvol + vsgly1 + vsgly2 !N = N - 1 z = z + current(N-1)%thickness diff --git a/src/regolith/regolith_traverse_streamtube.f90 b/src/regolith/regolith_traverse_streamtube.f90 index 3ffc37a6..31e13150 100644 --- a/src/regolith/regolith_traverse_streamtube.f90 +++ b/src/regolith/regolith_traverse_streamtube.f90 @@ -89,8 +89,8 @@ subroutine regolith_traverse_streamtube(user,surfi,deltar,ri,rip1,eradi,erado,ne vsh = regolith_shock_damage(eradi,deltar,xmints,xsfints,ri,rip1) recyratio = max(vseg-vsh,0.0_DP) / (user%pix**2) / surfi%regolayer(N)%thickness age_collector(:) = age_collector(:) + surfi%regolayer(N)%age(:) * recyratio - meltinejecta = meltinejecta + surfi%regolayer(N)%meltfrac*(vseg-vsh)!*recyratio - distvol(:) = distvol(:) + (surfi%regolayer(N)%meltdist(:)*(vseg-vsh))!*recyratio) + meltinejecta = meltinejecta + surfi%regolayer(N)%meltfrac*max(vseg-vsh,0.0_DP)!*recyratio + distvol(:) = distvol(:) + (surfi%regolayer(N)%meltdist(:)*max(vseg-vsh,0.0_DP))!*recyratio) totvol = totvol + vseg end if