This section describe the application of one-dimensional systems in an acoustic network.
If the network is a sequential connection of systems the transfer matrix model can be used.
Here, we present the capabilities of the pyva.models.VAmodel that provide much more
flexibility because with this class branches and arbitrary network shapes can be easily
created.
A classical device for noise control in exhaust or ventilation systems is the expansion chamber.
This is a pipe section with a middle section of larger diameter and specific length as shown in the
following figure.
We suppose a free field at the input and start with the materials and parameter section:
# Define frequency axisxdata=mC.DataAxis(2*np.pi*np.arange(10,1000,5),typestr='angular frequency')# Tube parameterR1=0.05R2=R1*np.sqrt(10)R3=0.05A1=np.pi*R1**2A2=np.pi*R2**2A3=np.pi*R3**2L1=0.2L2=0.3L3=0.2# The fluidair=matC.Fluid(eta=0.01)
Please, note the use of each required ID or ID pair in the element creation.
In order to create the models a mesh must be defined that holds the nodal information
# Define required DOFtypeQdof=dof.DOFtype(typestr=('volume flow'))Pdof=dof.DOFtype(typestr=('pressure'))# NodesNIDs=[1,2,3,4]# Response and excitation DOFsexcdof=dof.DOF(NIDs,[0],Pdof,repetition=True)resdof=dof.DOF(NIDs,[1],Qdof,repetition=True)
With this preparation the empty models can be initialized
Due to the fact that each element comes with defined IDs the elements are simply added to the models:
# Expension chambertube_network+=elem1tube_network+=elem2tube_network+=elem3tube_network+=rad4tube_network+=entry4free# Same for referencetube_ref_network+=elem_reftube_ref_network+=rad4tube_ref_network+=entry4free
With this option the net volume flow is calculated.
Due to the entry condition the actual volume flow that enters the system is different to the
volume flow defined by the load.
When we check the content of the model we can identify loads and results
>>> tube_networkLinearMatrix of size (4, 4, 253), sym: 1DataAxis of 253 samples and type angular frequency in 1 / secondresdof: DOF object with ID [1 2 3 4], DOF [1 1 1 1] of type [DOFtype(typestr='volume flow')]excdof: DOF object with ID [1 2 3 4], DOF [0 0 0 0] of type [DOFtype(typestr='pressure')]Load with ID=1 Signal of 253 samples and 4 DOFsResults with ID=1 Signal of 253 samples and 4 DOFs
The results can be plotted with the usual methods for signals.
The power() method calculates the power flow through the nodes:
A further means of noise reduction is a Helmholtz resonator located in the pipe.
The resonator is tuned at a certain frequency and works well for tonal noise issues for example in
hydraulic pipes or for air intakes.
We define the frequency data and the dimensions of the set-up by the following variables:
# Define frequency axisdeltaF=5f0=10f1=6000/2/np.pixdata=mC.DataAxis(2*np.pi*np.arange(f0,f1,deltaF),typestr='angular frequency')# Tube parameterR1=0.01A1=np.pi*R1**2L1=0.20L3=0.20# The fluidair=matC.Fluid(eta=0.0001)# Perforate parameterthickness=0.0002holeR=0.0001porosity=0.05# Helmholtz parameterV0=0.0002LH=0.02R=0.01Ac=np.pi*R**2
The Helmholtz resonator is created using the PerforatedLayer class that provides the radiation_impedance function for the end_impedance keyword argument