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

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

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

Создайте тепловую аналитическую модель

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

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

Сгенерируйте Mesh

Создайте и постройте mesh.

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.