Reduced-Order Neural Surrogate for Thermal Data-Center Airflows
"A Fourier Neural Operator (FNO) trained on localized Navier-Stokes CFD sweeps can predict rack temperatures with <1.0°C error while reducing latency by over 100x."
16-rack containment zone simulated in OpenFOAM at 1.2M cell resolution. Evaluated across 240 transient workload spikes against an autoregressive FNO architecture.
Mean absolute error was 0.64°C across all sensor probes. Step evaluation latency dropped from 18.4 seconds (CFD) to 4.1 milliseconds (surrogate) on a single edge GPU.
Validated. Fast enough to operate within a real-time closed-loop RL control cycle without stability degradation.
01import torch02import torch.nn as nn03from torch.fft import rfft2, irfft20405class SpectralConv2d(nn.Module):06 """Fourier Neural Operator layer for 2D convective temperature fields."""07 def __init__(self, in_channels: int, out_channels: int, modes1: int, modes2: int):08 super().__init__()09 self.modes1, self.modes2 = modes1, modes210 self.scale = 1.0 / (in_channels * out_channels)11 self.weights1 = nn.Parameter(self.scale * torch.rand(in_channels, out_channels, modes1, modes2, 2))12 self.weights2 = nn.Parameter(self.scale * torch.rand(in_channels, out_channels, modes1, modes2, 2))1314 def forward(self, x: torch.Tensor) -> torch.Tensor:15 batch, c, h, w = x.shape16 x_ft = rfft2(x) # 2D Real-to-Complex Fourier Transform17 out_ft = torch.zeros(batch, x.shape[1], h, w // 2 + 1, dtype=torch.cfloat, device=x.device)18 # Complex multiplication in frequency domain19 out_ft[:, :, :self.modes1, :self.modes2] = torch.einsum(20 "bixy,ioxy->boxy", x_ft[:, :, :self.modes1, :self.modes2],21 torch.view_as_complex(self.weights1)22 )23 return irfft2(out_ft, s=(h, w)) # Inverse FFT back to spatial mesh