SootViz

Detonation cell widths from soot-foil records — with a measurement you check by eye before you trust it.

Your image never leaves your machine. The Python runs inside this tab through WebAssembly — there is no server, nothing is uploaded, and nothing is stored. The first run downloads about 25 MB of runtime, which your browser then caches.

1

Your soot foil

Drop an image here, or click to choose PNG, JPG or TIFF. For figures inside a PDF, use the command line.

Physical size of the image

Required — every length in the method is physical, so an image alone cannot be measured. Give the extent of the image itself, not of any figure around it. Crop axes and labels away first.

Optional

Leave these alone unless the verification overlay comes out wrong. The cell width is found from the record itself.

Load an image and give its size.

How it measures

A soot foil carries two families of triple-point trajectories, and the cell width is the transverse distance between adjacent trajectories of one family. Two traps make this easy to get wrong, silently. The pattern is usually sheared, so the trajectory bounding a cell transversely is not the one directly above it, and a nearest-neighbour rule invents a tail of wide cells. And the cells group into larger patches, so the dominant periodicity of the raw image — what autocorrelation or a spectrum returns — is the grouping, not the cell. On one experimental plate that error was a factor of three.

SootViz separates the families first, with a bank of oriented line filters, fits their angles per block so the pattern may turn along a long record, and measures each family on its own. The two families are then independent measurements of the same quantity, so their disagreement is an error bar, reported with every result alongside an orientation coherence.

Does it work?

Four levels of evidence, in increasing order of realism. Reproduce any of them with sootviz benchmark; the figures behind them are in the benchmark gallery.

Synthetic foils — the only place truth is known exactly

casetrue λmeasurederrorfamilies
regular2.50 mm2.48−0.8 %0 %
sheared (asymmetric families)2.50 mm2.48−0.8 %2 %
irregular (0.20 λ jitter)2.00 mm1.88−6.0 %0 %
noisy, low contrast3.00 mm2.52−16.0 %6 %

The last row is the documented limit, not a hidden one: heavy noise at low contrast shortens the plateau and costs about 15 %. A real record in that state reports a high scale sensitivity, which is the signal to quote a distribution rather than a number.

Published foils — measured from the authors' own figures

Taileb, Melguizo-Gavilanes & Chinnayya, Combustion and Flame 218 (2020) 247, Fig. 5. The authors report a range over their three chemistry models rather than a value per panel — “the cell size was numerically estimated to lie in the range of 0.9 mm ≤ λnum ≤ 1.9 mm” (p. 17) — and state that detailed chemistry gives the smaller cell, while single-step was tuned to the experimental size. So what can honestly be checked is range containment and that ordering:

panelSootVizIQRin reported range
single-step2.07 mm1.50–2.74yes
three-step chain-branching1.28 mm0.93–1.72yes
detailed0.93 mm0.71–1.19yes

Ordering single-step ≥ three-step ≥ detailed is reproduced, and the two extremes land on the authors' two bounds. Their figures are copyrighted and are not reproduced here.

Real records

A numerical foil from our own solver, 30 × 20 mm: λ = 2.35 mm, IQR 1.79–3.06, families agree to 10 %, scale sensitivity 6 %. A photographed experimental plate, 5 m × 1 m, where the pattern turns along the record: λ = 0.162 m over 13 blocks, with family angles swinging from +35°…+65° to −65°…−45°. That plate is the instructive one — the families disagree by 19 % and the scale sensitivity is 23 %, so SootViz warns on both counts instead of handing over a clean-looking number.

If you use SootViz, please cite it

This is free and always will be. Citing it is what makes it worth maintaining, and it lets a reader check how your cell widths were obtained.

@software{sootviz,
  author  = {Thyagarajan, Karthik},
  title   = {{SootViz}: cell-width measurement from detonation soot-foil records},
  year    = {2026},
  note    = {Strawhat CFD},
  url     = {https://github.com/fedres/sootviz}
}

And the paper describing the method (Appendix C):

@article{thyagarajan2026lbfs,
  author  = {Thyagarajan, Karthik and Melguizo-Gavilanes, Jos\'e},
  title   = {A systematic assessment of the lattice {B}oltzmann flux solver with
             face-local gating as a scheme for flame acceleration, detonation and
             deflagration-to-detonation transition. {P}art {I}: one-dimensional
             detonation dynamics and inviscid detonations},
  year    = {2026}
}