HODMD¶

Derived module from hankeldmd.py for higher order dmd.

Reference: - S. L Clainche, J. M. Vega, Higher Order Dynamic Mode Decomposition. Journal on Applied Dynamical Systems, 16(2), 882-925, 2017.

 HODMD.atilde Get the reduced Koopman operator A, called A tilde. HODMD.dmd_timesteps Get the timesteps of the reconstructed states. HODMD.dynamics Get the time evolution of each mode. HODMD.eigs Get the eigenvalues of A tilde. HODMD.fit Compute the Dynamic Modes Decomposition to the input data. HODMD.modes Get the matrix containing the DMD modes, stored by column. HODMD.original_timesteps Get the timesteps of the original snapshot. HODMD.plot_eigs Plot the eigenvalues. HODMD.plot_modes_2D Plot the DMD Modes. HODMD.plot_snapshots_2D Plot the snapshots. HODMD.reconstructions_of_timeindex Build a collection of all the available versions of the given timeindex. HODMD.reconstructed_data Get the reconstructed data. HODMD.snapshots Get the original input data.
class HODMD(svd_rank=0, tlsq_rank=0, exact=False, opt=False, rescale_mode=None, forward_backward=False, d=1, sorted_eigs=False, reconstruction_method='first', svd_rank_extra=0)[source]

Bases: pydmd.hankeldmd.HankelDMD

Higher Order Dynamic Mode Decomposition

Parameters
• svd_rank (int or float) – the rank for the truncation; If 0, the method computes the optimal rank and uses it for truncation; if positive interger, the method uses the argument for the truncation; if float between 0 and 1, the rank is the number of the biggest singular values that are needed to reach the ‘energy’ specified by svd_rank; if -1, the method does not compute truncation.

• tlsq_rank (int) – rank truncation computing Total Least Square. Default is 0, that means no truncation.

• exact (bool) – flag to compute either exact DMD or projected DMD. Default is False.

• opt (bool or int) – argument to control the computation of DMD modes amplitudes. See DMDBase. Default is False.

• rescale_mode ({'auto'} or None or numpy.ndarray) – Scale Atilde as shown in 10.1016/j.jneumeth.2015.10.010 (section 2.4) before computing its eigendecomposition. None means no rescaling, ‘auto’ means automatic rescaling using singular values, otherwise the scaling factors.

• forward_backward (bool) – If True, the low-rank operator is computed like in fbDMD (reference: https://arxiv.org/abs/1507.02264). Default is False.

• d (int) – the new order for spatial dimension of the input snapshots. Default is 1.

• sorted_eigs ({'real', 'abs'} or False) – Sort eigenvalues (and modes/dynamics accordingly) by magnitude if sorted_eigs=’abs’, by real part (and then by imaginary part to break ties) if sorted_eigs=’real’. Default: False.

• reconstruction_method ({'first', 'mean'} or array-like) – Due to how HODMD is defined, we have several versions of the same snapshot. The parameter reconstruction_method allows changing how these versions are combined in reconstructed_data. If ‘first’, only the first version is selected (default behavior); if ‘mean’ we take the mean of all the versions; if the parameter is an array of floats of size d, the return value is the weighted average of the versions.

• svd_rank_extra – the rank for the initial reduction of the input data, performed before the rearrangement of the input data to the (pseudo) Hankel matrix format; If 0, the method computes the optimal rank and uses it for truncation; if positive interger, the method uses the argument for the truncation; if float between 0 and 1, the rank is the number of the biggest singular values that are needed to reach the ‘energy’ specified by svd_rank; if -1, the method does not compute truncation.

fit(X)[source]

Compute the Dynamic Modes Decomposition to the input data.

Parameters

X (numpy.ndarray or iterable) – the input snapshots.

reconstructions_of_timeindex(timeindex=None)[source]

Build a collection of all the available versions of the given timeindex. The indexing of time instants is the same used for reconstructed_data(). For each time instant there are at least one and at most d versions. If timeindex is None the function returns the whole collection, for all the time instants.

Parameters

timeindex (int) – The index of the time snapshot.

Returns

A collection of all the available versions for the requested time instants, represented by a matrix (or tensor). Axes: 0. Number of time instants; 1. Copies of the snapshot; 2. Space dimension of the snapshot. The first axis is omitted if only one single time instant is selected, in this case the output becomes a 2D matrix.

Return type

numpy.ndarray