В этом примере показано, как решить для распределения тепла в блоке с полостью.
Рассмотрите блок, содержащий прямоугольную трещину или полость. Левая сторона блока нагревается к 100 градусам по Цельсию. В правой стороне блока, тепловых потоков от блока до окружающего воздуха на постоянном уровне, например . Все другие контуры изолируются. Температура в блоке в то время начала 0 градусов. Цель состоит в том, чтобы смоделировать распределение тепла в течение первых пяти секунд.
crackg.m
файл описывает геометрию блока.
thermalmodel = createpde('thermal','transient'); geometryFromEdges(thermalmodel,@crackg);
Постройте геометрию с метками ребра.
pdegplot(thermalmodel,'EdgeLabels','on'); ylim([-1,1]) axis equal
Примите, что блок имеет эти тепловые свойства.
thermalProperties(thermalmodel,'ThermalConductivity',1,... 'MassDensity',1,... 'SpecificHeat',1);
Установите граничные условия, чтобы иметь решение u
равняйтесь 20
на левом крае (ребро 6), и g
равняйтесь -10
на правом краю (ребро 1). Граничное условие в напряжении 1 соответствует постоянному тепловому потоку к внешнему виду. Тулбокс использует значение по умолчанию, изолирующее граничное условие для всех других контуров.
thermalBC(thermalmodel,'Edge',6,'Temperature',20); thermalBC(thermalmodel,'Edge',1,'HeatFlux',-10);
Установите начальное значение 0
для температуры.
thermalIC(thermalmodel,0);
Установите времена решения быть от 0 до 5 на шагах 1/2.
tlist = 0:0.5:5;
Создайте mesh и решите задачу.
generateMesh(thermalmodel); thermalresults = solve(thermalmodel,tlist); T = thermalresults.Temperature;
Вычислите плотность потока тепла. Постройте решение в t = 5,0 секунд с изотермическими линиями с помощью контурного графика и постройте поток тепла векторное поле с помощью стрел.
[qx,qy] = evaluateHeatFlux(thermalresults); pdeplot(thermalmodel,'XYData',T(:,end),'Contour','on',... 'FlowData',[qx(:,end),qy(:,end)],'ColorMap','hot')