exponenta event banner

findElements

Поиск элементов сетки в указанной области

Описание

пример

elemIDs = findElements(mesh,'region',RegionType,RegionID) возвращает идентификаторы элементов сетки, принадлежащих указанной геометрической области.

elemIDs = findElements(mesh,'box',xlim,ylim) возвращает идентификаторы элементов сетки в ограничивающей рамке, указанной xlim и ylim. Этот синтаксис используется для 2-D сетей.

пример

elemIDs = findElements(mesh,'box',xlim,ylim,zlim) возвращает идентификаторы элементов сети, расположенных в ограничивающей рамке, указанной xlim, ylim, и zlim. Этот синтаксис используется для 3-D сетей.

пример

elemIDs = findElements(mesh,'radius',center,radius) возвращает идентификаторы элементов сетки, расположенных в пределах круга (для 2-D meshes) или сферы (для 3-D meshes), указанных center и radius.

пример

elemIDs = findElements(mesh,'attached',nodeID) возвращает идентификаторы элементов сетки, присоединенных к указанному узлу. Здесь, nodeID - идентификатор углового узла. Этот синтаксис игнорирует идентификаторы узлов, расположенных в середине краев элементов.

Для нескольких узлов укажите nodeID как вектор.

Примеры

свернуть все

Найдите элементы, связанные с геометрической областью.

Создайте модель PDE.

model = createpde;

Включить геометрию встроенной функции lshapeg. Постройте график геометрии.

geometryFromEdges(model,@lshapeg);
pdegplot(model,'FaceLabels','on','EdgeLabels','on')

Figure contains an axes. The axes contains 14 objects of type line, text.

Создайте сетку.

mesh = generateMesh(model,'Hmax',0.5);

Найдите элементы, связанные с гранью 2.

Ef2 = findElements(mesh,'region','Face',2);

Выделите эти элементы зеленым цветом на графике сетки.

figure
pdemesh(mesh,'ElementLabels','on')
hold on
pdemesh(mesh.Nodes,mesh.Elements(:,Ef2),'EdgeColor','green')

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

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

Создайте модель PDE.

model = createpde;

Импорт и печать геометрии.

importGeometry(model,'PlateHolePlanar.stl');
pdegplot(model)

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

Создайте сетку.

mesh = generateMesh(model,'Hmax',2,'Hmin',0.4)
mesh = 
  FEMesh with properties:

             Nodes: [2x386 double]
          Elements: [6x172 double]
    MaxElementSize: 2
    MinElementSize: 0.4000
     MeshGradation: 1.5000
    GeometricOrder: 'quadratic'

Найдите элементы, расположенные в следующем поле.

Eb = findElements(mesh,'box',[5 10],[10 20]);

Выделите эти элементы зеленым цветом на графике сетки.

figure
pdemesh(model)
hold on
pdemesh(mesh.Nodes,mesh.Elements(:,Eb),'EdgeColor','green')

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

Найдите элементы, расположенные на указанном диске.

Создайте модель PDE.

model = createpde;

Импорт и печать геометрии.

importGeometry(model,'PlateHolePlanar.stl');
pdegplot(model)

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

Создайте сетку.

mesh = generateMesh(model,'Hmax',2,'Hmin',0.4,'GeometricOrder','linear')
mesh = 
  FEMesh with properties:

             Nodes: [2x107 double]
          Elements: [3x172 double]
    MaxElementSize: 2
    MinElementSize: 0.4000
     MeshGradation: 1.5000
    GeometricOrder: 'linear'

Найдите элементы, расположенные в радиусе 2 от центра [5,10].

Er = findElements(mesh,'radius',[5 10],2);

Выделите эти элементы зеленым цветом на графике сетки.

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

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

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

Создайте модель PDE.

model = createpde;

Импорт и печать геометрии.

importGeometry(model,'PlateHolePlanar.stl');
pdegplot(model)

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

Создание линейной треугольной сетки путем задания значения геометрического порядка linear. Эта сетка содержит только угловые узлы.

mesh = generateMesh(model,'Hmax',2,'Hmin',0.4, ...
                          'GeometricOrder','linear');

Найдите узел, ближайший к точке [15; 10].

N_ID = findNodes(mesh,'nearest',[15;10])
N_ID = 10

Найдите элементы, присоединенные к этому узлу.

En = findElements(mesh,'attached',N_ID)
En = 1×3

    95    97    98

Выделите узел и элементы зеленым цветом на сеточном графике.

figure
pdemesh(model)
hold on
plot(mesh.Nodes(1,N_ID),mesh.Nodes(2,N_ID),'or','Color','g', ...
                                           'MarkerFaceColor','g')
pdemesh(mesh.Nodes,mesh.Elements(:,En),'EdgeColor','green')

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

Входные аргументы

свернуть все

Объект-сеть, указанный как Mesh свойство PDEModel объект или как вывод generateMesh.

Пример: model.Mesh

Тип геометрической области, указанный как 'Cell' или 'Face'.

Пример: findElements(mesh,'region','Face',1:3)

Типы данных: char

Идентификатор геометрической области, заданный как вектор положительных целых чисел. Поиск идентификаторов регионов с помощью pdegplot.

Пример: findElements(mesh,'region','Face',1:3)

Типы данных: double

X-пределы ограничивающей рамки, заданные как двухэлементный вектор строки. Первый элемент xlim является нижней x-границей, а второй элемент является верхней x-границей.

Пример: findElements(mesh,'box',[5 10],[10 20])

Типы данных: double

y-пределы ограничивающей рамки, заданные как двухэлементный вектор строки. Первый элемент ylim - нижняя граница y, а второй элемент - верхняя граница y.

Пример: findElements(mesh,'box',[5 10],[10 20])

Типы данных: double

Z-пределы ограничивающего параллелепипеда, заданного как двухэлементный вектор строки. Первый элемент zlim - нижняя z-граница, а второй элемент - верхняя z-граница. Можно указать zlim только для 3-D сетей.

Пример: findElements(mesh,'box',[5 10],[10 20],[1 2])

Типы данных: double

Центр ограничивающей окружности или сферы, заданный как двухэлементный вектор строки для 2-D сети или трехэлементный вектор строки для 3-D сети. Элементы этих векторов содержат координаты центра окружности или сферы.

Пример: findElements(mesh,'radius',[0 0 0],0.5)

Типы данных: double

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

Пример: findElements(mesh,'radius',[0 0 0],1)

Типы данных: double

Идентификатор углового узла элемента, заданный как положительное целое число или вектор положительных целых чисел. findElements функция может найти идентификатор элемента по идентификатору углового узла элемента. Функция игнорирует идентификаторы узлов, расположенных в середине кромок элементов. Для нескольких узлов укажите nodeID как вектор.

Пример: findElements(mesh,'attached',[7 8 21])

Типы данных: double

Выходные аргументы

свернуть все

Идентификаторы элементов, возвращаемые как положительное целое число или вектор строки положительных целых чисел.

Представлен в R2018a