exponenta event banner

Теплопередача в блоке с полостью

В этом примере показано, как решить проблему распределения тепла в блоке с полостью.

Рассмотрим блок, содержащий прямоугольную трещину или полость. Левая сторона блока нагревается до 100 градусов Цельсия. В правой части блока тепло течет от блока к окружающему воздуху с постоянной скоростью, например -10W/m2. Все остальные границы изолированы. Температура в блоке в начальный момент t0 = 0 равна 0 градусам. Цель состоит в моделировании распределения тепла в течение первых пяти секунд.

Создание модели теплового анализа

Первым шагом в решении проблемы теплопередачи является создание модели теплового анализа. Это контейнер, который содержит геометрию, свойства теплового материала, внутренние источники тепла, температуру на границах, тепловые потоки через границы, сетку и исходные условия.

thermalmodel = createpde('thermal','transient');

Импорт геометрии

Добавьте геометрию блока в тепловую модель с помощью geometryFromEdges функция. Файл описания геометрии для этой проблемы называется crackg.m.

geometryFromEdges(thermalmodel,@crackg);

Постройте график геометрии, отображая метки кромок.

pdegplot(thermalmodel,'EdgeLabels','on')
ylim([-1,1])
axis equal

Figure contains an axes. The axes contains 9 objects of type line, text.

Задание тепловых свойств материала

Укажите теплопроводность, массовую плотность и удельную теплоту материала.

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')

Figure contains an axes. The axes with title Mesh with Quadratic Triangular Elements contains 2 objects of type line.

Укажите время решения

Установите время решения от 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')

Figure contains an axes. The axes contains 13 objects of type patch, line, quiver.