Оцените градиент температуры теплового решения в произвольных пространственных местоположениях
[ возвращает интерполированные значения градиентов температуры решения тепловой модели gradTx,gradTy]
= evaluateTemperatureGradient(thermalresults,xq,yq)thermalresults в 2-D точках, указанных в xq и yq. Этот синтаксис действителен как для статических, так и для переходных тепловых моделей.
[___] = evaluateTemperatureGradient( возвращает интерполированные значения градиентов температуры в точках, заданных в thermalresults,querypoints)querypoints. Этот синтаксис действителен как для статических, так и для переходных тепловых моделей.
[___] = evaluateTemperatureGradient(___, возвращает интерполированные значения градиентов температуры для зависящего от времени уравнения в разы времени iT)iT. Задайте iT после входных параметров в любом из предыдущих синтаксисов.
Первая размерность gradTx, gradTy, и, в 3-D случае, gradTz соответствует точкам запроса. Второе измерение соответствует временным шагам iT.
Для 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

Принимая, что эта геометрия представляет железную пластину, теплопроводность .
thermalProperties(thermalmodel,'ThermalConductivity',79.5,'Face',1);
Нанесите постоянную температуру 300 К на дно пластины (ребро 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 К на левую сторону блока (ребро 1) и постоянную температуру 573 К на правую сторону блока.
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')

Решите 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

Присвойте следующие тепловые свойства: теплопроводность , плотность массы равна , и удельная теплота .
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 определяет градиент температуры в 2-D координатных точках [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 вычисляет градиент температуры в 2-D координатных точках [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 - Точки запросаТочки запроса, заданные как действительная матрица с двумя строками для 2-D геометрии или тремя строками для 3-D геометрии. evaluateTemperatureGradient вычисляет градиент температуры в координатных точках 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 задает временной индекс.
Пример: iT = 1:5:21 задает каждый пятый временной шаг до 21.
Типы данных: double
gradTx - x -компонент температурного градиентаx -компонент градиента температуры, возвращенный как матрица. Для точек запроса, которые находятся вне геометрии, gradTx = NaN.
gradTy - y -компонент температурного градиентаy -компонент градиента температуры, возвращенный как матрица. Для точек запроса, которые находятся вне геометрии, gradTy = NaN.
gradTz - z -компонент температурного градиентаz -компонент градиента температуры, возвращенный как матрица. Для точек запроса, которые находятся вне геометрии, gradTz = NaN.
evaluateHeatFlux | evaluateHeatRate | interpolateTemperature | SteadyStateThermalResults | ThermalModel | TransientThermalResults
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.