exponenta event banner

evaluateHeatFlux

Оценка теплового потока теплового решения в узловых или произвольных пространственных местоположениях

Описание

пример

[qx,qy] = evaluateHeatFlux(thermalresults,xq,yq) возвращает тепловой поток для тепловой задачи в точках 2-D, указанных в xq и yq. Этот синтаксис применим как для стационарных, так и для нестационарных тепловых моделей.

пример

[qx,qy,qz] = evaluateHeatFlux(thermalresults,xq,yq,zq) возвращает тепловой поток для тепловой задачи в точках 3-D, указанных в xq, yq, и zq. Этот синтаксис применим как для стационарных, так и для нестационарных тепловых моделей.

пример

[___] = evaluateHeatFlux(thermalresults,querypoints) возвращает тепловой поток для тепловой задачи в точках 2-D или 3-D, указанных в querypoints. Этот синтаксис применим как для стационарных, так и для нестационарных тепловых моделей.

пример

[___] = evaluateHeatFlux(___,iT) возвращает тепловой поток для тепловой задачи в моменты времени, указанные в iT. Можно указать iT после входных аргументов в любом из предыдущих синтаксисов.

Первое измерение qx, qy, и, в 3-D случае, qz соответствует точкам запроса. Вторая размерность соответствует временным шагам iT.

пример

[qx,qy] = evaluateHeatFlux(thermalresults) возвращает тепловой поток для задачи 2-D в узловых точках треугольной сетки. Первое измерение qx и qy представляет индексы узлов. Второе измерение представляет временные шаги.

пример

[qx,qy,qz] = evaluateHeatFlux(thermalresults) возвращает тепловой поток для 3-D тепловой задачи в узловых точках четырехгранной сетки. Первое измерение qx, qy, и qz представляет индексы узлов. Второе измерение представляет временные шаги.

Примеры

свернуть все

Для 2-D стационарной тепловой модели оцените тепловой поток в узловых точках и в точках, указанных x и y координаты.

Создание тепловой модели для стационарного анализа.

thermalmodel = createpde('thermal');

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

R1 = [3,4,-1,1,1,-1,1,1,-1,-1]';
g = decsg(R1,'R1',('R1')');
geometryFromEdges(thermalmodel,g);
pdegplot(thermalmodel,'EdgeLabels','on')
xlim([-1.5 1.5])
axis equal

Figure contains an axes. The axes contains 5 objects of type line, text.

Предполагая, что эта геометрия представляет собой железную пластину, теплопроводность равна 79.5W/ (mK).

thermalProperties(thermalmodel,'ThermalConductivity',79.5,'Face',1);

Приложите постоянную температуру 500 К к нижней части пластины (кромка 3). Также предположим, что верхняя часть пластины (край 1) изолирована, и примените конвекцию на двух сторонах пластины (края 2 и 4).

thermalBC(thermalmodel,'Edge',3,'Temperature',500);
thermalBC(thermalmodel,'Edge',1,'HeatFlux',0);
thermalBC(thermalmodel,'Edge',[2 4], ...
                       'ConvectionCoefficient',25, ...
                       'AmbientTemperature',50);

Выполните сетку геометрии и решите проблему.

generateMesh(thermalmodel);
results = solve(thermalmodel)
results = 
  SteadyStateThermalResults with properties:

    Temperature: [1541x1 double]
     XGradients: [1541x1 double]
     YGradients: [1541x1 double]
     ZGradients: []
           Mesh: [1x1 FEMesh]

Оцените тепловой поток в узловых местах.

[qx,qy] = evaluateHeatFlux(results);

figure
pdeplot(thermalmodel,'FlowData',[qx qy])

Figure contains an axes. The axes contains an object of type quiver.

Создать сетку, заданную x и y координаты и оценка теплового потока к сетке.

v = linspace(-0.5,0.5,11);
[X,Y] = meshgrid(v);

[qx,qy] = evaluateHeatFlux(results,X,Y);

Изменить форму qTx и qTy векторы и постройте график результирующего теплового потока.

qx = reshape(qx,size(X));
qy = reshape(qy,size(Y));
figure
quiver(X,Y,qx,qy)

Figure contains an axes. The axes contains an object of type quiver.

Кроме того, сетку можно задать с помощью матрицы точек запроса.

querypoints = [X(:) Y(:)]';
[qx,qy] = evaluateHeatFlux(results,querypoints);

qx = reshape(qx,size(X));
qy = reshape(qy,size(Y));
figure
quiver(X,Y,qx,qy)

Figure contains an axes. The axes contains an object of type quiver.

Для 3-D стационарной тепловой модели оцените тепловой поток в узловых точках и в точках, указанных x, y, и z координаты.

Создание тепловой модели для стационарного анализа.

thermalmodel = createpde('thermal');

Создайте следующую геометрию 3-D и включите ее в модель.

importGeometry(thermalmodel,'Block.stl'); 
pdegplot(thermalmodel,'FaceLabels','on','FaceAlpha',0.5)
title('Copper block, cm')
axis equal

Figure contains an axes. The axes with title Copper block, cm contains 3 objects of type quiver, patch, line.

Предполагая, что это медный блок, теплопроводность блока составляет приблизительно 4W/ (cmK).

thermalProperties(thermalmodel,'ThermalConductivity',4);

Применить постоянную температуру 373 К к левой стороне блока (грань 1) и постоянную температуру 573 К к правой стороне блока (грань 3).

thermalBC(thermalmodel,'Face',1,'Temperature',373);
thermalBC(thermalmodel,'Face',3,'Temperature',573);

Примените граничное условие теплового потока к нижней части блока.

thermalBC(thermalmodel,'Face',4,'HeatFlux',-20);

Выполните сетку геометрии и решите проблему.

generateMesh(thermalmodel);
thermalresults = solve(thermalmodel)
thermalresults = 
  SteadyStateThermalResults with properties:

    Temperature: [12691x1 double]
     XGradients: [12691x1 double]
     YGradients: [12691x1 double]
     ZGradients: [12691x1 double]
           Mesh: [1x1 FEMesh]

Оцените тепловой поток в узловых местах.

[qx,qy,qz] = evaluateHeatFlux(thermalresults);

figure
pdeplot3D(thermalmodel,'FlowData',[qx qy qz])

Создать сетку, заданную x, y, и z координаты и оценка теплового потока к сетке.

[X,Y,Z] = meshgrid(1:26:100,1:6:20,1:11:50);

[qx,qy,qz] = evaluateHeatFlux(thermalresults,X,Y,Z);

Изменить форму qx, qy, и qz векторы и постройте график результирующего теплового потока.

qx = reshape(qx,size(X));
qy = reshape(qy,size(Y));
qz = reshape(qz,size(Z));
figure
quiver3(X,Y,Z,qx,qy,qz)

Figure contains an axes. The axes contains an object of type quiver.

Кроме того, сетку можно задать с помощью матрицы точек запроса.

querypoints = [X(:) Y(:) Z(:)]';
[qx,qy,qz] = evaluateHeatFlux(thermalresults,querypoints);

qx = reshape(qx,size(X));
qy = reshape(qy,size(Y));
qz = reshape(qz,size(Z));
figure
quiver3(X,Y,Z,qx,qy,qz)

Figure contains an axes. The axes contains an object of type quiver.

Решите проблему 2-D переходной теплопередачи в квадратной области и вычислите тепловой поток через конвективную границу.

Создайте тепловую модель для этой проблемы.

thermalmodel = createpde('thermal','transient');

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

g = @squareg;
geometryFromEdges(thermalmodel,g);
pdegplot(thermalmodel,'EdgeLabels','on')
xlim([-1.2 1.2])
ylim([-1.2 1.2])
axis equal

Figure contains an axes. The axes contains 5 objects of type line, text.

Присвойте следующие тепловые свойства: теплопроводность 100W/ (m∘C), массовая плотность 7800 кг/м3, удельная теплота 500J/ (kg∘C).

thermalProperties(thermalmodel,'ThermalConductivity',100, ...
                               'MassDensity',7800, ...
                               'SpecificHeat',500);

Применение изолированных граничных условий на трех кромках и свободных граничных условий конвекции на правой кромке.

thermalBC(thermalmodel,'Edge',[1 3 4],'HeatFlux',0);
thermalBC(thermalmodel,'Edge',2,...
                       'ConvectionCoefficient',5000, ...
                       'AmbientTemperature',25);

Задайте начальные условия: равномерная температура в помещении по всей области и более высокая температура на верхнем крае.

thermalIC(thermalmodel,25);
thermalIC(thermalmodel,100,'Edge',1);

Создание сетки и решение проблемы с помощью 0:1000:200000 как вектор времени.

generateMesh(thermalmodel);
tlist = 0:1000:200000;
thermalresults = solve(thermalmodel,tlist)
thermalresults = 
  TransientThermalResults with properties:

      Temperature: [1541x201 double]
    SolutionTimes: [1x201 double]
       XGradients: [1541x201 double]
       YGradients: [1541x201 double]
       ZGradients: []
             Mesh: [1x1 FEMesh]

Создать сетку, заданную x и y координаты и оценка теплового потока к сетке.

v = linspace(-1,1,11);
[X,Y] = meshgrid(v);

[qx,qy] = evaluateHeatFlux(thermalresults,X,Y,1:length(tlist));

Измениться qx и qyи постройте график результирующего теплового потока для 25-й стадии раствора.

tlist(25)
ans = 24000
figure
quiver(X(:),Y(:),qx(:,25),qy(:,25));
xlim([-1,1])
axis equal

Figure contains an axes. The axes contains an object of type quiver.

Решите проблему теплопередачи для следующей 2-D геометрии, состоящей из квадрата и алмаза из различных материалов. Вычислите тепловой поток и постройте его график как векторное поле.

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

thermalmodel = createpde('thermal','transient');

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

SQ1 = [3; 4; 0; 3; 3; 0; 0; 0; 3; 3];
D1 = [2; 4; 0.5; 1.5; 2.5; 1.5; 1.5; 0.5; 1.5; 2.5];
gd = [SQ1 D1];
sf = 'SQ1+D1';
ns = char('SQ1','D1');
ns = ns';
dl = decsg(gd,sf,ns);
geometryFromEdges(thermalmodel,dl);
pdegplot(thermalmodel,'EdgeLabels','on','FaceLabels','on')
xlim([-1.5 4.5])
ylim([-0.5 3.5])
axis equal

Figure contains an axes. The axes contains 11 objects of type line, text.

Для квадратной области присвойте следующие тепловые свойства: теплопроводность - 10W/ (m∘C), массовая плотность - 2 кг/м3, удельная теплота - 0 .1Дж/( kg∘C).

thermalProperties(thermalmodel,'ThermalConductivity',10, ...
                               'MassDensity',2, ...
                               'SpecificHeat',0.1, ...
                               'Face',1);

Для ромбовидной области присвойте следующие тепловые свойства: теплопроводность - 2W/ (m∘C), плотность массы - 1 кг/м3, удельная теплота - 0 .1Дж/( kg∘C).

thermalProperties(thermalmodel,'ThermalConductivity',2, ...
                               'MassDensity',1, ...
                               'SpecificHeat',0.1, ...
                               'Face',2);

Предположим, что ромбовидная область является источником тепла с плотностью 4W/m3.

internalHeatSource(thermalmodel,4,'Face',2);

Прикладывайте постоянную температуру 0∘C к сторонам квадратной пластины.

thermalBC(thermalmodel,'Temperature',0,'Edge',[1 2 7 8]);

Установите начальную температуру на 0∘C.

thermalIC(thermalmodel,0);

Выполните сетку геометрии и решите проблему.

generateMesh(thermalmodel);

Динамика для этой проблемы очень быстрая: температура достигает устойчивого состояния примерно за 0,1 секунды. Чтобы зафиксировать интересную часть динамики, установите время решения на logspace(-2,-1,10). Это дает 10 логарифмически разнесенных времен раствора от 0,01 до 0,1. Решите уравнение.

tlist = logspace(-2,-1,10);
thermalresults = solve(thermalmodel,tlist);
temp = thermalresults.Temperature;

Вычислите плотность теплового потока. Постройте график решения с изотермическими линиями, используя контурный график, и постройте график векторного поля теплового потока с помощью стрелок.

[qTx,qTy] = evaluateHeatFlux(thermalresults);

figure
pdeplot(thermalmodel,'XYData',temp(:,10),'Contour','on', ...
                     'FlowData',[qTx(:,10) qTy(:,10)], ...
                     'ColorMap','hot')

Figure contains an axes. The axes contains 13 objects of type patch, line, quiver.

Входные аргументы

свернуть все

Решение тепловой задачи, указанной как SteadyStateThermalResults объект или TransientThermalResults объект. Создать thermalresults с использованием solve функция.

Пример: thermalresults = solve(thermalmodel)

точки запроса координат x, заданные как вещественный массив. evaluateHeatFlux оценивает тепловой поток в точках координат 2-D [xq(i) yq(i)] или в точках координат 3-D [xq(i) yq(i) zq(i)]. Так xq, yq, и (при наличии) zq должно иметь одинаковое количество записей.

evaluateHeatFlux преобразует точки запроса в векторы столбцов xq(:), yq(:), и (при наличии) zq(:). Он возвращает тепловой поток в виде вектора столбца того же размера. Чтобы убедиться, что измерения возвращенного решения согласуются с измерениями исходных точек запроса, используйте reshape. Например, использовать qx = reshape(qx,size(xq)).

Типы данных: double

точки запроса координат y, заданные как вещественный массив. evaluateHeatFlux оценивает тепловой поток в точках координат 2-D [xq(i) yq(i)] или в точках координат 3-D [xq(i) yq(i) zq(i)]. Так xq, yq, и (при наличии) zq должно иметь одинаковое количество записей.

evaluateHeatFlux преобразует точки запроса в векторы столбцов xq(:), yq(:), и (при наличии) zq(:). Он возвращает тепловой поток в виде вектора столбца того же размера. Чтобы убедиться, что измерения возвращенного решения согласуются с измерениями исходных точек запроса, используйте reshape. Например, использовать qy = reshape(qy,size(yq)).

Типы данных: double

точки запроса координат z, заданные как вещественный массив. evaluateHeatFlux оценивает тепловой поток в точках координат 3-D [xq(i) yq(i) zq(i)]. Так xq, yq, и zq должно иметь одинаковое количество записей.

evaluateHeatFlux преобразует точки запроса в векторы столбцов xq(:), yq(:), и (при наличии) zq(:). Он возвращает тепловой поток в виде вектора столбца того же размера. Чтобы убедиться, что измерения возвращенного решения согласуются с измерениями исходных точек запроса, используйте reshape. Например, использовать qz = reshape(qz,size(zq)).

Типы данных: double

Точки запроса, заданные как вещественная матрица с двумя строками для 2-D геометрии или тремя строками для 3-D геометрии. evaluateHeatFlux оценивает тепловой поток в координатных точках querypoints(:,i), таким образом, каждый столбец querypoints содержит только одну 2-D или 3-D точку запроса.

Пример: Для 2-D геометрии querypoints = [0.5 0.5 0.75 0.75; 1 2 0 0.5]

Типы данных: double

Временные индексы, заданные как вектор положительных целых чисел. Каждая запись в iT задает временной индекс.

Пример: iT = 1:5:21 указывает каждый пятый шаг времени до 21.

Типы данных: double

Выходные аргументы

свернуть все

x-компонент теплового потока, возвращаемый в виде массива. Первое измерение массива представляет индекс узла. Второе измерение массива представляет временной шаг.

Для точек запроса, которые находятся вне геометрии, qx = NaN.

y-компонент теплового потока, возвращаемый в виде матрицы. Первое измерение массива представляет индекс узла. Второе измерение массива представляет временной шаг.

Для точек запроса, которые находятся вне геометрии, qy = NaN.

z-компонент теплового потока, возвращаемый в виде массива. Первое измерение массива представляет индекс узла. Второе измерение массива представляет временной шаг.

Для точек запроса, которые находятся вне геометрии, qz = NaN.

Представлен в R2017a