Solves rectangular dislocations in an elastic halfspace using the solutions of Okada (1992). Python native implementation of disloc3d.m from Paul Segall.
PyDisloc3D performs the same calculations as okada_wrapper. Okada_wrapper uses compiled Fortran code while PyDisloc3D is a pure python implementation. PyDisloc3D computes solutions for a single dislocation at all observation points simultaneously, resulting in faster performance.
The table below contains benchmarks for three different meshes using the BforStrain study area solving on 235 fault patches for this code, okada_wrapper, and Matlab's disloc3D.m. Meshes generated using BforStrain using nominal_node_spacing = 50 km, nominal_node_spacing = 100 km, and nominal_node_spacing = 100 km with decimate = 4 to represent fine, average, and coarse meshes.
| Num obs points | PyDisloc3D | okada_wrapper | Matlab Disloc3D |
|---|---|---|---|
| N = 16544 | 11.2 s | 18.9 s | 12.0 s |
| N = 13520 | 9.2 s | 16.1 s | 11.0 s |
| N = 4856 | 3.6 s | 5.6 s | 5.5 s |
Run using an M1 Pro with 16 GB Ram.