Additive Module · Surrogate Engine

AMFusionMap

Acceleration Layer Internal

The surrogate that makes the stack fast. FusionMap learns FusionCore's physics from one offline campaign, then predicts the part-scale fields in seconds instead of hours — and closes the loop that tunes laser power and speed location-by-location.

Offline trainer · online predictor · versioned model registry · closed-loop optimisation

FusionMap is an internal engine. It powers GrainPath and StressForge behind the scenes — you don't run it directly. You benefit from it every time you launch a part-scale prediction.
FusionMap — surrogate process map across the LPBF P–v window
01

What FusionMap is

FusionMap is the acceleration layer of the AM module. Not a sixth solver — it stands in for FusionCore at runtime, turning hour-long physics solves into second-long surrogate evaluations.

// Offline · once

Learns the physics

Runs a FusionCore campaign across the process window and trains a surrogate on the resulting feature–response data — per material.

// Online · per part

Predicts everywhere

Loads the pretrained model and evaluates it at every voxel to produce the G–R and inherent-strain maps the part-scale solvers need — no FusionCore at runtime.

// The differentiator

Closes the loop

Because a prediction takes seconds, an optimiser can iterate on PathWeaver's per-location parameters until the part meets its stress and time targets.

02

Train once, predict everywhere

Two lanes joined by a versioned model registry. The offline lane runs a FusionCore campaign, trains a surrogate, validates it, and writes a versioned card. The online lane loads that card, assembles a per-voxel feature vector, and predicts the G–R and inherent-strain maps — in under thirty seconds.

FusionMap — offline trainer and online predictor architecture
FIG.01 · fusionmap_train_predict train once · predict everywhere · no FusionCore at runtime
03

Capabilities

Six features that make a surrogate engine viable inside a production AM stack.

Hours to seconds, per evaluation

FusionMap's whole reason to exist: one campaign, then practical inference at runtime.

  • Training pulls from a ~5 000-run FusionCore campaign across the process window
  • Per-material surrogate trained once — reused across every part
  • Per-part prediction takes seconds, even at part scale
  • Active learning re-runs FusionCore only when the optimiser leaves the trained range
Per evaluation
~4 hr
FusionCore · full physics
Per evaluation
< 30 s
FusionMap · trained surrogate

A ~23-parameter feature vector per voxel

Each voxel encoded as a compact feature vector — sampled across the process window by a tiered Latin-hypercube design:

  • Laser · power, scan speed, spot size, absorptivity
  • Geometry · local part thickness, distance to surface, layer index
  • Thermal state · pre-heat, cool-down between passes, neighbour history
  • Strategy · hatch spacing, rotation, fill type

One vector in → G, Ṫ, R, and inherent-strain prediction out.

voxel[14201]
  laser   P=280  v=950  r₀=70  η=0.62
  geom    h=2.1  d_surf=0.4  layer=247
  thermal T₀=180  ΔT_neigh=420
  strat   hatch=0.10  rot=67°  type=island
  → G̃  = 1.7e7 K/m
  → R̃  = 0.61 m/s
  → ε*  = (0.0021, 0.0019, -0.0007)

Three surrogate backends

Different prediction tasks need different model classes — FusionMap supports three backends, swappable per task:

  • Gaussian Process (GP) · process map regions; principled uncertainty bounds
  • Physics-Informed Neural Net (PINN) · continuous fields with conservation constraints baked in
  • Graph Neural Net (GNN) · part-scale field prediction with mesh topology preserved

Each backend ships with its own validation set and accuracy bands.

GP · Map PINN · Field GNN · Part

Versioned model registry

Every surrogate prediction is traceable back to the FusionCore version that trained it:

  • One versioned model card per (material × backend) pair
  • Card records the FusionCore commit, training-corpus hash, validation metrics, and confidence bounds
  • Re-training writes a new version — never overwrites the old one
  • Predictions stamp the model version into their output for full reproducibility
SS316L · v1.4 Ti-6Al-4V · v2.1 IN718 · v1.7 AlSi10Mg · v1.2

Machine calibration without retraining

Different LPBF machines vary in absorptivity, optical chain, and gas flow. FusionMap absorbs that with a learned correction on top of the base surrogate:

  • A small set of single-track calibration runs on the real machine
  • Calibration fits a per-machine correction — no full retraining
  • Same model card, machine-specific correction layered on top
  • Reduces the gap between simulated and measured melt-pool to within a few %
Calibration runs
5–10 tracks
per machine
Fit time
~minutes
not hours
Residual gap
< 5 %
vs measured pool
Re-calibration
quarterly
or after service

Closed-loop optimisation, end-to-end

The differentiator. With FusionMap inside the product, an optimiser can sit on top of the stack and iterate:

  • PathWeaver proposes a candidate trajectory (per-location P, v)
  • FusionMap predicts G, R, and inherent strain across the part
  • GrainPath and StressForge evaluate microstructure, stress, distortion
  • Optimiser searches the Pareto front of build time × stress × distortion
  • Active learning triggers a FusionCore re-run only when needed

The loop converges in minutes, not days.

FusionMap closed-loop optimisation
04

Where it sits

FusionMap is not a sixth solver — it is the acceleration layer between the physics engine and the part-scale predictors, standing in for FusionCore at runtime.

S1PathWeaver
S2FusionCore
surrogateFusionMap
S3GrainPath
S4StressForge
S5CertifyAM
05

Who consumes FusionMap

FusionMap doesn't produce a user-visible output of its own. Two downstream solvers consume its predictions directly:

→ G, R, Ṫ fields
GrainPath

Solidification fields drive the columnar-to-equiaxed transition map, grain morphology, and texture prediction for microstructure.

→ inherent-strain tensor ε*
StressForge

Per-voxel inherent-strain tensor feeds the layer-by-layer part-scale FEM solve for residual stress, warping, and distortion.

06

Why a surrogate engine matters

Sub-minute part predictions

Iterating on a part takes seconds per evaluation, not hours. Engineers stay in the design loop instead of waiting on overnight runs.

Closes the optimisation loop

Without a surrogate, you predict once and adjust by hand. With FusionMap, you let an optimiser drive PathWeaver's parameters end-to-end.

Traceable physics

Every prediction pins back to the FusionCore version that trained it — a defensible chain from voxel to validated physics.

Used internally — felt everywhere

FusionMap powers GrainPath and StressForge behind the scenes. To use it, run a part-scale prediction with either solver — the surrogate is invoked automatically.