Given a device's specs and a vessel/skin profile, estimates a workable fluence range for thermally damaging a target cutaneous blood vessel — companion tool to the hair-removal Fluence Range Recommender, reusing the same optical/thermal/Arrhenius core with a haemoglobin chromophore in place of melanin. Copyright Mike Murphy, 2026.
Ω vs fluencePlay with the threshold
Shallow end of depth range
Deep end of depth range
Your Ω threshold
Paper's bounding values (0.01 / 4.6)
Ω is plotted on a log scale. The paper behind this tool (Murphy, "Beyond thermal relaxation times…") flags Ω = 4.6 (99% cell death, calibrated for hair-follicle matrix cells) as probably too high a bar for vessel wall/endothelial damage, and Ω = 0.01 (~1% denaturation) as probably too low — hence the adjustable threshold rather than a fixed value. Drag the "Damage threshold Ω" slider above and watch where it crosses the curves; the fluence at the crossing point is what the recommended range (above) is solving for. Calibrate this against your own clinical outcomes.
What this model does and doesn't account for
Uniform heating (conservative). The vessel is modelled as a uniformly-absorbing cylinder, heated evenly across its cross-section. In reality, blood at the beam-facing side of the lumen absorbs light before it reaches the far wall, so absorption — and peak wall temperature — concentrate towards the surface facing the incident beam. This model's temperatures are a lower bound; real peak temperatures at the vessel wall will run hotter than shown here.
Evaluation point. Ω and temperature are evaluated at the vessel's own centre (the paper's own convention), not the wall — for the reason above, this is also conservative.
Single fixed haemoglobin concentration. A whole-blood haemoglobin concentration of 150 g/L is assumed throughout (a standard textbook default) — this isn't adjustable here, unlike SO₂.
Thermal properties of blood are approximated as water's (diffusivity 1.43×10⁻³ cm²/s), following the source paper's own reasoning — a keratinising matrix's thermal properties (used in the hair-removal version of this tool) would be a poor stand-in for blood.
Arrhenius parameters (A = 1.8×10⁵¹ s⁻¹, Eₐ = 3.27×10⁵ J/mol) are Jia et al.'s own port-wine-stain bulk-skin coagulation parameters — used here completely unmodified, since (unlike the hair-follicle version of this tool, which had to borrow these vascular parameters as a working approximation for a different tissue) they were derived from vascular skin in the first place.
Device list (2026-09-07 revision, Mike's own clinical practice). Ruby, alexandrite, and the 810/940nm diodes were removed — not used clinically for vessels. 1060nm diode kept (untested so far, but planned). IPL filters changed from 650/695nm to the 480/530nm filters actually used, since the lower cutoff passes wavelengths much more strongly absorbed by haemoglobin. Pulsed dye laser (585/595nm) added — very commonly used clinically for vascular work today.
IPL console setting vs. delivered fluence (2026-09-07). For the two IPL filters only, every fluence this app shows you (the headline range, the epidermal temperature, the table, the chart's x-axis) is now the console setting — what to type into the device screen — not the fluence actually reaching the skin. Internally the physics still runs on delivered fluence (console × an estimated filter-transmission fraction: 78.2% for the 480nm filter, 67.2% for the 530nm filter), and the equivalent delivered value is shown alongside the headline range so you can see both. These fractions are themselves a first-order model — an assumed (not measured) flashlamp spectrum, an idealised brick-wall filter edge, spectral truncation only — worked through in full in the separate "IPL Delivered Fluence Estimate" note. PDL and the diode/Nd:YAG options have no filter in the beam path, so console and delivered fluence are identical for them (fraction = 1, nothing changes).
Numerical calibration factor (0.846) against an independent finite-difference solver was fitted once, at the hair-removal tool's own reference case (810 nm / 10 ms / 5 mm depth / black hair). It corrects for discretisation error in the shared Gaussian-kernel solver rather than anything hair-specific, so it's carried over here as a reasonable approximation — but it hasn't been independently re-validated against a vascular reference case.
Haemoglobin absorption data beyond 1000 nm. Your own Prahl compilation (Gratzer/Kollias data, matching the standard omlc.org table) genuinely stops at 1000 nm — this isn't a truncated extraction. For the 1060 nm option (1064 nm Nd:YAG falls just past it too), absorption is estimated by a log-linear extrapolation of your data's own 900-1000 nm trend, not independently measured data. PDL (585/595 nm) and the IPL bands (480/530 nm) sit well inside the tabulated range and use your data directly — no extrapolation involved there.
Background dermal light transport below ~600 nm (2026-09-07, fixed following a clinical calibration check). The target vessel's own haemoglobin absorption (above) is accurate at 480-595nm — it's read straight from your tabulated data, and always was. The separate "background" term modelling how much light survives the trip down through bulk dermis to reach that vessel was the problem: below 600nm it used to simply hold its 600nm value flat, understating real skin's much stronger absorption in the 480-580nm haemoglobin band. You caught this directly — your own clinical experience with IPL 530nm on facial telangiectasia (real-world: <26 J/cm² console virtually always gives a poor result, >35 J/cm² for reliable instant destruction) was running at roughly double what the tool recommended, exactly the size and direction this gap would produce. The background term below 600nm is now a cited bloodless-dermis absorption curve (Jacques 2013, Phys Med Biol) plus a background dermal blood-volume-fraction contribution (0.3%, from the low end of the 0.2-4% range reported by Bashkatov et al. 2011 and Yudovsky & Pilon 2010 for normal skin — distinct from the target vessel's own, much larger, fully-modelled contribution). This is a genuinely cited correction, not a fit to your one number — but your number is exactly the kind of independent check it should pass, and it now does (see the project notes for the full before/after). Still open: the literature itself isn't unanimous on bloodless-dermis absorption in this range (one other cited source runs 10-20x higher than the formula used here), and 0.3% blood volume fraction is a representative literature value, not something measured for a specific patient or site — worth treating the 480-595nm numbers as considerably better-grounded now, not as beyond further refinement.