Engee 文档
Notebook

粘性介质中超声波声波振荡消散时的热场建模

本例演示了超声波辐射在粘性介质中传播的建模。模拟了声波振荡的阻尼和分布式热源对介质的加热。

超声波束通过粘性介质时,其携带的能量会衰减。如果在$x=0$ 处的原点,平面传播波的强度等于$I_0$ ,那么在距离 x 处,强度会减小到$I(x)$ : $$I(x) = I_0 \cdot e^{-kx},$$ 其中 (k) 是强度阻尼系数。因此,原始超声波束在单位距离传播过程中的能量损失$\frac{dI}{dx}\$ ,等于$k \cdot I$ 。衰减系数$k$ 由两部分组成,一部分是吸收,另一部分是散射。从主声束散射出的能量可被粘性介质的其他区域吸收。

利用简单的热传播方程,可以计算出预期的加热。粘性介质的温度分布可用公式描述: $$\frac{\partial T(x,t)}{\partial \tau} = \frac{\partial}{\partial x} \frac{\partial T(x,t)}{\partial x} + \frac{q_0}{c\gamma} e^{-kx}$$

式中:$T$ 是温度;$t$ 是照射时间;$x$ 是沿辐射传播轴的坐标;$q_0$ 是体积热源功率的初始值;$c$ 是介质的热容量;$\gamma$ 是介质的密度。体积热源功率与坐标的函数关系: $q(x) = I_0 k e^{-kx}.$

温度场的计算

连接必要的数据库:

In [ ]:
using .DifferentialEquations, Plots
plotly()
Out[0]:
Plots.PlotlyBackend()

确定辐射和粘性介质参数:

In [ ]:
α = 0.5 # коэффициент теплопроводности Вт / (м*К)
c = 3360.0 # теплоёмкость, Дж/кг*К
γ = 1050.0 # плотность, кг/м3
L = 0.1 # глубина рассматриваемого участка, м
k = 0.35 # Нп/м
I0 = 10000.0 # интенсивность излучения Вт / м2
F = 0.0001 #м2
m = 0.001; #кг

通过时间和坐标实现温度计算功能:

In [ ]:
function heat_equation!(du, u, p, t)
    α, I0, c, γ, k, x = p
    dx = x[2] - x[1]
    N = length(x)
    # Первый участок
    du[1] = α * F * (1 / (c * m)) * (u[2] - 2u[1] + 320) / dx^2 + I0 / (c * γ) * exp(-k*x[1])
    # Промежуточные участки
    for i in 2:(N-1)
        du[i] = α * F * (1 / (c * m)) * (u[i+1] - 2u[i] + u[i-1]) / dx^2 + I0 / (c * γ) * exp(-k*x[i])
    end
    # Конечный участок
    du[N] = α * F * (1 / (c * m)) * (u[N-1] - u[N]) / dx^2 + I0 / (c * γ) * exp(-k*x[N])
end
Out[0]:
heat_equation! (generic function with 1 method)

定义计算参数

In [ ]:
x = range(0, stop=1, length=100)  # задаем координаты
tspan = (0.0, 2000.0)  # временной интервал
u0 = 310.0 .* ones(length(x))  # начальные условия
p = (0.5, I0, 3360.0, 1050.0, k, x)  # параметры (α, I0, c, γ, k, L, x)  
Out[0]:
(0.5, 10000.0, 3360.0, 1050.0, 0.35, 0.0:0.010101010101010102:1.0)

实现与坐标相关的热通量计算功能:

In [ ]:
function teplo(x)
    return I0 / (c * γ) * exp.(-k*x)
end
Out[0]:
teplo (generic function with 1 method)

考虑到衰减系数,将热通量值作为坐标函数可视化:

In [ ]:
plot(teplo(x))
Out[0]:

使用微分方程库方法解决问题:

In [ ]:
prob = ODEProblem(heat_equation!, u0, tspan, p)
sol = solve(prob);

在计算的最后一步确定温度场:

In [ ]:
t = 2000.0
idx = argmin(abs.(sol.t .- t))
u_at_t = sol.u[idx];

最后计算步骤的温度场可视化:

In [ ]:
plot(u_at_t)
Out[0]:

结论

本案例研究展示了声波振荡在粘性介质中的传播、阻尼和热能转换建模。我们构建了半无限板的温度场,并演示了微分方程库求解微分方程系统的方法。