-
Notifications
You must be signed in to change notification settings - Fork 101
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
Kirchhoff dynamic components #431
Conversation
The Kirchhoff module has been modified to include dynamic capabilities. Prior to this commit, the modelling was purely kinematic, with this commit we have introduced tunable amplitude scalings that include geometrical spreading, reflection/transimission angles, as well as aperture tapers.
@cako this is really still a WIP, but it would be nice to get some early feedback from you. |
Looks really good! Some comments:
|
Alright, thanks a lot for the comments, things make sense at quick read :) Let me slowly go through them one by one and I may have a few questions along the way |
I managed to go through these suggestions. Here are my replies. As you will see I have not implemented all of them and created a new Github issue with a list of remaining tasks to do for the
I agree. However I am not sure what could be a more flexible strategy that does not require tracing rays and checking for example take-off angles. Any suggestion? For the moment I have made the following changes:
Mmmh I am not sure you understand what I tried to do here, and I must admit the Notes were not describing it. Here is my idea, perhaps is stupid as I never worked on Kirchhoff modelling (see figure). So
What do you think?
I agree. I prepared the ground for this but honestly I cannot figure out what are the σ_S and σ_R in equation 2.3.7 (neither in the Bleistein and Gray, 2002 paper). If you do, we can easily add this.
Definitely, so far I sketched only one for
See my comment above regarding
Hopefully by now you see what My cosines are from eq 2.36 in Safron, 2018 where instead of 2cos(θ) I thought it would make more sense to have cos(θ_S)+cos(θ_R) where θ_S is the incident angle and θ_R is the emerging angle. I dont see a square in his equations... but now you say to have |
@cako, have a look at my replies (and questions ;) ) as well as the implemented changes. If you agree I would like to merge this and continue to finalize pylops v2. I made a new issue trying to summarize what needs to be done wrt Kirchhoff operator and our discussion, so that we can try to pick this up at any time without having to scratch our head trying to remember where we saw room for improvement. Feel free to comment here or to the issue directly :) |
Yea, apart from tracing rays theres not much one can do about it (I think). I say sticking to the warning is probably fine. But I would put this in the docstring and not as a "logging".
Right, I think I got it. From the gradients of traveltimes, one can compute Onto the filters:
So, I'm ok with these filters and they can remain as is in my opinion. What I thought you were implementing was actually a filter on the scattering angle But the question still remains:
Well, we know that at reflector locations, the reflector normal should be anticollinear with
Yea, these guys are tricky because they are defined through ray-tracing. In 2.5D one can separate in-plane geometrical spreading from out-of-plane geometrical spreading. In Bleistein & Gray 2002, the in-plane factor is given by Anyways, I'm going to go over the code and approve if everything is OK. We can revisit more features later! |
This PR introduces dynamic components to the previously kinematically only
Kirchhoff
operator.Features:
wavfilter
parameter that applies a frequency-domain shaping to the wavelet as described in Safron2018 eq2.37. Ifwavfilter=False
the v1 behavior is preserveddynamic
parameter that switches between kinematic-only vs dynamic Kirchhoff operator (all of the following additions are applied only whendynamic=True
)aperture
to limit the spatial aperture as function of the offset/depth ratioaperturetap
to include a tapering at the edges of the spatial apertureangleaperture
to limit the angle aperture between source and receiver apertures - the angle is computed directly from the spatial gradients of the traveltime maps.angleaperture
to limit the angle aperture between source and receiver apertures - the angle is computed directly from the spatial gradients of the traveltime maps.angleref
to allow users providing a map of angles between the normal of the reflectors and the vertical axis in degrees. If provided this will be used instead of the normal when choosing whether to include a contribution or not based onangleaperture
. NOTE, this has not been implemented yet.snell
to allow users choosing whether the Snell's law should be used to check if a pair of source-receivers should be included or not.