Paper-grounded 3D viewer (Rust + egui + WGPU) for the finite-time blowup construction in OpenAI's Finite time blowup for Navier-Stokes.

This application visualizes the construction's geometry, asymptotic scaling, and mechanism. It is not a direct numerical reconstruction of the full certified fields.
Represented exactly at the statement level:
L∞ velocity as t -> 1.Not claimed as exact theorem data:
swirl, axial outflow, pulse amplitude, heat exterior).Terminology note: this is not a "refutation of Navier-Stokes." The paper gives a forced smooth solution with finite-time blowup behavior under the stated setup.
With tau = 1 - t and 0 < h < 1/100:
l_r ~ tau^(1/2)l_z ~ tau^(1/2-h)|u_theta|, |u_z| ~ tau^(-1/2-h)|u_r| ~ tau^(-1/2)~ tau^(1/2-3h)Re_theta ~ tau^(-h)/nu~ tau^(2h)Viscosity rescaling reference:
u_nu(x,t) = sqrt(nu) u(x/sqrt(nu), t)p_nu(x,t) = nu p(x/sqrt(nu), t)f_nu(x,t) = sqrt(nu) f(x/sqrt(nu), t)The UI checkbox apply exact sqrt(nu) spatial scaling applies the corresponding spatial scaling.
Time is controlled in logarithmic coordinate:
s = -log10(1 - t)s = 1,2,3,4,5 corresponds to t = 0.9, 0.99, 0.999, 0.9999, 0.99999Main controls currently implemented:
WGPU / Software.h, nu, viscosity scaling toggle.Notes on timeline jump presets:
activation at s=0.30, core contraction at s=0.60) are heuristic names over the logarithmic slider coordinate.t=0.9, t=0.99, t=0.999, near t=1).src/main.rs: app state, egui panels, camera, diagnostics, timeline, stage text, uniform packing, callback registration.src/scene.rs: SceneUniforms, WGPU pipeline, callback prepare/paint, particle constants, draw call.src/shader.wgsl: procedural particle generation and shading.Implementation details:
vertex_index.24,00018,0008,00050,000 particles (300,000 billboard vertices)Uniform layout must stay byte-compatible between SceneUniforms in Rust and Uniforms in WGSL.
Prerequisites:
wasm32-unknown-unknown target + TrunkIf Rust is not installed yet, install it with rustup:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Then restart your shell and verify:
rustc --version
cargo --version
Update to latest stable toolchain:
rustup update stable
rustup default stable
Recommended optional components:
rustup component add rustfmt clippy
For this repository's web build support:
rustup target add wasm32-unknown-unknown
cargo install trunk
Native:
cargo run
Release:
cargo run --release
Web run:
trunk serve --release
Open http://127.0.0.1:8080 unless a custom --port is supplied.
A deploy-ready static bundle is kept in export/ for direct upload.
index.html, hashed JS loader, and .wasm binary../...) so it works when hosted from a subpath.Refresh it from current dist/ output:
./scripts/refresh-export.sh
Upload all files inside export/ together. See export/UPLOAD_INSTRUCTIONS.txt for checklist and local validation steps.
Recommended before/after changes:
cargo fmt --check
cargo check
cargo clippy
cargo run
cargo run --release
Manual smoke test waypoints:
s=0, s~0.05, s~0.35, s=1, s=2, s=3, s=5h and nucargo check alone is not enough for shader safety; WGSL is validated when the app creates the renderer at runtime.
If scene looks empty:
s=1 (t=0.9).1.0, raise exposure and point size.Common non-bug appearance cases:
t~0, particles intentionally start faint (zero-initial-state emphasis).t->1 in physical coordinates, the core collapses into a tiny region.If Rust compiles but startup fails, inspect WGPU/WGSL runtime errors (shader syntax, uniforms, pipeline descriptors, entry points).
Safe claims:
Unsafe claims:
h re-proof claims from slider explorationIf higher fidelity is needed, derive and implement from explicit equations/data in the paper rather than tuning current procedural effects.
2 commits
Rust
86.8%
WGSL
8.5%
HTML
3.1%
Paper-grounded 3D viewer (Rust + egui + WGPU) for the finite-time blowup construction in OpenAI's Finite time blowup for Navier-Stokes.

This application visualizes the construction's geometry, asymptotic scaling, and mechanism. It is not a direct numerical reconstruction of the full certified fields.
Represented exactly at the statement level:
L∞ velocity as t -> 1.Not claimed as exact theorem data:
swirl, axial outflow, pulse amplitude, heat exterior).Terminology note: this is not a "refutation of Navier-Stokes." The paper gives a forced smooth solution with finite-time blowup behavior under the stated setup.
With tau = 1 - t and 0 < h < 1/100:
l_r ~ tau^(1/2)l_z ~ tau^(1/2-h)|u_theta|, |u_z| ~ tau^(-1/2-h)|u_r| ~ tau^(-1/2)~ tau^(1/2-3h)Re_theta ~ tau^(-h)/nu~ tau^(2h)Viscosity rescaling reference:
u_nu(x,t) = sqrt(nu) u(x/sqrt(nu), t)p_nu(x,t) = nu p(x/sqrt(nu), t)f_nu(x,t) = sqrt(nu) f(x/sqrt(nu), t)The UI checkbox apply exact sqrt(nu) spatial scaling applies the corresponding spatial scaling.
Time is controlled in logarithmic coordinate:
s = -log10(1 - t)s = 1,2,3,4,5 corresponds to t = 0.9, 0.99, 0.999, 0.9999, 0.99999Main controls currently implemented:
WGPU / Software.h, nu, viscosity scaling toggle.Notes on timeline jump presets:
activation at s=0.30, core contraction at s=0.60) are heuristic names over the logarithmic slider coordinate.t=0.9, t=0.99, t=0.999, near t=1).src/main.rs: app state, egui panels, camera, diagnostics, timeline, stage text, uniform packing, callback registration.src/scene.rs: SceneUniforms, WGPU pipeline, callback prepare/paint, particle constants, draw call.src/shader.wgsl: procedural particle generation and shading.Implementation details:
vertex_index.24,00018,0008,00050,000 particles (300,000 billboard vertices)Uniform layout must stay byte-compatible between SceneUniforms in Rust and Uniforms in WGSL.
Prerequisites:
wasm32-unknown-unknown target + TrunkIf Rust is not installed yet, install it with rustup:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Then restart your shell and verify:
rustc --version
cargo --version
Update to latest stable toolchain:
rustup update stable
rustup default stable
Recommended optional components:
rustup component add rustfmt clippy
For this repository's web build support:
rustup target add wasm32-unknown-unknown
cargo install trunk
Native:
cargo run
Release:
cargo run --release
Web run:
trunk serve --release
Open http://127.0.0.1:8080 unless a custom --port is supplied.
A deploy-ready static bundle is kept in export/ for direct upload.
index.html, hashed JS loader, and .wasm binary../...) so it works when hosted from a subpath.Refresh it from current dist/ output:
./scripts/refresh-export.sh
Upload all files inside export/ together. See export/UPLOAD_INSTRUCTIONS.txt for checklist and local validation steps.
Recommended before/after changes:
cargo fmt --check
cargo check
cargo clippy
cargo run
cargo run --release
Manual smoke test waypoints:
s=0, s~0.05, s~0.35, s=1, s=2, s=3, s=5h and nucargo check alone is not enough for shader safety; WGSL is validated when the app creates the renderer at runtime.
If scene looks empty:
s=1 (t=0.9).1.0, raise exposure and point size.Common non-bug appearance cases:
t~0, particles intentionally start faint (zero-initial-state emphasis).t->1 in physical coordinates, the core collapses into a tiny region.If Rust compiles but startup fails, inspect WGPU/WGSL runtime errors (shader syntax, uniforms, pipeline descriptors, entry points).
Safe claims:
Unsafe claims:
h re-proof claims from slider explorationIf higher fidelity is needed, derive and implement from explicit equations/data in the paper rather than tuning current procedural effects.
2 commits
Rust
86.8%
WGSL
8.5%
HTML
3.1%