DMD (Dynamic Mode Decomposition)¶
DMD is a classical reduced-order modeling technique that extracts spatiotemporal coherent structures from time-series data via an SVD-based decomposition, then extrapolates dynamics using a linear evolution model.
Reference Paper: Kutz et al., Dynamic Mode Decomposition: Data-Driven Modeling of Complex Systems, 2016.
@book{kutz2016dynamic,
title={Dynamic mode decomposition: data-driven modeling of complex systems},
author={Kutz, J Nathan and Brunton, Steven L and Brunton, Bingni W and Proctor, Joshua L},
year={2016},
publisher={SIAM}
}
RealPDEBench interface¶
- Input:
xwith shape[B, T_in, H, W, C_in] - Output: predictions with shape
[B, T_out, H, W, C_out](typicallyC_out == C_infor this baseline)
RealPDEBench usage notes¶
- No training stage: DMD is not trained with gradient descent. In the RealPDEBench paper tables, DMD occupies only the inference-only column and the training columns are left blank.
- Main knobs:
n_modes(number of retained modes),n_predict(prediction horizon). - Autoregressive rollout:
N_autoregressiveis a shared evaluation setting (not DMD-specific); see Getting Started → Evaluation settings. - Modalities: if extra channels are zero-padded (unmeasured modalities), DMD is typically configured to use only the measured channels.
DMD specific YAML config¶
DMD is enabled by model_name: "dmd" in the YAML. Since it is a non-learning baseline, the YAML mainly controls how DMD is applied at evaluation time.
Config files¶
- Cylinder:
realpdebench/configs/cylinder/dmd.yaml - Controlled Cylinder:
realpdebench/configs/controlled_cylinder/dmd.yaml - FSI:
realpdebench/configs/fsi/dmd.yaml - Foil:
realpdebench/configs/foil/dmd.yaml - Combustion:
realpdebench/configs/combustion/dmd.yaml
Model-specific keys¶
These keys are consumed by realpdebench.model.load_model.load_model() and realpdebench.model.dmd.DMD.
n_modes(int): Number of retained DMD modes after truncation (higher can fit more dynamics, but may overfit/noise).n_predict(int): Number of future frames predicted per DMD forward call.input_feature(int): Number of channels used by DMD from the input tensor (useful when extra channels are zero-padded/unmeasured).
Note
N_autoregressive is used by realpdebench.eval as a shared evaluation key across baselines (not a DMD-specific key). See Getting Started → Evaluation settings.
Note
DMD does not use gradient-based training. Keys like lr, scheduler, or clip_grad_norm (if present) have no effect.