Partial Differential Equation Toolbox™ позволяет вам находить элементы и узлы сетки по их геометрическому местоположению или близости к определенной точке или узлу. Этот пример работает с группой элементов и узлов, расположенных в указанном ограниченном диске.
Создайте статическую тепловую модель.
thermalmodel = createpde('thermal','steadystate');
Импортируйте и постройте график геометрии.
importGeometry(thermalmodel,'PlateHolePlanar.stl'); pdegplot(thermalmodel,'FaceLabels','on','EdgeLabels','on')
Присвойте теплопроводность материала.
thermalProperties(thermalmodel,'ThermalConductivity',1);
Применить постоянную температуру на левый край и постоянную температуру на правое ребро. По умолчанию все другие ребра изолированы.
thermalBC(thermalmodel,'Edge',4,'Temperature',20); thermalBC(thermalmodel,'Edge',1,'Temperature',-10);
Сгенерируйте mesh и решите проблему. В данном примере используйте линейный mesh, чтобы лучше увидеть узлы на сетчатых графиках. Дополнительные узлы квадратичного mesh затрудняют четкий просмотр графиков в этом примере.
mesh = generateMesh(thermalmodel,'GeometricOrder','linear'); thermalresults = solve(thermalmodel);
Решатель находит температуры и градиенты температуры во всех узловых местоположениях. Постройте график температур.
pdeplot(thermalmodel,'XYData',thermalresults.Temperature) axis equal
Предположим, что вам нужно более тщательно анализировать результаты вокруг центрального отверстия. Сначала найдите узлы и элементы, расположенные рядом с отверстием, используя findNodes
и findElements
функций. Например, найдите узлы и элементы, расположенные в радиусе 2,5 от центра [5 10].
Nr = findNodes(mesh,'radius',[5 10],2.5); Er = findElements(mesh,'radius',[5 10],2.5);
Подсветите узлы в этом радиусе на сетчатом графике с помощью зеленого маркера.
figure pdemesh(thermalmodel) hold on plot(mesh.Nodes(1,Nr),mesh.Nodes(2,Nr),'or','MarkerFaceColor','g')
Найдите минимальную и максимальную температуры в заданном радиусе.
[Temps_disk] = thermalresults.Temperature(Nr); [T_min,index_min] = min(Temps_disk); [T_max,index_max] = max(Temps_disk); T_min
T_min = -2.1698
T_max
T_max = 12.2420
Найдите идентификаторы узлов, соответствующие минимальным и максимальным температурам. Постройте график этих узлов на сетчатом графике.
nodeIDmin = Nr(index_min); nodeIDmax = Nr(index_max); figure pdemesh(thermalmodel) hold on plot(mesh.Nodes(1,nodeIDmin),mesh.Nodes(2,nodeIDmin),'or','MarkerFaceColor','b') plot(mesh.Nodes(1,nodeIDmax),mesh.Nodes(2,nodeIDmax),'or','MarkerFaceColor','r')
Теперь подсветите элементы в заданном радиусе на сетчатый график с помощью зеленого маркера.
figure pdemesh(thermalmodel) hold on pdemesh(mesh.Nodes,mesh.Elements(:,Er),'EdgeColor','green')
Показать решение только для этих элементов.
figure
pdeplot(mesh.Nodes,mesh.Elements(:,Er),'XYData',thermalresults.Temperature)