Free-Boundary Grad-Shafranov
In a real tokamak the plasma boundary is unknown a priori; it is set by external coil currents, turning equilibrium into a coupled interior-exterior free-boundary problem.
Why the boundary is free
The fixed-boundary Grad-Shafranov problem assumes the last closed flux surface (LCFS) is given. In an operating breeder it is not: the plasma shape emerges from the balance between the plasma's own current and the currents in the poloidal-field (PF) coils. The AI stack must solve the free-boundary problem to relate coil currents to the negative-triangularity shape that MPC controls.
Free-boundary structure (domain split):
Plasma region Omega_p: Delta* psi = -mu0 R^2 p'(psi) - F F'(psi)
Vacuum region Omega_v: Delta* psi = -mu0 R * sum_k I_k * delta(x - x_k)
LCFS defined implicitly by:
psi(x) = psi_b where psi_b = max over limiter / X-point
Coupling: plasma current profile depends on psi, and psi in the
plasma depends on coil currents I_k in the vacuum region.
X-points and separatrix
A diverted plasma has one or more X-points where the poloidal field vanishes (grad psi = 0 on the separatrix). Locating the X-point is itself a nonlinear root-find embedded in the equilibrium solve. For the breeder's shaped, negative-triangularity boundary this determines the divertor strike points that thermomechanics and divertor-expander control depend on.
# Picard iteration for free-boundary GS (schematic)
psi = psi_init
for it in range(max_it):
psi_bdy = locate_lcfs(psi) # limiter or X-point
Jphi = source(psi, psi_axis, psi_bdy, pprime, ffprime)
psi_pl = solve_elliptic(Delta_star, Jphi) # interior
psi_vac = greens_response(coil_currents) # exterior
psi_new = psi_pl + psi_vac
if norm(psi_new - psi) < tol: break
psi = relax * psi_new + (1-relax) * psi # under-relax
The forward and inverse pairing
The forward free-boundary map takes coil currents and profiles to a shape. Control needs the inverse: given a target negative-triangularity boundary, find the coil currents that produce it. That inverse is ill-conditioned and is where Green's-function methods, regularization, and learned surrogates enter. The breeder's shape controller ultimately commands PF coils, so this inverse map is the object MPC linearizes against.
Convergence is not guaranteed for arbitrary profiles; strongly shaped, high-beta targets can bifurcate or fail to converge. The stack treats non-convergence as a physical warning, not a numerical nuisance, and flags it to the operating-envelope logic.