这个例子说明了如何用热源项来求解热方程。
带有单位源项的基本热方程为
该方程在具有不连续初始条件和边界温度为零的方形域上求解。
创建一个瞬态热模型。
thermalmodel = createpde (“热”,瞬态的);
创建一个以。为中心的正方形几何体x = 0
和y = 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)
命令。