Inspiration

What it does

How we built it

Challenges we ran into

Accomplishments that we're proud of

What we learned

What's next for VesselDelta

Why I built it

I am a third-year medical student, and I kept seeing blood vessels explained with the same static picture: a red tube, a few arrows, and one red danger zone. That picture makes pressure, flow, wall stress, and rupture look like the same thing. They are not.

I built VesselDelta so anyone can change one thing and immediately see which part of the mechanics actually changes. You do not need a medical background. Pinch the vessel and a faster jet appears. Widen it and the flow starts to swirl. Raise pressure or thin the wall and the wall-stress calculation rises.

High blood pressure is not a niche lesson. Nearly half of U.S. adults meet the CDC definition used in the national estimate linked in the app. VesselDelta turns that invisible idea into something people can see and test without pretending to diagnose them.

What it does

VesselDelta is a live vessel mechanics instrument that runs in a browser.

The opening view is a layered 3D vessel cutaway with an outer wall, inner lining, visible cut edges, and red-cell shaped tracers. The vessel is not a prerecorded animation. Its shape comes from the same editable boundary used by the live flow model.

A visitor can choose four simple stories.

  1. Narrow the vessel. The model forms a faster jet at the tightest point and shows how the flow changes next to the wall.

  2. Add a bulge. The wider space changes the speed and creates a visible swirl.

  3. Raise pressure. The outward wall load rises while the live flow setting stays unchanged. This separates pressure from flow instead of blending them into one red heatmap.

  4. Explore what changes over time. Plain-language cards explain sodium, a DASH-style eating pattern, physical activity, ACE inhibitors or ARBs, calcium channel blockers, thiazides, and statins. These pathways use sourced population evidence and mechanisms. They do not fake an instant meal effect, an instant plaque cure, or a personal treatment result.

There is also a 45-second guided tour. It asks a visitor to make a prediction before revealing the live comparison. After that, Try it yourself lets the visitor draw either vessel wall, rotate the 3D cutaway, switch to the computed flow slice, and inspect the live numerical checks.

A separate wall stress and strength lab

Flow along the wall and pressure pushing outward are different mechanical questions, so VesselDelta does not force them into one solver.

The wall lab uses the uniform thin-wall relation:

circumferential stress = pressure × radius ÷ wall thickness

The controls use mm Hg, millimeters, and kilopascals with explicit unit conversion. More pressure raises stress. A larger radius raises stress. A thinner wall raises stress.

The visitor can compare the result with a selected ex-vivo tissue-strength value. The default 680 kPa is clearly labeled as a teaching midpoint derived from two published abdominal aortic aneurysm tissue group means. It is not a measured clinical cutoff.

A constructed example reaches 684 kPa against the selected 680 kPa comparison and opens a visible split in the wall. The screen says exactly what happened: Arithmetic crossing, not a rupture simulation. The animation is triggered by the equation. It does not calculate crack growth, rupture probability, timing, or personal risk.

How the live model works

The numerical core is an original client-side D2Q9 BGK lattice-Boltzmann flow solver written in JavaScript. It uses pull streaming, halfway bounce-back rigid walls, a parabolic Zou-He velocity inlet, and a fixed-density Zou-He outlet.

Two 160 by 70 fields run together under the same flow setting. One is the changed vessel and one is the untouched straight reference. That means the headline ratios are measured from two running models, not typed into the interface.

The app computes flow speed, signed swirl, and a normalized near-wall flow-change proxy. If either field is still settling or leaves the numerical gate, VesselDelta hides the comparison instead of showing a confident-looking bad number.

Three.js turns the current wall shape into the layered rotatable cutaway. The 3D surface is an anatomical presentation around the live 2D source, not a claim of 3D CFD. The red-cell shapes are visual tracers. They do not add blood-cell mass, deformation, hematocrit, or non-Newtonian physics.

The entire hot loop runs locally. There is no account, upload, server simulation, or paid runtime API dependency.

How Codex and GPT-5.6 changed the result

I used GPT-5.6 through Codex as an engineering and adversarial-testing partner.

Codex helped implement and review the D2Q9 collision, streaming, Zou-He boundaries, dynamic wall mask, and two-model comparison.

A stress test found that an early exposed flow setting pushed a tight vessel above the low-Mach range. I reduced the public control from 0.024 to 0.020 and made the live diagnostics authoritative.

Another test found reachable irregular shapes where the comparison should not be trusted. Instead of smoothing over the failure, I added a gate that withholds the numbers.

Prior-art research also disproved my first claim that browser blood-flow tools barely existed. I removed that claim. The contribution is the complete instrument: direct vessel sculpting, live counterfactual CFD, honest 2D-to-3D mapping, a separate real-unit wall lab, public health pathways, and visible numerical verification.

Codex also helped audit medical claims, verify the pressure and unit conversion, add keyboard controls and reduced-motion behavior, test the WebGL fallback, build the release checks, and keep the demo understandable to someone with no medical training.

Verification

The repository includes 26 automated numerical and rendered checks, TypeScript and lint gates, a production asset smoke test, a secret scan, a production dependency audit, and a reproducible 10,000-step benchmark.

In the bundled benchmark, the stenosis case produces a 1.608× peak-speed ratio and a 3.492× relative axial near-wall flow-change ratio. Both benchmark cases stay below 0.4 percent absolute mass-flux mismatch with no counted safety interventions.

The wall lab has focused tests for mm Hg to pascal conversion, millimeter to meter conversion, stress scaling, finite bounds, threshold arithmetic, and the evidence receipts behind the tissue comparison.

The live verification panel exposes current FPS, twin solver steps, Mach number, flux mismatch, density behavior, profile-shape error, finite values, and the exact grid size. Judges can move the vessel and watch those checks change.

What I am proud of

The strongest visual in VesselDelta is also the most carefully bounded one.

The 3D view tells you where its picture comes from. The blood cells tell you they are tracers. The gold narrowing tells you it is geometry, not simulated plaque biology. The wall split tells you it is an arithmetic illustration, not a rupture prediction.

That honesty did not make the project less exciting. It made the interaction more trustworthy.

What comes next

The next step is real classroom and public testing with before-and-after concept questions, followed by physician and educator review. Technical work would include grid-convergence tooling, better wall-normal sampling, broader device testing, and a validated pulsatile boundary.

Any patient-specific, diagnostic, or treatment-guiding version would require a fundamentally different model and a clinical validation program.

Scope

VesselDelta is an educational mechanics instrument. It is not clinical CFD, a medical device, medical advice, a treatment selector, or a rupture-risk tool. No physician review, educator study, or clinical validation was completed before submission.

The model is steady, two-dimensional, Newtonian, and rigid-wall. The separate wall lab uses a simplified uniform thin-cylinder equation. The 3D vessel, red-cell tracers, pressure arrows, lumen-restoration rings, medicine animations, and threshold split are explanatory views with visible boundaries.

Built With

Share this project:

Updates