Computing Library › Scientific Ml
Scientific Ml

Fourier Neural Operator

The Fourier neural operator performs global mixing by multiplying in the frequency domain, giving a resolution-invariant PDE surrogate.

Global mixing through the FFT

The Fourier neural operator (FNO) tackles the central need of any PDE surrogate: coupling every point in the domain to every other point. It does this efficiently by moving to the frequency domain. Each layer transforms its input with a fast Fourier transform, multiplies the low-frequency modes by learned complex weights, transforms back, and adds a local linear term. The frequency multiplication is a global convolution done cheaply.

Why truncate modes

Kronos motion — neural operator

Only the lowest Fourier modes are kept and given learnable weights; higher modes are discarded in the spectral path. This truncation acts as a smoothing prior and keeps the parameter count fixed regardless of grid size. The residual local path restores fine detail that the truncated spectral path cannot represent.

Discretization invariance

Because the learned weights act on Fourier modes rather than grid points, an FNO trained at one resolution can be evaluated at a higher resolution with the same weights. This zero-shot super-resolution is a defining feature: the operator is defined on functions, and the grid is merely how those functions are sampled.

One spectral layer

python
import torch
def spectral_conv(x, weights, modes):
    xf = torch.fft.rfft(x)                 # to frequency domain
    out = torch.zeros_like(xf)
    out[..., :modes] = xf[..., :modes] * weights  # mix low modes
    return torch.fft.irfft(out, n=x.shape[-1])

Strengths and caveats

FNOs have become a standard baseline for learned PDE surrogates on structured domains, and geometry-adapted variants extend them to irregular meshes.