Skip to content

Releases: stoatworks-labs/containment

Release list

v0.1.0

Choose a tag to compare

@github-actions github-actions released this 24 Sep 02:17

A ball of hot plasma held in a magnetic bottle, as an FFGL effect for Resolume Arena and Avenue, shown as SW Containment. The clip is what the plasma is made of, and the plasma obeys 2.5-D compressible ideal magnetohydrodynamics, solved on the GPU every frame: MUSCL–Hancock, the HLLD Riemann solver and GLM divergence cleaning. The bottle is the closed-form field of real coils standing outside the picture: 0, 4, 6, 8 or 12 poles and a guide field, turning slowly.

Nothing is drawn. The ball glows as ρ²√T, the way a thin, hot plasma radiates. Its pressure pushes out and the field pushes back, so it swells and rings until its edge sits at β ≈ 1. Curvature acts as a gravity pointing out of the ball, so its edge breaks into Rayleigh–Taylor fingers, only at the sizes field-line tension allows. A multipole bottle leaks through its cusps as jets. Quench the coils and it goes up as a fireball. Ignite, Pellet and Fuel keep it alive in a show, and six presets reach whole bottles in one gesture, from the clip's own orb to an orb in the green of oxygen's 557.7 nm aurora line.

What is verified

By tools/verify.sh on an M4 Max, macOS 26.4, on 2026-09-24, every check at its own raster and at 320×180 (47 steps, all green):

  • Brio–Wu, along x and y, at two resolutions: all five waves within 0.8 cells of an independent double-precision reference (a different solver at 8192 cells); the contact 4 cells wide, where HLL makes it 6.
  • Alfvén wave, circularly polarised and oblique: speed B/√ρ to 0.02%, and the amplitude loss converging at second order.
  • Magnetic Rayleigh–Taylor: growth rates to 0.4–0.7% of the textbook dispersion relation; above the tension cut-off, no growth.
  • Cusp leaks for 4, 6 and 8 poles within 0.4° of the angles the coils predict, and following the coils as they turn.
  • The diamagnetic bubble: total pressure flat to 0.02%, its edge within 0.1 cells of flux conservation. The quench front at the exact Riemann speed to two cells.
  • Mass and energy conserved to round-off in a closed vessel; ∇·B held to truncation level; the Open boundary lets an echo leave and holds the default look for 20 Alfvén times.
  • Eighteen deliberately wrong models are all caught, and one character changed in the shipped limiter fails two checks. All 33 swept controls change the picture; oxbow reads SW Containment / CT01 / effect.
  • Render cost at the defaults, measured on an idle GPU: about 8 ms/frame at 1080p, set by the grid (Detail 256), not the raster. Detail 512 and 1024 are not real-time. macOS figures only.
  • Windows, in Resolume Arena 7.27.1 (win-lab, Mesa llvmpipe, no GPU, 2026-09-24): a CI build of this source loads from Extra Effects, registers as SW Containment / CT01 / effect, all 42 host controls match the declaration, it renders, every one of the 32 controls the gate can test moves the picture, and Arena's log stays clean: 9 of the fleet gate's 9 checks, in two runs. The three audio controls cannot be tested there (no sound device). Software rendering says nothing about a GPU or about speed.

What is not

  • Never loaded into Resolume on macOS, and measured on one Mac GPU only.
  • Some terms are modelling choices rather than textbook ideal MHD: a dual-energy switch, GLM's energy term, curvature as a temperature-scaled effective gravity, the coils' changes carried through the vessel, the Open vessel's absorbing margin, and Fuel. With a cusp, total energy drifts 0.2% over 600 frames. AGENTS.md says why each is there.
  • It is 2.5-D: nothing varies along the axis, so no kinks and no tokamak.
  • A frame takes at most 48 substeps; past that, simulated time runs slow rather than unstable (Cusp Leak hits it every frame).
  • Audio has never reached it in a host: Resolume's 64 FFT bins are assumed linear.
  • No OpenFX port. There is a user guide at https://stoatworks-labs.com/software/containment/guide/ and a browser demo at https://containment-demo.stoatworks-labs.com, which runs the plugin's own shaders at Detail 128 by default.

The macOS build is Developer ID-signed and notarised by the release pipeline after publication; if macOS refuses a download, it predates the signing, so download it again. The Windows build is unsigned, so SmartScreen warns once.