Интерполяция температуры в тепловом результате в произвольных пространственных местоположениях
возвращает интерполированные значения температуры в точках 2-D, указанных в Tintrp = interpolateTemperature(thermalresults,xq,yq)xq и yq. Этот синтаксис применим как для стационарных, так и для нестационарных тепловых моделей.
возвращает интерполированные значения температуры в точках 3-D, указанных в Tintrp = interpolateTemperature(thermalresults,xq,yq,zq)xq, yq, и zq. Этот синтаксис применим как для стационарных, так и для нестационарных тепловых моделей.
возвращает интерполированные значения температуры в точках в Tintrp = interpolateTemperature(thermalresults,querypoints)querypoints. Этот синтаксис применим как для стационарных, так и для нестационарных тепловых моделей.
Создание тепловой модели для стационарного анализа.
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

Предположим, что это железная пластина, назначьте теплопроводность 79,5 Вт/( m * K). Поскольку это стационарная модель, нет необходимости назначать плотность массы или удельные значения тепла.
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,'XYData',results.Temperature,... 'Contour','on','ColorMap','hot');

Интерполяция результирующих температур в сетку, охватывающую центральную часть геометрии, для x и y от -0.5 кому 0.5.
v = linspace(-0.5,0.5,11); [X,Y] = meshgrid(v); Tintrp = interpolateTemperature(results,X,Y);
Изменить форму Tintrp векторно и построить график результирующих температур.
Tintrp = reshape(Tintrp,size(X)); figure contourf(X,Y,Tintrp) colormap(hot) colorbar

Кроме того, сетку можно задать с помощью матрицы точек запроса.
querypoints = [X(:),Y(:)]'; Tintrp = interpolateTemperature(results,querypoints);
Создание тепловой модели для стационарного анализа.
thermalmodel = createpde('thermal');Создайте следующую геометрию 3-D и включите ее в модель.
importGeometry(thermalmodel,'Block.stl'); pdegplot(thermalmodel,'FaceLabels','on','FaceAlpha',0.5) title('Copper block, cm') axis equal

Предполагая, что это медный блок, теплопроводность блока составляет приблизительно 4 Вт/( см * К).
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и так далее. Например, постройте график температур в узловых местах.
figure;
pdeplot3D(thermalmodel,'ColorMapData',thermalresults.Temperature)
Создать сетку, заданную x, y, и z координаты и интерполяция температур в сетку.
[X,Y,Z] = meshgrid(1:16:100,1:6:20,1:7:50); Tintrp = interpolateTemperature(thermalresults,X,Y,Z);
Создание графика горизонталей для фиксированных значений y координата.
figure Tintrp = reshape(Tintrp,size(X)); contourslice(X,Y,Z,Tintrp,[],1:6:20,[]) xlabel('x') ylabel('y') zlabel('z') xlim([1,100]) ylim([1,20]) zlim([1,50]) axis equal view(-50,22) colorbar

Кроме того, сетку можно задать с помощью матрицы точек запроса.
querypoints = [X(:),Y(:),Z(:)]'; Tintrp = interpolateTemperature(thermalresults,querypoints);
Создание графика горизонталей для четырех фиксированных значений z координата.
figure Tintrp = reshape(Tintrp,size(X)); contourslice(X,Y,Z,Tintrp,[],[],1:7:50) xlabel('x') ylabel('y') zlabel('z') xlim([1,100]) ylim([1,20]) zlim([1,50]) axis equal view(-50,22) colorbar

Решите проблему 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

Назначьте следующие тепловые свойства:
Теплопроводность 100 Вт/( м * C)
Массовая плотность 7800 кг/м ^ 3
Удельная теплота составляет 500 Дж/( кг * 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',4);Создание сетки и решение проблемы с помощью 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)); Tintrp = interpolateTemperature(thermalresults,X,Y,1:length(tlist));
Постройте график интерполированной температуры Tintrp вдоль x ось для следующих значений из интервала времени tlist.
figure t = [51:50:201]; for i = t p(i) = plot(X,Tintrp(:,i),'DisplayName', strcat('t=', num2str(tlist(i)))); hold on end legend(p(t)) xlabel('x') ylabel('Tintrp')

thermalresults - Решение тепловой проблемыSteadyStateThermalResults объект | TransientThermalResults объектРешение тепловой задачи, указанной как SteadyStateThermalResults объект или TransientThermalResults объект. Создать thermalresults использование solve.
Пример: thermalresults = solve(thermalmodel)
xq - точки запроса координат Xточки запроса координат x, заданные как вещественный массив. interpolateTemperature оценивает температуры в 2-D координатных точках [xq(i),yq(i)] или в точках координат 3-D [xq(i),yq(i),zq(i)]. Так xq, yq, и (при наличии) zq должно иметь одинаковое количество записей.
interpolateTemperature преобразует точки запроса в векторы столбцов xq(:), yq(:), и (при наличии) zq(:). Он возвращает температуры в виде вектора столбца того же размера. Чтобы убедиться, что измерения возвращенного решения согласуются с измерениями исходных точек запроса, используйте reshape. Например, использовать Tintrp = reshape(Tintrp,size(xq)).
Типы данных: double
yq - точки запроса координат yточки запроса координат y, заданные как вещественный массив. interpolateTemperature оценивает температуры в 2-D координатных точках [xq(i),yq(i)] или в точках координат 3-D [xq(i),yq(i),zq(i)]. Так xq, yq, и (при наличии) zq должно иметь одинаковое количество записей. Внутри, interpolateTemperature преобразует точки запроса в вектор столбца yq(:).
Типы данных: double
zq - точки запроса координат Zточки запроса координат z, заданные как вещественный массив. interpolateTemperature оценивает температуры в 3-D координатных точках [xq(i),yq(i),zq(i)]. Так xq, yq, и zq должно иметь одинаковое количество записей. Внутри, interpolateTemperature преобразует точки запроса в вектор столбца zq(:).
Типы данных: double
querypoints - Точки запросаТочки запроса, заданные как вещественная матрица с двумя строками для 2-D геометрии или тремя строками для 3-D геометрии. interpolateTemperature оценивает температуры в координатных точках 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
Tintrp - Температуры в точках запросаТемпературы в точках запроса, возвращаемые в виде массива. Для точек запроса, которые находятся вне геометрии, Tintrp = NaN.
evaluateHeatFlux | evaluateHeatRate | evaluateTemperatureGradient | SteadyStateThermalResults | ThermalModel | TransientThermalResults
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.