PERFORM

PERFORM: A Python package for developing reduced-order models for reacting fluid flows - Published in JOSS (2022)

https://github.com/cwentland0/perform

Science Score: 95.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 1 DOI reference(s) in JOSS metadata
  • Academic publication links
    Links to: zenodo.org
  • Committers with academic emails
    3 of 3 committers (100.0%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
    Published in Journal of Open Source Software

Keywords

reacting-flow-simulations reduced-order-modeling

Scientific Fields

Mathematics Computer Science - 63% confidence
Last synced: 6 months ago · JSON representation

Repository

One-dimensional unsteady compressible reacting flow simulation framework, designed for simple prototyping and testing of novel reduced-order model methods.

Basic Info
Statistics
  • Stars: 29
  • Watchers: 2
  • Forks: 7
  • Open Issues: 27
  • Releases: 2
Topics
reacting-flow-simulations reduced-order-modeling
Created over 5 years ago · Last pushed about 2 years ago
Metadata Files
Readme License

README.md

Documentation Status Coverage Status DOI

Prototyping Environment for Reacting Flow Order Reduction Methods (PERFORM)

PERFORM is a combination 1D compressible reacting flow solver and modular reduced-order model (ROM) framework, designed to provide a simple, easy-to-use testbed for members of the ROM community to quickly prototype and test new methods on challenging (yet computationally-manageable) reacting flow problems. We hope that this tool lowers the barrier to entry for researchers from a variety of fields to develop novel ROM methods and benchmark them against an interesting set of reacting flow configurations.

Documentation

Please see the documentation website for a detailed user guide on installing, running, and designing new simulations for PERFORM. Brief descriptions of available solver routines and ROM methods are also included; please see the solver theory documentation PDF in doc/ for more details. A very brief introduction to installing and running the code is included below.

Installation

Python 3.6+, numpy, scipy, and matplotlib are required for executing PERFORM. To install the package and any missing dependencies, clone this repository, enter the code's root directory perform/, and run the following command:

pip install -e .

This will add the script perform to your Python scripts directory, which is used to execute the solver.

Running PERFORM

PERFORM is executed using the perform command that was added to your Python scripts directory at installation. The options for running the code from the command line are as follows:

perform [-h] [-w WORK] [-p PARAM] [-r ROM] -w, --work WORK runtime working directory -p, --param PARAM solver parameters input file path -r, --rom ROM ROM parameter input file path Note that all command-line options are optional: WORK defaults to the terminal's current working directory, PARAM defaults to ./solver_params.inp, and ROM defaults to ./rom_params.inp. The format and input key values of PARAM and ROM are described in great detail in the documentation. You can run the examples by navigating to the relevant directory and executing perform.

Benchmark Cases

Four sample benchmark cases are included in examples/:

  1. shock_tube: A non-reacting flow designed following the Sod shock tube problem, which models a diaphragm breaking between a high-pressure, high-density chamber of gas and a low-pressure, low-density chamber of gas. The resulting shock, contact surface, and rarefaction waves are a good test for the strong gradient reconstruction and future-state prediction capabilities of ROM methods.
  2. contact_surface: A case that introduces strong contact surface gradients in the temperature and species mass fraction fields. There is no viscosity or reaction in this case, but it serves as a good baseline for testing the ability of models to predict system acoustics in a multi-species system. By applying acoustic forcing of varying amplitudes and frequencies at the outlet, the parametric prediction capabilities of models may also be evaluated.
  3. standing_flame: This case finally introduces viscosity and a single-step irreversible reaction, albeit with a fairly simple flow regime in which the flame is stationary. The highly non-linear interaction between the flame and the system acoustics makes for challenging parametric prediction studies, especially in a ROM's ability to predict the flame's unsteady heat release rate.
  4. transient_flame: The transient flame introduces a bulk velocity to the standing flame flow, causing the flame to propagate downstream. This case is a good challenge for both parametric prediction (by introducing artificial acoustic forcing) but also a ROM's future-state prediction capabilities.

Please see the README.md file in each sample case directory for additional details

Testing

You can test your installation of PERFORM by running the included unit, integration, and regression tests. This can be done from the code's root directory by executing.

chmod +x tests/run_tests.sh tests/run_tests.sh You will be prompted to choose whether to run the regression tests after the unit and integration tests have completed, as the regression tests can take a while to complete. NOTE: The ROM regression tests will fail if you have not installed TensorFlow 2.X; you can install TensorFlow and its dependencies with pip install tensorflow.

Utilities

Some very simple pre/post-processing scripts are provided in perform/utils/. These include scripts for generating POD basis modes, calculating input parameters for non-reflective boundary conditions etc. Brief descriptions of the scripts and their input parameters are given within the scripts.

Issues and Contributing

If you experience errors or unexpected solver behavior when running PERFORM, please first double-check your input parameters and use the documentation as a reference for proper input file formatting. If problems persist, please create a new issue on this repository, and I’ll do my best to resolve it. If you would like to contribute new features or bug fixes yourself, please fork this repository and submit a pull request against this repository when you're finished.

Owner

  • Name: Chris Wentland
  • Login: cwentland0
  • Kind: user
  • Company: University of Michigan, Ann Arbor

Aerospace engineering PhD student at the University of Michigan, Ann Arbor.

JOSS Publication

PERFORM: A Python package for developing reduced-order models for reacting fluid flows
Published
November 08, 2022
Volume 7, Issue 79, Page 3428
Authors
Christopher R. Wentland ORCID
Department of Aerospace Engineering, University of Michigan
Karthik Duraisamy
Department of Aerospace Engineering, University of Michigan
Editor
Kyle Niemeyer ORCID
Tags
combustion reduced-order models

GitHub Events

Total
  • Watch event: 3
Last Year
  • Watch event: 3

Committers

Last synced: 7 months ago

All Time
  • Total Commits: 325
  • Total Committers: 3
  • Avg Commits per committer: 108.333
  • Development Distribution Score (DDS): 0.049
Past Year
  • Commits: 0
  • Committers: 0
  • Avg Commits per committer: 0.0
  • Development Distribution Score (DDS): 0.0
Top Committers
Name Email Commits
chris c****n@u****u 309
Ashish S Nair a****n@u****u 14
Christopher Robert Wentland c****n@l****u 2
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 38
  • Total pull requests: 14
  • Average time to close issues: 5 months
  • Average time to close pull requests: about 17 hours
  • Total issue authors: 1
  • Total pull request authors: 1
  • Average comments per issue: 0.0
  • Average comments per pull request: 0.0
  • Merged pull requests: 14
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 0
  • Pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Issue authors: 0
  • Pull request authors: 0
  • Average comments per issue: 0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • cwentland0 (38)
Pull Request Authors
  • cwentland0 (14)
Top Labels
Issue Labels
enhancement (28) documentation (5) bug (5)
Pull Request Labels
documentation (1) enhancement (1)

Dependencies

doc/requirements.txt pypi
  • sphinxcontrib-bibtex *
.github/workflows/perform_basic.yml actions
  • actions/checkout v2 composite
  • actions/setup-python v2 composite
.github/workflows/perform_intesive.yml actions
  • actions/checkout v2 composite
  • actions/setup-python v2 composite
pyproject.toml pypi
  • gdown *
  • matplotlib >=2.1.0
  • numpy >=1.16.6
  • packaging *
  • scipy >=1.1.0