Этот пример показывает, как решить для распределения тепла в блоке с полостью.
Рассмотрим блок, содержащий прямоугольную трещину или полость. Левая сторона блока нагревается до 100 степеней С. В правой части блока тепло течет от блока к окружающему воздуху с постоянной скоростью, для примера . Все остальные контуры изолированы. Температура в блоке в начальное время 0 степени. Цель состоит в том, чтобы смоделировать распределение тепла в течение первых пяти секунд.
Первым шагом в решении задачи теплопередачи является создание модели теплового анализа. Это контейнер, который содержит геометрию, свойства теплового материала, внутренние источники тепла, температуру на контурах, тепловые потоки через контуры, mesh и начальные условия.
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);
Создание и построение mesh.
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')