Skip to content

Rayleigh–Taylor

Buoyancy-driven instability in the Boussinesq approximation: a cold, dense layer sits above a hot, light one, and the interface rolls up into the classic mushroom plume. The system couples momentum, continuity, and temperature transport for (u,v,p,T) on (x,y)[0,1]×[0,2], with no-slip top/bottom walls.

Results

temperature error 8.3e-03recipe 5 time windows + adaptive pseudo-time5 × 100k steps, single GPU

The starkest baseline-vs-pseudo-time contrast in the suite. Trained plainly, the network never leaves the quiescent state — the velocity errors sit at 0.99 for the entire run while the residual loss happily decreases: a textbook spurious solution, since "nothing moves" nearly satisfies the equations early on. With adaptive pseudo-time stepping and five time windows, the instability develops correctly and the entire trajectory — from the first interface perturbation through the fully developed plume — is captured to a stitched temperature error of 8.3e-03 (u: 0.030, v: 0.017): the mushroom cap, stem roll-ups, and side vortices are all quantitatively right, with the error confined to the thin thermal filaments. Notably, each window trains from a fresh initialization (transfer_learning=False): warm-starting a window from the previous window's parameters traps the optimizer and the same run diverges to O(1) velocity errors.

Reference, PINN prediction, and absolute error of the temperature field as the plume develops.

Rayleigh-Taylor convergence

Training losses and per-variable errors across all five windows (the sawtooth marks each window's fresh restart).

Run

bash
cd examples/rayleigh_taylor
python3 main.py --config=configs/pseudo_time.py \
    --config.time_range="(0.0, 9.75)" \
    --config.training.num_time_windows=5 \
    --config.training.transfer_learning=False
ConfigDescription
configs/baseline.pyPirateNet + causal weighting
configs/pseudo_time.pyAdaptive pseudo-time stepping (showcase)
configs/fixed_pseudo_time.pyConstant pseudo-time weights

Notes

  • Four residual components keyed by variable (u, v, p, temp), each with its own adaptive loss and pseudo-time weight — see the variable-keyed residual convention.
  • Boundary conditions flow through the batch via a dedicated BCSampler (top/bottom walls at every step).

Released under the Apache 2.0 License.