平方域上的非均匀热方程

这个例子说明了如何用源项来求解热方程。

具有单位源项的基本热方程为

u型 t型 - Δ u型 = 1个

该方程在一个初始条件不连续、边界温度为零的平方域上求解。

创建瞬态热模型。

thermalmodel=创建PDE(“热的”,“暂时的”);

创建以为中心的正方形几何图形x=0y=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)命令。