Этот пример показывает, как упростить 3-D осесимметричную тепловую задачу до 2-D задачи с помощью симметрии вокруг оси вращения тела.
Этот пример анализирует теплопередачу в стержне с круглым сечением. В нижней части стержня расположен источник тепла, а в верхней - фиксированная температура. Внешняя поверхность стержня обменивается теплом с окружением из-за конвекции. В сложение стержень сам генерирует тепло из-за радиоактивного распада. Цель состоит в том, чтобы найти температуру в стержне как функцию времени.
Геометрия модели, свойства материала и граничные условия должны быть симметричными относительно оси вращения. Тулбокс принимает, что ось вращения является вертикальной осью, проходящей через r = 0.
Во-первых, вычислите установившееся решение. Если окончательное время в переходном анализе достаточно велико, переходное решение в конечном времени должно быть близко к установившемуся решению. При сравнении этих двух результатов можно проверить точность переходного анализа.
Создайте установившуюся тепловую модель для решения аксизимметрической задачи.
thermalModelS = createpde('thermal','steadystate-axisymmetric');
Модель 2-D является прямоугольной полосой, размер 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 = 50000 секунд.
tfinal = 50000; tlist = 0:100:tfinal; result = solve(thermalModelT,tlist);
Постройте график распределения температуры t = 50000 секунд.
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')