|
clc;clear all;close all;%定义物性参数lambda=1;%导热系数rho=1;%密度cp=1;%比热容a=lambda/rho/cp;%导温系数%定义求解区域、单位网格长度、时间步长L=10; %墙长度Nx=21; %墙上网格数dx=L/(Nx-1);%单位网格长度dt=0.1;%时间步长Nt=500;%时间步数Fo=a*dt/dx^2;%网格Fo数if Fo<=0.5 disp('[有稳定解]')else disp('[解发生震荡]')end%定义初始温度T=zeros(1,Nx);x=linspace(0,L,Nx);T(1,:)=0;t=0;%初始时刻for n=1:Nt Told=T; for i=2:Nx-1 T(i)=Fo.*(Told(i+1)+Told(i-1)+(1-2*Fo)).*Told(i); end %内热源项 Sx=round(5*Nx/L);%内热源所在位置 t=t+dt; if (t<=5) T(Sx)=T(Sx)+dt*100/rho/cp; end% T(1)=20; T(end)=40;%第一类边界条件 T(1)=T(2); T(end)=0;%第二类边界条件 plot(x,T); set(gca,'ylim',[0,100]); xlabel('墙长度');ylabel('温度'); title(sprintf('Time=%f seconds',t)); pause(0.1); end |
|