You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I am currently working on deriving travel time grids for several different stations for a heterogenous velocity model. I am using the rgrid method to make a 3D grid. From there, I would like to get traveltimes for all nodes on the grid.
So far, I have attempted setting the source as the station, and the receiver as a random point in space within the grid. I get a result that makes sense using grid.raytrace. After doing this, I have attempted grid.get_traveltimes(), however the traveltimes at the same nodes do not match the output of the raytrace. For example, the location of the source should have a traveltime of 0.0 s, but it doesn't. Instead the 0.0s traveltime is located somewhere else entirely in the grid. I made sure to check that I was converting between the x, y, and z coordinates and the actual node points correctly, so that isn't the issue.
This initial test was performed using the FSM method. I was wondering if the only accurate way to get traveltimes to each node point is to actually set each node as a receiver. From what I understand in the documentation, it seems like the traveltimes should be propagated across the grid when first running the raytrace function, am I wrong in thinking so? Your advice is greatly appreciated!
Here is an example of my code, which uses a NonLinLoc velocity grid as the input:
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from nllgrid import NLLGrid
import ttcrpy.rgrid as rg
nll_file = '/Volumes/SeaJade 2 Backup/ONC/endeavour_analysis/data/nll/model/END.P.mod.buf'
p_grd = NLLGrid(nll_file)
V = 1 / (p_grd.array / 0.2)
# Get number of grids in x, y, and z directons
nx, ny, nz = V.shape
# Get starting point in x, y, and z directions
x_orig, y_orig, z_orig = p_grd.x_orig, p_grd.y_orig, p_grd.z_orig
# Get spacing in x, y, and z directions
dx, dy, dz = p_grd.dx, p_grd.dy, p_grd.dz
x = np.arange(0,nx*dx,dx) + x_orig
y = np.arange(0,ny*dy,dy) + y_orig
z = np.arange(0,nz*dz,dz) + z_orig
grid = rg.Grid3d(x, y, z, cell_slowness=False, method='SPM')
src = np.array([[-1.0,0.0,0.0]])
rcv = np.array([[1.0,1.0,1.0]])
slowness = 1./V
tt, rays = grid.raytrace(src, rcv, slowness, return_rays=True)
grid_tt = np.array(grid.get_grid_traveltimes())
The text was updated successfully, but these errors were encountered:
Hello,
I am currently working on deriving travel time grids for several different stations for a heterogenous velocity model. I am using the rgrid method to make a 3D grid. From there, I would like to get traveltimes for all nodes on the grid.
So far, I have attempted setting the source as the station, and the receiver as a random point in space within the grid. I get a result that makes sense using grid.raytrace. After doing this, I have attempted grid.get_traveltimes(), however the traveltimes at the same nodes do not match the output of the raytrace. For example, the location of the source should have a traveltime of 0.0 s, but it doesn't. Instead the 0.0s traveltime is located somewhere else entirely in the grid. I made sure to check that I was converting between the x, y, and z coordinates and the actual node points correctly, so that isn't the issue.
This initial test was performed using the FSM method. I was wondering if the only accurate way to get traveltimes to each node point is to actually set each node as a receiver. From what I understand in the documentation, it seems like the traveltimes should be propagated across the grid when first running the raytrace function, am I wrong in thinking so? Your advice is greatly appreciated!
Here is an example of my code, which uses a NonLinLoc velocity grid as the input:
The text was updated successfully, but these errors were encountered: