Digital-Twin Refinement
Twin refinement is the periodic re-grounding of the digital twin's surrogates against measured pulse data so its predictions stay faithful to the real machine.
Keeping the twin honest
The Kronos digital twin runs reduced-order and neural-operator surrogates fast enough for the real-time layers, but a surrogate is only as good as the physics it was trained on. Refinement is the MLOps process that closes the gap between what the twin predicts and what diagnostics actually measured, then folds that gap back into the surrogates on L0.
Refinement is not recalibration of a single scalar; it is targeted retraining. Residuals between twin prediction and measurement are accumulated per module (MHD stability, neutronics, thermomechanics, power systems), and modules whose residuals exceed tolerance are queued for surrogate retraining with the newly labeled data. Modules within tolerance are left frozen so refinement stays surgical and auditable.
The refinement cycle
- Collect prediction-vs-measurement residuals per twin module
- Score fidelity against tolerance bands (see twin fidelity metrics)
- Flag modules that breach and assemble a labeled refinement set
- Retrain those surrogates on L0
- Validate, register, and re-inject via the registry
def refine_twin(twin, pulses, tol):
residuals = {m: [] for m in twin.modules}
for p in pulses:
pred = twin.replay(p.inputs) # surrogate prediction
for m in twin.modules:
residuals[m].append(rmse(pred[m], p.measured[m]))
to_retrain = [m for m in twin.modules
if mean(residuals[m]) > tol[m]]
return to_retrain # queue only breaching modules for L0 retrain
For the breeder this means re-grounding equilibrium and negative-triangularity shape surrogates against magnetic and Thomson diagnostics; for the burner it means re-grounding ambipolar-potential and plug-density surrogates. Refinement feeds and is fed by regime drift detection: a persistent residual is drift, and drift schedules refinement.