Back to Experiments

Shell-model experiment: 6-shell threshold estimates

Overview

The system is a cubic shell ODE: independent velocity-shell variables \(u_k\) and vorticity-shell variables \(\omega_k\) at integer wavenumbers \(k\), coupled by hand-built cubic transfer terms, a stretching coupling \(\lambda\) and a feedback coupling \(\sigma\), with linear damping \(\nu k^2\). It is not a Galerkin truncation of Navier–Stokes; \(u_k\) and \(\omega_k\) are separate state variables and the coupling structure is chosen by hand. Every threshold reported on this page — the amplitude \(A^*\), times to threshold crossing and classification scores — is a finite-window excursion threshold: \(A^*\) is the smallest initial amplitude for which the shell enstrophy \(\sum_k \omega_k^2\) exceeds a fixed excursion level within the integration window, and its value depends on the window length, the excursion level and the solver.

Question

How closely do the criteria in the 26-level diagnostic hierarchy \(H\), its self-adapting variant \(H'\) and the confidence-tracking variant \(H''\) reproduce the direct-integration threshold amplitude \(A^*\) of the 6-shell ODE (3 velocity + 3 vorticity variables), and how does the estimate change as criteria are added and the observation window is extended?

Method

  1. Start from the 26-level diagnostic hierarchy \(H\) feeding the holistic convergence score.
  2. Progressively add criteria: ratchet detector (\(J\)), saturation predictor (\(L\)), doubling time (\(P\)).
  3. Implement \(H'\) with self-adapting weights that re-weight the levels at each time step.
  4. Implement \(H''\) with confidence tracking: integrate to \(T=100{,}000\) and record whether the prediction is still moving.
  5. Record the threshold estimate and its distance from the direct-integration value at each stage.

Results

Threshold estimate by criterion

LevelCriterion\(A^*\) estimateFraction of the gap to 1.136 closed
L0–L4\(H_{v1}\) (\(dH/dt\))0.2980%
L11\(J\) (ratchet)0.38510.4%
L14\(L\) (saturation)0.75554.6%
L15\(P\) (doubling time)1.02086.1%
L15+\(H'\) (self-adapting)1.06591.5%
—\(H''\) (\(T=100{,}000\))1.136100%

Diagnostic components

ComponentFunction
\(H\)26 levels computed from the trajectory; each level is a dual number with a computable meta-gradient
\(H'\)Self-adapting weights — re-weights the levels at each time step
\(H''\)Confidence tracking — records whether the prediction is still moving with the observation window
Observation. At \(T=50{,}000\) the \(H'\) estimate sits 8.5% below the direct-integration value. The trajectory ratios at A=1.08 and A=1.15 differ from step 0 (see Microscope), and the \(H''\) estimate reaches the direct-integration value 1.136 when the window is extended to \(T=100{,}000\). Both numbers are window-dependent quantities of this ODE.

Analysis

  • Monotone sequence of estimates. Each added criterion moves the estimate closer to the direct-integration value: 0.298 → 0.385 → 0.755 → 1.020 → 1.065 → 1.136.
  • Doubling time is the largest single step. The jump from 0.755 to 1.020 at L15 comes from the doubling-time criterion \(P\).
  • Self-adaptation adds a further 0.045. \(H'\) re-weights the more informative levels, moving the estimate from 1.020 to 1.065.
  • Window length accounts for the rest. \(H''\) adds no new levels; extending the window to \(T=100{,}000\) brings the estimate to 1.136, the value obtained by direct integration over the same window.
  • Loop diagnostic. The chain \(L_1 \to L_4 \to L_2 \to L_1\) among the diagnostic levels is present in every run of this ODE; \(H''\) records whether it stays active or switches off within the window.

Summary of the run

For the 6-shell cubic ODE, the threshold estimate from the diagnostic hierarchy moves from 0.298 (\(dH/dt\) alone) to 1.136 (\(H''\) at \(T=100{,}000\)), the doubling-time criterion \(P\) contributing the largest single step (to 1.020). All values are finite-window excursion thresholds of this ODE at the stated window, excursion level and solver settings.

Reproducibility

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

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

./build/exp_ns_solve_6mode

Related