这个例子展示了如何用源项求解热方程。
具有单位源项的基本热方程是
该方程是在具有不连续初始条件和边界温度为零的正方形域上求解的。
创建瞬态热模型。
Thermalmodel = createpde(“热”,瞬态的);
创建一个正方形几何中心在X = 0
而且Y = 0
边长为2。包括一个半径为0.4的圆与正方形同心。
R1 = [3;4;-1;1;1;-1;-1;C1 = [1;0;0;0.4];C1 = [C1; 0 (length(R1) - length(C1),1)];gd = [R1,C1];科幻小说=“R1 + C1”;Ns = char(R1的,“C1”)”;G = decsg(gd,sf,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(热模型);图;pdemesh (thermalmodel);轴平等的
求0到0.1之间20个时间点的解。
Nframes = 20;Tlist = linspace(0,0.1,nframes);thermalmodel.SolverOptions.ReportStatistics =“上”;Result = solve(thermalmodel,tlist);
99个成功步骤0个失败尝试200个函数求值1个偏导数20lu分解199个线性系统解金宝搏官方网站
T =结果。温度;
画出解。
图Tmax = max(max(T));Tmin = min(min(T));为J = 1:nframes pdeploy(热模型,“XYData”T (:, j),“ZData”T (:, j));caxis ([Tmin达峰时间]);轴([-1 1 -1 1 0 1]);Mv(j) = getframe;结束
要播放动画,请使用电影(Mv, 1)
命令。