acoustipy

Acoustic design exploration and material property identification for porous structures

https://github.com/jakep72/acoustipy

Science Score: 57.0%

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

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 16 DOI reference(s) in README
  • Academic publication links
  • Committers with academic emails
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (13.2%) to scientific vocabulary

Keywords

acoustic-transfer-matrix acoustics porous-acoustics porous-materials porous-media tmm transfer-matrix-method
Last synced: 6 months ago · JSON representation ·

Repository

Acoustic design exploration and material property identification for porous structures

Basic Info
Statistics
  • Stars: 5
  • Watchers: 1
  • Forks: 0
  • Open Issues: 0
  • Releases: 2
Topics
acoustic-transfer-matrix acoustics porous-acoustics porous-materials porous-media tmm transfer-matrix-method
Created about 2 years ago · Last pushed about 1 year ago
Metadata Files
Readme License Citation

README.md

Built with Material for MkDocs GitHub Actions Workflow Status PyPI - Version Coveralls branch

acoustipy

Investigate and optimize the acoustic performance of porous and microperforate materials with acoustipy. Use the acoustic transfer matrix method to explore new material designs and identify unique properties of existing materials via inverse, indirect, and hybrid optimization schemes.

Installation

Create and activate a new virtual environment (recommended)

mkdir <your_env_name>
python -m venv .venv
cd .venv
(Windows) cd Scripts && activate.bat
(Linux) source bin/activate

Install from source

git clone https://github.com/jakep72/acoustipy.git
cd acoustipy
pip install -e .
pip install -r requirements.txt

Install from PyPI

pip install acoustipy

Basic Usage

Examples of most of the functionality of acoustipy can be found in the Examples section of the documentation. The snippet below corresponds to the multilayer structure example and highlights a core feature of acoustipy -- the acoustic transfer matrix method.

```Python from acoustipy import acousticTMM

Create an AcousticTMM object, specifying a diffuse sound field at 20C

structure = AcousticTMM(incidence='Diffuse',air_temperature=20)

Define the layers of the material using various models

layer1 = structure.AddResistiveScreen(thickness=1,flowresistivity=100000,porosity=.86) layer2 = structure.AddDBMLayer(thickness = 25.4,flowresistivity=60000) layer3 = structure.AddResistiveScreen(thickness = 1, flow_resistivity=500000,porosity=.75)

Specify the material backing condition -- in this case a 400mm air gap

air = structure.AddAirLayer(thickness = 400)

Build the total transfer matrix of the structure + air gap

transfermatrix = structure.assemblestructure(layer1,layer2,layer3,air)

Calculate the frequency dependent narrow band absorption coefficients

absorption = structure.absorption(transfer_matrix)

Calculate the 3rd octave bands absorption coefficients

bands = structure.octave_bands(absorption)

Calculate the four frequency average absorption

FFA = structure.FFA(bands)

Plot and display the narrow and 3rd band coefficients on the same figure

structure.plot_curve([absorption,bands],["absorption","third octave"]) ```



The example below demonstrates another core feature of acoustipy -- optimization routines that are able to identify the JCA model parameters of porous materials from impedance tube measurements. The snippet can also be found under the Inverse Method in the Examples section.

```python from acoustipy import acousticTMM, AcousticID

Create an AcousticTMM object to generate toy impedance tube data

structure = acousticTMM(incidence='Normal',air_temperature = 20)

Define the JCA and air gap material parameters for the toy data

layer1 = structure.AddJCALayer(thickness = 30, flowresistivity = 46879, porosity = .93, tortuosity = 1.7, viscouscharacteristiclength = 80, thermalcharacteristiclength = 105) air = structure.AddAir_Layer(thickness = 375)

Generate rigid backed absorption data and save to a csv file

s1 = structure.assemblestructure(layer1) A1 = structure.absorption(s1) structure.tocsv('no_gap',A1)

Generate air backed absorption data and save to a csv file

s2 = structure.assemblestructure(layer1,air) A2 = structure.absorption(s2) structure.tocsv('gap',A2)

Create an AcousticID object, specifying to mount types, data files, and data types

inv = AcousticID(mounttype='Dual',nogapfile="nogap.csv", gapfile = 'gap.csv',airtemperature=20,input_type='absorption')

Call the Inverse method to find the tortuosity, viscous, and thermal characteristic lengths of the material

res = inv.Inverse(30, 47000,.926,air_gap=375,uncertainty=.2,verbose=True)

Display summary statistics about the optimization

stats = inv.stats(res) print(stats)

Plot the results of the found parameters compared to the toy input data

inv.plot_comparison(res)

Save the optimization results to a csv

inv.to_csv("params.csv",res)

stats = {'slope': 1.000037058594857, 'intercept': 9.276088883464206e-05, 'rvalue': 0.9999999674493408, 'pvalue': 0.0, 'std_err': 8.732362148426126e-06} ```



References

[1] https://apmr.matelys.com/

[2] Jean‐F. Allard, Yvan Champoux; New empirical equations for sound propagation in rigid frame fibrous materials. J. Acoust. Soc. Am. 1 June 1992; 91 (6): 3346–3353. https://doi.org/10.1121/1.402824

[3] Miki, Y. (1990). Acoustical Properties of porous materials : Modifications of Delany-Bazley models. The Journal of The Acoustical Society of Japan (e), 11, 19-24.

[4] Yvan Champoux, Jean‐F. Allard; Dynamic tortuosity and bulk modulus in air‐saturated porous media. J. Appl. Phys. 15 August 1991; 70 (4): 1975–1979. https://doi.org/10.1063/1.349482

[5] Kirill V. Horoshenkov, Alistair Hurrell, Jean-Philippe Groby; A three-parameter analytical model for the acoustical properties of porous media. J. Acoust. Soc. Am. 1 April 2019; 145 (4): 2512–2517. https://doi.org/10.1121/1.5098778

[6] François-Xavier Bécot, Luc Jaouen; An alternative Biot's formulation for dissipative porous media with skeleton deformation. J. Acoust. Soc. Am. 1 December 2013; 134 (6): 4801–4807. https://doi.org/10.1121/1.4826175

[7] Mathieu Gaborit, Olivier Dazel, Peter Göransson; A simplified model for thin acoustic screens. J. Acoust. Soc. Am. 1 July 2018; 144 (1): EL76–EL81. https://doi.org/10.1121/1.5047929

[8] Sarwono, Joko & Prasetiyo, Iwan & Andreas, S. & William, A.. (2014). The Design of MPP and its Application to Enhance the Acoustics of a Real Auditorium. 10.13140/RG.2.1.1766.0007.

[9] Jaouen, Luc & Bécot, François-Xavier. (2011). Acoustical characterization of perforated facings. The Journal of the Acoustical Society of America. 129. 1400-6. 10.1121/1.3552887.

[10] Hideo Utsuno, Toshimitsu Tanaka, Takeshi Fujikawa, A. F. Seybert; Transfer function method for measuring characteristic impedance and propagation constant of porous materials. J. Acoust. Soc. Am. 1 August 1989; 86 (2): 637–643. https://doi.org/10.1121/1.398241

[11] Atalla, Youssef & Panneton, R.. (2005). Inverse acoustical characterization of open cell porous media using impedance tube measurements. Canadian Acoustics - Acoustique Canadienne. 33.

[12] Raymond Panneton, Yacoubou Salissou; Indirect acoustical characterization of sound absorbing materials.. J. Acoust. Soc. Am. 1 October 2009; 126 (4_Supplement): 2297. https://doi.org/10.1121/1.3249416

Owner

  • Login: jakep72
  • Kind: user

Citation (CITATION.cff)

cff-version: 1.2.0
message: "If you use this software, please cite it as below."
authors:
- family-names: "Peterson"
  given-names: "Jacob Davis"
title: "acoustipy"
url: "https://github.com/jakep72/acoustipy"
license: MIT

GitHub Events

Total
  • Watch event: 3
  • Delete event: 1
  • Push event: 17
  • Create event: 1
Last Year
  • Watch event: 3
  • Delete event: 1
  • Push event: 17
  • Create event: 1

Committers

Last synced: about 2 years ago

All Time
  • Total Commits: 22
  • Total Committers: 1
  • Avg Commits per committer: 22.0
  • Development Distribution Score (DDS): 0.0
Past Year
  • Commits: 22
  • Committers: 1
  • Avg Commits per committer: 22.0
  • Development Distribution Score (DDS): 0.0
Top Committers
Name Email Commits
Jake Peterson j****2@g****m 22

Issues and Pull Requests

Last synced: about 2 years ago

All Time
  • Total issues: 0
  • Total pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Total issue authors: 0
  • Total 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
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
  • jakep72 (1)
Pull Request Authors
Top Labels
Issue Labels
Pull Request Labels