【热学】基于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
