前言
随着科技的进步和工程应用的不断拓展,对热传导方程的理解和应用已经成为现代工程技术中的一个重要方面。在我们日常生活中,热传导现象无处不在。无论是烹饪时的火焰,还是冬季保暖的衣物,热传导都在其中发挥着关键作用。然而,要深入理解并应用热传导,我们需要依赖于数学模型来描述这一物理现象。其中,最基本也最重要的模型之一就是一维热传导方程。
一维热传导方程是一个描述热量如何在物体中传递的数学方程。通过这个方程,我们可以了解物体内部温度的分布情况,以及温度随时间和空间的变化规律。这一模型的建立,为我们提供了分析和解决实际热传导问题的有力工具。
在接下来的篇幅中,我们将深入探讨一维热传导方程的理论和应用。通过详尽的数学推导来得到这些方程,此外,还将介绍有限差分法(显式格式)来得到一维热传导方程的数值解。
首先,引入这样一个场景,如下图所示,最左边有一个恒温热源100℃,其通过一根杆将热量传递到小人的皮肤上,在此之前,需要做一些假设:
- 只考虑棒的长度方向上的热传导,忽略其他方向。这样,就将情景简化成一个维度上的问题。
- 杆的末端与人体皮肤表面的热交换情况暂时不做考虑,即热源的热量传导杆的末端即结束,杆末端与皮肤的传热方程将在后面的文章中介绍。
人皮肤表面初始温度37℃的初始条件已经确定,随后需要确定其他区域的初始条件,不妨设这根杆上在t=0时刻的初始温度也为37℃。至此,所有的边界条件和初始条件都已经确立,可以进行下面的模型建立。
一维热传导方程模型的建立
设温度为时间空间的函数:
u
=
u
(
x
,
t
)
u=u\left( x,t \right)
u=u(x,t),这个式子代表x位置处,t时刻所具有的温度。
热传导方程基于能量守恒定律推导。在微小的时间内,棒的某一部分的温度变化与该部分的热流量梯度成正比。其热量变化满足如下方程:
∂
u
(
x
,
t
)
∂
t
=
α
∂
2
u
(
x
,
t
)
∂
x
2
\frac{\partial u\left( x,t \right)}{\partial t}=\alpha \frac{\partial ^2u\left( x,t \right)}{\partial x^2}
∂t∂u(x,t)=α∂x2∂2u(x,t)
其中,
α
=
k
ρ
c
,
\alpha =\frac{k}{\rho c},
α=ρck,
k
k
k 是物体的导热系数,
ρ
\rho
ρ 是物体的密度,c是物体的比热。
α
\alpha
α 被称为热扩散系数,常见的热扩散系数如下表所示:
这是一个偏微分方程(PDE),为了求出具体物理场景下的数值,还需要确定一些初始条件和边界条件,以及其他参数。
设杆子长度是1m,并且认为杆子为银材质,那么从上表就可以查出,此银材质杆子的热扩散系数
α
=
149
×
1
0
−
6
\alpha =149\times 10^{-6}
α=149×10−6 ,并且设置传热仿真的时间为500s
初始条件:物体内部各点在初始时刻t = 0 的温度分布
u
(
x
,
0
)
=
37
,
(
x
≠
0
)
u\left( x,0 \right) =37,\left( x\ne 0 \right)
u(x,0)=37,(x=0)
边界条件:边界x=0处有一个恒温热源
u
(
0
,
t
)
=
100
u\left( 0,t \right) =100
u(0,t)=100
中间层满足热传导方程:
∂
u
(
x
,
t
)
∂
t
=
α
∂
2
u
(
x
,
t
)
∂
x
2
\frac{\partial u\left( x,t \right)}{\partial t}=\alpha \frac{\partial ^2u\left( x,t \right)}{\partial x^2}
∂t∂u(x,t)=α∂x2∂2u(x,t) ,
其中,
α
=
k
ρ
c
\alpha =\frac{k}{\rho c}
α=ρck ,
k
k
k是物体的导热系数,
ρ
\rho
ρ 是物体的密度,
c
c
c是物体的比热。
综上所述,整个物理过程满足如下方程组:
{
∂
u
(
x
,
t
)
∂
t
=
α
∂
2
u
(
x
,
t
)
∂
x
2
u
(
0
,
t
)
=
100
u
(
x
,
0
)
=
37
α
=
k
ρ
c
=
149
×
1
0
−
6
\left\{ \begin{array}{l} \frac{\partial u\left( x,t \right)}{\partial t}=\alpha \frac{\partial ^2u\left( x,t \right)}{\partial x^2}\\ u\left( 0,t \right) =100\\ u\left( x,0 \right) =37\\ \alpha =\frac{k}{\rho c}=149\times 10^{-6}\\ \end{array} \right.
⎩
⎨
⎧∂t∂u(x,t)=α∂x2∂2u(x,t)u(0,t)=100u(x,0)=37α=ρck=149×10−6
至此,这个物理过程中,所有的变化形式都可以用上述方程组来描述,只要求出这组偏微分方程的解,即可清晰地知晓整个热传导的过程,在求解的过程中,采用有限差分法,有限差分法包含了显式格式和隐式格式,要注意的是,显式格式是有收敛条件的,如果不满足收敛条件,求出的解是错误的。而有限差分法的隐式格式则是无条件收敛的,但是其表示比较复杂。有限差分法的显式格式的好处是表示简单,清晰易懂,因此,下文求解时采用有限差分法的显式格式。
一维热传导方程模型的求解
采用有限差分法,显式格式:
有限差分法的基本原理即使用近似方法处理微分方程中的微分项。
首先,对求解区域进行网格划分,我们将杆子的长度区间[0,1]划分为等距的
N
x
N_x
Nx 个部分,每一个小网格的长度为
Δ
x
=
1
N
x
\varDelta x=\frac{1}{N_x}
Δx=Nx1 ,将仿真时间500s划分为等间隔的
N
t
N_t
Nt 个部分,每一个小时间步长的长度为
Δ
t
=
500
N
t
\varDelta t=\frac{500}{N_t}
Δt=Nt500
接下来,对原来的热传导方程进行差分,用差分来代替微分运算。
热传导方程差分:对二阶差分项,我们使用二阶中心差商,上述方程可以近似写成
u
(
x
i
,
t
j
+
1
)
−
u
(
x
i
,
t
j
)
Δ
t
=
α
u
(
x
i
+
1
,
t
j
)
−
2
u
(
x
i
,
t
j
)
+
u
(
x
i
−
1
,
t
j
)
Δ
x
2
\frac{u\left( x_i,t_{j+1} \right) -u\left( x_i,t_j \right)}{\varDelta t}=\alpha \frac{u\left( x_{i+1},t_j \right) -2u\left( x_i,t_j \right) +u\left( x_{i-1},t_j \right)}{\varDelta x^2}
Δtu(xi,tj+1)−u(xi,tj)=αΔx2u(xi+1,tj)−2u(xi,tj)+u(xi−1,tj)
化简可得:
u
(
x
i
,
t
j
+
1
)
=
α
⋅
Δ
t
Δ
x
2
⋅
(
u
(
x
i
+
1
,
t
j
)
−
2
u
(
x
i
,
t
j
)
+
u
(
x
i
−
1
,
t
j
)
)
+
u
(
x
i
,
t
j
)
u\left( x_i,t_{j+1} \right) =\frac{\alpha \cdot \varDelta t}{\varDelta x^2}\cdot \left( u\left( x_{i+1},t_j \right) -2u\left( x_i,t_j \right) +u\left( x_{i-1},t_j \right) \right) +u\left( x_i,t_j \right)
u(xi,tj+1)=Δx2α⋅Δt⋅(u(xi+1,tj)−2u(xi,tj)+u(xi−1,tj))+u(xi,tj)
边界条件差分:
{
u
(
x
i
,
0
)
=
37
,
i
=
1
,
2
,
.
.
.
,
N
x
u
(
0
,
t
j
)
=
100
,
u
(
N
x
,
t
j
)
=
37
,
j
=
1
,
2
,
.
.
.
,
N
t
\left\{ \begin{array}{l} u\left( x_i,0 \right) =37,\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ i=1,2,...,N_x\\ u\left( 0,t_j \right) =100,\quad u\left( N_x,t_j \right) =37,\ \ \ \ j=1,2,...,N_t\\ \end{array} \right.
{u(xi,0)=37, i=1,2,...,Nxu(0,tj)=100,u(Nx,tj)=37, j=1,2,...,Nt
综上所述,整个物理过程差分后形式如下所示:
{
u
(
x
i
,
t
j
+
1
)
=
α
⋅
Δ
t
Δ
x
2
⋅
(
u
(
x
i
+
1
,
t
j
)
−
2
u
(
x
i
,
t
j
)
+
u
(
x
i
−
1
,
t
j
)
)
+
u
(
x
i
,
t
j
)
u
(
x
i
,
0
)
=
37
,
i
=
1
,
2
,
.
.
.
,
N
x
u
(
0
,
t
j
)
=
100
,
u
(
N
x
,
t
j
)
=
37
,
j
=
1
,
2
,
.
.
.
,
N
t
\left\{ \begin{array}{l} u\left( x_i,t_{j+1} \right) =\frac{\alpha \cdot \varDelta t}{\varDelta x^2}\cdot \left( u\left( x_{i+1},t_j \right) -2u\left( x_i,t_j \right) +u\left( x_{i-1},t_j \right) \right) +u\left( x_i,t_j \right)\\ u\left( x_i,0 \right) =37,\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ i=1,2,...,N_x\\ u\left( 0,t_j \right) =100,\quad u\left( N_x,t_j \right) =37,\ \ \ \ j=1,2,...,N_t\\ \end{array} \right.
⎩
⎨
⎧u(xi,tj+1)=Δx2α⋅Δt⋅(u(xi+1,tj)−2u(xi,tj)+u(xi−1,tj))+u(xi,tj)u(xi,0)=37, i=1,2,...,Nxu(0,tj)=100,u(Nx,tj)=37, j=1,2,...,Nt
也就是说,用前一个时刻
t
j
t_j
tj 中,位置
x
i
−
1
,
x
i
,
x
i
+
1
x_{i-1},x_i,x_{i+1}
xi−1,xi,xi+1 处的温度来得出下一个时刻
t
j
+
1
t_{j+1}
tj+1 中,位置
x
i
x_i
xi 处的位置。过程较为简单,用matlab写个循环即可实现,设置好相应的边界条件,初始条件及参数,即可对一维传热情况进行数值模拟。
但是,上文也提到过,有限差分法的显式格式是有收敛条件的,根据蔡志杰老师在杂志《数学建模及其应用》中一篇名为“高温作业专用服装设计”的文章指出,该情况下需要满足
α
⋅
Δ
t
Δ
x
2
≤
1
2
\frac{\alpha \cdot \varDelta t}{\varDelta x^2}\le \frac{1}{2}
Δx2α⋅Δt≤21 ,方程的解才会收敛,本代码中已经调整过相应的参数,解出来的热传导方程是收敛的。
Matlab代码如下:
clc
clear all
close all
Nx=100;
Nt=100;
alpha=149e-6;
total_location=1;
%杆子长度1m
total_time=500;
%仿真500秒
dx=1/Nx;
dt=1/Nt;
delta=dt/(dx*dx);
a=alpha*(dt/(dx*dx))
%a=0.01;
u=zeros(total_location/dx,total_time/dt);%初始化温度矩阵
u(:,1)=37;
u(1,:)=100;
u(end,:)=37;
%有限差分法显式格式计算各层的温度
for j=1:1:total_time/dt-1
for i=2:1:(total_location/dx)-1
u(i,j+1)=(1-2*a)*u(i,j)+a*(u(i+1,j)+u(i-1,j));
end
end
figure
mesh(u);%求出不同时间t和不同位置x下杆的温度,并可视化
xlabel('时间/s');
ylabel('杆子长度/m');
zlabel('温度/℃');
grid on
figure
plot(u(end-1,:));%画出杆末端温度的变化情况
xlabel('时间/s');
ylabel('温度/m');
title('最后一层温度');
grid on
杆子上空间-时间温度分布三维图如下所示:
杆子末端温度随时间变化图如下所示,可以看出,随着时间推移,杆子末端温度逐步上升中……