Оцените градиент температуры теплового решения в произвольных пространственных местоположениях
[
возвращает интерполированные значения градиентов температуры теплового решения модели gradTx
,gradTy
]
= evaluateTemperatureGradient(thermalresults
,xq
,yq
)thermalresults
в 2D точках, заданных в xq
и yq
. Этот синтаксис допустим и для установившихся и для переходных тепловых моделей.
[___] = evaluateTemperatureGradient(
возвращает интерполированные значения градиентов температуры в точках, заданных в thermalresults
,querypoints
)querypoints
. Этот синтаксис допустим и для установившихся и для переходных тепловых моделей.
[___] = evaluateTemperatureGradient(___,
возвращает интерполированные значения градиентов температуры для зависящего от времени уравнения во времена iT
)iT
. Задайте iT
после входных параметров в любом из предыдущих синтаксисов.
Первая размерность gradTx
, gradTy
, и, в 3-D случае, gradTz
соответствует точкам запроса. Второе измерение соответствует тактам iT
.
Для 2D установившейся тепловой модели оцените градиенты температуры в узловых местоположениях и в точках, заданных 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
Предположение, что эта геометрия представляет железную пластину, теплопроводность .
thermalProperties(thermalmodel,'ThermalConductivity',79.5,'Face',1);
Примените постоянную температуру 300 K к нижней части пластины (ребро 3). Кроме того, примите, что верхняя часть пластины (ребро 1) изолируется, и примените конвекцию на две стороны пластины (ребра 2 и 4).
thermalBC(thermalmodel,'Edge',3,'Temperature',300); 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]
Решатель находит температуры и градиенты температуры в узловых местоположениях. Чтобы получить доступ к этим значениям, используйте results.Temperature
, results.XGradients
, и так далее. Например, постройте градиенты температуры в узловых местоположениях.
figure;
pdeplot(thermalmodel,'FlowData',[results.XGradients results.YGradients]);
Создайте сетку, заданную x
и y
координаты, и оценивают градиенты температуры к сетке.
v = linspace(-0.5,0.5,11); [X,Y] = meshgrid(v); [gradTx,gradTy] = evaluateTemperatureGradient(results,X,Y);
Измените gradTx
и gradTy
векторы и график получившиеся градиенты температуры.
gradTx = reshape(gradTx,size(X)); gradTy = reshape(gradTy,size(Y)); figure quiver(X,Y,gradTx,gradTy)
В качестве альтернативы можно задать сетку при помощи матрицы точек запроса.
querypoints = [X(:) Y(:)]'; [gradTx,gradTy] = evaluateTemperatureGradient(results,querypoints); gradTx = reshape(gradTx,size(X)); gradTy = reshape(gradTy,size(Y)); figure quiver(X,Y,gradTx,gradTy)
Для 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
Предположение, что это - медный блок, теплопроводность блока приблизительно .
thermalProperties(thermalmodel,'ThermalConductivity',4);
Примените постоянную температуру 373 K к левой стороне блока (ребро 1) и постоянную температуру 573 K к правой стороне блока.
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]
Решатель находит значения температур и градиентов температуры в узловых местоположениях. Чтобы получить доступ к этим значениям, используйте results.Temperature
, results.XGradients
, и так далее.
Создайте сетку, заданную x
Y
, и z
координаты, и оценивают градиенты температуры к сетке.
[X,Y,Z] = meshgrid(1:26:100,1:6:20,1:11:50); [gradTx,gradTy,gradTz] = evaluateTemperatureGradient(thermalresults,X,Y,Z);
Измените gradTx
, gradTy
, и gradTz
векторы и график получившиеся градиенты температуры.
gradTx = reshape(gradTx,size(X)); gradTy = reshape(gradTy,size(Y)); gradTz = reshape(gradTz,size(Z)); figure quiver3(X,Y,Z,gradTx,gradTy,gradTz) axis equal xlabel('x') ylabel('y') zlabel('z')
В качестве альтернативы можно задать сетку при помощи матрицы точек запроса.
querypoints = [X(:) Y(:) Z(:)]'; [gradTx,gradTy,gradTz] = evaluateTemperatureGradient(thermalresults,querypoints); gradTx = reshape(gradTx,size(X)); gradTy = reshape(gradTy,size(Y)); gradTz = reshape(gradTz,size(Z)); figure quiver3(X,Y,Z,gradTx,gradTy,gradTz) axis equal xlabel('x') ylabel('y') zlabel('z')
Решите 2D переходную задачу теплопередачи на квадратной области и вычислите градиенты температуры на конвективном контуре.
Создайте переходную тепловую модель для этой проблемы.
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
Присвойте следующие тепловые свойства: теплопроводность , массовая плотность , и удельная теплоемкость .
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',4);
Сгенерируйте mesh и решите задачу с помощью 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 = -1:0.1:1; Y = ones(size(X)); [gradTx,gradTy] = evaluateTemperatureGradient(thermalresults,X,Y,1:length(tlist));
Постройте интерполированный компонент градиента gradTx
вдоль x
ось для следующих значений от временного интервала tlist
.
figure t = [51:50:201]; for i = t p(i) = plot(X,gradTx(:,i),'DisplayName', strcat('t=', num2str(tlist(i)))); hold on end legend(p(t)) xlabel('x') ylabel('gradTx')
thermalresults
— Решение тепловой проблемыSteadyStateThermalResults
возразите | TransientThermalResults
объектРешение тепловой проблемы, заданной как SteadyStateThermalResults
возразите или TransientThermalResults
объект. Создайте thermalresults
использование solve
функция.
Пример: thermalresults = solve(thermalmodel)
xq
— x - координирует точки запросаx- точки запроса, заданные как действительный массив. evaluateTemperatureGradient
оценивает градиент температуры в 2D точках координаты [xq(i) yq(i)]
или в 3-D координате указывает [xq(i) yq(i) zq(i)]
. Так xq
yq
, и (если есть) zq
должен иметь то же количество записей.
evaluateTemperatureGradient
преобразует точки запроса в вектор-столбцы xq(:)
yq
, и (если есть) zq(:)
. Это возвращает градиент температуры в форме вектор-столбца, одного размера. Чтобы гарантировать, что размерности возвращенного решения сопоставимы с размерностями точек исходного запроса, используйте reshape
. Например, используйте gradTx = reshape(gradTx,size(xq))
.
Типы данных: double
yq
— y - координирует точки запросаy- точки запроса, заданные как действительный массив. evaluateTemperatureGradient
оценивает градиент температуры в 2D точках координаты [xq(i) yq(i)]
или в 3-D координате указывает [xq(i) yq(i) zq(i)]
. Так xq
yq
, и (если есть) zq
должен иметь то же количество записей.
evaluateTemperatureGradient
преобразует точки запроса в вектор-столбцы xq(:)
yq
, и (если есть) zq(:)
. Это возвращает градиент температуры в форме вектор-столбца, одного размера. Чтобы гарантировать, что размерности возвращенного решения сопоставимы с размерностями точек исходного запроса, используйте reshape
. Например, используйте gradTy = reshape(gradTy,size(yq))
.
Типы данных: double
zq
— z - координирует точки запросаz- точки запроса, заданные как действительный массив. evaluateTemperatureGradient
оценивает градиент температуры в 3-D точках координаты [xq(i) yq(i) zq(i)]
. Так xq
yq
, и zq
должен иметь то же количество записей.
evaluateTemperatureGradient
преобразует точки запроса в вектор-столбцы xq(:)
yq
, и (если есть) zq(:)
. Это возвращает градиент температуры в форме вектор-столбца, одного размера. Чтобы гарантировать, что размерности возвращенного решения сопоставимы с размерностями точек исходного запроса, используйте reshape
. Например, используйте gradTz = reshape(gradTz,size(zq))
.
Типы данных: double
querypoints
— Точки запросаТочки запроса, заданные как действительная матрица или с двумя строками для 2D геометрии или с тремя строками для 3-D геометрии. evaluateTemperatureGradient
оценивает градиент температуры в точках координаты querypoints(:,i)
, так каждый столбец querypoints
содержит точно одну 2D или 3-D точку запроса.
Пример: Для 2D геометрии, querypoints = [0.5 0.5 0.75 0.75; 1 2 0 0.5]
Типы данных: double
iT
— Индексы времениИндексы времени, заданные как вектор положительных целых чисел. Каждая запись в iT
задает индекс времени.
Пример: iT = 1:5:21
задает каждый пятый такт до 21.
Типы данных: double
gradTx
— x - компонент градиента температурыx- градиента температуры, возвращенного как матрица. Для точек запроса, которые являются вне геометрии, gradTx
= NaN
.
gradTy
— y - компонент градиента температурыy- градиента температуры, возвращенного как матрица. Для точек запроса, которые являются вне геометрии, gradTy
= NaN
.
gradTz
— z - компонент градиента температурыz- градиента температуры, возвращенного как матрица. Для точек запроса, которые являются вне геометрии, gradTz
= NaN
.
SteadyStateThermalResults
| ThermalModel
| TransientThermalResults
| evaluateHeatFlux
| evaluateHeatRate
| interpolateTemperature
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.