Azimuthal NMO analysis

<< Click to Display Table of Contents >>

Navigation:  Velocity >

Azimuthal NMO analysis

 

Description

Azimuthal NMO analysis estimates the azimuthal anisotropy of NMO velocity from wide-azimuth pre-stack seismic gathers. In anisotropic media (such as fractured or stress-sensitive rocks), the NMO velocity varies with the azimuth of the source-receiver pair. This module fits an ellipse to the azimuth-versus-Vrms distribution at each CMP bin and time sample to recover the fast and slow NMO velocities, the azimuth of the symmetry axis, and the degree of ellipticity — all of which are sensitive indicators of fracture orientation and density.

The required input is a trim-static gather produced by a preceding NMO or trim-static workflow step. Each trace in the gather carries an azimuth angle (computed from its source and receiver positions) and a per-sample trim shift. The module back-converts those trim shifts into per-trace, per-sample Vrms estimates corrected for the measured residual moveout. An isotropic Vrms model is also required to provide the reference velocity that anchors the azimuthal ellipse at each CMP location.

Processing proceeds bin by bin in parallel. For each bin, traces from neighbouring bins within the user-defined elliptical aperture are pooled together to build a statistically robust azimuth-Vrms cloud. An iterative robust ellipse-fitting algorithm (least-squares SVD followed by confidence-interval outlier rejection and ternary-search size refinement) is applied at every time sample to recover the four azimuthal NMO parameters: isotropic azimuth, fast-velocity azimuth, ellipticity, and fit residual sigma. The resulting parameter volumes are assembled into output gathers and into an azimuthal Vrms model item that can be connected directly to azimuthal NMO correction modules.

 

Input data

Trim data gather

Connect the trim-static gather that was produced by your NMO trim-static workflow. Each sample in this gather holds the residual moveout time shift (in units of the Trim static dt sample interval) measured at that trace and two-way time. The gather must contain azimuth geometry (source and receiver X/Y coordinates in the trace headers), because azimuth angles are computed internally from these positions. The gather must also carry a FromTime custom header that specifies the start time of the velocity analysis window. A CMP-sorted, wide-azimuth pre-stack gather with adequate fold across all azimuths gives the most reliable ellipse fits.

Vrms model

Connect an isotropic RMS velocity model (GVelocityModelAbstractItem) that represents the best available isotropic Vrms field for your survey. This model serves two roles: first, it provides the reference velocity used to convert each trace's trim shift into an absolute Vrms value; second, it defines the isotropic circle in the polar view against which the fitted ellipse is compared. The model should cover the full spatial extent and time range of the input gather. Use the output of a standard velocity analysis or semblance-based velocity picking module as input here.

Parameters

Inline aperture

The half-length of the spatial search aperture along the inline direction, in metres (default: 50 m). Traces from neighbouring CMP bins within this elliptical search area are pooled with the current bin's traces before ellipse fitting. A larger aperture includes more traces and therefore more azimuth directions, making the ellipse fit more stable, but at the cost of spatial resolution. Use smaller values in areas with rapidly varying anisotropy; increase this value where fold is low or the azimuth distribution is sparse. Together with Crossline aperture, this defines an elliptical spatial aperture centred on each output bin.

Crossline aperture

The half-length of the spatial search aperture along the crossline direction, in metres (default: 50 m). Together with Inline aperture, it forms the elliptical neighbourhood used to gather azimuth-velocity data points for fitting. If the inline and crossline spacings are equal, set both apertures to the same value for a circular search area. For surveys with different inline and crossline bin spacings, you may want to set a larger crossline aperture to compensate for sparser crossline sampling.

Inline azimuth

The azimuth angle (in degrees from North, measured clockwise) that defines the orientation of the inline axis of the spatial search ellipse (default: 0°). Set this to the true geographic azimuth of your survey's inline direction so that the search aperture is aligned with the acquisition geometry. For example, if your inlines run north-south enter 0°; if they run east-west enter 90°. An incorrectly set inline azimuth will cause the search ellipse to be rotated relative to the acquisition footprint, mixing traces from unintended directions.

Trim static dt

The sample interval of the trim-static gather, expressed in seconds (default: 0.004 s = 4 ms). Each sample value in the trim-static gather is interpreted as an integer number of trim-static time steps; multiplying by this value gives the actual time shift in seconds. This parameter must match the sample interval at which the trim statics were computed — typically the same as the seismic data sample interval. Mismatching this value will cause incorrect velocity estimates and poor ellipse fits.

Interpolation parameters

This group controls how the four output azimuthal attribute gathers (isotropic azimuth, fast azimuth, ellipticity, and sigma) are spatially interpolated when assembling the output azimuthal Vrms model item. The interpolated model is used by downstream azimuthal NMO correction modules to apply velocity corrections at any survey location.

Interpolation method { Triangulation, Kriging }

Selects the spatial interpolation algorithm used to build the azimuthal Vrms model from the per-bin output attributes (default: Kriging). Kriging produces smooth, statistically optimal estimates and respects the spatial covariance structure of the data; it is preferred for most surveys. Triangulation uses linear interpolation within triangular facets formed by the data points; it is faster but produces a faceted result and may introduce artefacts where the bin distribution is irregular. The Kriging covariance parameters below are only active when Kriging is selected.

Kriging covariance type { Exponential, Spherical, Gaussian }

Selects the covariance model used by the Kriging interpolator (default: Exponential). The covariance model controls how quickly the spatial correlation of the azimuthal attributes decays with distance. Exponential is a good default for most geological settings. Spherical reaches zero correlation at a finite range and is appropriate when anisotropy is expected to vary abruptly over short distances. Gaussian produces the smoothest interpolation and is most suitable when attribute variations are expected to be very gradual. This parameter is only active when Kriging interpolation is selected.

Kriging range

The range of the Kriging covariance model, in metres (default: 100,000 m). This defines the effective distance over which neighbouring bins influence each other during interpolation. Points separated by more than the range are treated as spatially uncorrelated. For most seismic surveys the default value is intentionally large so that all available bins contribute to the interpolation, effectively producing a weighted global average. Reduce the range to make the interpolation more local and responsive to rapid spatial changes in anisotropy. This parameter is only active when Kriging interpolation is selected.

Kriging number of points

The maximum number of nearest neighbouring bins used in the Kriging system of equations (default: 20). Increasing this value makes the interpolation smoother and uses more spatial context, but increases computation time. Decreasing it speeds up interpolation at the cost of potentially less stable estimates in sparse areas. Values between 10 and 30 are typical for seismic velocity attribute interpolation. This parameter is only active when Kriging interpolation is selected.

Approximation

This group controls the robust iterative ellipse-fitting algorithm that converts the azimuth-Vrms point cloud at each bin and time sample into the four azimuthal NMO parameters. Outlier rejection is performed by retaining only the fraction of data points that fit the current ellipse estimate within the confidence interval, then refitting. This iteration is repeated for the specified number of rounds before a final size refinement step using ternary search.

Confidence interval

The fraction of azimuth-velocity data points retained during each iteration of the robust outlier-rejection step, expressed as a fraction from 0 to 1 (default: 0.97, minimum: 0.01). At each iteration, points are ranked by their deviation from the current ellipse fit, and only the closest fraction specified here is kept for the next fit. A value of 0.97 discards the 3% of points that deviate most, providing mild protection against outliers. Reduce this value (for example to 0.80) in noisy datasets where a larger proportion of erroneous Vrms estimates is expected. Setting this to 1.0 disables outlier rejection entirely.

Iterations count

The number of outlier-rejection-and-refit iterations applied during ellipse approximation (default: 5, minimum: 1). Each iteration discards the worst-fitting points (controlled by Confidence interval) and refits the ellipse to the remaining data. More iterations produce a more robust result when the initial point cloud contains a significant proportion of outliers, but each additional iteration adds computation time. For clean, high-fold datasets with good azimuth coverage, 3 to 5 iterations are typically sufficient. Increase this value when working with low-fold or noisy wide-azimuth data.

GUI

This group controls the interactive location map and polar-view display used for quality control during interactive analysis. Enabling the location map allows you to click on individual CMP bins in the map view to inspect the azimuth-versus-Vrms scatter and the fitted ellipse for that bin at the selected time level.

Enable location map

Enables or disables the interactive map view showing source, receiver, and CMP bin locations along with the current search ellipse overlay (default: disabled). When enabled, the module loads all trace geometry into memory and updates the location map and polar view in real time as you click on bins. This is useful for interactively inspecting the azimuth-Vrms distribution and ellipse quality at individual CMP locations before running a full calculation. Disable this option during batch processing to reduce memory usage — the module automatically clears the cached geometry when this setting is turned off.

Polar view time

The two-way time level (in seconds) at which the polar diagram of azimuth versus Vrms is displayed for the currently selected CMP bin (default: 0 s). The available range is automatically set to the time extent of the input trim-static gather. When you select a bin in the location map, the polar view shows each trace's azimuth angle and its corresponding corrected Vrms at this time level, together with the fitted ellipse. Adjust this time slider to inspect the azimuthal anisotropy at different depths or reflectors of interest.

Update Vrms

This group controls a quality-control filter applied when back-converting trim-static shift values into updated per-trace Vrms estimates. Traces whose newly computed Vrms deviates too far from the reference isotropic model are flagged as unreliable and excluded from the ellipse fitting.

New Vrms max deviation

The maximum allowed relative deviation between a newly computed per-trace Vrms and the isotropic reference Vrms from the model, expressed as a fraction from 0 to 1 (default: 0.4 = 40%). If the back-calculated Vrms for a trace at a given sample is more than this fraction above or below the reference model velocity, that sample is rejected and replaced with a not-a-number value. This prevents large trim-static outliers — which may result from cycle-skipping or noise — from corrupting the azimuthal ellipse fits. Reduce this value to 0.1–0.2 for clean data to enforce tighter QC; increase it if the expected azimuthal velocity variation exceeds 40%.

Settings

Execute on { CPU, GPU }

Selects whether the computation runs on the CPU or a GPU accelerator. The azimuthal ellipse fitting is a multi-threaded CPU operation; GPU execution is not available for this module. Leave this set to CPU.

Distributed execution

Controls whether computation is distributed across multiple processing nodes. Enable this option when processing large 3D surveys with many CMP bins to take advantage of a cluster computing environment.

Bulk size

The number of CMP bins processed in each distributed computing chunk. Larger values reduce the overhead of job distribution but require more memory per node.

Limit number of threads on nodes

When distributed execution is active, this option limits the number of CPU threads used on each remote node. Use this to prevent the module from monopolising all cores on a shared cluster node.

Job suffix

An optional text label appended to the distributed job name. Use this to distinguish parallel runs of the same module in the job queue.

Set custom affinity

Enables manual specification of CPU core affinity for the processing threads. When enabled, the Affinity parameter becomes active. Leave this disabled unless you need to pin threads to specific cores for performance tuning on NUMA systems.

Affinity

Specifies the CPU core affinity mask when Set custom affinity is enabled. Only applicable in advanced multi-socket or NUMA system configurations.

Number of threads

The number of parallel CPU threads used for ellipse fitting. The module processes CMP bins in parallel using OpenMP, so setting this to the number of physical CPU cores on your workstation will give maximum throughput. For large 3D surveys with many bins, multi-threading significantly reduces total run time.

Skip

When enabled, this module is bypassed entirely and its inputs are passed through to the output without modification. Use this to temporarily disable azimuthal NMO analysis in a workflow without disconnecting the module.

Output data

Output Vrms gather

A per-trace, per-sample Vrms gather derived by back-converting the trim-static shifts in the input gather using the isotropic reference model. Each trace in this gather holds the corrected RMS velocity at each time sample for that particular source-receiver azimuth. Traces whose computed Vrms deviates from the reference by more than New Vrms max deviation are set to NaN. This gather is used internally for ellipse fitting and is also available for QC inspection — display it in velocity colour scale to verify that the azimuthal velocity variation is well-captured before reviewing the ellipse attributes.

Output isotropic azimuth gather

A gather containing the azimuth angle (in radians) at which the fitted ellipse intersects the isotropic Vrms circle from the reference model, as a function of CMP bin and two-way time. This attribute indicates the direction in which the corrected azimuthal NMO velocity equals the isotropic reference velocity. It is a diagnostic output for understanding the orientation of the anisotropic axis relative to the isotropic velocity field. Values are expressed in radians and can be converted to degrees by multiplying by 180/pi.

Output azimuth gather

A gather containing the azimuth angle (in radians) of the fast NMO velocity direction — that is, the major axis of the fitted velocity ellipse — as a function of CMP bin and two-way time. In fractured reservoirs this azimuth typically aligns with the dominant fracture or stress orientation. The azimuth is constrained to the range [0, pi) because the ellipse major axis has no unique sense of direction. Convert to degrees by multiplying by 180/pi for geological interpretation.

Output ellipticity gather

A gather containing the ellipticity of the fitted velocity ellipse (ratio of the minor semi-axis to the major semi-axis, b/a) as a function of CMP bin and two-way time. A value of 1.0 indicates a perfectly isotropic (circular) velocity distribution; values approaching 0.0 indicate strong azimuthal anisotropy with a large difference between the fast and slow NMO velocities. This attribute is directly related to the magnitude of azimuthal anisotropy and can be used to map fracture intensity or stress contrasts laterally across the survey.

Output sigma gather

A gather containing the normalised RMS residual of the ellipse fit (standard deviation of data-point deviations from the fitted ellipse, divided by the reference isotropic Vrms) as a function of CMP bin and two-way time. This is a direct quality-control indicator: low sigma values indicate that the azimuth-Vrms data conform well to the elliptic model, while high sigma values flag bins or time samples where the ellipse approximation is unreliable — due to insufficient azimuth coverage, excessive noise, or genuinely non-elliptic azimuthal variation. Use this gather to mask or down-weight unreliable ellipse estimates before using them in further processing.

Azimuthal Vrms model

The primary output of this module: a spatially interpolated azimuthal Vrms model item (GAzimuthalVelocityModelItem) that encodes the isotropic azimuth, fast-velocity azimuth, and ellipticity at every survey location and time sample. Connect this item to downstream azimuthal NMO correction modules to apply the azimuth-dependent NMO correction to pre-stack gathers. The spatial interpolation method and parameters (Kriging or Triangulation, range, covariance type, number of points) are controlled by the Interpolation parameters group above. This data item does not produce a visual display directly; it acts as a data connector for the azimuthal NMO workflow.

Information

Graphics

The module provides two interactive display groups when Enable location map is turned on. The Location map view shows all CMP bins (Bins), source positions (Sources), and receiver positions (Receivers) in plan view, together with the Search ellipse overlay centred on the currently selected bin. Click on any bin to select it and update the polar view. The Polar view shows the azimuth-versus-Vrms scatter (Vrms points) and the fitted approximation ellipse (Approximation ellipse) for the selected bin at the time level set by Polar view time. The ellipse panel header displays the fitted fast velocity (Vfast), fast-velocity azimuth, ellipticity (delta = b/a), and normalised sigma in real time. The reference isotropic Vrms circle from the input model is also drawn for comparison.

Custom actions

Update location map

Refreshes the location map display by reloading the trace geometry from the connected trim-static gather and rebuilding the spatial index of CMP bins, sources, and receivers. Run this action after connecting or changing the input gather, or after modifying the Inline aperture, Crossline aperture, or Inline azimuth parameters, to update the search-ellipse overlay in the map view. This action only has an effect when Enable location map is turned on.