/SSMLearnPy

Data-driven reduced order modeling for nonlinear dynamical systems

Primary LanguageJupyter NotebookGNU General Public License v3.0GPL-3.0

SSMLearnPy

Data-driven Reduced Order Models for Nonlinear Dynamical Systems

This package perform data-driven identification of reduced order model based on spectral submanifolds (SSMs). The required input consists of trajectory data of generic system observables close to an SSM, the SSM dimension and the methods for manifold learning and reduced dynamics fitting.

The computational steps for achieving a reduced-order model are:

  1. Embedding of the simulation/measurement data in a suitable observable space;
  2. Computation of the invariant manifold parametrization and its reduced order or latent coordinates;
  3. Identification of the reduced dynamics, with initial implementation of normal form transformation.

The code can run analytics and predictions on the reduced-order model, as shown in our examples. There are no constraints on the types of masurements, on the kind of nonlinearities or on the problem dimensions.

We have included a demonstration of SSM computation over the following examples.

  • Oscillator chain: n degrees of freedom with trajectories on or off specific SSMs;
  • Brake-Reuss beam: benchmark system for the dynamics of jointed structures, data from experimental measurements (DIC and accelerometers);
  • Vortex Shedding behind a cylinder: data from CFD simulations, projected on a low-dimensional linear subspace of the phase space;
  • Couette flow: data from CFD simulations, projected on a low-dimensional linear subspace of the phase space, for different regimes;
  • Liquid sloshing of a water tank: data from experimental measurements.
  • One degree of freedom oscillator, as a benchmark problem;

Installation

  1. Clone the project with
    git clone https://github.com/mattiacenedese/SSMLearnPy.git
  2. Enter in the project folder
    cd SSMLearnPy/
  3. (optional) Create a new conda environment and activate it:
    conda create -n ssmlearn python=3.9
    conda activate ssmlearn
  4. Install dependencies:
    pip install -r requirements.txt
  5. Install the package:
    pip install -e .
  6. You are ready.

Disclaimer

The implementation and the examples are largely based on the Matlab package SSMLearn https://github.com/mattiacenedese/SSMLearn. The Python implementation is still under active developement and therefore may contain bugs. We apologize for this and welcome any feedback regarding the package.

References

Please consider to cite this article when using this code:

Additional works appear in the references: