Skip to content

Commit

Permalink
Ejecta modified to be more self-consistent with empirical data on eje…
Browse files Browse the repository at this point in the history
…cta thickness (calibrated for strengthless soft rock)
  • Loading branch information
daminton committed Dec 5, 2016
1 parent ac901fc commit 584cc82
Showing 1 changed file with 32 additions and 44 deletions.
76 changes: 32 additions & 44 deletions src/ejecta/ejecta_table_define.f90
Original file line number Diff line number Diff line change
Expand Up @@ -42,10 +42,14 @@ subroutine ejecta_table_define(user,crater,domain,ejb,ejtble,melt)
! Executable code

! Get estimate of size of ejb table
crater%ejdis = DISEJB * 2.3_DP * crater%frad**(1.006_DP) ! Continuous ejecta distance From Melosh (1989) eq. 6.3.1
if (.not.user%discontinuous) then
crater%ejdis = 2 * 2.3_DP * crater%frad**(1.006_DP) ! Continuous ejecta distance From Melosh (1989) eq. 6.3.1
else
crater%ejdis = DISEJB * 2.3_DP * crater%frad**(1.006_DP) ! Continuous ejecta distance From Melosh (1989) eq. 6.3.1
end if
! We go out a factor of 3 to get the discontinuous ejecta thickness
domain%ejbres = (crater%ejdis - crater%frad) / EJBTABSIZE
lrad = crater%frad
domain%ejbres = (crater%ejdis - crater%rad) / EJBTABSIZE
lrad = crater%frad
erad = crater%rad
ejtble = EJBTABSIZE
firstrun = .true.
Expand All @@ -60,53 +64,37 @@ subroutine ejecta_table_define(user,crater,domain,ejb,ejtble,melt)
dimp = crater%imp
vimp = crater%impvel
end if


call regolith_melt_zone(user,crater,dimp,vimp,rmelt,depthb)
end if

!write(*,*) ' lrad/Df vej ebh melt &
! fraction melt thickness'
do k = 0,EJBTABSIZE
call ejecta_rootfind(user,crater,domain,erad,lrad,vejsq,ejang,firstrun)
if (k >= 1) then
call ejecta_thickness(user,crater,eradold,erad,lrad - domain%ejbres,lrad,thick)
ejb(k)%lrad = log(lrad - 0.5_DP * domain%ejbres)
ejb(k)%thick = log(thick)
ejb(k)%vesq = vejsq
ejb(k)%angle = ejang
ejb(k)%erad = erad
!write(*,*) ' lrad/Df vej ebh melt &
! fraction melt thickness'
do k = 0,EJBTABSIZE
call ejecta_rootfind(user,crater,domain,erad,lrad,vejsq,ejang,firstrun)
if (k >= 1) then
call ejecta_thickness(user,crater,eradold,erad,lrad - domain%ejbres,lrad,thick)
ejb(k)%lrad = log(lrad - 0.5_DP * domain%ejbres)
ejb(k)%thick = log(thick)
ejb(k)%vesq = vejsq
ejb(k)%angle = ejang
ejb(k)%erad = erad
if (present(melt)) then
call regolith_melt_fraction(dimp,depthb,erad,eradold,rmelt,melt)
ejb(k)%meltfrac = melt
!write(*,*) lrad/crater%frad,sqrt(vejsq),thick,melt,thick*melt
if ((thick <= VSMALL) .or. (abs(eradold - erad) < VSMALL)) then
ejtble = k
crater%ejdis = lrad
exit
end if
end if
lrad = lrad + domain%ejbres
eradold = erad
end do
!write(*,*) 'A MELT ZONE of ',crater%frad,' meter-sized crater: ',rmelt,'at a rim',ejb(1)%meltfrac
else
do k = 0,EJBTABSIZE
call ejecta_rootfind(user,crater,domain,erad,lrad,vejsq,ejang,firstrun)
if (k >= 1) then
call ejecta_thickness(user,crater,eradold,erad,lrad - domain%ejbres,lrad,thick)
ejb(k)%lrad = log(lrad - 0.5_DP * domain%ejbres)
ejb(k)%thick = log(thick)
ejb(k)%vesq = vejsq
ejb(k)%angle = ejang
ejb(k)%erad = erad
if ((thick <= VSMALL) .or. (abs(eradold - erad) < VSMALL)) then
ejtble = k
crater%ejdis = lrad
exit
end if
end if
lrad = lrad + domain%ejbres
eradold = erad
end do
end if
!write(*,*) lrad/crater%rad,erad/crater%rad,sqrt(vejsq),thick !,melt,thick*melt
if ((thick <= VSMALL) .or. (abs(eradold - erad) < VSMALL)) then
ejtble = k
crater%ejdis = lrad
exit
end if
end if
lrad = lrad + domain%ejbres
eradold = erad
end do
!write(*,*) 'A MELT ZONE of ',crater%frad,' meter-sized crater: ',rmelt,'at a rim',ejb(1)%meltfrac
! Get pixel space distance
crater%ejdispx = nint(crater%ejdis / user%pix)

Expand Down

0 comments on commit 584cc82

Please sign in to comment.