Dynamic Mode Decomposition (DMD)¶
This document offers a brief reference guide to the use of the Dynamic Mode Decomposition (DMD).
Theory¶
The DMD seeks to overcome the spectral-mixing induced by the POD compression, while simultaneously avoid _windowing_ problems caused by the dependency of the DFT on the fundamental tone of the data to be decomposed. The main idea introduced by Schmid (2010) [4], is to fit a linear system onto a reduced POD projection of the dataset.
The algorithm we implement in MODULO is the one proposed by Tu et al. (2013) [5], and a more robust theoretical formulation can also be found in Mendez (2021) [6].
This method creates two portions of the snapshot matrix \(\mathbf{D}\) that differ of one step in time, that is:
and
Then, the linear system propagator \(\mathbf{P}: \mathbf{d}_{t} \rightarrow \mathbf{d}_{t+\Delta t} \in \mathbb{R}^{n_S \times n_S}\) can be solved by least square. This can be computed via POD:
Yet, this can be ill-conditioned and computationally prohibitive to compute and it is further projected onto a reduced POD space spanned by the basis \(\tilde{\mathbf{\Phi}} = [\phi^\bullet, \dots, \phi^\bullet_{R}]\), where \(n_r \ll n_t\). This leads to a system in \(\mathbb{R}^{n_r \times n_r}\) wich reads:
that we can compact writing:
The reduced-order propagator is then:
The eigenvalue decomposition of this propagator governs the evolution of the reduced system, and the eigenvalues dictate the stability of each mode: \(\|\lambda_r\|<1\) implies vanishing modes, \(\|\lambda_r\|>1\) exploding ones and \(\|\lambda_r\|=1\) are purely harmonic (like DFT). Note that, in this latter case, the frequency is not constrained to be a multiple of the fundamental tone \(f_0 = 1/T = 1/n_t \Delta t\).
At last, the complex spatial structures of the DMD can be computed by mapping to the original space using the POD basis:
where \(\mathbf{Q}\) are the eigenvectors of the propagator \(\tilde{\mathbf{S}}\).
Example in MODULO¶
# --- Initialize MODULO object
m = ModuloVKI(data=np.nan_to_num(D))
# Compute the POD using PIP's method
Phi_D, Lambda, freqs, a0s = m.DMD(save_dmd, F_S=F_S)
The DMD
module returns the spatial structures \(\mathbf{\Phi}_D\), the complex
eigenvalues \(\lambda_r\) of the reduced-order propagator \(\tilde{\mathbf{S}}\),
the frequency associated with each DMD mode, and their amplitudes \(\mathbf{a}_0\).