FWI 2D

<< Click to Display Table of Contents >>

Navigation:  Inversion >

FWI 2D

 

Description

FWI 2D performs acoustic Full Waveform Inversion on two-dimensional post-stack seismic data. The module iteratively updates a depth-domain velocity model so that synthetic seismic data computed from that model matches the observed input stack as closely as possible. This approach yields velocity models with significantly higher spatial resolution than conventional velocity analysis, resolving fine-scale structures that are invisible to semblance-based or tomographic methods.

The inversion loop works as follows. At each global iteration, the module runs a finite-difference exploding-reflector forward model through the current velocity model and convolves the result with the input source wavelet to produce a synthetic zero-offset stack. A velocity gradient is then computed by back-propagating the residual between the synthetic and observed stacks. This gradient is combined with the gradient from the previous iteration using the Fletcher-Reeves conjugate-gradient formula, and an optimal step size is found by quadratic line search. The velocity model is updated in slowness space and clamped to a physically plausible range before the next iteration begins.

Three gradient computation strategies are available, controlled by the Gradient Type parameter. The Classic method uses a reverse-time migration (RTM) cross-correlation imaging condition with a rho pre-conditioner. The Spike deconvolution method applies sparse Orthogonal Matching Pursuit deconvolution to the RTM image before computing the gradient, improving resolution where reflector interference is strong. The Integration method performs sparse deconvolution after depth-to-time stretching, scales by the local velocity field, and integrates in time before converting back to depth, giving a gradient in velocity units that is directly comparable to the model. The intermediate and best-fit model and synthetic are written to SEG-Y files in the output path folder at every iteration for quality control.

 

Input data

Velocity model

The starting depth-domain velocity model that will be updated by the inversion. Connect a depth gather item in units of m/s. This model defines both the spatial geometry of the inversion grid and the initial velocity values. A smooth, geologically reasonable initial model is essential for FWI convergence: large mismatches between the initial model and the true earth will cause the inversion to stall in a local minimum. Typically this model is prepared by a prior tomographic inversion or depth conversion of a well-constrained RMS velocity field.

Input stack

The observed post-stack (zero-offset) seismic data that the inversion attempts to match. Connect a time-domain gather in standard trace format. The input stack should be pre-processed to remove acquisition artefacts and non-primary energy so that the observed waveforms represent the earth's acoustic response as accurately as possible. The sample interval of this gather sets the time axis for both forward modelling and gradient computation; the wavelet will be automatically resampled to match if necessary.

Input wavelet

The source wavelet used to convolve the finite-difference synthetic output before comparing it to the observed stack. Connect a single-trace time-domain gather representing the estimated source signature. An accurate, compact wavelet is critical: errors in the wavelet will be mapped into spurious velocity updates. The wavelet can be extracted from the data using the Correlation or Designature modules, or constructed synthetically. If the wavelet sample interval differs from the input stack, it will be automatically resampled to match.

Parameters

Smooth window

Half-length of the running-mean subtraction window applied in time to the migrated gradient image before it is converted to a velocity update. Default: 0.1 s. Minimum: 0.0001 s. This operation removes the long-period (low-wavenumber) trend from the gradient, focusing the update on the reflectivity contrast rather than the background velocity. Increase this value when the input data have a broad-band low-frequency content that contaminates the gradient with background velocity structure. Decrease it when the gradient appears over-smoothed and fine reflectors are lost.

Reflectivity threshold

Fractional amplitude threshold applied to the gradient image after normalisation to the global maximum, expressed as a fraction (0 to 1). Default: 0.1 (10%). Gradient values whose absolute amplitude exceeds 2 standard deviations of the normalised gradient are clipped to that limit before being used to update the velocity. This prevents isolated high-amplitude artefacts (for example near the surface or at mute boundaries) from dominating the model update. A value of 0 disables thresholding; values closer to 1 impose stronger clipping.

Gradient smooth X

Number of traces over which the velocity gradient will be smoothed in the lateral (inline/crossline) direction before it is applied to the model. Default: 20 traces. Minimum: 0 (no smoothing). Lateral smoothing suppresses spatially incoherent gradient noise and promotes a geologically plausible, horizontally continuous velocity update. Increase this value in areas of poor signal-to-noise or irregular acquisition geometry. Reduce it when the velocity model contains genuine sharp lateral contrasts that must be preserved.

Gradient smooth Z

Number of depth samples over which the velocity gradient will be smoothed in the vertical direction before it is applied to the model. Default: 2 samples. Minimum: 0 (no smoothing). A small amount of vertical smoothing removes sample-to-sample numerical noise in the gradient without blurring the genuine velocity structure. Increase this value to obtain a smoother velocity update when modelling artefacts are visible in intermediate results; keep it small to preserve depth resolution of thin layers.

Number of global iterations

Total number of outer FWI iterations to perform. Default: 10. Minimum: 1. Each iteration consists of one forward modelling pass, one gradient computation, a quadratic line-search over several trial step sizes (each requiring additional forward modelling), and one velocity model update. Intermediate results are saved to the output path folder at every iteration so convergence can be monitored. For an initial test run, 3 to 5 iterations are sufficient to assess whether the inversion is moving in a useful direction. Increase to 20 or more for production-quality results when convergence has been confirmed.

Modelling step

Time step used by the finite-difference wave-equation forward modelling engine, in seconds. Default: 0.0005 s (0.5 ms). Minimum: 0.00001 s. The time step must satisfy the Courant-Friedrichs-Lewy (CFL) stability condition for the finite-difference scheme: it must be small enough relative to the model grid step and the maximum velocity. A value that is too large will cause numerical instability (the modelled wavefields will grow without bound). A conservative rule of thumb is dt < 0.6 * dx / V_max, where dx is the Model grid step and V_max is the maximum velocity in the model. Reduce this value if the modelling produces diverging or unstable synthetic traces.

Model grid step

Spatial grid interval to which the input velocity model is resampled before finite-difference modelling, in metres. Default: 10 m. Minimum: 0.1 m. The input velocity model is tri-cubic interpolated onto a regular grid with this spacing in all three spatial directions. A finer grid step gives a more accurate wave simulation and captures shorter-wavelength velocity variations, but increases memory consumption and computation time substantially. The grid step also interacts with the Modelling step through the CFL condition: if you reduce the grid step you may need to reduce the Modelling step proportionally to maintain stability. A typical starting value is 5 to 25 m for shallow high-resolution surveys.

Bandpass params

Container group controlling whether a trapezoidal bandpass filter is applied to the finite-difference modelling engine before each forward-modelling step. When active, the filter limits the frequency content of the wavefield to the passband defined by Frequency 1 through Frequency 4, which helps suppress numerical dispersion artefacts that arise at high frequencies or when the model grid step is coarse relative to the shortest wavelength. Enable this group when modelling artefacts are visible in intermediate synthetic outputs.

Apply bandpass

Enables or disables the trapezoidal bandpass filter on the modelling wavefield. Default: off. When checked, the four frequency corner parameters (Frequency 1 to 4) become active and define the filter shape. Set this on when you observe high-frequency ringing or grid-dispersion stripes in the synthetic output. Leave it off when the model grid step is fine enough to support the full bandwidth of the source wavelet without dispersion.

Frequency 1

Low-cut taper start frequency of the bandpass filter applied to the modelling wavefield, in Hz. Default: 0.1 Hz. This is the lowest frequency at which the filter begins to ramp up from the Epsilon amplitude level. Set it just below the lowest useful signal frequency. Only active when Apply bandpass is enabled.

Frequency 2

Low-cut taper end frequency (pass band starts here), in Hz. Default: 0.1 Hz. The filter ramps from Epsilon amplitude at Frequency 1 to full amplitude at Frequency 2. Set it to the low end of the usable signal band. Only active when Apply bandpass is enabled.

Frequency 3

High-cut taper start frequency (pass band ends here), in Hz. Default: 0.1 Hz. The filter holds full amplitude between Frequency 2 and Frequency 3. Set it to the high end of the usable signal band, below which numerical dispersion becomes significant. Only active when Apply bandpass is enabled.

Frequency 4

High-cut taper end frequency, in Hz. Default: 0.1 Hz. The filter ramps from full amplitude at Frequency 3 down to the Epsilon amplitude level at Frequency 4 and cuts all higher frequencies. Set it to the frequency above which the grid introduces unacceptable dispersion. Only active when Apply bandpass is enabled.

Epsilon

Fractional amplitude at the low and high taper corners of the bandpass filter (0 to 1). Default: 1.0 (100% — the filter has no taper). Set to a value less than 1 (for example 0.05) to introduce a cosine-like taper ramp at the filter edges, which prevents Gibbs ringing. Only active when Apply bandpass is enabled.

Decon params

Container group controlling the sparse deconvolution step used by the Spike deconvolution and Integration gradient types. The deconvolution separates the reflectivity series from the wavelet in the migrated gradient image so that individual reflection events appear as sharp spikes rather than wavelet-convolved pulses. These parameters are ignored when Gradient Type is set to Classic.

Lambda

Regularisation (prewhitening) level for the sparse deconvolution solver expressed as a fraction of the maximum energy (0 to 1). Default: 0.2 (20%). A higher value increases stability and suppresses noise in the deconvolved reflectivity series at the cost of reduced resolution. A lower value gives sharper spikes but is more sensitive to noise in the gradient image. Typical values range from 0.05 to 0.3. Only relevant when Gradient Type is Spike deconvolution or Integration.

Number of iterations

Maximum number of Orthogonal Matching Pursuit (OMP) iterations used in the sparse deconvolution. Default: 100. Minimum: 1. Each OMP iteration identifies one additional dominant reflector spike. More iterations produce a more complete sparse representation of the reflectivity series but increase computation time proportionally. For typical post-stack data, 50 to 100 iterations are sufficient. Increase this value if the deconvolved gradient still shows wavelet-shaped events rather than isolated spikes. Only relevant when Gradient Type is Spike deconvolution or Integration.

Gradian Type { Classic, Spike deconvalution, Integration }

Selects the algorithm used to compute the velocity gradient from the migrated residual wavefield. Default: Integration.

Classic — computes the gradient by cross-correlating the forward wavefield with the backward-propagated residual after applying a rho (derivative) filter to the observed data. This is the standard FWI adjoint-state gradient. Use this method as a baseline; it is robust and well-understood but may produce lower-resolution velocity updates when reflector interference is strong.

Spike deconvolution — applies OMP sparse deconvolution to the RTM image to convert the wavelet-shaped migration event into a reflectivity spike series before gradient computation. This can improve the spatial resolution of the velocity update in areas with closely spaced reflectors. The Lambda and Number of iterations (Decon params) parameters control the deconvolution.

Integration — stretches the RTM image to the time domain, applies OMP deconvolution, scales each spike amplitude by twice the local velocity, integrates in time (accumulating a cumulative reflectivity model), and then normalises by the velocity before converting back to depth. This produces a gradient that is physically equivalent to a perturbation in the velocity field and is well-suited to datasets where the reflectivity series can be cleanly separated by sparse deconvolution.

FWA param

Step-size normalisation factor that scales the gradient update relative to the RMS slowness of the current velocity model. Default: 0.05. Minimum: 0.00001. The absolute step size alpha is computed as pur * sqrt(sum(1/V^2)) / sqrt(sum(gradient^2)), which automatically adapts the update magnitude to the scale of the model. A larger value allows bigger velocity changes per iteration and can speed up convergence but risks overshooting and creating artefacts. A smaller value gives more conservative updates and better stability. Start with the default of 0.05 and adjust based on the convergence behaviour observed in the intermediate output files written to the Output path folder.

Output path

Path to a folder where intermediate and diagnostic SEG-Y files are written during execution. At every global iteration the module writes the current gradient, the conjugate-gradient search direction, and the updated velocity model to this folder. After line search it also writes the best-fitting synthetic stack and the corresponding velocity model. These files are essential for monitoring FWI convergence and diagnosing whether the inversion is diverging or cycling. The folder is created automatically if it does not exist. If this field is left empty, no intermediate results will be saved.

Settings

Execute on { CPU, GPU }

Selects whether finite-difference modelling computations run on the CPU or on a CUDA-capable GPU. The GPU option can dramatically reduce run time for large models because the finite-difference stencil is highly parallelisable on GPU hardware. Ensure that a compatible GPU with sufficient memory to hold the full velocity model and wavefield is available before selecting this option.

Distributed execution

Options for distributing the computation across multiple network nodes in a g-Platform cluster environment. When enabled, the FWI iterations are dispatched to remote worker nodes, allowing large 2D or pseudo-3D datasets to be processed in parallel across the cluster.

Bulk size

Minimum number of gathers sent to each processing node in a single work package during distributed execution. Larger bulk sizes reduce scheduling overhead but may lead to uneven load balancing between nodes. Use the default value unless network latency or scheduling overhead is causing performance issues.

Limit number of threads on nodes

When enabled in a distributed execution environment, restricts the number of CPU threads that each remote worker node will use. This is useful when the worker nodes are shared machines where excessive thread usage would impact other users or processes.

Job suffix

An optional text label appended to the distributed job name to distinguish concurrent FWI runs on the same cluster. Use a unique suffix when running multiple FWI workflows simultaneously to avoid job name conflicts on the scheduler.

Set custom affinity

When enabled, exposes the Affinity parameter and allows manual assignment of CPU cores to this process. Use this on multi-socket workstations to pin the computation to a specific NUMA node and avoid cross-socket memory bandwidth penalties.

Affinity

CPU core affinity mask specifying which processor cores the module is allowed to use. Only visible when Set custom affinity is enabled. Leave at the default value unless specific NUMA performance tuning is required.

Number of threads

Number of OpenMP threads used for parallel execution of the finite-difference modelling loops and gradient computations. The default is to use all available logical cores. Reducing this value frees CPU resources for other concurrent processes. FWI is heavily compute-bound, so using the maximum available thread count is recommended for production runs.

Skip

When enabled, this module is bypassed and input data pass through to the output unchanged. Use this to temporarily disable the FWI step in a processing flow without deleting the module and its parameter settings.

Output data

Output stack

The best-fitting updated velocity model output as a depth-domain gather, representing the final result of the FWI inversion after all global iterations. This gather can be connected to downstream depth imaging modules or visualised directly in the g-Platform velocity model viewer. The module also writes incremental versions of this model to SEG-Y files in the Output path folder at each iteration, allowing you to select the iteration that gave the best misfit reduction rather than being constrained to use only the final result.

Information

Graphics

Custom actions