Emergence · Live Rust + WebAssembly
Just enough physics.
Start with a cheap model. Check its error. Unfold to a finer model where it stops being good enough. Try the same idea in light, fluids and engineering design.
Loading the Rust models…
One sphere, three ways to solve it
Audited against MieWhen does a shortcut stop working?
Small particles admit a cheap expansion. Larger ones use a table folded from the full wave solution, or unfold to the series.
x = 2πr / λ in air; the chart spans x = 0.01 to 12.
The check is part of the demo. Every plotted result is compared with the existing Wiscombe-truncated Mie series. Rayleigh claims are asymptotic; table and series claims are validated. The reference itself claims 2 × 10⁻⁸, so a tighter request must be reported unmet.
Fixed monochromatic refractive indices, homogeneous spheres and independent scattering. This is one optical building block for atmosphere and water rendering. The native repository includes radiation transport, fluids and spectral rendering; a coupled weather model is beyond this demo. Methods, benchmarks and limits ↗
An actual 3D spectral solve
24³ pointsA small window into the solver.
The same f64 Rust solver used by the native CPU reference. The browser runs it in a Worker while you explore a slice.
- Simulation time
- 0.000
Choose the planar flow to compare energy with an exact solution.
Read the error with the picture. Viscosity is integrated exactly inside fourth-order Runge–Kutta; the nonlinear term is dealiased with the 2/3 rule. The outer-shell energy fraction is a resolution warning, not an error bound. These small grids are for exploration. Re = 1600 turbulence needs much finer native runs for accurate dissipation.
For the planar vortex, E(t) = ¼ exp(−4νt); the readout measures relative error against that exact solution. The native emergence ladder can escalate grid resolution using an a posteriori certificate. This interactive view lets you choose the grid directly. Certificate validation ↗
Electrical → thermal → fluids → requirements
Motor-driver coolingDoes the design still pass?
A cooler-looking nominal number can hide a failing tolerance. Change the geometry or airflow and follow the original project graph through to its requirements.
Try 6 fins and 3.5 m/s: the channel leaves the laminar model’s range. The graph reports that its thermal requirement is unavailable.
Input tolerances, material estimates and numerical error all travel with the answer. “Met” is conditional on this model’s stated assumptions and error claims.
Open the full CAD + design example ↗This evaluates the repository’s original motor-driver thermal and electrical models: the temperature-dependent MOSFET loss loop, gap pad, developing laminar heat-sink channels and PCB trace. Bounds carry each model’s rigor; the developing-flow discretization estimate is not a proof of real-device accuracy.
The native project also includes parametric CAD, mass, printing and signal-integrity checks. Those are separate from this browser view. Material sources and assumptions are retained in the project JSON and model code. Design validation and assumptions ↗