davidson16807 / tectonics.js

3d plate tectonics in your web browser
http://davidson16807.github.io/tectonics.js/
Creative Commons Attribution 4.0 International
200 stars 28 forks source link

Model crater formation #28

Open davidson16807 opened 6 years ago

davidson16807 commented 6 years ago

I'm writing this down as an issue so I don't forget it. Also, because it's a little unnecessary and I don't expect anyone else to request it:

Model crater formation. This amounts to adding new crust delta within Lithosphere. Models will have to be developed to probabilistically determine impact frequency and energy. Size and depth of craters can probably be determined from Melosh 2011. I do know that impact energy is proportionate to the volume of dirt that is moved.

When an impact event occurs on land, the contents of the crater are subtracted from crust and deposited along the crater rim as sediment. It may also be possible to model the rock metamorphism that occurs on impact, but this is not required for a first pass. However, it is required that the process conserves mass.

This is a relatively trivial thing to implement once we pin down the model. This would be a great way for a new developer to get acquainted with the core of the model. Just need to look at lithification and metamorphism for an example of how it would be implemented.

davidson16807 commented 5 years ago

So the first step is to find a function (F) that maps the amount of mass that's added or removed at a certain distance (r) from the center of a crater. Mass is always conserved in the model, so ∫Fdr = 0 when integrated from 0 to ∞.

I tried searching for data to construct this function. This is the best thing I found so far, or at least it's the easiest thing to work with. Not the best resource, and it seems to be from a earlier publication that's not referenced, but it is an actual function I can use.

The problem with this function is it's inflexibility. None of the parameters easily correspond to a concept you'd want to tune the model for.

So I tried rolling my own. The black line is the function from the pdf document above. The green line is my own stab at it.

I started with the mass conservation assumption. Setting F = -cos(r) has the same property as F, where ∫-cos(r)dr = 0 from 0 to 2π. The section from 0 to 1/2π looks like a crater, and the section from 1/2π to 3/2π looks like a debris field, but the crater portion looks too scrunched, and the debris field transitions too sharply towards the end. So I need to stretch out both the starting region and ending region, but leave the middle region untouched. I accomplish this by setting r inside another function, so F = -cos(f(r)). f(r) controls how fast cos() transitions through its phases. I set f(r) equal to the sigmoid function, since it behaves like a linear function towards the middle but slows its change towards the start and end. In other words, its derivative dS/dr pulses from 0 to 1 to 0.

davidson16807 commented 5 years ago

The results are promising. Might need some more polish. Ideally, I want the function to work using impact energy as its only input.