Additive Build Advisor

A design-to-inspection digital thread for additive manufacturing, built around FFF.

A teaching demo I built for ES 51 (Computer-Aided Machine Design) at Harvard SEAS, where students design a part, FFF-print it, and machine features on the lathe and mill — to make the design → make → inspect decisions legible. A clean base I keep extending.

It takes a part geometry (STL), decides how to build it, simulates the build, runs a finite-element distortion analysis, checks whether the part can actually be made and measured, and emits one auditable record with an explicit release gate: release_to_build, needs_engineering_review, or redesign_required.

The part through the pipeline

The same part shown at each pipeline stage: STL mesh, orientation, voxelization, build simulation, distortion FEA
The same bracket at each stage: STL mesh → chosen orientation → voxelization → per-layer build simulation → thermal-contraction warpage FEA.

Build simulation (animated)

The part building up layer by layer on the plate, with a live metrics panel — the additive analog of a runtime process dashboard:

Layer-by-layer additive build simulation animation
Layer-by-layer build: voxels stack on the plate (coloured by height) while the cross-section profile and metrics update.

How it works

System diagram of the pipeline

Geometry kernel

Parse the STL, recompute normals, verify watertightness; voxel volume cross-checked against the analytic mesh volume.

Orientation

Rest-on-face candidates scored on real support volume, base contact, and build height.

Build simulation

Voxelize by ray-stabbing; estimate layers, support, build time, and cost.

Warpage FEA

Thermal-contraction (eigenstrain) linear-elastic solve with scikit-fem; the corner-lift that warps FFF parts off the bed.

DfAM + inspection

Thin walls, support, aspect ratio, trapped voids; tolerances vs as-built capability.

Release gate

Release, review, or redesign — with reasons — then a machine-readable record.

Warpage FEA (thermal-contraction method)

Warpage is predicted with a genuine finite-element solve, assembled and solved with scikit-fem on a hexahedral mesh. Each element carries a thermal-contraction eigenstrain (ε* ≈ −α·ΔT, the part shrinking as it cools), the first layer is clamped to the bed (the bed-adhesion constraint), and the displacement field is the predicted warpage — the corner-lift that curls FFF parts off the bed. It is a standard way to screen build warpage without a full transient thermo-mechanical solve. The solver is validated against the analytical clamped-bar solution, and the predicted distortion is linear in the contraction strain and independent of Young's modulus — as linear elasticity requires for an eigenstrain-only load.

Warpage FEA contour on the deformed mesh
Deformed element mesh (exaggerated), coloured by displacement magnitude — near zero at the bed-clamped base, rising toward the free corners.
FEA validation: clamped-bar convergence and process sensitivity
Left: convergence to the analytical clamped-bar value as the mesh refines. Right: warpage scales with the per-process thermal-contraction strain (ABS > PLA, as in practice).

Honest scope: the model reports the on-bed warpage (part still bonded to the bed), not the spring-back after the part is peeled off; reproducing that needs a release step and a contraction strain calibrated to measured cooling.

Orientation & build simulation

Orientation screening chart
Orientation screening — support per candidate.
Per-layer cross-section
Per-layer cross-section vs build height.

Sample results

The example runner exercises all three gate outcomes (numbers from a real run):

PartProcessBuild timeCostWarpage FEAGate
calibration_cubeFFF (PLA)0.71 h$3.790.158 mmrelease_to_build
gantry_bracketFFF (PLA)0.80 h$4.240.311 mmneeds_engineering_review
hollow_housingSLA (resin)1.94 h$17.160.102 mmredesign_required
cantilever_benchmarkFFF (ABS)0.46 h$2.930.143 mmneeds_engineering_review

The bracket prints cleanly but carries a ±0.05 mm tolerance and a 3.2 µm finish that are below FFF as-built capability, so it is routed to engineering review to finish those features on the mill — the call the ES 51 lab makes. The last row is a long, flat ABS bar, the worst-case warp geometry.

Cross-process comparison

The build simulation, cost/time, DfAM, and warpage FEA run natively for every process. FFF is the home process; SLA and SLS are shown as a cross-process comparison. The same bracket through three additive processes:

Same bracket compared across FFF, SLA, and SLS
FFF is fastest and cheapest; SLA gives the finest layers; SLS is priciest here. Warpage scales with each process's contraction strain — so among these PLA warps most and SLA least.

Where the thread continues — runtime FFF print twin

The advisor ends in a machine-readable release record, and that record is the hand-off point. Once the part is on the printer, a companion runtime FFF print-monitoring twin takes over: it synthesizes the sensor streams an instrumented machine produces — hotend and bed temperature, extrusion flow, frame vibration, and the corner-lift off the bed the FEA predicted — compares each against its expected envelope, flags deviation windows, tracks a smoothed health score, and recommends action. It carries the same verify-before-act discipline as the release gate: on a sensor dropout it refuses to recommend a parameter change rather than acting on incomplete data. Together the two halves span design → build → monitor.

Runtime FFF print twin dashboard: sensor streams versus expected envelopes with anomaly windows shaded, a health score, and a verify-before-act recommendation
The twin's actual simulator, anomaly detector, and recommender on the sample bracket under a multi-fault run — under-extrusion, a layer shift, a sensor dropout (held), then warping — each channel against its envelope with faults shaded, a runtime health score, and the verify-before-act recommendation. Reproduced interactively as the final stage of the web app.

Technical report

The full write-up — formulation, equations, validation, and limitations — is in the PDF report.