Full wave inversion (2D)

<< Click to Display Table of Contents >>

Navigation:  Modeling >

Full wave inversion (2D)

 

Description

Full Wave Inversion (FWI) is an iterative velocity model-building technique that refines a starting depth velocity model by minimizing the difference between observed seismic data and synthetic data modelled from the current velocity estimate. At each iteration, the module runs an acoustic finite-difference forward model for every source, computes the residual between the synthetic and real seismograms, and back-propagates that residual using Reverse Time Migration (RTM) to obtain the velocity gradient. A conjugate-gradient scheme then updates the model in the direction that reduces the data misfit most efficiently.

Use this module when you have a smooth starting velocity model — typically built by tomography or velocity analysis — and want to recover high-resolution velocity detail that conventional reflection tomography cannot resolve. FWI works best when the input data contain low-frequency energy (below 10 Hz) and long-offset diving waves or wide-angle reflections that illuminate the subsurface at depth. The module supports multi-threaded and GPU-accelerated execution for production datasets.

The module includes two configurable sub-procedures that are applied automatically during processing: Input seismograms preprocessing, which conditions each shot gather before it is used in the inversion (e.g., muting, filtering), and RTM image postprocessing, which smooths or filters the RTM gradient image before it is applied as a model update. Configure these sub-procedures according to your data quality and noise characteristics.

Input data

Input SEG-Y data handle

Connect the SEG-Y data source that contains the observed (field) shot gathers. This connection provides the actual recorded seismic amplitudes that the inversion will attempt to match. The data must be organized into common-shot gathers. Source and receiver positions must be correctly populated in the trace headers, as the module uses them to set up the acoustic forward modelling geometry. This item must be connected together with the Input data trace headers item before the inversion can initialize.

Input data trace headers

Connect the trace header dataset corresponding to the input SEG-Y. The trace headers supply the source and receiver coordinates and picket numbers that are used to group traces into common-shot gathers and to position sources and receivers in the modelling grid. Every trace must have valid source and receiver picket assignments; the module validates this on initialization and will report an error if any pickets are missing.

Input depth velocity

Connect a 2D depth velocity gather that defines the starting velocity model for the inversion. This model is expressed as interval velocity versus depth and must cover the full lateral and vertical extent of the survey area. The module re-samples the model internally so that the horizontal and vertical cell sizes are equal (the finer of the two input spacings is used), ensuring the finite-difference scheme remains stable and accurate. A smooth, geologically reasonable starting model — for example one derived from reflection tomography or velocity analysis — greatly improves convergence. A poor starting model may lead to cycle-skipping and incorrect results.

Parameters

Use old image condition

Controls which imaging condition is used when computing the RTM gradient. When enabled (default: on), the standard cross-correlation imaging condition is applied directly to the forward and back-propagated wavefields. When disabled, a Laplacian operator is applied to the gradient image before the model update, which suppresses low-wavenumber artefacts and can improve convergence stability. Disable this option if the standard imaging condition produces strong low-frequency noise in the gradient.

Number of iterations

Sets the total number of FWI update cycles to perform. Default: 10. Each iteration runs the full forward model for all source groups, computes the gradient, and updates the velocity model. More iterations generally produce a more refined result but increase computation time proportionally. Monitor the Misfit chart output to assess convergence: when the misfit ceases to decrease significantly between iterations you can stop the inversion. A typical workflow runs 20–50 iterations for a first pass, then re-evaluates the model before continuing.

Min velocity

Sets the lower bound on velocity values (m/s) that the inversion is allowed to produce. Default: 1500 m/s. After each iteration the updated model is clipped so that no cell falls below this value. Set this to a physically meaningful lower bound for your survey area — for example, the velocity of water for marine surveys, or the expected near-surface velocity for land surveys. This prevents the optimizer from producing unrealistic very-low-velocity anomalies.

Max velocity

Sets the upper bound on velocity values (m/s) that the inversion is allowed to produce. Default: 3550 m/s. After each iteration the updated model is clipped so that no cell exceeds this value. Set this to a realistic maximum velocity for the deepest target in your model. Together with Min velocity, this parameter constrains the solution space and prevents numerical instabilities caused by extremely high or low velocities during forward modelling.

Wavelet params

This parameter group defines the source wavelet used in the acoustic forward modelling. The inversion synthesizes seismograms by convolving this wavelet with the impulse response of the earth model, so the wavelet should match the dominant character of the actual source used in the field acquisition as closely as possible.

Frequency

The dominant frequency (Hz) of the Ricker wavelet used for forward modelling. Default: 15 Hz. This frequency determines the temporal resolution and penetration depth of the synthetic data. Lower frequencies (5–10 Hz) are less susceptible to cycle-skipping and are recommended as a starting point for early inversion passes; higher frequencies (15–30 Hz) recover finer velocity detail but require a better starting model. Match this frequency to the dominant energy band of the low-frequency component of your field data for best results.

Modelling params

This parameter group controls the acoustic finite-difference modelling engine used for both forward propagation and gradient computation. The settings here directly affect computation time, numerical stability, and the accuracy of the gradient used for the velocity update.

Time weight exponent

Controls a time-dependent amplitude weighting applied to the residual wavefields during gradient computation. Valid range: 0–10. Default: 1. Higher exponent values increase the relative weight given to later (deeper) arrivals in the RTM imaging condition, boosting sensitivity to deep structures. A value of 0 applies uniform weighting across all time samples. Use values greater than 1 when deep targets are poorly illuminated relative to shallow reflectors.

Depth weight exponent

Controls a depth-dependent amplitude weighting applied during gradient computation. Valid range: 0–10. Default: 1. Increasing this value amplifies the gradient contribution from deeper model cells relative to shallow ones, compensating for geometric spreading and the natural decrease of wavefield amplitude with depth. A value of 0 applies no depth scaling. This parameter works in conjunction with Time weight exponent to balance gradient sensitivity across the model.

Use random phase

When enabled (default: on), a random polarity (positive or negative) is assigned to each source wavelet when sources are combined into multisource groups. This random encoding technique reduces the crosstalk noise that arises when multiple sources are simultaneously modelled in a single forward run (the simultaneous-source or "blended" acquisition approach). Disable this option only if you are using a single source per group (Multisource group size = 1), in which case it has no effect.

Multisource group size

The number of individual shot gathers that are combined (superposed) into a single simultaneous source for each forward modelling run. Minimum: 1. Default: 1 (conventional sequential source modelling). Increasing this value reduces the number of forward modelling runs per iteration (and therefore computation time) at the cost of introducing crosstalk noise in the gradient. Values of 4–16 are commonly used in production FWI workflows when combined with Use random phase encoding. Use the Source groups visualization output to inspect how sources are grouped.

Multisource group step

The index spacing between consecutive sources within a single multisource group. Minimum: 1. Default: 1. A step of 1 combines adjacent shots into each group. Increasing the step selects shots spread further apart in the survey, which can improve the incoherence of the crosstalk noise and lead to better gradient quality. Set this in combination with Multisource group size and Multisource group distance to define the full grouping pattern.

Multisource group distance

The source index offset between the first sources of consecutive multisource groups. Minimum: 1. Default: 1. This parameter controls how densely groups are tiled across the full shot sequence. A small distance means groups overlap heavily (more redundancy, higher compute cost); a large distance means fewer groups cover the survey (faster, but with gaps in illumination). Together with Multisource group size and Multisource group step, this parameter determines the total number of forward modelling runs per iteration.

Number of multisource groups

The maximum number of multisource groups processed per iteration. Minimum: 1. Default: 1. If the grouping scheme would produce more groups than this limit, only the first N groups are used. This allows you to run a fast approximate inversion using a subset of the data — useful for parameter testing or quality control before committing to a full-data inversion run. Set to a large number (e.g. equal to the total number of shots divided by the group size) to use all available data.

Boundary extrapolation range

The width (m) of the absorbing boundary zone added around the edges of the modelling grid to suppress artificial reflections from the model boundaries. Default: 400 m. The zone is computed as the number of grid cells needed to span this distance at the current model resolution. Larger values provide better absorption of outgoing energy and reduce boundary artefacts, but increase the size of the modelling grid and computation time. As a rule of thumb, the boundary should be at least one or two dominant wavelengths wide. For a 15 Hz wavelet in a 2000 m/s medium, one wavelength is approximately 133 m; a 400 m boundary provides about 3 wavelengths of absorption.

Free surface

When enabled, the top boundary of the modelling grid is treated as a free surface (zero-pressure boundary), which generates surface-related multiples and ghosts in the synthetic data just as they appear in real marine or land records. Default: off (absorbing top boundary). Enable this when your input data contain significant free-surface multiples that you want the inversion to model and match. Leave it disabled if the input data have been deghosted or if surface multiples have been attenuated in preprocessing, as the mismatch between modelled multiples and cleaned data would degrade convergence.

Number of output samples

The number of time samples used in the synthetic seismograms produced by the forward modelling engine. Default: 4001. Together with the Output sample rate, this value defines the total modelling time window (total time = samples × sample rate). The window must be long enough to capture all arrivals that are present in the real data — including deep reflections and any multiples you wish to model. Increasing this value extends the time window and increases memory usage and computation time. Set it to match or slightly exceed the record length of your input data.

Output sample ratio

The time step (in seconds) used for the synthetic seismogram time axis. Default: 0.001 s (1 ms). Valid range: 0.0001–0.1 s. This value is also used as the finite-difference time step for the forward modelling engine, so it must satisfy the Courant stability criterion for the chosen velocity range and grid spacing. Smaller values improve numerical accuracy but increase computation time proportionally. As a practical guideline, the time step should be smaller than the Nyquist interval for the wavelet frequency (e.g. for a 15 Hz wavelet, the Nyquist interval is approximately 33 ms, so a 1–2 ms time step is appropriate). Set this to match the sample interval of your input SEG-Y data whenever possible.

P param

A dimensionless scaling factor that controls the initial size of the gradient step used to update the velocity model at each iteration. Valid range: 0–1. Default: 0.05. Internally this value is used to compute a baseline step size as a fraction of the ratio between the current model slowness and the gradient magnitude, ensuring the update is proportional to the current model scale. The module then refines this baseline step using a line-search procedure to find the optimal step size that minimises the misfit. Larger values of P param allow bigger initial steps and may speed up early convergence, but can also cause instability if set too high. Smaller values produce more conservative updates. The default of 0.05 is suitable for most datasets; reduce it if the misfit increases unexpectedly between iterations.

Output data

Output depth velocity

The final updated depth velocity model produced after all inversion iterations are complete. This gather has the same lateral and vertical extent as the input velocity model, expressed as interval velocity (m/s) versus depth. Connect this output to downstream depth migration or depth conversion modules. The model is guaranteed to respect the Min velocity and Max velocity bounds specified in the parameters.

Models (intermediate iteration models)

A collection of velocity model gathers, one per inversion iteration plus the initial starting model. These are updated and displayed live during the run, allowing you to monitor how the velocity model evolves with each iteration. The collection is labelled "Base model" for the initial model and "Iteration #N" for subsequent updates. Use the Intermediate models visualization group to compare models from different iterations and identify when the inversion has converged.

Misfit (convergence chart)

A 2D chart that plots the data misfit (sum of squared residuals between synthetic and observed data) as a function of iteration number. This chart is updated after each iteration and provides the primary diagnostic for assessing inversion convergence. A steadily decreasing misfit indicates healthy convergence. A misfit that stagnates or increases suggests problems such as cycle-skipping, an inappropriate step size, or a starting model that is too far from the true solution. Use the Misfit chart visualization group to view this plot during and after the inversion run.

Source groups (visualization)

A scatter plot showing how individual shot sources are assigned to multisource groups. Each point represents one source, plotted with the source index on one axis and the group number on the other. This output is useful for verifying that the Multisource group size, Multisource group step, and Multisource group distance parameters produce the intended grouping pattern before committing to a full inversion run. The plot is updated automatically whenever these grouping parameters are changed.