В этом примере показано, как упростить 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 поддерживают при постоянной температуре Т = 100 ° С.
thermalBC(thermalModelS,'Edge',2,'Temperature',100);
Задайте условие границы конвекции на внешней границе (кромка 3). Окружающая температура на внешней границе составляет 100 ° C, а коэффициент теплопередачи - m⋅∘C).
thermalBC(thermalModelS,'Edge',3,... 'ConvectionCoefficient',50,... 'AmbientTemperature',100);
Тепловой поток в нижней части стержня (кромка 4) составляет .
thermalBC(thermalModelS,'Edge',4,'HeatFlux',5000);
Создайте сетку.
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');
Используйте ту же геометрию и сетку, что и при стационарном анализе.
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')
