Inspiration

Modern industrial 3D printers like the HP Metal Jet S100 are marvels of engineering — but they are black boxes to the operators running them. A blade wears down, a nozzle fatigues, a heating element slowly decays. None of this is visible until a build fails, costing time, material, and money.

We wanted to flip that. What if the machine could tell you it was dying — not through a vague warning light, but through a precise, physics-grounded forecast? That question became Mirror: a digital twin that reflects the true internal state of the machine, aging in real time alongside it.


What It Does

Mirror is a desktop Digital Twin for the HP Metal Jet S100. It simulates the physical degradation of six core components in real time, driven by environmental and operational inputs:

Component Degradation Model
Recoater Blade Archard Wear
Nozzle Plate Coffin-Manson Fatigue
Heating Elements Arrhenius Decay
Drive Motor & Rails Paris Law Fatigue
Cleaning & Thermal Interface Kern-Seaton Fouling
Insulation & Sensors Fickian Moisture Diffusion

The app shows a live 3D model of the printer with components highlighted by health status, a real-time health dashboard, and time-series charts showing how each component degrades over the simulated lifetime of the machine.


How We Built It

The Brain — Physics-Based Degradation Models

Every component degrades according to a well-established engineering law, not a made-up curve. All model constants are calibrated to published manufacturer data and peer-reviewed references.

Recoater Blade wears according to the Archard model, where wear volume $W$ accumulates as:

$$W = \frac{K \cdot F \cdot s}{H}$$

Contact force $F$ increases with humidity as wet powder clumps against the blade; hardness $H$ softens above the optimal operating temperature. A hot, humid build environment compounds both effects simultaneously.

Nozzle Plate fatigue follows the Coffin-Manson law with Miner's linear damage accumulation. Each firing cycle contributes incremental damage $D$:

$$D \mathrel{+}= \frac{1}{N_f}, \qquad N_f = C \cdot (\Delta T_{\text{eff}})^{-m}$$

The effective thermal range $\Delta T_{\text{eff}}$ accumulates contributions from ambient temperature deviation, humidity, powder quality degradation, and binder viscosity stress — all of which shorten fatigue life.

Heating Elements degrade via thermally activated decay described by the Arrhenius equation, where component lifetime $L$ falls exponentially with operating temperature:

$$L(T) = L_{\text{ref}} \cdot \exp!\left[\frac{E_a}{k_B}\left(\frac{1}{T} - \frac{1}{T_{\text{ref}}}\right)\right]$$

This model is coupled to the insulation component: as insulation health falls, heating elements must compensate for thermal losses, raising their effective operating temperature and accelerating their own Arrhenius decay.

Drive Motor & Rails age through fatigue crack growth described by Paris Law:

$$\frac{da}{dN} = C \cdot (\Delta K)^m$$

The stress intensity range $\Delta K$ scales with production rate and is amplified by humidity-assisted corrosion at the crack tip.

The Life — Simulation Loop

The degradation engine is fully stateful. Each simulated day, tick() is called with the current environmental and operational drivers: temperature, humidity, load rate, powder quality, binder viscosity stress, voltage stability, and maintenance level. Damage accumulates across every tick, preserving the full degradation history. The simulation outputs a timestamped log of every component's health over the machine's lifetime.

The Interface — Desktop Application

The application is built in Python with PyQt5, and consists of three panels:

  • A 3D model viewer (OpenGL) rendering the HP Metal Jet S100 geometry, with each component coloured from green to red according to its current health
  • A health dashboard showing live health percentage and operational status for each component
  • A charts panel displaying time-series degradation curves across the full simulated run

A special mention goes to our teammate Alex Huang, who modelled the entire HP Metal Jet S100 from scratch in Blender over the course of the hackathon — giving Mirror its visual centrepiece.

Challenges We Ran Into

Calibrating the models to physical reality was the hardest part. Writing Paris Law is straightforward; choosing $C$ and $m$ such that the drive rails degrade over ~1,500 builds rather than 15 or 15,000 is not. Every constant had to be grounded in real data — MIL-HDBK-217F for heater lifetime, THK linear guide rail datasheets for motor fatigue, ExOne/Voxeljet printhead service intervals for nozzle life. Getting six independent models to all fail at credible timescales took significant iteration.

Cross-component coupling introduced emergent instability. The insulation-to-heater feedback loop meant that parameter choices in one model could trigger runaway failure in another. The update ordering within each tick had to be reasoned about carefully to avoid unphysical cascades.

OpenGL integration for the 3D viewer was new ground for the team. Rendering a GLB model with per-component dynamic colouring inside a PyQt5 widget required learning QOpenGLWidget from scratch under time pressure.


Accomplishments That We're Proud Of

  • Six degradation models, each grounded in a different discipline — tribology, fatigue mechanics, thermochemistry, fracture mechanics, fouling kinetics, and moisture diffusion
  • A physically motivated cross-component failure coupling (insulation degradation amplifying heater decay) that produces realistic, emergent failure cascades
  • Every model constant traceable to a published reference or manufacturer datasheet
  • A full interactive 3D visualisation of the HP Metal Jet S100, modelled from scratch in Blender, that updates in real time as the simulation advances

What We Learned

We came in knowing how to write software. We left with a working knowledge of tribology, fatigue mechanics, thermally-activated decay, and fouling kinetics — and a clear sense of why they matter for the machines industrial processes depend on.

The most important lesson: the gap between a working model and a physically credible model is enormous, and closing it is where the real engineering work lives. Choosing the right constant matters as much as choosing the right equation.


What's Next for Mirror

  • Phase 3 — AI Co-Pilot: a language model grounded in the simulation historian, so an operator can ask "why is the nozzle plate degrading faster than expected?" and receive a data-cited answer traceable to specific simulation timestamps
  • Predictive maintenance scheduling: computing the optimal intervention time for each component to minimise total downtime across a production run
  • Scenario comparison: running multiple simulation configurations side-by-side to evaluate the impact of different operating conditions or maintenance strategies
  • Live telemetry ingestion: connecting Mirror to real sensor feeds so the digital twin tracks a physical machine in real time

Built With

Share this project:

Updates