这个例子说明了如何用源项来求解热方程。
具有单位源项的基本热方程为
该方程在一个初始条件不连续、边界温度为零的平方域上求解。
创建瞬态热模型。
thermalmodel=创建PDE(“热的”,“暂时的”);
创建以为中心的正方形几何图形x=0
和y=0
长度为2的边。包括一个半径为0.4且与正方形同心的圆。
R1=[3;4;-1;1;1;-1;-1;-1;1;1];C1=[1;0;0;0.4];C1=[C1;零(长度(R1)-长度(C1),1];gd=[R1,C1];sf='R1+C1';ns=字符('R1','C1')’;g=decsg(gd,sf,ns);
将几何图形附加到模型。
几何函数(热模型,g);
指定材料的热特性。
热属性(热模型,“导热性”,1,...'质量密度',1,...“特定热量”,1);
指定内部热源。
内部热源(thermalmodel,1);
打印几何图形并显示边界条件定义中使用的边标签。
图pdegplot(thermalmodel,“埃德格拉贝尔斯”,'打开','面标签','打开')轴([-1.1 1.1-1.1 1.1]);轴平等的标题'带边缘和子域标签的几何图形'
在正方形的所有四个外边缘设置零温度。
thermalBC(热模式,'边缘',1:4,'温度',0);
不连续的初始值在圆内为1,在圆外为零。指定零初始温度。
thermalIC(thermalmodel,0);
指定圆(面2)内的非零初始温度。
thermalIC(thermalmodel,1,'面',2个);
生成并打印网格。
msh=generateMesh(thermalmodel);图;pdemesh(thermalmodel);轴平等的
在0到0.1之间的20个时间点上找到解决方案。
nframes=20;tlist=linspace(0,0.1,nframes);thermalmodel.SolverOptions.ReportStatistics='打开';结果=求解(thermalmodel,tlist);
99个成功步骤0个失败尝试200个函数求值1个偏导数20 LU分解199个线性系统解金宝搏官方网站
T=结果温度;
绘制解决方案。
图T max=max(max(T));T min=min(min(T));对于j=1:nframes pdeplot(热模型,'XYData',T(:,j),'ZData',T(:,j));caxis([Tmin-Tmax]);axis([-11-110 1]);Mv(j)=getframe;结束
要播放动画,请使用电影(Mv,1)
命令。