В этом примере показано, как решить дифференциальное уравнение с частными производными (PDE) нелинейной теплопередачи в тонкой пластине.
Пластина является квадратной, и ее температура фиксируется вдоль базового края. Никакое тепло не передается от других трех ребер, поскольку ребра изолируются. Тепло передается и от верхних и нижних поверхностей пластины конвекцией и от излучения. Поскольку излучение включено, проблема нелинейна.
Цель этого примера состоит в том, чтобы показать, как представлять нелинейный УЧП символически с помощью Symbolic Math Toolbox™ и решить задачу УЧП с помощью анализа конечных элементов в Partial Differential Equation Toolbox™. В этом примере выполните анализ переходных процессов и решите температуру в пластине в зависимости от времени. Анализ переходных процессов показывает длительность времени, пока пластина не достигает своей температуры равновесия в устойчивом состоянии.
Пластина имеет плоские размерности 1 м на 1 м и 1 см толщиной. Поскольку пластина является относительно тонкой по сравнению с плоскими размерностями, температура может быть принята постоянным в направлении толщины, и получившаяся проблема 2D.
Примите, что конвекция и теплопередачи излучения происходят между двумя поверхностями пластины и среды с заданной температурой окружающей среды.
Количество тепла, переданное от каждой поверхности пластины на единичную площадь из-за конвекции, задано как
,
где температура окружающей среды, температура в детали и местоположение на поверхности пластины, и заданный коэффициент конвекции.
Количество тепла, переданное от каждой поверхности пластины на единичную площадь из-за излучения, задано как
,
где излучаемость поверхности и Stefan-постоянная-Больцмана. Поскольку тепло, переданное из-за излучения, пропорционально четвертой степени температуры поверхности, проблема нелинейна.
УЧП, описывающий температуру в этой тонкой пластине,
где существенная плотность пластины, его удельная теплоемкость, его толщина пластины, его теплопроводность, и факторы два составляют теплопередачу от обеих из его поверхностей.
Настройте проблему УЧП путем определения значений параметров. Пластина состоит из меди, которая имеет следующие свойства.
kThermal = 400; % thermal conductivity of copper, W/(m-K) rhoCopper = 8960; % density of copper, kg/m^3 specificHeat = 386; % specific heat of copper, J/(kg-K) thick = 0.01; % plate thickness in meters stefanBoltz = 5.670373e-8; % Stefan-Boltzmann constant, W/(m^2-K^4) hCoeff = 1; % convection coefficient, W/(m^2-K) tAmbient = 300; % the ambient temperature emiss = 0.5; % emissivity of the plate surface
Задайте УЧП в символьной форме с температурой пластины как зависимая переменная .
syms T(t,x,y) syms eps sig tz hc Ta rho Cp k Qc = hc*(T - Ta); Qr = eps*sig*(T^4 - Ta^4); pdeeq = (rho*Cp*tz*diff(T,t) - k*tz*laplacian(T,[x,y]) + 2*Qc + 2*Qr)
pdeeq(t, x, y) =
Теперь создайте коэффициенты, чтобы использовать в качестве входных параметров в модели PDE как требуется Partial Differential Equation Toolbox. Для этого сначала извлеките коэффициенты символьного УЧП как структура символьных выражений с помощью pdeCoefficients
функция.
symCoeffs = pdeCoefficients(pdeeq,T,'Symbolic',true)
symCoeffs = struct with fields:
m: 0
a: 2*hc + 2*eps*sig*T(t, x, y)^3
c: [2x2 sym]
f: 2*eps*sig*Ta^4 + 2*hc*Ta
d: Cp*rho*tz
Затем замените символьными переменными, которые представляют параметры УЧП их числовыми значениями.
symVars = [eps sig tz hc Ta rho Cp k]; symVals = [emiss stefanBoltz thick hCoeff tAmbient rhoCopper specificHeat kThermal]; symCoeffs = subs(symCoeffs,symVars,symVals);
Наконец, начиная с полей symCoeffs
символьные объекты, используют pdeCoefficientsToDouble
функционируйте, чтобы преобразовать коэффициенты в double
тип данных, который делает их допустимыми входными параметрами для Partial Differential Equation Toolbox.
coeffs = pdeCoefficientsToDouble(symCoeffs)
coeffs = struct with fields:
a: @makeCoefficient/coefficientFunction
c: [4x1 double]
m: 0
d: 3.4586e+04
f: 1.0593e+03
Теперь использование Partial Differential Equation Toolbox, решите задачу УЧП с помощью анализа конечных элементов на основе этих коэффициентов.
Во-первых, создайте модель PDE с одной зависимой переменной.
numberOfPDE = 1; model = createpde(numberOfPDE);
Задайте геометрию для модели PDE — в этом случае, размерность квадрата.
width = 1; height = 1;
Задайте матрицу описания геометрии. Создайте квадратную геометрию с помощью decsg
(Partial Differential Equation Toolbox) функция. Для прямоугольной геометрии первая строка содержит 3
, и вторая строка содержит 4
. Следующие четыре строки содержат - координаты начальных точек ребер и эти четыре строки после этого содержат - координаты начальных точек ребер.
gdm = [3 4 0 width width 0 0 0 height height]'; g = decsg(gdm,'S1',('S1')');
Преобразуйте геометрию DECSG в геометрический объект и включайте ее в модель PDE.
geometryFromEdges(model,g);
Постройте геометрию и отобразите метки ребра.
figure; pdegplot(model,'EdgeLabels','on'); axis([-0.1 1.1 -0.1 1.1]); title('Geometry with Edge Labels Displayed');
Затем создайте треугольную mesh в модели PDE с размером mesh приблизительно 0,1 в каждом направлении.
hmax = 0.1; % element size msh = generateMesh(model,'Hmax',hmax); figure; pdeplot(model); axis equal title('Plate with Triangular Element Mesh'); xlabel('X-coordinate, meters'); ylabel('Y-coordinate, meters');
Задайте коэффициенты в модели PDE.
specifyCoefficients(model,'m',coeffs.m,'d',coeffs.d, ... 'c',coeffs.c,'a',coeffs.a,'f',coeffs.f);
Примените граничные условия. Три из ребер пластины изолируются. Поскольку Нейманово равное нулю граничное условие является значением по умолчанию в формулировке конечного элемента, вы не должны устанавливать граничные условия на этих ребрах. Базовый край пластины фиксируется в 1000 K. Задайте это использование условия Дирихле на всех узлах на базовом краю (ребро E1).
applyBoundaryCondition(model,'dirichlet','edge',1,'u',1000);
Задайте начальную температуру, чтобы быть 0 K везде, кроме на нижнем краю. Установите начальную температуру на базовом краю E1 к значению постоянного граничного условия, 1000 K.
setInitialConditions(model,0);
setInitialConditions(model,1000,'edge',1);
Задайте временной интервал, чтобы найти переходное решение проблемы УЧП.
endTime = 10000; tlist = 0:50:endTime;
Установите погрешность опций решателя.
model.SolverOptions.RelativeTolerance = 1.0e-3; model.SolverOptions.AbsoluteTolerance = 1.0e-4;
Решите задачу с помощью solvepde
. Постройте температуру вдоль верхнего края пластины в зависимости от времени.
R = solvepde(model,tlist); u = R.NodalSolution; figure; plot(tlist,u(3,:)); grid on title 'Temperature Along the Top Edge of the Plate as a Function of Time' xlabel 'Time (s)' ylabel 'Temperature (K)'
На основе графика переходное решение начинает достигать своего значения устойчивого состояния после 6 000 секунд. Температура равновесия верхнего края приближается к 450 K после 6 000 секунд.
Покажите температурный профиль пластины после 10 000 секунд.
figure; pdeplot(model,'XYData',u(:,end),'Contour','on','ColorMap','jet'); title(sprintf('Temperature in the Plate, Transient Solution (%d seconds)\n', ... tlist(1,end))); xlabel 'X-coordinate, meters' ylabel 'Y-coordinate, meters' axis equal;
Покажите температуру в верхнем краю в 10 000 секунд.
u(3,end)
ans = 449.8031