PARAMOUNT is a lightweight Python toolkit for computing Proper Orthogonal Decomposition (POD) and Dynamic Mode Decomposition (DMD) on large numerical and experimental datasets. It leverages parallel processing to analyze large amounts of data efficiently.
- Distributed Processing: Ideal for multi-core parallel processing of large data.
- Methodology: A brief video introduction to the theory is available here.
- Perform distributed computation of POD to extract dominant spatial patterns.
- Accompanying research paper:
Alireza Ghasemi, et al. "Combustion Dynamics Analysis of a Pressurized Airblast Swirl Burner using Proper Orthogonal Decomposition." International Journal of Spray and Combustion Dynamics, 2023. DOI:10.1177/17568277231207252
- Compute DMD modes, eigenvalues, and generate future state predictions.
- Multi-resolution DMD (MRDMD) to analyze data across various temporal scales.
- Accompanying research paper:
Alireza Ghasemi, Jim B.W. Kok. "Exploring Liquid Fuel Combustion Dynamics in a Swirl Burner using Dynamic Mode Decomposition." Engineering Applications of Computational Fluid Mechanics, 2025. DOI:10.1080/19942060.2025.2557009
- Easily visualize POD/DMD modes and coefficients using Matplotlib.
- 3D data can be visualized interactively with Plotly.
-
Installation
pip install -r requirements.txt
-
Data Preparation
- PARAMOUNT works well with CSV datasets and can convert them to Parquet for better performance.
- The domain coordinates
x/y/z.pklare inferred based on input CSV data. - Specify variables of interest and convert to Parquet. See
csv_examplefor details.
# Convert your data into parquet format pod = POD() variables = POD.get_folderlist(...) pod.csv_to_parquet(...)
-
Analysis (POD / DMD / MRDMD)
- Vertex distance
distmay be set to mask out external regions within the domain bounding box. - Other parameters such as timestep
dtand maximum analysis frequencyfreq_maxcan be specified. - For POD: use the
PODclass to compute SVD from Parquet datasets. Results (U, S, V) are stored. Seesvd_example.
pod.svd_save_usv(...)
- For DMD: use the
DMDclass to compute dynamic modes and eigenvalues. Seedmd_example.
dmd = DMD() dmd.save_Atilde(...) dmd.save_modes(...) dmd.save_prediction(...)
- For MRDMD: use
MRDMDutilities. Seemrdmd_example.
dmd.multires(...) dmd.multires_predict(...)
- Vertex distance
-
Visualization
- Visualization parameters can be customized.
pod.set_time(dt) pod.set_viz_params(dpi=600, linewidth=0.85, color="black", cmap="seismic")
- 2D visualization methods for each analysis are included in the provided sample scripts.
- Interactive 3D visualization of results can be performed similar to the provided
3D_viz_example.ipynb.
This is a sample project structure for using the PARAMOUNT library to perform POD and DMD analysis.
Project
├── myproject.py
├── .data
│ ├── variable_1/
│ │ └── *.parquet
│ ├── variable_2/
│ │ └── *.parquet
│ ├── x.pkl
│ └── y.pkl
├── .usv
│ ├── variable_1/
│ │ ├── s.pkl
│ │ ├── u/*.parquet
│ │ └── v/*.parquet
│ └── variable_2/
│ ├── s.pkl
│ ├── u/*.parquet
│ └── v/*.parquet
├── .dmd
│ ├── variable_1/
│ │ ├── Atilde.pkl
│ │ ├── b.pkl
│ │ ├── lambda.pkl
│ │ ├── modes_imag/*.parquet
│ │ ├── modes_real/*.parquet
│ │ └── prediction/*.parquet
│ └── variable_2/ ...
├── .mrdmd
│ └── variable_1/levels/...
├── .viz
│ └── variable_1/results.png
└── src
├── PARAMOUNT_BASE.py
├── PARAMOUNT_POD.py
├── PARAMOUNT_DMD.py
└── utils.py
If you use PARAMOUNT in published work, please cite the relevant associated paper.
This toolkit is developed by Alireza Ghasemi at University of Twente under the MAGISTER project.

