问题描述
如图所示,一根长度为 L L L 的金属棒,左端有恒定热量 q q q 流入,右端保持恒定温度 T L T_L TL,有电流流过金属,恒定产热量为 Q Q Q,热导率 k k k 为常数求金属棒上的温度分布。
傅里叶定律
傅里叶定律,也称热传导定律,描述热传导过程。其微分形式如下:
q
=
−
k
∇
T
\boldsymbol{q}=-k\nabla T
q=−k∇T
其中,
q
\boldsymbol{q}
q 为局部热流密度,
W
m
−
2
W\ m^{-2}
W m−2
k
k
k 为材料热导率,
W
m
−
1
K
−
1
W\ m^{-1}\ K^{-1}
W m−1 K−1
∇
T
\nabla T
∇T 为温度梯度,
K
m
−
1
K\ m^{-1}
K m−1
一维形式:
q
=
−
k
d
T
d
x
\boldsymbol{q}=-k\frac{dT}{dx}
q=−kdxdT
As an aside
物理场中flux与force很有意思
Physical field | Flux | Force |
---|---|---|
Heat | q ( W m − 2 ) \boldsymbol{q}(W\ m^{-2}) q(W m−2) | − ∇ T -\nabla T −∇T |
Electrics | I ( A m − 2 ) \boldsymbol{I}(A\ m^{-2}) I(A m−2) | − ∇ ϕ -\nabla \phi −∇ϕ |
Diffusion | J ( m o l m − 2 s − 1 ) \boldsymbol{J}(mol\ m^{-2}\ s^{-1}) J(mol m−2 s−1) | − ∇ c -\nabla c −∇c |
后两者分别是Ohm定律与Fick定律
将问题描述转化为数学语言,因存在内部热源
Q
(
W
m
−
3
)
Q(W m^{-3})
Q(Wm−3),故控制方程为
∇
⋅
(
−
k
∇
T
)
=
Q
\nabla ·(-k\nabla T)=Q
∇⋅(−k∇T)=Q
一维形式为:
−
k
d
T
2
d
2
x
=
Q
,
0
<
x
<
L
-k\frac{dT^2}{d^2x}=Q, \ 0<x<L
−kd2xdT2=Q, 0<x<L
边界条件为:
−
k
d
T
d
x
=
q
,
x
=
0
-k\frac{dT}{dx}=\boldsymbol{q}, \ x=0
−kdxdT=q, x=0
T
=
T
L
,
x
=
L
T=T_L, \ x=L
T=TL, x=L
求解方程即可得到温度分布
解析解
二阶常微分方程,可直接采用公式求解或者手动求解。
也可采用MATLAB的符号运算求解
% 创建符号变量,位置坐标x,内部单位产热量Q,材料热导率k,右端恒温TL,总长L,C1,C2
% 为积分常数, q为左端恒定流入热量
syms x C1 C2 Q k TL L q;
% 傅里叶热传导定律:dT^2=-Q/k*d^2x。进行积分
dT = int(-(Q/k),x)+C1;
T = int(dT,x)+C2;
% 代入边界条件 dT(0)=-q/k, T(L)=TL
% subs(T,x,0)表示将变量x替换为值0;solve(eqn,var),要求eqn右侧为0
s = solve(subs(dT,x,0)+q/k,subs(T,x,L)-TL,C1,C2);
s.C1;
s.C2;
T = subs(T,{C1,C2},{s.C1,s.C2})
可得
T
(
x
)
=
T
L
+
q
k
(
L
−
x
)
+
Q
2
k
(
L
2
−
x
2
)
T(x)=T_L+\frac{\boldsymbol{q}}{k}(L-x)+\frac{Q}{2k}(L^2-x^2)
T(x)=TL+kq(L−x)+2kQ(L2−x2)
有限元求解思路
1. 单元划分
对与长为L的线段,我们可以将其划分为许多小单元,如下图:
每一单元可以表示为 e k = { x : x k ≤ x ≤ x k + 1 } e_k=\left\{x:x_k\leq x\leq x_{k+1}\right\} ek={x:xk≤x≤xk+1}
假设每一段内的温度分布都是线性变化的,满足线性函数
ϕ
k
(
x
)
\phi_k(x)
ϕk(x)
则每一段内的温度分布可以近似为
T
(
x
k
)
=
a
k
⋅
ϕ
k
(
x
)
T(x_k)=a_k·\phi_k(x)
T(xk)=ak⋅ϕk(x)
a
k
a_k
ak为系数,例如下图所示,每一段都是线性函数,但是其斜率是在变化的
总的温度分布可以找到一个近似表达式:
T
(
x
)
=
∑
i
=
1
n
+
1
a
i
⋅
ϕ
i
(
x
)
T(x)=\sum_{i=1}^{n+1}a_i·\phi_i(x)
T(x)=i=1∑n+1ai⋅ϕi(x)
分的越细,则该近似表达式越接近于解析解。
那么下一步的问题就是如何确定
ϕ
i
(
x
)
\phi_i(x)
ϕi(x), 该函数称为形函数(shape function),即描述T的形状的函数。
2. 形函数的选择
注意温度的近似表达式需要满足原控制方程
−
k
d
T
2
d
2
x
=
Q
-k\frac{dT^2}{d^2x}=Q
−kd2xdT2=Q
假如取
ϕ
i
(
x
)
=
b
x
+
c
\phi_i(x)=bx+c
ϕi(x)=bx+c, 显然其二阶导并不存在!存在二阶导形式的函数将使得问题变得更加复杂。
由此,引进弱形式,即将原控制方程进行一次积分,变为一阶微分方程。
3. 弱形式表达式
等式两边同时乘上试函数(test function)
w
i
(
x
)
w_i(x)
wi(x),再进行一次积分,则:
∫
0
L
w
i
(
x
)
(
−
k
d
T
2
d
2
x
−
Q
)
d
x
=
0
\int_0^L w_i(x)(-k\frac{dT^2}{d^2x}-Q)dx=0
∫0Lwi(x)(−kd2xdT2−Q)dx=0
在Galerkin处理中,试函数选择
w
i
(
x
)
=
ϕ
i
(
x
)
w_i(x)=\phi_i(x)
wi(x)=ϕi(x)
接下来,利用分步积分法消去二阶导项:
补充:
∫
u
d
v
=
u
v
−
∫
v
d
u
\int udv=uv-\int vdu
∫udv=uv−∫vdu
那么上式变成
∫
0
L
ϕ
i
(
x
)
(
−
k
d
T
2
d
2
x
)
d
x
−
∫
0
L
ϕ
i
(
x
)
Q
d
x
=
\int_0^L \phi_i(x)(-k\frac{dT^2}{d^2x})dx-\int_0^L \phi_i(x)Qdx=
∫0Lϕi(x)(−kd2xdT2)dx−∫0Lϕi(x)Qdx=
∫
0
L
k
d
ϕ
i
d
x
d
T
d
x
d
x
−
ϕ
i
(
x
)
⋅
k
d
T
d
x
∣
0
L
−
∫
0
L
ϕ
i
(
x
)
Q
d
x
=
0
\int_0^L k\frac{d\phi_i}{dx}\frac{dT}{dx}dx-\phi_i(x) ·k \frac{dT}{dx}\bigg|_{0}^{L}-\int_0^L \phi_i(x)Qdx=0
∫0LkdxdϕidxdTdx−ϕi(x)⋅kdxdT∣∣∣∣0L−∫0Lϕi(x)Qdx=0
此即为弱形式表达式。可见在进行一次积分之后,消除了二阶项,但同时放宽了解要求,因此称之为weak form。
4. 试函数
为什么要引入试函数?直接两边积分不可以吗?
∫
0
L
w
i
(
x
)
(
−
k
d
T
2
d
2
x
−
Q
)
d
x
=
0
\int_0^L w_i(x)(-k\frac{dT^2}{d^2x}-Q)dx=0
∫0Lwi(x)(−kd2xdT2−Q)dx=0
对于精确解,应当满足
−
k
d
T
2
d
2
x
−
Q
=
0
-k\frac{dT^2}{d^2x}-Q=0
−kd2xdT2−Q=0,同时也满足以上积分函数。
但是需要注意,我们在这里引入了
T
(
x
)
T(x)
T(x)的近似表达式,所以不可能完全满足,例如
−
k
d
T
2
d
2
x
−
Q
=
0.0001
-k\frac{dT^2}{d^2x}-Q=0.0001
−kd2xdT2−Q=0.0001,尽管存在误差(残差),但该误差是我们可以接受的。那么这个时候试函数将起到作用,即使得
w
i
(
x
)
=
0
w_i(x)=0
wi(x)=0,整个积分函数就是满足条件的。
5. 求解
将构造的近似表达式
T
(
x
)
T(x)
T(x)带入弱形式表达式中,最终求得每一单元内的温度分布。
即把
T
(
x
)
=
∑
i
=
1
n
+
1
a
i
⋅
ϕ
i
(
x
)
T(x)=\sum_{i=1}^{n+1}a_i·\phi_i(x)
T(x)=∑i=1n+1ai⋅ϕi(x)代入
∫
0
L
k
d
ϕ
d
x
d
T
d
x
d
x
−
ϕ
(
x
)
⋅
k
d
T
d
x
∣
0
L
−
∫
0
L
ϕ
(
x
)
Q
d
x
=
0
\int_0^L k\frac{d\phi}{dx}\frac{dT}{dx}dx-\phi(x) ·k \frac{dT}{dx}\bigg|_{0}^{L}-\int_0^L \phi(x)Qdx=0
∫0LkdxdϕdxdTdx−ϕ(x)⋅kdxdT∣∣∣∣0L−∫0Lϕ(x)Qdx=0
那么对于某一个单元
x
i
≤
x
≤
x
i
+
1
x_i\leq x\leq x_{i+1}
xi≤x≤xi+1内
T
(
x
)
=
a
i
ϕ
i
(
x
)
+
a
i
+
1
ϕ
i
+
1
(
x
)
T(x)=a_i\phi_i(x)+a_{i+1}\phi_{i+1}(x)
T(x)=aiϕi(x)+ai+1ϕi+1(x)
选取试函数使得其满足(每一个节点的
a
i
a_i
ai值就是该节点的温度)
T
(
x
i
)
=
a
i
;
T
(
x
i
+
1
)
=
a
i
+
1
T(x_i)=a_i; T(x_{i+1})=a_{i+1}
T(xi)=ai;T(xi+1)=ai+1
令
ϕ
i
(
x
i
)
=
1
;
ϕ
i
(
x
i
+
1
)
=
0
\phi_i(x_i)=1; \phi_i(x_{i+1})=0
ϕi(xi)=1;ϕi(xi+1)=0
ϕ
i
+
1
(
x
i
)
=
0
;
ϕ
i
+
1
(
x
i
+
1
)
=
1
\phi_{i+1}(x_i)=0; \phi_{i+1}(x_{i+1})=1
ϕi+1(xi)=0;ϕi+1(xi+1)=1
由此解得
ϕ
i
(
x
)
=
x
i
+
1
−
x
x
i
+
1
−
x
i
;
ϕ
i
+
1
(
x
)
=
x
−
x
i
x
i
+
1
−
x
i
\phi_i(x)=\frac{x_{i+1}-x}{x_{i+1}-x_i}; \phi_{i+1}(x)=\frac{x-x_i}{x_{i+1}-x_i}
ϕi(x)=xi+1−xixi+1−x;ϕi+1(x)=xi+1−xix−xi
d
ϕ
i
d
x
=
−
1
x
i
+
1
−
x
i
;
d
ϕ
i
+
1
d
x
=
1
x
i
+
1
−
x
i
\frac{d\phi_i}{dx}=-\frac{1}{x_{i+1}-x_i};\frac{d\phi_{i+1}}{dx}=\frac{1}{x_{i+1}-x_i}
dxdϕi=−xi+1−xi1;dxdϕi+1=xi+1−xi1
为了方便起见,只划分两个单元,
e
1
(
0
,
L
/
2
)
,
e
2
(
L
/
2
,
L
)
e_1(0,L/2), e_2(L/2, L)
e1(0,L/2),e2(L/2,L)
将
T
(
x
)
=
a
1
ϕ
1
(
x
)
+
a
2
ϕ
2
(
x
)
T(x)=a_1\phi_1(x)+a_{2}\phi_{2}(x)
T(x)=a1ϕ1(x)+a2ϕ2(x)到第一个单元内的弱表达式:
试函数为
ϕ
1
\phi_1
ϕ1时,
∑
j
=
1
2
k
[
∫
0
L
/
2
d
ϕ
1
d
x
d
ϕ
j
d
x
]
a
j
−
ϕ
1
(
x
)
⋅
k
d
T
d
x
∣
0
L
/
2
−
∫
0
L
/
2
ϕ
1
(
x
)
Q
d
x
\sum_{j=1}^2k\left[\int_0^{L/2} \frac{d\phi_1}{dx}\frac{d\phi_j}{dx}\right]a_j-\phi_1(x) ·k \frac{dT}{dx}\bigg|_{0}^{L/2}-\int_0^{L/2} \phi_1(x)Qdx
j=1∑2k[∫0L/2dxdϕ1dxdϕj]aj−ϕ1(x)⋅kdxdT∣∣∣∣0L/2−∫0L/2ϕ1(x)Qdx
试函数为
ϕ
2
\phi_2
ϕ2时,
∑
j
=
1
2
k
[
∫
0
L
/
2
d
ϕ
2
d
x
d
ϕ
j
d
x
]
a
j
−
ϕ
2
(
x
)
⋅
k
d
T
d
x
∣
0
L
/
2
−
∫
0
L
/
2
ϕ
2
(
x
)
Q
d
x
\sum_{j=1}^2k\left[\int_0^{L/2} \frac{d\phi_2}{dx}\frac{d\phi_j}{dx}\right]a_j-\phi_2(x) ·k \frac{dT}{dx}\bigg|_{0}^{L/2}-\int_0^{L/2} \phi_2(x)Qdx
j=1∑2k[∫0L/2dxdϕ2dxdϕj]aj−ϕ2(x)⋅kdxdT∣∣∣∣0L/2−∫0L/2ϕ2(x)Qdx
代入
ϕ
1
(
x
)
=
L
/
2
−
x
L
/
2
;
ϕ
2
(
x
)
=
x
L
/
2
\phi_1(x)=\frac{L/2-x}{L/2}; \phi_{2}(x)=\frac{x}{L/2}
ϕ1(x)=L/2L/2−x;ϕ2(x)=L/2x
d
ϕ
1
d
x
=
−
1
L
/
2
;
d
ϕ
2
d
x
=
1
L
/
2
\frac{d\phi_1}{dx}=-\frac{1}{L/2};\frac{d\phi_2}{dx}=\frac{1}{L/2}
dxdϕ1=−L/21;dxdϕ2=L/21
可以得到矩阵形式的线性方程:
2
k
L
[
1
−
1
−
1
1
]
[
a
1
a
2
]
−
Q
L
4
[
1
1
]
−
[
q
0
]
=
[
0
0
]
\frac{2k}{L}\begin{bmatrix} 1 & -1 \\ -1 & 1 \end{bmatrix}\begin{bmatrix} a_1 \\ a_2 \end{bmatrix}-\frac{QL}{4}\begin{bmatrix} 1 \\ 1 \end{bmatrix}-\begin{bmatrix} q \\ 0 \end{bmatrix}=\begin{bmatrix} 0 \\ 0 \end{bmatrix}
L2k[1−1−11][a1a2]−4QL[11]−[q0]=[00]
对第二个单元进行同样的操作,可得
2
k
L
[
1
−
1
−
1
1
]
[
a
2
a
3
]
−
Q
L
4
[
1
1
]
−
[
0
0
]
=
[
0
0
]
\frac{2k}{L}\begin{bmatrix} 1 & -1 \\ -1 & 1 \end{bmatrix}\begin{bmatrix} a_2 \\ a_3 \end{bmatrix}-\frac{QL}{4}\begin{bmatrix} 1 \\ 1 \end{bmatrix}-\begin{bmatrix} 0 \\ 0 \end{bmatrix}=\begin{bmatrix} 0 \\ 0 \end{bmatrix}
L2k[1−1−11][a2a3]−4QL[11]−[00]=[00]
进行矩阵组装,可得
2
k
L
[
1
−
1
0
−
1
2
−
1
0
−
1
1
]
[
a
1
a
2
a
3
]
−
Q
L
4
[
1
2
1
]
=
[
q
0
0
]
\frac{2k}{L}\begin{bmatrix} 1 & -1 & 0 \\ -1 & 2 & -1\\ 0 & -1 &1 \end{bmatrix}\begin{bmatrix} a_1 \\ a_2 \\ a_3 \end{bmatrix}-\frac{QL}{4}\begin{bmatrix} 1 \\2\\ 1 \end{bmatrix}=\begin{bmatrix} q \\ 0\\0 \end{bmatrix}
L2k⎣⎡1−10−12−10−11⎦⎤⎣⎡a1a2a3⎦⎤−4QL⎣⎡121⎦⎤=⎣⎡q00⎦⎤
最终解得
a
1
,
a
2
,
a
3
a_1,a_2,a_3
a1,a2,a3,也就是每一个节点的值
COMSOL求解
以下代入具体数值进行求解
Parameters | Value |
---|---|
L ( m ) L\ (m) L (m) | 1 |
k ( W m − 1 K − 1 ) k\ (W\ m^{-1}\ K^{-1}) k (W m−1 K−1) | 1 |
Q ( W m − 3 ) Q\ (W\ m^{-3}) Q (W m−3) | 20 |
T L ( K ) T_L\ (K) TL (K) | 300 |
q ( W m − 2 ) q\ (W\ m^{-2}) q (W m−2) | 10 |
解析解为
T
(
x
)
=
300
+
10
(
1
−
x
)
+
10
(
1
−
x
2
)
T(x)=300+10(1-x)+10(1-x^2)
T(x)=300+10(1−x)+10(1−x2)
以下采用COMSOL求解数值解
传热模块
首先绘制线段,其次设定固体1
添加热源节点,并选中域
设定右侧边界条件,添加温度1
设定左侧边界条件,添加热通量1
随后进行求解可得
PDE模块
1. 系数形式偏微分方程
建议阅读COMSOL的博客加深理解
https://cn.comsol.com/blogs/brief-introduction-weak-form/
https://cn.comsol.com/blogs/implementing-the-weak-form-in-comsol-multiphysics/
https://cn.comsol.com/blogs/discretizing-the-weak-form-equations/
https://www.comsol.com/blogs/strength-weak-form/
选择系数形式偏微分方程,因变量设为T,单位K,源项单位为W/m^3
构建几何,将各参数值填入
右端选择狄利克雷边界条件
左端选择通量/源条件
稳态求解器,求解
2. 弱形式偏微分方程
已知弱形式为
∫
0
L
k
d
ϕ
i
d
x
d
T
d
x
d
x
−
ϕ
i
(
x
)
⋅
k
d
T
d
x
∣
0
L
−
∫
0
L
ϕ
i
(
x
)
Q
d
x
=
0
\int_0^L k\frac{d\phi_i}{dx}\frac{dT}{dx}dx-\phi_i(x) ·k \frac{dT}{dx}\bigg|_{0}^{L}-\int_0^L \phi_i(x)Qdx=0
∫0LkdxdϕidxdTdx−ϕi(x)⋅kdxdT∣∣∣∣0L−∫0Lϕi(x)Qdx=0
我们把非积分项移到右边
∫
0
L
(
k
d
ϕ
i
d
x
d
T
d
x
−
ϕ
i
(
x
)
Q
)
d
x
=
ϕ
i
(
x
)
⋅
k
d
T
d
x
∣
0
L
\int_0^L (k\frac{d\phi_i}{dx}\frac{dT}{dx}-\phi_i(x)Q)dx=\phi_i(x) ·k \frac{dT}{dx}\bigg|_{0}^{L}
∫0L(kdxdϕidxdT−ϕi(x)Q)dx=ϕi(x)⋅kdxdT∣∣∣∣0L
由此可以写出在COMSOL中的弱表达式,注意试函数用test表示
右侧非积分项写进弱贡献中,左端x=0时,
−
ϕ
i
(
x
)
⋅
k
q
-\phi_i(x) ·k q
−ϕi(x)⋅kq
因此
右侧x=L时,温度恒定,计算弱贡献时需引入拉格朗日乘子u
也可以直接采用狄利克雷边界条件
最后计算求解
Ref:
https://en.wikipedia.org/wiki/Thermal_conduction#Fourier’s_law
Book, The finite element method _ basic concepts and applications with MATLAB, MAPLE