В этом примере показано, как упростить 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, и коэффициент теплопередачи .
thermalBC(thermalModelS,'Edge',3,... 'ConvectionCoefficient',50,... 'AmbientTemperature',100);
Поток тепла в нижней части стержня (ребро 4) .
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')