Wave Reflection Analysis

Three-probe separation of incident and reflected waves · Goda & Suzuki (1976), Kobayashi, Cox & Wurjanto (1990)

Methodology

This tool implements the three-wave-probe reflection analysis used by Lamsal, Haus & Rhode-Barbarigos (2026), An experimental study on wave transmission over submerged SEAHIVE® breakwaters, Coastal Engineering Journal (doi:10.1080/21664250.2026.2661171).

Following the methodology of Goda & Suzuki (1976) and Kobayashi, Cox & Wurjanto (1990), incident and reflected wave heights are separated from co-linear capacitance wave-probe records using linear wave theory. The free surface is modeled at each frequency as a superposition of incident and reflected linear waves; the Fourier coefficients of each gauge are combined to solve a 2×2 system for the incident and reflected amplitudes ai, ar: Aj = aie−ikxjare+ikxj. The wave number k follows from the linear dispersion relation ω² = gk tanh(kd), solved by Newton–Raphson iteration from a Fenton–McKee seed. A Bluestein-algorithm DFT handles records of arbitrary length.

The method is valid when the probe spacing Δx satisfies 0.05 ≤ Δx/L ≤ 0.45, where L is the local wavelength. The tool checks this band and the 2×2 inversion conditioning at every frequency and discards bins that fail either test; the fraction of measured spectral energy that survives this filter is reported as the retained-energy fraction. Incident and reflected spectra are integrated to the spectral significant wave heights Hm0 = 4√m0, and the coefficients are defined as Kr = Hr/Hi and (when two arrays are present) Kt = Hi,2/Hi,1.

Method selection. The default analysis is the redundant three-probe array of spectral.js (reflectionAnalysis): the three probe pairs are averaged at every valid frequency, and the result is reported as long as it retains at least 80 % of the spectral energy. When the three-probe inversion is ill-conditioned, the tool falls back to the best admissible two-probe pair and flags the row with a small "2P" badge in the results table (otherwise a "3P" badge is shown). The Analysis method dropdown in the settings panel lets the user override this selection: force three-probe with no fallback, force two-probe on the best pair, or force a specific two-probe pair (1–2, 1–3 or 2–3) — useful for cross-checking a published result with a different method.

Input files: 2, 3 or 6 numeric columns, detected automatically. Two columns run two-probe Goda–Suzuki on the single pair (only X12 is used); three columns run a three-probe array (with automatic two-probe fallback); six columns run two three-probe arrays in the same file (channels 1–3 seaward, channels 4–6 shoreward). Water depth is set below and may be overridden per file (auto-read from "Depth=d" in the file name when present). The browser tool calls the same per-frequency Goda–Suzuki routines as the Python WaveLabX package (two_probe_goda, three_probe_array and reflection_analysis); an automated cross-implementation test in the WaveLabX test suite confirms that the two interfaces produce numerically equivalent results on identical inputs.

Settings

What does this do?
  • Auto — runs the three-probe redundant array; if its retained-energy fraction falls below 80 %, falls back to the best admissible two-probe pair.
  • Three-probe only — forces the three-probe routine and never falls back, even if the inversion is ill-conditioned (the row is flagged in the warning panel).
  • Two-probe (best admissible pair) — skips three-probe entirely and reports the two-probe pair with the highest retained-energy fraction.
  • Two-probe (gauges 1–2 / 1–3 / 2–3) — forces that specific probe pair; intended for cross-checking a published result with one method.

For 2-channel CSVs the method is always two-probe Goda–Suzuki regardless of this setting.

Array 1 — ch 1–3 (seaward)

Array 2 — ch 4–6 (shoreward)

Each array is defined by two gauge spacings; gauge positions are taken as 0, X12, X12+X23. Water depth and gauge layout apply to every file; wave frequency is detected per file and is editable in the table. The number of gauges per file is auto-detected from the CSV: 2-column CSVs run two-probe Goda–Suzuki on the single pair (only X12 is used); 3-column CSVs run three-probe on Array 1 only; 6-column CSVs run two three-probe arrays.

Drop CSV files here · or click to browse

2, 3, or 6 columns of wave-gauge time series (auto-detected)

Visualization
Probes:
off

Load CSV files, then pick one to plot its wave-probe time series.