exponenta event banner

addFace

Заполнение пустот в 2-D и разделение ячеек в геометрии 3-D

Описание

пример

h = addFace(g,edges) добавляет новую грань к геометрии g. Указанные кромки должны образовывать замкнутый контур. Для 2-D геометрии добавление новой грани позволяет заполнить пустоты в геометрии. Для 3-D геометрии добавление новой грани позволяет разделить одну ячейку на несколько ячеек.

Можно добавить несколько новых граней одновременно, указав их контуры в массиве ячеек. Каждый контур в массиве ячеек должен быть уникальным.

Примечание

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

пример

[h,FaceID] = addFace(g,edges) также возвращает вектор строки, содержащий идентификаторы добавленных граней.

Примеры

свернуть все

Добавьте грань к 2-D геометрии для заполнения внутренней полости.

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

model = createpde();

Импортируйте геометрию. Эта геометрия имеет одну грань.

gm = importGeometry(model,'PlateSquareHolePlanar.stl')
gm = 
  DiscreteGeometry with properties:

       NumCells: 0
       NumFaces: 1
       NumEdges: 8
    NumVertices: 8
       Vertices: [8x3 double]

Постройте график геометрии и отобразите метки граней.

pdegplot(gm,'FaceLabels','on')

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

Увеличьте изображение и отобразите метки кромок небольшого отверстия в центре.

figure
pdegplot(gm,'EdgeLabels','on')
axis([49 51 99 101])

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

Заполните отверстие путем добавления грани. Количество граней в геометрии изменяется на 2.

gm = addFace(gm,[1 8 4 5])
gm = 
  DiscreteGeometry with properties:

       NumCells: 0
       NumFaces: 2
       NumEdges: 8
    NumVertices: 8
       Vertices: [8x3 double]

Постройте график измененной геометрии и отобразите метки граней.

pdegplot(gm,'FaceLabels','on')

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

Добавьте грань в геометрию 3-D, чтобы разделить ячейку на две ячейки.

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

model = createpde();

Импортируйте геометрию. Геометрия состоит из одной ячейки.

gm = importGeometry(model,'MotherboardFragment1.STL')
gm = 
  DiscreteGeometry with properties:

       NumCells: 1
       NumFaces: 26
       NumEdges: 46
    NumVertices: 34
       Vertices: [34x3 double]

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

pdegplot(gm,'EdgeLabels','on','FaceAlpha',0.5)

xlim([-0.05 0.05])
ylim([-0.05 0.05])
zlim([0 0.05])

Figure contains an axes. The axes contains 3 objects of type quiver, patch, line.

Разбейте кубоид с правой стороны на отдельную ячейку. Для этого добавьте грань, ограниченную кромками 1, 3, 6 и 12.

[gm,ID] = addFace(gm,[1 3 6 12])
gm = 
  DiscreteGeometry with properties:

       NumCells: 2
       NumFaces: 27
       NumEdges: 46
    NumVertices: 34
       Vertices: [34x3 double]

ID = 27

Постройте график измененной геометрии и отобразите метки ячеек.

pdegplot(gm,'CellLabels','on','FaceAlpha',0.5)

Figure contains an axes. The axes contains 3 objects of type quiver, patch, line.

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

[gm,IDs] = addFace(gm,{[5 7 8 10], ...
                        30, ...
                        31, ...
                        32, ...
                        33, ...
                        13})
gm = 
  DiscreteGeometry with properties:

       NumCells: 8
       NumFaces: 33
       NumEdges: 46
    NumVertices: 34
       Vertices: [34x3 double]

IDs = 6×1

    28
    29
    30
    31
    32
    33

Постройте график измененной геометрии и отобразите метки ячеек.

pdegplot(gm,'CellLabels','on','FaceAlpha',0.5)

Figure contains an axes. The axes contains 3 objects of type quiver, patch, line.

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

свернуть все

Геометрия, заданная как DiscreteGeometry или AnalyticGeometry объект.

Рёбра, образующие уникальный замкнутый плоский контур, определяемый как вектор положительных целых чисел или клеточный массив таких векторов. Можно задать кромки в векторе в любом порядке.

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

Пример: addFace(g,[1 3 4 7])

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

свернуть все

Результирующая геометрия, возвращенная как маркер перемещения.

Идентификатор грани, возвращаемый как положительное число или вектор строки положительных чисел. Каждое число представляет идентификатор грани. При добавлении новой грани к геометрии с N гранями идентификатор добавленной грани равен N + 1.

Совет

  • addFace ошибки, когда указанный контур определяет уже существующую грань.

  • addFace всегда изменяет исходную геометрию g.

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