В этом примере показано, как решить проблему распределения тепла в блоке с полостью.
Рассмотрим блок, содержащий прямоугольную трещину или полость. Левая сторона блока нагревается до 100 градусов Цельсия. В правой части блока тепло течет от блока к окружающему воздуху с постоянной скоростью, например . Все остальные границы изолированы. Температура в блоке в начальный момент 0 равна 0 градусам. Цель состоит в моделировании распределения тепла в течение первых пяти секунд.
Первым шагом в решении проблемы теплопередачи является создание модели теплового анализа. Это контейнер, который содержит геометрию, свойства теплового материала, внутренние источники тепла, температуру на границах, тепловые потоки через границы, сетку и исходные условия.
thermalmodel = createpde('thermal','transient');
Добавьте геометрию блока в тепловую модель с помощью geometryFromEdges функция. Файл описания геометрии для этой проблемы называется crackg.m.
geometryFromEdges(thermalmodel,@crackg);
Постройте график геометрии, отображая метки кромок.
pdegplot(thermalmodel,'EdgeLabels','on') ylim([-1,1]) axis equal

Укажите теплопроводность, массовую плотность и удельную теплоту материала.
thermalProperties(thermalmodel,'ThermalConductivity',1,... 'MassDensity',1,... 'SpecificHeat',1);
Укажите температуру на левом ребре как 100и постоянный тепловой поток наружу через правый край, как -10. На панели инструментов используется изолирующее граничное условие по умолчанию для всех остальных границ.
thermalBC(thermalmodel,'Edge',6,'Temperature',100); thermalBC(thermalmodel,'Edge',1,'HeatFlux',-10);
Установка начального значения 0 для температуры.
thermalIC(thermalmodel,0);
Создание и печать сетки.
generateMesh(thermalmodel);
figure
pdemesh(thermalmodel)
title('Mesh with Quadratic Triangular Elements')
Установите время решения от 0 до 5 секунд с шагом 1/2.
tlist = 0:0.5:5;
Используйте solve для вычисления решения.
thermalresults = solve(thermalmodel,tlist)
thermalresults =
TransientThermalResults with properties:
Temperature: [1320x11 double]
SolutionTimes: [0 0.5000 1 1.5000 2 2.5000 3 3.5000 4 4.5000 5]
XGradients: [1320x11 double]
YGradients: [1320x11 double]
ZGradients: []
Mesh: [1x1 FEMesh]
Вычислите плотность теплового потока.
[qx,qy] = evaluateHeatFlux(thermalresults);
Постройте график решения на заключительном временном шаге, t = 5,0 секунды, с изотермическими линиями, используя контурный график, и постройте график векторного поля теплового потока с помощью стрелок.
pdeplot(thermalmodel,'XYData',thermalresults.Temperature(:,end), ... 'Contour','on',... 'FlowData',[qx(:,end),qy(:,end)], ... 'ColorMap','hot')
