Volcanic Vortex Ring Rise Model

A 1D variable-entrainment vortex-ring / thermal rise model for natural volcanic vortex rings, adapted for rise through a real, stratified atmosphere. Set the vent conditions, atmosphere, and entrainment closure below and run the model — everything executes locally in your browser (via Pyodide/WebAssembly), so nothing is uploaded to a server.

Vortex Rings Volcanic Plumes Entrainment Stratified Atmosphere Runs In-Browser

About the model

Volcanic vortex rings are toroidal puffs of ash and gas that are occasionally observed emerging from vents during weak explosive eruptions. This model treats a rising vortex ring as an entraining thermal, tracking its volume, momentum, and buoyancy fluxes as it rises through a compressible, stratified atmosphere and mixes with ambient air. The atmosphere can be the built-in ICAO/US Standard Atmosphere (1976), optionally shifted to a known near-vent temperature, or a real sounding profile you upload. Entrainment can be prescribed as a constant rate or computed as a height-dependent, Richardson-number-based closure following Turner (1962).

The physics follows the classic thermal/plume framework of Morton, Taylor & Turner (1956) and Turner (1962), adapted for volcanic vortex rings per Sparks et al. (1997), with buoyancy computed from potential temperature so the model remains valid for the compressible atmosphere the ring rises through. The in-browser version uses the same model physics as the standalone Python/MATLAB versions, and was validated against the desktop Python implementation to four decimal places.

Run the model

First load takes a few seconds while your browser downloads Pyodide + numpy. Results appear instantly on every run after that.

Open full-page ↗

Download & run locally

The browser version above is a fully self-contained port of the same model. MATLAB and desktop Python (with an optional GUI) versions are also available.

MATLAB

Edit parameters at the top of a script and run — no toolboxes beyond base MATLAB required.

View on GitHub ↗

Python

Command-line script or a Tkinter desktop GUI. Requires numpy, scipy, and matplotlib.

View on GitHub ↗

Full documentation

Setup instructions for MATLAB, Python (Mac & Windows), and troubleshooting notes.

Read README ↗