The left panel is the "real" plate: a steady 2D heat equation solved on a full grid by Gauss-Seidel relaxation,
∇²T = -Q(x,y)/k
T[i,j] ← ¼(T[i-1,j]+T[i+1,j]+T[i,j-1]+T[i,j+1] + Δx²·Q[i,j]/k)
with a Gaussian heat source Q at the position you set and T = 0 on all four edges — drawn here as a 2D heatmap with isotherm contour lines, not a 3D height field.
The right panel is a physics-informed neural digital twin: a small radial-basis-function network
T̂(x,y) = Σ w_k · φ_k(x,y), φ_k = exp(-r_k²/2σ²)
that never sees the full field — only the readings at the few yellow sensor dots. Because a Gaussian basis has a closed-form Laplacian, the twin is also penalized for violating the same governing PDE at points where it has no data:
Loss = (1/M)Σ_sensors (T̂-T)² + λ·(1/C)Σ_colloc (∇²T̂ + Q/k)²
w_k ← w_k − η·clip(∂Loss/∂w_k) (gradient-clipped descent, every frame)
With λ = 0 and only a handful of sensors, the reconstruction is under-determined: once training runs long enough to interpolate the sensor points almost exactly, the surface rings and overshoots in the gaps between them — visible as noisy contour bands. Raise λ and the physics term forces the reconstruction to obey the heat equation everywhere, damping that ringing and pulling the peak error back down toward the true field — the same idea NVIDIA Omniverse-style physically-informed digital twins use to stay accurate between sparse real-world readings.
Numerical note: the raw physics-loss gradient (built from a second spatial derivative of the basis) can be much larger in magnitude than the sensor-fit gradient, so it is normalized (gradient-clipped) before each weight update — training without this clip can blow up to NaN within seconds once λ > 0.