Skip to content

About

An ARSENAL WebGPU coupling study with reproducible numerical checks and explicit limits.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Countercurrent

An interactive water experiment from ARSENAL, built with Astra in Codex.

Open the live experiment · Model · Evidence · ARSENAL releases

Push the float and let go. It sends ripples across the basin, and those ripples push back. Open How it works to see the wave field, read the model, or compare the GPU simulation with its CPU reference in your browser.

Countercurrent, an interactive stone basin with a reciprocal float

Watch the 18-second demo · Earlier uncut validation recording

Use it to explore how two simulations affect each other. The code comes with controls, model notes and tests, so you or your coding agent can make changes and check what still works. It follows The Cove and cloth-v1 as a separate ARSENAL project. MODEL.md explains the physics and approximations; PROOF.md records what was tested.

Run

Use Node 20.19+ or 22.12+ and a WebGPU-capable browser on a secure origin (HTTPS or localhost).

npm ci
npm run dev

Open http://127.0.0.1:5188/. Dependency installation needs the package registry. The installed app has no remote assets, telemetry, API key or runtime service.

npm run check
npm run preview

The production output is dist/, with relative asset paths for subdirectory hosting. npm run preview serves it at http://127.0.0.1:4188/. This repository does not include node_modules or built bundles. Plain file:// is not a supported launch method.

Append ?embed for the compact live layout used on the ARSENAL page. It keeps drag, press, reset, pause, coupling and inspection controls, with the same simulation underneath.

Try the experiment

  • Hold inside the basin and move gently. Release to stop applying hand force.
  • Press & release provides the same vertical input without pointer dragging.
  • Pause/resume and reset are available at the bottom. Keyboard shortcuts: Space, R and C, when focus is outside a button or link.
  • To compare disconnected behavior, turn Water ↔ float off, reset, and press. Existing waves continue if you disconnect without resetting.
  • The field notes provide surface, height, flow and top views. Height colors saturate at ±5 mm; measurements retain the full range.
  • The GPU/reference button executes three small cases; it does not display a prerecorded PASS.

Reduced-motion preference disables the opening demonstration. Inactive tabs stop advancing. A limited catch-up budget drops wall time during overload instead of taking a larger numerical timestep. Unsupported WebGPU shows an explanatory screen with the model still accessible; ?forceFallback=1 exercises that route.

What the model does

A normalized compact footprint both senses and presses the water. A shared quadratic potential supplies the two reciprocal derivatives. A reflecting MAC grid and kick–drift update give a small executable numerical contract. Water is fp32 on the GPU; the sampled presentation texture is fp16. Float heave is read directly from GPU state by its vertex material.

The hand and horizontal guide are external work. The heave coordinate is an incremental model around a subtracted equilibrium, with signed incremental pressure. It does not solve displacement, wetting, full rigid-body motion, splash, breaking waves or calibrated hydrodynamics. Optical slopes are amplified ×3 for readability; geometry and measurements keep scale 1. Procedural tile refraction and studio-light reflections are illustrative.

Evidence and contribution

GitHub Actions runs the nine CPU test groups, production build and runtime audit. GPU correspondence is a separate browser check: run it from How it works. Published results identify the tested grid sizes, tolerances and limits.

PROOF.md maps each claim to a runnable check and its limits. evidence/DEVELOPMENT.md retains the initial test blind spot and rendering defect. interface.md records field ownership and units. ASSETS.md records dependency and visual provenance. The short demo is a contiguous 18-second excerpt (7–25 s) from a fresh 35.56-second browser recording, with visible water motion from the start, guided dragging, release and reset. It replaces an earlier clip with a long idle opening. evidence/MEDIA_CHECK.json records the capture and frame checks. The earlier 109.6-second validation recording is also retained. Neither recording contains generated or composited simulation footage.

Stevenson selected and directed the project. Astra authored and integrated this successor in Codex; a separate model advised on the mathematics and a read-only adviser located the release route. This is an attributed build record, not a controlled model comparison or a scientific-novelty claim. Earlier ARSENAL results are not presented as new Astra results.

License

Source and documentation use Apache-2.0, following ARSENAL's existing public-release policy. See LICENSE, LICENSE_SCOPE.md and THIRD_PARTY_NOTICES.md. Project names and branding carry no trademark grant. Screenshots and demo recordings have the separate demonstration-use boundary stated in LICENSE_SCOPE.md.

About

An ARSENAL WebGPU coupling study with reproducible numerical checks and explicit limits.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages