addFace

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

Описание

пример

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

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

Примечание

Новые поверхности изменяют геометрию, но они не изменяют mesh. После изменения геометрии всегда вызывайте generateMesh гарантировать соответствующую связь mesh с новой геометрией.

пример

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

Примеры

свернуть все

Добавьте поверхность в 2D геометрию, чтобы заполнить внутреннюю пустоту.

Создайте модель 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 object. The axes object contains an object of type line.

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

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

Figure contains an axes object. The axes object 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 object. The axes object 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 object. The axes object 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 object. The axes object 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 object. The axes object contains 3 objects of type quiver, patch, line.

Входные параметры

свернуть все

Геометрия в виде DiscreteGeometry или AnalyticGeometry объект.

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

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

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

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

свернуть все

Получившаяся геометрия, возвращенная как указатель.

Столкнитесь с ID, возвращенным как положительное число или вектор-строка из положительных чисел. Каждый номер представляет ID поверхности. Когда вы добавляете новую поверхность в геометрию с поверхностями N, ID добавленной поверхности является N + 1.

Советы

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

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

Введенный в R2020a