Нагрейте распределение в круговом цилиндрическом стержне

В этом примере показано, как упростить 3-D осесимметричную тепловую проблему до 2D проблемы с помощью симметрии вокруг оси вращения тела.

Этот пример анализирует теплопередачу в стержне с круглым сечением. Существует источник тепла в нижней части стержня и фиксированной температуры наверху. Наружная поверхность стержня обменивается теплом со средой из-за конвекции. Кроме того, сам стержень вырабатывает тепло из-за радиоактивного затухания. Цель состоит в том, чтобы найти температуру в стержне как функция времени.

Геометрия модели, свойства материала и граничные условия должны все быть симметричными об оси вращения. Тулбокс принимает, что ось вращения является вертикальной осью, проходящей r = 0.

Установившееся решение

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

Создайте установившуюся тепловую модель для того, чтобы решить осесимметричную задачу.

thermalModelS = createpde('thermal','steadystate-axisymmetric');

2D модель является прямоугольной полосой, x-размерность которой расширяет от оси симметрии до наружной поверхности, и y-размерность расширяет по фактической длине стержня (от -От 1,5 м до 1,5 м. Создайте геометрию путем определения координат ее четырех углов.

g = decsg([3 4 0 0 .2 .2 -1.5 1.5 1.5 -1.5]');

Включайте геометрию в модель.

geometryFromEdges(thermalModelS,g);

Постройте геометрию с метками ребра.

figure
pdegplot(thermalModelS,'EdgeLabels','on')
axis equal

Стержень состоит из материала с этими тепловыми свойствами.

k = 40; % Thermal conductivity, W/(m*C)
rho = 7800; % Density, kg/m^3
cp = 500; % Specific heat, W*s/(kg*C)
q = 20000; % Heat source, W/m^3

Для установившегося анализа задайте теплопроводность материала.

thermalProperties(thermalModelS,'ThermalConductivity',k);

Задайте внутренний источник тепла.

internalHeatSource(thermalModelS,q);

Задайте граничные условия. Нет никакого тепла, переданного в направлении, нормальном к оси симметрии (ребро 1). Вы не должны изменять граничное условие по умолчанию для этого ребра. Ребро 2 сохранено при постоянной температуре T = 100 °C.

thermalBC(thermalModelS,'Edge',2,'Temperature',100);

Задайте граничное условие конвекции на внешней границе (ребро 3). Окружающая температура во внешней границе является 100 °C, и коэффициент теплопередачи 50W/(mC).

thermalBC(thermalModelS,'Edge',3,...
                        'ConvectionCoefficient',50,...
                        'AmbientTemperature',100);

Поток тепла в нижней части стержня (ребро 4) 5000W/m2.

thermalBC(thermalModelS,'Edge',4,'HeatFlux',5000);

Сгенерируйте mesh.

msh = generateMesh(thermalModelS);
figure
pdeplot(thermalModelS)
axis equal

Решите модель и постройте результат.

result = solve(thermalModelS);
T = result.Temperature;
figure
pdeplot(thermalModelS,'XYData',T,'Contour','on')
axis equal
title 'Steady-State Temperature'

Переходное решение

Создайте переходную тепловую модель для того, чтобы решить осесимметричную задачу.

thermalModelT = createpde('thermal','transient-axisymmetric');

Используйте ту же геометрию и mesh что касается установившегося анализа.

g = decsg([3 4 0 0 .2 .2 -1.5 1.5 1.5 -1.5]');
geometryFromEdges(thermalModelT,g);

thermalModelT.Mesh = msh;

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

thermalProperties(thermalModelT,'ThermalConductivity',k,...
                                'MassDensity',rho,...
                                'SpecificHeat',cp);

Задайте внутренний источник тепла и граничные условия.

internalHeatSource(thermalModelT,q);

thermalBC(thermalModelT,'Edge',2,'Temperature',100);
thermalBC(thermalModelT,'Edge',3,...
                        'ConvectionCoefficient',50,...
                        'AmbientTemperature',100);
thermalBC(thermalModelT,'Edge',4,'HeatFlux',5000);

Укажите, что Начальная температура в стержне является 0 °C.

thermalIC(thermalModelT,0);

Вычислите переходное решение в течение времен решения от t = 0 к t = 50 000 секунд.

tfinal = 50000;
tlist = 0:100:tfinal;
result = solve(thermalModelT,tlist);

Постройте температурное распределение в t = 50 000 секунд.

T = result.Temperature;

figure 
pdeplot(thermalModelT,'XYData',T(:,end),'Contour','on')
axis equal
title(sprintf('Transient Temperature at Final Time (%g seconds)',tfinal))

Найдите температуру в нижней поверхности стержня: во-первых, в центральной оси и затем на наружной поверхности.

Tcenter = interpolateTemperature(result,[0.0;-1.5],1:numel(tlist));
Touter = interpolateTemperature(result,[0.2;-1.5],1:numel(tlist));

Постройте температуру в левом конце стержня как функция времени. Наружная поверхность стержня отсоединена среде с постоянной температурой 100 °C. Когда температура поверхности стержня меньше 100 °C, среда нагревает стержень. Наружная поверхность немного теплее, чем внутренняя ось. Когда температура поверхности больше 100 °C, среда охлаждает стержень. Наружная поверхность становится более холодной, чем внутренняя часть стержня.

figure
plot(tlist,Tcenter)
hold on
plot(tlist,Touter,'--')
title 'Temperature at the Bottom as a Function of Time'
xlabel 'Time, s'
ylabel 'Temperature, C'
grid on
legend('Center Axis','Outer Surface','Location','SouthEast')

Для просмотра документации необходимо авторизоваться на сайте