Synthetic Seismic Modelling from Classified Meshes
Scope. This page is the methodological companion to the Seismic Modelling user guide. It documents the physics, the numerical scheme, and the software architecture in enough detail to reproduce or extend the method. The user guide covers the workflow and the dialog; here we explain why the result looks the way it does.
Abstract
We describe a forward operator that turns a classified triangulated surface mesh — an outcrop or interpreted horizon model carrying per-vertex facies and acoustic impedance — into a band-limited synthetic seismic section. Contacts between facies are treated as reflecting elements; their reflectivity follows from the impedance contrast across the contact, and their orientation follows from the in-plane impedance gradient under an explicit two-dimensional extrusion assumption. A Kirchhoff diffraction stack sums the contribution of every reflecting element into each trace using straight-ray traveltimes in a constant background velocity, geometric spreading, and an obliquity weight; each trace is then convolved with a chosen wavelet. The same traversal records, co-located with the modelled reflections, the facies and impedance that produced them, which are exposed as filterable attribute layers on the resulting section. We close with the data model, the colour-mapped panel renderer, and the assumptions and limitations of the approach.
1. Introduction
Tying outcrop interpretation to the seismic scale is a recurring problem in reservoir geology: a contact that is obvious on a cliff face may image strongly, weakly, or only as a diffraction once it is band-limited and viewed under a particular acquisition geometry. Rather than exporting to an external modelling package, VRGS computes a synthetic section in situ from the same classified mesh the interpreter is already working with. The method is deliberately lightweight — a single-scattering (Born/Kirchhoff) approximation with straight rays — so that it runs interactively on a background worker and answers the qualitative question "how would this geometry image?" rather than producing a calibrated amplitude prediction.
2. Method
2.1 Inputs
The operator consumes a triangulated mesh with two per-vertex scalar layers:
| Symbol | Quantity | Role |
|---|---|---|
| facies / class id at vertex | identifies contacts (where differs across a facet) | |
| acoustic impedance at vertex | drives reflectivity and reflector orientation |
Impedance is the product of bulk density and P-wave velocity, . The layers are produced upstream (classification, painting, or the Add Test Facies + Impedance helper) and are read by name; the operator does not classify.
2.2 Reflector extraction
The mesh is traversed facet by facet. For a facet with vertices we group the vertices by facies id. A facet whose three vertices share a single facies is interior to a unit and contributes nothing. Otherwise the facet straddles a contact and becomes a reflecting element with:
- a centroid in true world coordinates;
- a true 3-D area ;
- a reflection coefficient and a normal (below).
2.3 Reflectivity
Each facies group has a mean impedance. For a facet touching two facies the contact is unambiguous; for a facet touching three, the pair with the largest impedance contrast is selected (a deterministic, vertex-order tie-break). With and the mean impedances on the two sides, the normal-incidence reflection coefficient is
This is the standard acoustic, normal-incidence form; angle-dependent (AVO) effects are not modelled.
2.4 The two-dimensional extrusion assumption
The reflecting orientation is not taken from the cliff-face (mesh) normal. Instead it is the impedance gradient across the facet, projected into the acquisition plane and normalised:
where is the constant gradient of the linearly-interpolated impedance over the triangle, is the horizontal normal of the vertical acquisition plane, and removes the out-of-plane component. The gradient is undefined (returns ) for a degenerate triangle or vanishing contrast.
Geologically this asserts that each contact extends perpendicular to the section — a 2-D structure swept along strike. It is what makes a horizontal bed reflect strongly to a source directly above it (its normal points up, into the plane), while a vertical fault is weak at zero offset (its normal is near- horizontal) yet still diffracts off its truncated tips. Where measured per-vertex dip vectors are available they can be substituted for the computed gradient, turning the assumption into data.
2.5 The Kirchhoff diffraction stack
Every reflecting element is treated as a Huygens secondary source. For a source–receiver pair defining trace , and an element at with reflectivity , area , and unit normal , let
The element deposits an impulse of amplitude
where are the unit ray directions from the element to source and receiver. The factor is the product of two 3-D spherical-spreading terms; the obliquity down-weights elements seen at grazing incidence and reduces to unity when the normal is undefined.
Traveltimes use straight rays in a constant background velocity :
The impulse is laid into the trace by linear interpolation between the two nearest samples at (or ). Summing over all elements gives the reflectivity series
with the unit triangular (linear-interpolation) kernel. This is a single-scattering approximation: multiples, transmission losses, mode conversion, and intrinsic attenuation are not represented.
2.6 Wavelet and band-limitation
Each finished trace is convolved once with a source wavelet to produce the displayed, band-limited trace . Two wavelets are available:
- a Ricker wavelet of peak frequency , windowed to one period and peak-normalised;
- a Klauder wavelet (the autocorrelation of a linear sweep of length ), appropriate for modelling Vibroseis data.
Both kernels are symmetric and odd-length, centred on their midpoint. The wavelet bandwidth controls reflection thickness; the vertical resolution is governed by the classic tuning limit .
2.7 Acquisition geometry
The default geometry is a zero-offset line of co-located stations hung above the model, auto-centred on the mesh footprint and scaled to it: the line runs along the longer horizontal axis, the record length is sized so the panel spans from the line down past the base of the model, and the wavelet frequency is set so several wavelengths fit the section (a fixed survey-scale default would place every reflection in a thin band and leave the panel flat). The geometry is fully general, however — fixed offsets or arbitrary source/receiver trajectories are supported, and a vertical fault that is invisible at zero offset can be imaged by shooting offsets that capture its tip diffractions.
The line can also be aligned to a measured structure: choosing a strike shoots the line perpendicular to it (along the dip direction), and the regional dip is then flattened out (§2.8) so dipping beds image as horizontal bands. Both can be entered directly or taken from a nearby orientation measurement (whose dip-azimuth fixes the strike as , and hence the line as the dip azimuth).
2.8 Co-located facies and impedance attributes (flattened overlay)
Alongside the amplitude, the forward model records the facies id and impedance of the high-impedance side of each contact and exposes them as two auxiliary panels, co-registered with the reflections, that answer "which contact, of what impedance, produced this event?" directly on the synthetic.
Crucially, these attributes are not placed at the Kirchhoff traveltime used for the amplitude. Doing so would smear each contact's facies along its diffraction hyperbola; a winner-take-all colour fill then tracks the apex locus of that smile, so a flat contact would image as an upward arch instead of a horizontal band. Instead the attributes are projected geometrically onto the section, at the contact's true position.
The section frame. The acquisition line is shot ~along the dip direction; the depth axis is vertical ; the off-plane direction is (the strike). For a contact element at and a trace with source , write and resolve
Flattening. Each element's depth is reduced by its own along-line dip ramp,