半无限板中热传播的模拟
这个例子演示了二维半无限板中热传播的模拟.
传热过程一般由方程描述:
利用欧拉法计算半无限板中的热传播,将方程转化为差值形式。:
该方程描述了二维介质中的传热过程。 它模拟空间点(在两个空间坐标X和Y和一个时间坐标)的温度变化,因为它们之间的传热。
连接图书馆:
In [ ]:
using Plots
确定源数据:
In [ ]:
c = 903.7
m = 0.003375
A = 235.9
F = 0.00025
d = 0.01
L = 0.14
q = 1400.0
h = 0.1
Out[0]:
确定初始条件
In [ ]:
T0 = 293.15 # 板的初始温度
Ny = 20 # Y轴上的点数
Nx = 20 # X轴上的点数
Nt = 3000 # 时间步数
T = fill(T0, (Nt, Nx, Ny)); # 每个元素的温度
设置边界条件:
In [ ]:
T[:, end, :] .= 293.15; # 右侧环境温度(x=L)
温度和热流的计算:
In [ ]:
@time for i in 1:Nt-1 # 时间步数
for k in 1:Ny # 沿Y坐标循环
for j in 2:Nx-1 # 沿X坐标循环
# 温度更新
T[i + 1, j, k] = T[i, j, k] + h * (
(1 / (c * m)) * (
A * F * (T[i, j - 1, k] - T[i, j, k]) / d + # 来自左段的热流
A * F * (T[i, j + 1, k] - T[i, j, k]) / d + # 来自右段的热流
(k > 1 ? A * F * (T[i, j, k - 1] - T[i, j, k]) / d : 0) + # 从上面的元件传热
(k < Ny ? A * F * (T[i, j, k + 1] - T[i, j, k]) / d : 0) # 来自下面元件的热传递
)
)
# 永久热源的确定
if T[i+1, 5, 1] < 350.0
T[i+1, 1:20, 1] = T[i+1, 1:20, 1] .+ 0.05 # 热源
else
T[i+1, 1:20, 1] .= 350.0
end
end
end
end
创建动画:
In [ ]:
@time anim = @animate (for i in 1:Int(Nt / 50)
heatmap((T[i, :, :]), color=:thermal, title="板内温度(秒△(i*5))", xlabel="X(米)", ylabel="Y(米)", size=(400, 400), clims=(290, 340))
end)
Out[0]:
在GIF中保存动画:
In [ ]:
gif(anim, "heat_distribution_plate.gif", fps=10)
Out[0]:
