<jupyter_start><jupyter_text>Quantificação de elementos acústicosNeste notebook vamos avaliar a quantificação de diversos elementos acústicos. Entre eles:- compliância- tubo aberto-fechado- tubo aberto-aberto- tubo aberto-aberto de pequenas dimensões- impedância de radiação (pistão no baffle infinito)- impedância de radiação (pistão no cilindro)<jupyter_code>import numpy as np
from scipy import special
from matplotlib import pyplot as plt
plt.rcParams.update({'font.size': 14})<jupyter_output><empty_output><jupyter_text>1. Compliância acústicaA compliância está associada a um volume de ar, $V_s$ [m$^{3}$].\begin{equation}C_a = \frac{V_s}{\rho_0 c_{0}^{2}}\end{equation}<jupyter_code>def ac_compliance(vol, rho0 = 1.21, c0 = 343):
    Ca = Vs/(rho0*c0**2)
    return Ca
Vs = 50/1000
Ca = ac_compliance(Vs)
print(r'Compliância é {} [m^3/Pa]'.format(Ca))<jupyter_output>Compliância é 3.512338740625656e-07 [m^3/Pa]<jupyter_text>2. Tubo aberto-fechadoResulta numa compliância em série com uma massa acústica.![image-2.png](attachment:image-2.png)\begin{equation}Z_a = \frac{1}{j \omega}\frac{\rho_0 c_{0}^{2}}{\pi a^2 l'} \ + \ j \omega \frac{\rho_0 l'}{3 \pi a^2}\end{equation}em que $l'$ é o comprimento corrigido do tubo e é- para um tubo flangeado $l'= l + 0.85 a$- para um tubo não-flangeado $l'= l + 0.61 a$<jupyter_code>def ac_octube(a, l, freq, flanged = False, rho0 = 1.21, c0 = 343):
    if flanged:
        ll = l + 0.85*a
    else:
        ll = l + 0.61*a
    # compliance and mass
    Ca = np.pi*(a**2)*ll/(rho0*c0**2)
    Ma = rho0*ll/(3*np.pi*a**2)
    # impedance
    omega = 2 *np.pi*freq
    Za = 1/(1j*omega*Ca) + 1j*omega*Ma
    return Ca, Ma, Za
a = 0.01
l = 0.2

freq = np.arange(10, 10000, 1)

Ca, Ma, Za = ac_octube(a, l, freq, flanged = False)

print(r'Compliância é {} [m^3/Pa]'.format(Ca))
print(r'Massa é {} [kg/m^4]'.format(Ma))


plt.figure(figsize=(7,5))
plt.semilogx(freq, np.abs(Za), '-k', linewidth = 1, label = r'$|Z_a|$')
plt.legend(loc = 'upper right')
plt.grid(linestyle = '--', which='both')
plt.xlabel('Frequência [Hz]')
plt.ylabel(r'$|Z_a|$ [Pa s/m$^3$]')
plt.xlim((freq[0], freq[-1]))
plt.tight_layout()<jupyter_output>Compliância é 4.5483539523178683e-10 [m^3/Pa]
Massa é 264.6014590879997 [kg/m^4]<jupyter_text>3. Tubo aberto-abertoResulta em uma massa acústica.\begin{equation}Z_a = j \omega \frac{\rho_0 l'}{\pi a^2}\end{equation}em que $l'$ é o comprimento corrigido do tubo.<jupyter_code>def ac_ootube(a, l, freq, flanged = False, rho0 = 1.21, c0 = 343):
    if flanged:
        ll = l + 0.85*a
    else:
        ll = l + 0.61*a
    # mass
    Ma = rho0*ll/(np.pi*a**2)
    # impedance
    omega = 2 *np.pi*freq
    Za = 1j*omega*Ma
    return Ca, Ma, Za
a = 0.01
l = 0.2

freq = np.arange(10, 10000, 1)

Ca, Ma, Za = ac_ootube(a, l, freq, flanged = False)

print(r'Massa é {} [kg/m^4]'.format(Ma))<jupyter_output>Massa é 793.8043772639991 [kg/m^4]<jupyter_text>4. Tubo aberto-aberto de pequenas dimensõesResulta em uma resistência acústica em série com uma massa acústica.![image.png](attachment:image.png)\begin{equation}Z_a = \frac{8 \eta l'}{\pi a^4} \ + \ j \omega \frac{4}{3}\frac{\rho_0 l'}{\pi a^2}\end{equation}em que $l'$ é o comprimento corrigido do tubo.<jupyter_code>def ac_oo_smalltube(a, l, freq, flanged = False, rho0 = 1.21, c0 = 343, eta = 1.84e-5):
    if flanged:
        ll = l + 0.85*a
    else:
        ll = l + 0.61*a
    # compliance and mass
    Ra = 8*eta*ll/(np.pi*a**4)
    Ma = 4*rho0*ll/(3*np.pi*a**2)
    # impedance
    omega = 2 *np.pi*freq
    Za = Ra + 1j*omega*Ma
    return Ra, Ma, Za
a = 0.005
l = 0.2

freq = np.arange(10, 10000, 1)

Ra, Ma, Za = ac_oo_smalltube(a, l, freq, flanged = False)

print(r'Resistência é {} [Pa s/m^3]'.format(Ra))
print(r'Massa é {} [kg/m^4]'.format(Ma))<jupyter_output>Resistência é 15222.322329202996 [Pa s/m^3]
Massa é 4170.971471543394 [kg/m^4]<jupyter_text>5. Impedância de radiação (pistão no baffle infinito)Para um pistão no baffle infinito, a impedância de radiação é dada por\begin{equation}Z_a = \pi a^2 \rho_0 c_0 [1-\frac{J_1(2k_0 a)}{2k_0 a} + j \frac{S_1(2k_0 a)}{2k_0 a}]\end{equation}em que $J_1(x)$ é a função de Bessel do primeiro tipo e $S_1(x)$ é a função de Struve do primeiro tipo - ambas de ordem 1.Alternativamente, a impedância de radiação pode ser modelada pelo circuito a seguir.![Screenshot_20210615_085009.png](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA7gAAAFwCAIAAAAdf0D8AAAACXBIWXMAAA7EAAAOxAGVKw4bAAAgAElEQVR4Xuzdd1gU1xYA8DO79C5dLKCilCgWUASVYkex9/jsiiUW7LELGiXGirHEXmJX7B1pIqCCLSiooKgUpXfYOu+PkXW4oFK<KEY>//<KEY>IHR<KEY>)Com \begin{equation}R_{A1} = \large\frac{0.1404\rho_{0}c_{0}}{a^{2}}\end{equation}\begin{equation}R_{A2} = \large\frac{\rho_{0}c_{0}}{\pi a^{2}}\end{equation}\begin{equation}C_{A1} = \large\frac{5.94a^{3}}{\rho_{0}c_{0}^{2}}\end{equation}\begin{equation}M_{A1} = \large\frac{0.27\rho_{0}}{a}\end{equation}<jupyter_code>def zrad_piston_infbaffle(a, freq, rho0 = 1.21, c0 = 343):
    # Equivalent circuit
    Ra1 = (0.1404 * rho0 * c0) / (a**2)
    Ra2 = (rho0 * c0)/(np.pi * a**2)
    Ca1 = 5.94 *a**3/(rho0 * c0**2)
    Ma1 = (0.27 * rho0) / a
    # Equivalent impedance
    omega = 2*np.pi*freq
    Zrad_eq=(-(omega**2)*Ma1*Ra1*Ra2*Ca1+1j*omega*Ma1*(Ra1+Ra2))/\
        (Ra1+Ra2-(omega**2)*Ma1*Ra1*Ca1+1j*omega*(Ra1*Ra2*Ca1+Ma1))

    # Radiation impedance 
    k0 = omega/c0; 
    #s = pi*a^2;
    Jka = special.jv(1,2*k0*a)
    Ska = special.struve(1,2*k0*a)

    R1 = 1 - 2*Jka/(2*k0*a);
    X1 = 2*Ska/(2*k0*a);

    Zrad = (rho0*c0/(np.pi*a**2))*(R1 + 1j*X1)
    return Ra1, Ra2, Ca1, Ma1, Zrad_eq, Zrad
a = (6/2)*(2.54e-2)
freq = np.arange(10, 10000, 1)

Ra1, Ra2, Ca1, Ma1, Zrad_eq, Zrad = zrad_piston_infbaffle(a, freq)

print(r'Ra1 é {} [Pa s/m^3]'.format(Ra1))
print(r'Ra2 é {} [Pa s/m^3]'.format(Ra2))
print(r'Ca1 é {} [m^3/Pa]'.format(Ca1))
print(r'Ma1 é {} [kg/m^4]'.format(Ma1))

plt.figure(figsize=(12,6))
plt.subplot(2,2,1)
plt.semilogx(freq, np.real(Zrad), linewidth = 1, label = 'Exato')
plt.semilogx(freq, np.real(Zrad_eq), linewidth = 1, label = 'Equivalente')
plt.legend(loc = 'best')
plt.grid(linestyle = '--', which='both')
plt.xlabel('Frequência [Hz]')
plt.ylabel(r'$\Re e \{Z_a\}$ [Pa s/m$^3$]')
plt.xlim((freq[0], freq[-1]))

plt.subplot(2,2,2)
plt.semilogx(freq, np.imag(Zrad), linewidth = 1)
plt.semilogx(freq, np.imag(Zrad_eq), linewidth = 1)
plt.grid(linestyle = '--', which='both')
plt.xlabel('Frequência [Hz]')
plt.ylabel(r'$\Im m \{Z_a\}$ [Pa s/m$^3$]')
plt.xlim((freq[0], freq[-1]))

plt.subplot(2,2,3)
plt.semilogx(freq, np.abs(Zrad), linewidth = 1)
plt.semilogx(freq, np.abs(Zrad_eq), linewidth = 1)
plt.grid(linestyle = '--', which='both')
plt.xlabel('Frequência [Hz]')
plt.ylabel(r'$|Z_a|$ [Pa s/m$^3$]')
plt.xlim((freq[0], freq[-1]))

plt.subplot(2,2,4)
plt.semilogx(freq, np.angle(Zrad), linewidth = 1)
plt.semilogx(freq, np.angle(Zrad_eq), linewidth = 1)
plt.grid(linestyle = '--', which='both')
plt.xlabel('Frequência [Hz]')
plt.ylabel(r'$\angle Z_a$ [rad]')
plt.xlim((freq[0], freq[-1]))
plt.tight_layout()<jupyter_output>Ra1 é 10035.445470890943 [Pa s/m^3]
Ra2 é 22752.005025946823 [Pa s/m^3]
Ca1 é 1.8461957573336395e-08 [m^3/Pa]
Ma1 é 4.28740157480315 [kg/m^4]<jupyter_text>5. Impedância de radiação (pistão na extremidade de um cilindro)Para um pistão na extremidade de um cilindro, a impedância pelo mesmo circuito do exemplo anterior, com\begin{equation}R_{A1} = \large\frac{0.504\rho_{0}c_{0}}{\pi a^{2}}\end{equation}\begin{equation}R_{A2} = \large\frac{\rho_{0}c_{0}}{\pi a^{2}}\end{equation}\begin{equation}C_{A1} = \large\frac{5.44a^{3}}{\rho_{0}c_{0}^{2}}\end{equation}\begin{equation}M_{A1} = \large\frac{0.1952\rho_{0}}{a}\end{equation}<jupyter_code>def zrad_cylinder(a, freq, rho0 = 1.21, c0 = 343):
    # Equivalent circuit
    Ra1 = (0.504 * rho0 * c0) / (np.pi * a**2)
    Ra2 = (rho0 * c0) / (np.pi * a**2)
    Ca1 = (5.44 * a**3) / (rho0 * c0**2)
    Ma1 = (0.1952 * rho0) / a
    # Equivalent impedance
    omega = 2*np.pi*freq
    Zrad_eq=(-(omega**2)*Ma1*Ra1*Ra2*Ca1+1j*omega*Ma1*(Ra1+Ra2))/\
        (Ra1+Ra2-(omega**2)*Ma1*Ra1*Ca1+1j*omega*(Ra1*Ra2*Ca1+Ma1))

    return Ra1, Ra2, Ca1, Ma1, Zrad_eq
a = 0.5*(1/2)*(2.54e-2)
freq = np.arange(10, 10000, 1)

Ra1, Ra2, Ca1, Ma1, Zrad_eq = zrad_cylinder(a, freq)

print(r'Ra1 é {} [Pa s/m^3]'.format(Ra1))
print(r'Ra2 é {} [Pa s/m^3]'.format(Ra2))
print(r'Ca1 é {} [m^3/Pa]'.format(Ca1))
print(r'Ma1 é {} [kg/m^4]'.format(Ma1))

plt.figure(figsize=(12,6))
plt.subplot(2,2,1)
plt.semilogx(freq, np.real(Zrad_eq), linewidth = 1, label = 'Equivalente')
plt.legend(loc = 'best')
plt.grid(linestyle = '--', which='both')
plt.xlabel('Frequência [Hz]')
plt.ylabel(r'$\Re e \{Z_a\}$ [Pa s/m$^3$]')
plt.xlim((freq[0], freq[-1]))

plt.subplot(2,2,2)
plt.semilogx(freq, np.imag(Zrad_eq), linewidth = 1)
plt.grid(linestyle = '--', which='both')
plt.xlabel('Frequência [Hz]')
plt.ylabel(r'$\Im m \{Z_a\}$ [Pa s/m$^3$]')
plt.xlim((freq[0], freq[-1]))

plt.subplot(2,2,3)
plt.semilogx(freq, np.abs(Zrad_eq), linewidth = 1)
plt.grid(linestyle = '--', which='both')
plt.xlabel('Frequência [Hz]')
plt.ylabel(r'$|Z_a|$ [Pa s/m$^3$]')
plt.xlim((freq[0], freq[-1]))

plt.subplot(2,2,4)
plt.semilogx(freq, np.angle(Zrad_eq), linewidth = 1)
plt.grid(linestyle = '--', which='both')
plt.xlabel('Frequência [Hz]')
plt.ylabel(r'$\angle Z_a$ [rad]')
plt.xlim((freq[0], freq[-1]))
plt.tight_layout()<jupyter_output>Ra1 é 1651249.5167631165 [Pa s/m^3]
Ra2 é 3276288.723736342 [Pa s/m^3]
Ca1 é 9.784676354493042e-12 [m^3/Pa]
Ma1 é 37.195590551181105 [kg/m^4]
{'fraction_non_alphanumeric': 0.20399159663865546, 'fraction_numerical': 0.08476890756302521, 'mean_word_length': 4.481289579735176, 'pattern_counts': {'":': 0, '<': 26, '<?xml version=': 0, '>': 26, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '7', 'dir': 'jupyter-structured-clean-dedup', 'id': '137289', 'license': 'MIT', 'n_tokens_mistral': 5022, 'n_tokens_neox': 4466, 'n_words': 829, 'path': 'u4_circuitos_acusticos/.ipynb_checkpoints/EA_elem_acusticos-checkpoint.ipynb', 'repo_name': 'eric-brandao/eletroacustica1', 'size': '52825'}