平方域上的非齐次热方程

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

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

u t - Δ u = 1

该方程在具有不连续初始条件和边界温度为零的方形域上求解。

创建一个瞬态热模型。

thermalmodel = createpde (“热”,瞬态的);

创建一个以。为中心的正方形几何体x = 0y = 0边长为2。包括一个半径为0.4的圆与正方形同心圆。

R1 =[3、4、1;1;1;1;1;1;1;1];C1 =[1、0、0;0.4);0 (length(R1) - length(C1),1)];gd = (R1, C1);科幻小说=“R1 + C1”;ns = char (R1的,“C1”)”;g = decsg (gd、科幻、ns);

将几何图形添加到模型中。

geometryFromEdges (thermalmodel g);

指定材料的热特性。

thermalProperties (thermalmodel“ThermalConductivity”, 1“MassDensity”, 1“SpecificHeat”1);

指定内部热源。

internalHeatSource (thermalmodel, 1);

绘制几何图形并显示用于边界条件定义的边缘标签。

图pdegplot (thermalmodel,“EdgeLabels”,“上”,“FaceLabels”,“上”)轴([-1.1 1.1 -1.1 1.1]);轴平等的标题“带边缘和子域标签的几何图形”

在广场的所有四个外缘设置零度温度。

thermalBC (thermalmodel“边缘”1:4,“温度”, 0);

不连续的初值在圆内为1,在圆外为0。指定初始温度为零。

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);
成功步骤0尝试失败200函数评估1偏导数20 LU分解199个线性系统的解万博 尤文图斯
T = result.Temperature;

策划解决方案。

图Tmax = max(max(T));Tmin =最小(最小值(T));j = 1:nframes p部署t(thermalmodel,“XYData”T (:, j),“ZData”T (:, j));caxis ([Tmin达峰时间]);轴([-1 1 -1 1 0 1]);Mv (j) = getframe;结束

要播放动画,使用电影(Mv, 1)命令。