pyva.systems.infiniteLayers.PerforatedLayer

class pyva.systems.infiniteLayers.PerforatedLayer(thickness, hole_radius, fluid=Fluid(c0=343.0, rho0=1.23, eta=0.01), pattern='square', alpha=2.0, **kwargs)

Bases: ResistiveLayer

The PerforatedLayer class deals perforated layers in acoustic networks

The behaviour is calculated using flow throught the holes and radiation be the disk radiator pattern

thickness

thickness of the perforted layer

Type:

float

pattern

identifier for hole pattern (quadradic, triangular, )

Type:

str

hole_radius

radius of the holes in the membrane

Type:

float

porosity

area ratio of holes to totalsurface

Type:

float

fluid

fluid in the hole

Type:

fluid

alpha

correction constant for resistivity correction approx 4.-2. for sharp to round edges

Type:

float

area mass

area mass, when > 0 the perforate is considered as limp

Type:

float

__init__(thickness, hole_radius, fluid=Fluid(c0=343.0, rho0=1.23, eta=0.01), pattern='square', alpha=2.0, **kwargs)

Class contructor for PerforatedLayer

Parameters:
  • thickness (float) – thickness of the perforted layer

  • hole_radius (float) – radius of the holes in the membrane

  • fluid (fluid) – fluid in the hole. The default is visc_air.

  • pattern (str) – identifier for hole pattern (‘square’,triangular’’,). The default is ‘square’.

  • alpha (float) – correction constant for resistivity correction approx 4.-2. for sharp to round edges: The default is 2.

  • **kwargs (dict) – arbitrary keyword parameter list

  • distance (float) – distance between holes

  • porosity (float) – surface porosity of perforate

Return type:

None.

Methods

__init__(thickness, hole_radius[, fluid, ...])

Class contructor for PerforatedLayer

get_xdata(omega, kx)

Determine the appropriate xdata from omega and kx.

plot(omega, **kwargs)

Plots the transfer impedance for the related part

transfer_impedance(omega[, kx, ID])

Transferimpedance of perforateLayer

Attributes

isequivalentfluid

Determine if layer is of type equivalent fluid

porosity

porosity parameter

visc_air

static get_xdata(omega, kx)

Determine the appropriate xdata from omega and kx.

Infinite Layer theory often involves integration over wavenumber. Thus, the kx is the integration variable.

If omega is scalar xdata will be wavenumber in x (kx) if kx is scalar xdata will be angular frequency if kx and omega have same dimension it is assumed that kx belongs to a constant angle and is given by kx = omega/c0*sin(theta) and xdata will be angular frequency

Parameters:
  • omega (float or ndarray) – angular frequency

  • kx (float or ndarray) – wavenumber

Returns:

wavenumber or omega as DataAxis object

Return type:

DataAxis

property isequivalentfluid

Determine if layer is of type equivalent fluid

Defauls parameter is True

Returns:

True.

Return type:

bool

plot(omega, **kwargs)

Plots the transfer impedance for the related part

Parameters:
  • omega (float) – angular frequency.

  • fig (int, optional) – figure ID. The default is 1.

  • **kwargs (dict) – Arbitrary keyword parameter list passed to Signal.plot.

Return type:

None.

property porosity

porosity parameter

Return type:

None.

transfer_impedance(omega, kx=0, ID=[1, 2])

Transferimpedance of perforateLayer

The transferimpedance is caluclated based on the lumped_acoustic model, because it is independent from the kx

Parameters:
  • omega (float or ndarray) – scalar angular frequency

  • kx (float or ndarray, optional) – In-plane wavenumber. The default is 0.

  • ID (list of int, optional) – Left and right when overwritten, None takes object ID. The default is None.

Returns:

[2 x 2] array of transferimpedance

Return type:

DynamicMatrix