Coupling the Four Twin Modules
The Power, Neutronics, Thermomechanics, and MHD modules are solved as a weakly coupled multi-physics system each twin step.
A coupled multi-physics state
The four KRONOS-CTRL modules are not independent solvers reporting side by side; they share boundary conditions and must agree. The equilibrium sets the neutron source; the neutrons deposit heat; the heat strains and expands structure; the geometry change shifts the equilibrium; for the burner the DEC potentials close a further loop through confinement. KRONOS-CTRL solves this as a weakly coupled system every twin step.
Fixed-point iteration
Kronos uses a Picard (fixed-point) scheme: solve MHD, pass the source to Neutronics, pass heating to Thermomechanics, pass geometry and (burner) potential back to MHD, and repeat until the coupled state stops changing. Warm-starting from the previous twin step means the state is already near the fixed point, so one or two passes converge, which is what makes a full multi-physics update fit inside the 50-100 ms shadow budget.
# one coupled twin step (weak coupling, Picard)
state = prev_state # warm start
for it in range(max_picard):
eq = mhd.solve(state) # equilibrium + stability
src = neutronics.solve(eq) # source, TBR, flux
tm = thermo.solve(src, eq) # strain, temperature, geometry
pw = power.solve(eq, tm) # DEC / grid (burner)
state = assemble(eq, src, tm, pw)
if converged(state): break
Each module inside the loop is a fast surrogate, so the whole iteration is cheap. The coupling residual, how much the state changed on the last pass, is itself a diagnostic: a coupling that fails to converge in the allotted passes signals either a fast transient the twin cannot resolve at this cadence or a modeling problem, and the twin lowers its confidence accordingly.
This coupled state is what makes the twin more than a collection of models: MPC and the anomaly ensemble see one consistent machine, so a decision made for plasma shape already accounts for its thermal and neutronic consequences.