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 ячеек) или сфере (для 3-D ячеек), заданные как center и radius.

пример

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

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

Примеры

свернуть все

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

Создайте модель УЧП.

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.

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.

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

Создайте модель УЧП.

model = createpde;

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

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

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

Сгенерируйте mesh.

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.

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

Создайте модель УЧП.

model = createpde;

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

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

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

Сгенерируйте mesh.

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.

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

Создайте модель УЧП.

model = createpde;

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

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

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

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

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, заданный как 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 mesh. Элементы этих векторов содержат координаты центра круга или сферы.

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

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

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

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

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

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

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

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

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

свернуть все

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

Введенный в R2018a