Seismic refraction#
Travel-time tomography for P-wave velocity. Velocity responds strongly to weathering and to the transition into competent bedrock, which makes it the usual source of structural information for the electrical workflows.
What you can do#
Forward modelling of first-arrival travel times from a velocity model.
Single-survey travel-time tomography.
Time-lapse seismic inversion.
Supply a recovered interface as a structural constraint on an ERT inversion.
Joint ERT and seismic inversion with cross-gradient or geostatistical coupling.
Predict velocity from hydrological states through rock-physics models.
Required inputs#
First-arrival travel times with source and receiver positions. SEG-2 records
are read through ObsPy when it is installed, with a text fallback for arrays
that were already exported; pyGIMLi .dat and .sgt travel-time files are
read directly.
For the hydrology-driven direction you supply water content and porosity, and a rock-physics model produces the velocity field.
Typical outputs#
A velocity model on the inversion mesh with its data fit, and the interfaces picked from it. Those interfaces are what the structure-constrained and joint workflows consume.
Choose a workflow#
Your goal |
Start here |
|---|---|
Generate travel-time data from a velocity model |
|
Invert a refraction survey |
Ex. Seismic Refraction Tomography (SRT) Inversion and Interface Delineation |
Use seismic structure to guide an ERT inversion |
|
Invert ERT and seismic together |
|
Predict velocity from a hydrological model |
Desktop support#
Desktop Studio has a seismic processing module and a 3D seismic module, alongside the joint-inversion module that pairs seismic with ERT.
Python examples#
Ex. Seismic Refraction Tomography (SRT) Forward Modeling: generate travel times.
Ex. Seismic Refraction Tomography (SRT) Inversion and Interface Delineation: recover a velocity section, compared against a direct pyGIMLi run.
Ex. Structure-Constrained Resistivity Inversion: structure from seismic applied to resistivity.
Ex. Joint ERT-SRT Inversion: Cross-Gradient and Geostatistical Coupling: both datasets inverted together.
A single inversion:
from PyHydroGeophysX.inversion import SRTInversion
inv = SRTInversion(
data_file="examples/data/Seismic/srtfieldline2.dat",
lambda_val=50.0,
max_iterations=20,
)
result = inv.run()
print("velocity model cells:", result.final_model.size)
Joint inversion with ERT, which is where the two methods pay for each other:
from PyHydroGeophysX.inversion import JointERTSRTInversion
joint = JointERTSRTInversion(
ert_data="examples/data/ERT/Bert/fielddataline2.dat",
srt_data="examples/data/Seismic/srtfieldline2.dat",
regularization_mode="geostat", # or "smoothness"
cross_gradient_mode="direct", # or "spatial"
lambda_cg_ert=120.0,
lambda_cg_srt=80.0,
)
result = joint.run()
print(result.chi2_ert, result.chi2_srt)
Relevant API#
Forward Module for
SeismicForwardModeling.Inversion Module for
SRTInversion,TimeLapseSRTInversionandJointERTSRTInversion.petrophysics package for the velocity models, including Voigt-Reuss-Hill, differential effective medium, Hertz-Mindlin and Brie.
Limitations and optional dependencies#
Forward modelling and inversion run on pyGIMLi, installed by the geophysics
extra:
pip install "pyhydrogeophysx[geophysics]"
Reading SEG-2 field records needs ObsPy. Travel times are first arrivals: the package inverts picks, it does not pick them for you.