Интерполируйте температуру в тепловом результате в произвольных пространственных местоположениях
возвращает интерполированные значения температуры в точках 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 Вт/( м * К). Поскольку это статическая модель, вам не нужно присваивать массовую плотность или конкретные значения тепла.
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 Вт/( м * С)
Плотность массы 7800 кг/м ^ 3
Удельное тепло 500 Дж/( кг * С)
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)); 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.