一维热传导的有限元求解基础与COMSOL弱形式实现

问题描述

如图所示,一根长度为 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=kT
其中,
q \boldsymbol{q} q 为局部热流密度, W   m − 2 W\ m^{-2} W m2
k k k 为材料热导率, W   m − 1   K − 1 W\ m^{-1}\ K^{-1} W m1 K1
∇ T \nabla T T 为温度梯度, K   m − 1 K\ m^{-1} K m1

一维形式:
q = − k d T d x \boldsymbol{q}=-k\frac{dT}{dx} q=kdxdT

As an aside
物理场中flux与force很有意思

Physical fieldFluxForce
Heat q ( W   m − 2 ) \boldsymbol{q}(W\ m^{-2}) q(W m2) − ∇ T -\nabla T T
Electrics I ( A   m − 2 ) \boldsymbol{I}(A\ m^{-2}) I(A m2) − ∇ ϕ -\nabla \phi ϕ
Diffusion J ( m o l   m − 2   s − 1 ) \boldsymbol{J}(mol\ m^{-2}\ s^{-1}) J(mol m2 s1) − ∇ c -\nabla c c

后两者分别是Ohm定律与Fick定律

将问题描述转化为数学语言,因存在内部热源 Q ( W m − 3 ) Q(W m^{-3}) Q(Wm3),故控制方程为
∇ ⋅ ( − k ∇ T ) = Q \nabla ·(-k\nabla T)=Q (kT)=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(Lx)+2kQ(L2x2)

有限元求解思路

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:xkxxk+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=1n+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)(kd2xdT2Q)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=uvvdu

那么上式变成
∫ 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)dx0Lϕ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)kdxdT0L0Lϕ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)(kd2xdT2Q)dx=0
对于精确解,应当满足 − k d T 2 d 2 x − Q = 0 -k\frac{dT^2}{d^2x}-Q=0 kd2xdT2Q=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 kd2xdT2Q=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)kdxdT0L0Lϕ(x)Qdx=0

那么对于某一个单元 x i ≤ x ≤ x i + 1 x_i\leq x\leq x_{i+1} xixxi+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+1xixi+1x;ϕi+1(x)=xi+1xixxi 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+1xi1;dxdϕi+1=xi+1xi1
为了方便起见,只划分两个单元, 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=12k[0L/2dxdϕ1dxdϕj]ajϕ1(x)kdxdT0L/20L/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=12k[0L/2dxdϕ2dxdϕj]ajϕ2(x)kdxdT0L/20L/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/2x;ϕ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[1111][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[1111][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} L2k110121011a1a2a34QL121=q00
最终解得 a 1 , a 2 , a 3 a_1,a_2,a_3 a1,a2,a3,也就是每一个节点的值

COMSOL求解

以下代入具体数值进行求解

ParametersValue
L   ( m ) L\ (m) L (m)1
k   ( W   m − 1   K − 1 ) k\ (W\ m^{-1}\ K^{-1}) k (W m1 K1)1
Q   ( W   m − 3 ) Q\ (W\ m^{-3}) Q (W m3)20
T L   ( K ) T_L\ (K) TL (K)300
q   ( W   m − 2 ) q\ (W\ m^{-2}) q (W m2)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(1x)+10(1x2)在这里插入图片描述
以下采用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)kdxdT0L0Lϕ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)kdxdT0L
由此可以写出在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

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值