← Work
ACTIVE 2026/03 → present

ParticleWrench

A 3D ray tracing simulator and beam propagation visualiser. Models reflection, transmission, and mode conversion at material boundaries using a physics model.

Ultrasonic NDT Physics simulation Software architecture

01 — Origin

I've built 2D versions of this kind of tool before, always as a smaller component of a larger commercial product. They worked, but they bothered me, the physics & ray tracing were intermingled with the visualisation. You couldn't simulate without drawing, couldn't swap the renderer without unpicking the physics. Often due to the tool starting with a tight scope, performing well, and having it's function expanded to something it was never architected to be. Rebuilding from scratch was understandably a priority for the business. ParticleWrench was the excuse, the name a bad joke on a industry standard solution. A chance to revisit a class of problem I knew well, apply everything I'd learned from watching practitioners actually use these tools in the PAUT world, and build the clean architectural divide I'd always wanted. I'd also never built a 3D viewport from scratch. That part was pure curiosity.

02 — Intent & ethos

Placeholder — intent paragraph to be written.

In scope

Geometric ray tracing through primitive geometry
Reflection & transmission
Mode conversions
Interactive 3D visualisation
Particle visualisation

Out of scope

Full wave simulation (FEA)
Destructive interference
Hardware interfacing

03 — Delivery

PHASE 01

Geometric ray engine

COMPLETE

Placeholder — Phase 1 summary to be written.

Primitive specimen geometry — planar, spherical, cylindrical Snell's law, mode conversion, total internal reflection Impedance-based amplitude propagation Particle renderer with additive blending Interactive timeline scrubber & arcball camera

PHASE 02

Physics enrichment

IN PROGRESS

Placeholder — Phase 2 summary to be written.

Zoeppritz angle-dependent amplitude coefficients Transducer frequency & wavelength Near-field flagging & Rayleigh distance Attenuation through media Coverage mapping & shadow region detection

PHASE 03

Mesh & analysis

PLANNED

Placeholder — Phase 3 summary to be written.

Triangle mesh support — OBJ & STL import BVH acceleration structure Inspection coverage reports Dead zone identification Multi-transducer placement analysis

04 — Demo

Demo video — coming on Phase 2 completion

05 — Architecture

Core constraint

Placeholder — architecture paragraph to be written.

Stack

Physics enginePure C# — no dependencies
RenderingVeldrid — Vulkan backend, strongly typed
UI shellAvalonia — thin host, no logic
Geometry (Ph. 1–2)Analytic intersection — planes, spheres, cylinders
Geometry (Ph. 3)BVH acceleration over triangle meshes

06 — Physics model

What the engine models

Placeholder — physics paragraph to be written.

Deliberate limitations

Placeholder — limitations paragraph to be written.