Back to Experiments

Burgers-equation experiment: S score as an early-warning signal

Overview

The system is a 1D viscous Burgers finite-difference simulation, \(u_t + u u_x = \nu u_{xx}\), on a uniform grid with sinusoidal initial data at low viscosity (\(\nu = 0.001\)). It is a scalar model equation whose steep gradients are shocks; it is not the 3D Navier–Stokes system, and nothing measured here transfers to that problem. The run records the convergence score \(S\) and the gradient norm \(\|\nabla u\|_\infty\) at every step, and asks how far ahead of the gradient threshold \(\|\nabla u\|_\infty > 10\) the score \(S\) first goes negative. The threshold, the lead time and the contingency counts are properties of this grid, viscosity and window.

Method

  1. Run the 1D viscous Burgers simulation at \(\nu = 0.001\) with sinusoidal initial data. Track \(S\) and \(\|\nabla u\|_\infty\) at every time step.
  2. Define the excursion threshold as \(\|\nabla u\|_\infty > 10\). Record the first step where \(S < 0\) and the first step where the gradient exceeds the threshold.
  3. Compute the running integral \(\int_0^T \|u_x\|_\infty \, dt\) of the gradient supremum and correlate it with \(S\).
  4. Run a 100-trial study with randomised initial conditions. Classify each trial by whether the gradient stays below the threshold within the window, and by whether \(S \geq 0\) throughout.

Results

Single-Run Timeline

EventStep\(S\)\(\|\nabla u\|_\infty\)
Simulation start0+1.0000.63
\(S\) first negative399-0.0031.82
Gradient exceeds 1016,760-2.4110.02

Lead time: \(S\) goes negative 16,361 steps before the gradient threshold is crossed — a 37× ratio (threshold crossing at step 16,760, warning at step 399).

Gradient-Integral Correlation

The running integral \(\int_0^T \|u_x\|_\infty \, dt\) grows monotonically. At the step where \(S\) first goes negative it is at 12% of its value at the threshold crossing. The Pearson correlation between the cumulative integral and \(-S\) over the run is \(r = 0.94\).

100-Trial Contingency Table

Below thresholdCrossed thresholdTotal
\(S \geq 0\) throughout38038
\(S < 0\) at some step144862
Total5248100

The cell \(C = 0\): in these 100 trials no run crossed the gradient threshold while \(S\) stayed non-negative throughout.

Observation. In all 100 trials a threshold crossing is preceded by \(S < 0\). The converse does not hold: 14 trials had \(S < 0\) transiently and stayed below the threshold within the window (false positives). \(S < 0\) is a warning, not a determination.

Notes

  • 37× lead. \(S\) goes negative at step 399, over 16,000 steps before the gradient exceeds the threshold, at this viscosity and grid.
  • \(C = 0\) in the sample. Across 100 randomised trials, every threshold crossing is preceded by \(S < 0\). This is a count in a finite sample.
  • Gradient-integral correlation. The correlation \(r = 0.94\) between the running gradient integral and \(-S\) says the two quantities track each other over the run; \(S\) is available as a running scalar.
  • False positive rate. 14/62 (23%) of the \(S < 0\) trials stay below the threshold. \(S < 0\) is sensitive but not specific.
Caveats. (1) The system is 1D Burgers; steep gradients here are shock formation, which is a different mechanism from anything in 3D Navier–Stokes. (2) 100 trials with randomised initial data is a finite sample; \(C = 0\) is a count, not a theorem. (3) The 37× lead is specific to this viscosity, grid resolution and threshold.

Summary

On 1D viscous Burgers at \(\nu = 0.001\), the convergence score \(S\) goes negative at step 399, 37× ahead of the gradient threshold crossing at step 16,760. In a 100-trial study, every threshold crossing is preceded by \(S < 0\) (\(C = 0\)), with a 23% false-positive rate. The running gradient integral and \(-S\) correlate at \(r = 0.94\).

Reproducibility

../simplex/build/sxc exp_ns_blowup.sx -o build/exp_ns_blowup.ll

OPENSSL_PREFIX=$(brew --prefix openssl)
clang -O2 build/exp_ns_blowup.ll \
  ../simplex/runtime/standalone_runtime.c \
  -o build/exp_ns_blowup \
  -lm -lssl -lcrypto -L${OPENSSL_PREFIX}/lib

./build/exp_ns_blowup

Related