From multiplication to convolution
Goal: choose a dealiasing rule from the nonlinearity’s degree. If \(u_K(x)=\sum_{k=-K}^K c_ke^{ikx}\), then
\[\widehat{u^3}_k=\sum_{p+q+r=k}c_pc_qc_r.\]
The cubic contains modes out to \(3K\). A pseudospectral implementation reconstructs \(u\) on a grid, evaluates \(u^3\) pointwise and transforms back. That is efficient, but a length-\(N\) sampled transform identifies frequencies that differ by multiples of \(N\).
For example, with \(N=16\), \(u=\cos(5x)\) gives \(u^3=\tfrac34\cos(5x)+\tfrac14\cos(15x)\). Mode 15 aliases to −1, so the sampled cubic invents a low mode even though the input mode 5 was resolved. Filtering high output modes afterwards cannot remove an error that has already folded into mode 1.
Derive the retained-band condition
Suppose the input is restricted to \(|k|\leq K\) and the nonlinearity has degree \(p\). Its exact product reaches \(pK\). The nearest positive alias that could land in the retained band starts at \(N-K\). Therefore require
\[pK<N-K,\qquad\boxed{(p+1)K<N}.\]
The strict inequality avoids endpoint collisions. For a quadratic, \(K<N/3\), commonly called two-thirds truncation relative to the Nyquist band. For a cubic, require \(K<N/4\), or half of that Nyquist bandwidth. The input field, every nonlinear stage and the retained output must respect the chosen representation. A filter is not automatically a complete dealiasing strategy.
Compare a sampled product with exact convolution
The experiment isolates the product using \(u=0.2+0.5\cos(mx)\) and retains \(|k|\leq K=m\). The reference is a full non-circular coefficient convolution. The padded method represents the same input on a larger grid, evaluates the product there, then retains the same output band. It does not add new physical information to the initial condition.
Interactive experiment / alias-free retained products
Retain |k| ≤ K=5. Original grid: aliases contaminate the retained band because (3+1)K ≥ N. Maximum coefficient error: raw 1.56e-2, padded 5.33e-16. Padded grid M=32. Interactive controls appear when the experiment is ready.
Link to this setupDownload these values (CSV)
Real parts are plotted for this even cosine input; CSV also includes computed imaginary parts. Quadratic padding uses M=3N/2; cubic padding uses M=2N. Mathematical browser reference, not a native FFT run.
Try \(N=16,K=5\). The quadratic satisfies \(3K<N\), while the cubic violates \(4K<N\). Changing only the polynomial degree changes which dealiasing condition is sufficient. Then increase \(N\) to 32 without changing \(K\): now the unpadded cubic agrees with the exact retained convolution.
Truncate the state or pad the product grid
There are two useful ways to satisfy the bound:
| Route | Keep fixed | Change | Cost/tradeoff |
|---|---|---|---|
| State truncation | FFT grid N | Limit K so \((p+1)K<N\) | Fewer retained physical modes on the existing grid |
| Product padding | Retained representation K | Evaluate the product on M with \((p+1)K<M\) | Larger transforms and additional data movement |
For a band approaching \(N/2\), quadratic products use roughly 3/2 padding and cubic products roughly double padding, with endpoint conventions handled explicitly. The browser uses normalized \(c_k\) coefficients. When padding raw FFT arrays instead, preserve the same \(c_k\): in 1D set \(F_M=(M/N)F_N\) before an inverse scaled by \(1/M\). Converting the result back to a raw length-\(N\) spectrum requires the reciprocal factor. In multiple dimensions use the ratio of the global grid volumes.
Our C++ model chooses the simpler truncation route: default \(N=32,K=7\), so \(4K=28<32\). It uses no padded FFT or distributed coefficient remapping. It projects onto \((k,0,0)\) with \(|k|\leq K\) and evaluates the full cubic before projecting its result. This makes the spatial operation a precise Fourier–Galerkin product in that retained space.
Checkpoint: why not truncate the square first?
Could you form Pₖ[(Pₖu²)u] instead of Pₖ[u³] to save intermediate storage?
In general those are different operators. A high intermediate frequency in \(u^2\) can combine with a negative frequency in \(u\) to return to the retained band. Dropping that intermediate term loses a legitimate cubic interaction. The independent verifier retains the full quadratic convolution before the third multiplication; the native code cubes the physical field directly. Only the final cubic result is projected.
For broader Fourier interpolation and aliasing background, see Trefethen, Chapter 7. Always derive the bound for the operator you actually evaluate.