基于MATLAB的有限差分法解决二位瞬态导热问题

本程序解决的是应对平板的二维导热问题,可以定义边界温度及平板材料,获得一定时间后的温度云图。它只考虑热传导,没有考虑对流传热及热辐射,自己做个记录吧。

程序代码如下:

clc;
clear;
%%
%本文档为有限差分法计算二位导热问题的实例
%为了计算的方便,设定铝板的边界初始为设定初始的值,且温度在传导过程中保持不变
%导热方程为:  T_deta/t_deta=a(d(dT/dx)/dx+d(dT/dy)/dy)
%author:sealingj
%%
%网格划分 %%%%%%%%%%%%%%%%%%
%            TB
%      -----------------
%     |                 |
%  LB |      T(M,N)     | RB    (L_H)M
%     |                 |
%     |_________________|
%             BB(L_W)N          
%%%%%%%%%%%%%%%%%%%%%%%%%%%
M=30;   %划分网格节点
N=30;   %划分网格节点
T(M,N)=0;  %平板初始温度
T(:,:)=30;
X=T; %设置临时温度场分布
K=moviein(200); %获得图像


%%
%初始数据设置
L_H=0.05;        %板的高度
L_W=0.05;        %板的宽度
x_deta=L_W/N;   %
y_deta=L_H/M;


a=9.45*10^(-5);  %纯铝的导热系数
%设定边界条件
TB=150;    
LB=150;
RB=40;
BB=20;  
T(M,:)=TB;
T(:,1)=LB;
T(:,N)=RB;
T(1,:)=BB; 
Time=10002; %设定迭代次数
Flame=1000;
t_deta=0.001;  %设置单步时间
%%
%计算迭代
for j =1:Time
    X=T;
    for m=2:M-1
        for n=2:N-1
            T(m,n)=X(m,n)+t_deta.*a.*((X(m,n+1)+X(m,n-1)-2*X(m,n))/(x_deta*x_deta)+(X(m+1,n)+X(m-1,n)-2*X(m,n))/(y_deta*y_deta));
        end
    end
   if(isequal(mod(j,Flame),1))
      contour(T,1000); 
      K(:,(1+(j-mod(j,Flame))/Flame))=getframe;
   end
   %j
end
movie(K,2); 

说明文档:

本程序使用方法:
1、自定义初始参数 (对应于不同的参数,它的运行结果会有很大差异,该程序参数我是乱设的!!)

1)节点参数设置 //可自定义节点数目
M=30;   %划分网格节点
N=30;   %划分网格节点

2)平板初始温度设置
T(M,N)=0;  %平板初始温度
T(:,:)=30;


3)定义板的尺寸及材料特性


L_H=0.05;        %板的高度
L_W=0.05;        %板的宽度
a=9.45*10^(-5);  %纯铝的导热系数


4)设定边界条件


TB=150;    
LB=150;
RB=40;
BB=20;  


5)设定迭代的时间及图像获取参数


Time=10002; %设定迭代次数,表示迭代的次数
t_deta=0.001;  %设定单次迭代经历的时间


Flame=1000;  %每迭代Flame次,保存一张图片,得到的图片将保存在K中


参数含义:本程序将最终获得Time*t_deta秒后的最终温度分布结果,每运行Flame*t_deta的结果将保存在K结构数值中,可方便利用Movie函数查看。


2、参数定义好后运行程序


3、读取第t秒的图像


在命令行输入
 movie(K(:,1:m),1)  %查看(m-1)*t_deta*Flame 秒后的温度分布图
 movie(K(:,1:2),1)   %以该程序为例,它查看的是第1.001s后的温度分布图
 movie(K(:,1:7),1)   %以该程序为例,它查看的是第6.001s后的温度分布图



你可能感兴趣的:(基于MATLAB的有限差分法解决二位瞬态导热问题)