【热学】基于FVM实现一维稳态热传导与内部热产生的数值求解附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、算法改进、程序设计科研仿真。

🍎 往期回顾关注个人主页:完整代码获取 定制创新 论文复现私信

🍊个人信条:做科研,博学之、审问之、慎思之、明辨之、笃行之,是为:博学慎思,明辨笃行。

🔥 内容介绍

热传导问题在众多领域如材料科学、能源工程、电子设备散热等中广泛存在。对于一维稳态热传导且伴有内部热产生的情况,有限体积法(FVM)是一种有效的数值求解方法。它通过将求解区域划分为一系列控制体积,基于能量守恒原理对每个控制体积建立离散方程,进而求解温度分布。

一、物理模型

考虑一个长度为 L 的一维物体,其热传导遵循傅里叶定律。物体内部存在均匀的热产生,强度为 q(单位体积单位时间产生的热量)。假设物体的热导率为 k,且在整个区域内保持恒定。

⛳️ 运行结果

📣 部分代码

ICTV = 10;

dx = L/ICTV;

N = ICTV;

%=====

aW = zeros(ICTV,1);

aE = zeros(ICTV,1);

aP = zeros(ICTV,1);

b = zeros(ICTV,1);

D = k / dx; %

b_source = q * dx;

for i = 1:ICTV

if i == 1

aW(i) = 0;

aE(i) = D;

aP(i) = aE(i) + 2*D;

b(i) = b_source + 2*D*To;

elseif i == ICTV

aW(i) = D;

aE(i) = 0;

aP(i) = aW(i);

b(i) = b_source;

else

aW(i) = D;

aE(i) = D;

aP(i) = aW(i) + aE(i);

b(i) = b_source;

end

end

%% ====================-

alpha_list = 1.00:0.05:1.20;

iterations_alpha = zeros(length(alpha_list),1);

residual_history_all = cell(length(alpha_list),1);

tol = 1e-5;

maxIter = 10000;

for m = 1:length(alpha_list)

alpha = alpha_list(m);

T = zeros(ICTV,1);

residual_history = [];

for iter = 1:maxIter

T_old = T;

for i = 1:ICTV

if i == 1

TW = To;

TE = T(i+1);

elseif i == ICTV

TW = T(i-1);

TE = T(i);

else

TW = T(i-1);

TE = T(i+1);

end

T_GS = (aW(i)*TW + aE(i)*TE + b(i))/aP(i);

T(i) = (1-alpha)*T_old(i) + alpha*T_GS;

end

%============= Residual

R = 0;

for i = 1:ICTV

🔗 参考文献

🍅更多免费数学建模和仿真教程关注领取