Поиск элементов сетки и узлов по местоположению

Partial Differential Equation Toolbox™ позволяет вам находить элементы и узлы сетки по их геометрическому местоположению или близости к определенной точке или узлу. Этот пример работает с группой элементов и узлов, расположенных в указанном ограниченном диске.

Создайте статическую тепловую модель.

thermalmodel = createpde('thermal','steadystate');

Импортируйте и постройте график геометрии.

importGeometry(thermalmodel,'PlateHolePlanar.stl');
pdegplot(thermalmodel,'FaceLabels','on','EdgeLabels','on')

Figure contains an axes. The axes contains an object of type line.

Присвойте теплопроводность материала.

thermalProperties(thermalmodel,'ThermalConductivity',1);

Применить постоянную температуру 20C на левый край и постоянную температуру -10Cна правое ребро. По умолчанию все другие ребра изолированы.

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

Figure contains an axes. The axes contains an object of type patch.

Предположим, что вам нужно более тщательно анализировать результаты вокруг центрального отверстия. Сначала найдите узлы и элементы, расположенные рядом с отверстием, используя 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')

Figure contains an axes. The axes contains 3 objects of type line.

Найдите минимальную и максимальную температуры в заданном радиусе.

[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 contains an axes. The axes contains 4 objects of type line.

Теперь подсветите элементы в заданном радиусе на сетчатый график с помощью зеленого маркера.

figure
pdemesh(thermalmodel)
hold on
pdemesh(mesh.Nodes,mesh.Elements(:,Er),'EdgeColor','green')

Figure contains an axes. The axes contains 3 objects of type line.

Показать решение только для этих элементов.

figure
pdeplot(mesh.Nodes,mesh.Elements(:,Er),'XYData',thermalresults.Temperature)

Figure contains an axes. The axes contains an object of type patch.

Для просмотра документации необходимо авторизоваться на сайте