Дифференциальное уравнение в частных производных Toolbox™ позволяет находить элементы и узлы сетки по их геометрическому расположению или близости к определенной точке или узлу. Этот пример работает с группой элементов и узлов, расположенных в пределах указанного ограничивающего диска.
Создайте стационарную тепловую модель.
thermalmodel = createpde('thermal','steadystate');
Импорт и печать геометрии.
importGeometry(thermalmodel,'PlateHolePlanar.stl'); pdegplot(thermalmodel,'FaceLabels','on','EdgeLabels','on')

Назначьте теплопроводность материала.
thermalProperties(thermalmodel,'ThermalConductivity',1);Применить постоянную температуру к левому краю и постоянную температуру 10∘Cto правому краю. Все остальные кромки по умолчанию изолированы.
thermalBC(thermalmodel,'Edge',4,'Temperature',20); thermalBC(thermalmodel,'Edge',1,'Temperature',-10);
Создайте сетку и решите проблему. В этом примере используйте линейную сетку, чтобы лучше видеть узлы на графиках сетки. Дополнительные узлы квадратичной сетки затрудняют четкое отображение графиков в этом примере.
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)