Summary
A new ray-tracing algorithm based on the shortest path method was designed and optimized to model seismic rays. The workflow is based on Dijkstra’s algorithm to find the shortest path iteratively on Self-Adapting Random Grids. These random grids adapt from one iteration to the next, storing in memory those nodes that minimize the travel time in each iteration, consequently automatically densifying the grid in areas with significant velocity variations. Different data structures and grid geometries were studied, and it was confirmed that using a combination of a binary heap and random grids prevents systematic errors generated by using regular grids while keeping the computational times low. Since the nodes that minimize the travel time are stored in each iteration, the memory requirements increase logarithmically, with the initial iterations having the most significant impact on the error minimization but plateauing afterwards. It was found that, albeit this increase in memory requirements, by focusing the densification of nodes in areas close to the actual trajectory of the rays, the error minimization requires fewer iterations than other implementations based on multiple realizations of random grids (requiring less than a tenth of the number of iteration of other methods). A function to handle extreme topographic variations was also designed, which uses a boolean test to reject rays crossing the topography, making the algorithm suitable for first arrival modelling in complex topography areas, such as the required for tomographic inversion of first arrivals in thrust-belt land seismic.