Skip to content

Add aeroacoustic pressure spectrum analysis - #2851

Open
tokito-99 wants to merge 2 commits into
su2code:masterfrom
tokito-99:feature/aeroacoustics-postprocessing
Open

Add aeroacoustic pressure spectrum analysis#2851
tokito-99 wants to merge 2 commits into
su2code:masterfrom
tokito-99:feature/aeroacoustics-postprocessing

Conversation

@tokito-99

@tokito-99 tokito-99 commented Jul 23, 2026

Copy link
Copy Markdown

Proposed Changes

Adds a command-line aeroacoustic post-processing tool for unsteady pressure histories generated by SU2. The tool reads standard history.csv output and computes pressure power spectral density using Welch's method, narrowband SPL, OASPL, and dominant frequency.

Multiple pressure probes, transient sample removal, nondimensional pressure scaling, configurable windows, overlap, and detrending are supported. Results are written to CSV with an optional JSON summary.

This contribution only adds post-processing functionality and does not modify the flow solver or existing LES numerics.

Related Work

This is not associated with an existing issue or pull request. It complements the existing LES and hybrid RANS–LES capabilities by providing a workflow for analyzing unsteady pressure-probe output.

PR Checklist

  • I am submitting my contribution to the develop branch.
  • My contribution generates no new compiler warnings (try with --warnlevel=3 when using meson).
  • My contribution is commented and consistent with SU2 style (https://su2code.github.io/docs_v7/Style-Guide/).
  • I used the pre-commit hook to prevent dirty commits and used pre-commit run --all to format old commits.
  • I have added a test case that demonstrates my contribution, if necessary.
  • I have updated appropriate documentation (Tutorials, Docs Page, config_template.cpp), if necessary.

@bigfooted

Copy link
Copy Markdown
Contributor

Hi, @tokito-99 Thanks for this addition. Do you have a regression test for this? So a well-converged result from a case that the python script uses to compute some result that we can check against a stored result in e.g. parallel_regression.py.

@tokito-99

Copy link
Copy Markdown
Author

Hi, @tokito-99 Thanks for this addition. Do you have a regression test for this? So a well-converged result from a case that the python script uses to compute some result that we can check against a stored result in e.g. parallel_regression.py.

Thanks for the suggestion. I added a regression test using the converged pressure history from the existing unsteady square-cylinder case.

The test runs the complete aeroacoustics analysis pipeline and checks the computed OASPL and dominant frequency against values stored in parallel_regression.py.

The corresponding regression data is provided in su2code/TestCases#201. The focused regression passes locally with zero difference from the stored values.

@pcarruscag

Copy link
Copy Markdown
Member

Do you have validation results? How do we know the regression numbers are correct?

@tokito-99

Copy link
Copy Markdown
Author

Do you have validation results? How do we know the regression numbers are correct?

Yes. The numerical implementation is validated in two ways.

First, test_welch_finds_sine_frequency_and_level uses a synthetic sinusoid with a known frequency of 256 Hz and an RMS pressure of 1 Pa. The expected OASPL is 93.979400086720 dB, and the implementation computes 93.979400086778 dB. It also recovers the frequency exactly at 256 Hz.

For an additional local check, I compared the square-cylinder result with scipy.signal.welch using the same window, segment length, overlap, and detrending. SciPy gives an OASPL of 103.151263476485 dB and a dominant frequency of 1.953125 Hz, compared with the stored values of 103.151263476500 dB and 1.953125 Hz.

@pcarruscag

Copy link
Copy Markdown
Member

Sounds good, thank you.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants