Closed zhong-yy closed 1 month ago
Hi @zhong-yy ,
thanks for your question. By default, 0 is assumed to be sea level. To correct for the actual station elevation, PyOcto assumes a constant velocity between the model elevation and the station and a vertical incidence. This velocity can be set in VelocityModel1D
with surface_p_velocity
and surface_s_velocity
. This is a crude station correction, but as long as the station elevation is substantially smaller than the event depth (or the events are far enough away), it should be fine. There are a few cases where it will cause a bigger problem though, for example, for borehole stations at a similar depth as the events.
Due to the way PyOcto works, simply lifting the top of the velocity model above the stations won't help. It will just cause the elevation correction to become negative, because PyOcto will infer a path to the surface and then correct using the vertical incidence assumption. A true solution would be to use independent travel time tables for each station/elevation. I've suggested this in #14 , but I currently don't have the time to implement it.
To your last question, PyOcto always assumes that the grid starts at zero, i.e., there's simply no parameter to change that. However, you could clearly select a different zero and transform all your station depth as well. As explained in the previous paragraph, this would just change the reference for applying the elevation correction.
Thank you for your detailed answer @yetinam . It is really helpful.
I also notice that the surface_p_velocity
and surface_s_velocity
have default values of None. In this case, does pyocto just ignore station elevation?
Is using independent travel time tables for each station equivalent to shifting the same event to different depths for each stations?
The elevation correction is by default active, but I admit that the value default value specification is confusing. If the values are set to None
in Python, the defaults from here are used. It would probably be better to repeat these in the Python code as well.
Independent travel time tables would not be the same as shifting the event location, as shifting the event location would also shift the depth of the interfaces.
I'm closing this for now, but feel free to reopen if you have further questions.
Hi, I am wondering if pyocto takes the station elevation into account when it computes the theoretical arrivals. If so, should I define the top surface of the grid as the highest station elevation?
Taking
01_basis.ipynb
as an example, the highest station elevation is 4480 and the lowest one is 250, which means there is a large variation in the station elevation. However, the depth range of the grid iszlim=(0, 200)
. Here, does zlim=0 represent sea surface level or the highest station elevation? If zlim=0 is sea level, how do I describe the velocity between 0m and the station in the velocity file?What if I make the depth range of the grid not start from zero?