Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bounding boxes for faults #318

Open
bangerth opened this issue Jul 14, 2021 · 2 comments
Open

Bounding boxes for faults #318

bangerth opened this issue Jul 14, 2021 · 2 comments

Comments

@bangerth
Copy link
Contributor

#264 adds a bounding box to a whole fault, but having just listened to @MFraters (very nice!) talk, it occurs to me that it would probably be (i) easier, and (ii) maybe more efficient to compute a bounding box for every segment or every section of a fault. That's because each such segment is basically just defined by two curves and some interpolation plane between these.

One could then compute the overall bounding box for the whole fault by finding that box that contains all boxes for each segment/section.

Not saying that #264 should be changed, but wanted to put the idea out there.

@alarshi FYI.

@MFraters
Copy link
Member

Thanks! That is an interesting idea. Let's first get #264 merged, but I agree that this would be an interesting idea.

I already had discussed a optimization with @alarshi that should help a lot with very steep or long angle faults. It would use the min and max angles in a slab or fault (which can be precomputed) to limit the bounding box lateral extend and depth respectively even more with just a few (I think 4) extra multiplications at run time.

What you propose would be even more precise. I am not sure what you are exactly proposing, so the two options I see are:

  1. compute a lot of small bounding boxes and check them at run time. This would be very precise, but also expensive since in spherical we do not know the radius of the earth until runtime.
  2. compute the small bounding boxes for each segment and then combine them such that there is only one big bounding box left. This is less precise, but a lot more precise than the current implementation (at least a factor of two, because currently the fault length is added in both directions. I think this is what you are suggesting.

The only issue I can think of is that for the spherical case we can't pre-compute the exact locations, because we do not know the radius of the earth at that time.

@bangerth
Copy link
Contributor Author

I was thinking of both 1 and 2. You have a collection of bounding boxes, and it's easy to compute the one large bounding box that contains them all. The check would then be:

  • If a point is not in the large bounding box, you can exit
  • If a point is not in any of the smaller bounding boxes, you can exit
  • Otherwise, do what is necessary to do.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants