Исправление импортированных сеток в COMSOL Multiphysics®

19/07/2022

После импорта расчётной сетки иногда полезно внести в неё некоторые изменения. В этой статье блога мы рассмотрим функциональные возможности редактирования, исправления и объединения импортированных поверхностных сеток в COMSOL Multiphysics®. Мы сравним результаты выполнения различных операций, представим некоторые примеры их использования и дадим ссылки на учебные модели и другие материалы для дальнейшего изучения.

Примечание редактора: первая версия этой статьи была опубликована 25 февраля 2021 года. Новая редакция статьи написана с учётом новых возможностей и функций COMSOL Multiphysics® версии 6.0.

Импортируемые форматы поверхностных сеток

COMSOL Multiphysics поддерживает импорт геометрических моделей и сеточных данных в формате трёхмерных поверхностных сеток. Наиболее распространёнными форматами, которые поддерживаются программой, являются:

  1. STL
  2. 3MF
  3. PLY

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

  1. углы в треугольных элементах слишком большие или маленькие
  2. размеры треугольных элементов сильно отличаются
  3. в сеточных данных имеются проблемные области, например разрывы, тонкие выступы и другие нежелательные искажения формы элементов

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

Методы исправления поверхностной сетки

Существует несколько операций, позволяющих исправить и отредактировать поверхностную сетку после импорта:

  • Операции создания геометрических объектов:
    • Create Vertices
    • Create Edges
    • Create Faces
    • Create Domains
    • Fill Holes
  • Операции построения пересечений и объединений, а также разбиения и удаления объектов:
    • Union
    • Intersect with Plane (3D)
    • Intersect with Line (2D)
    • Partition with Ball
    • Partition with Box
    • Partition with Cylinder
    • Partition by Expression
    • Join Entities
    • Delete Entities
  • Операции построения и изменения сеток:
    • Free Quad
    • Free Triangular
    • Free Tetrahedral
    • Adapt
    • Refine

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

Уменьшение размеров и адаптация поверхностной сетки

Операция Refine позволяет уменьшить размер элементов импортированной сетки. Если же нужна операция, которая также поддерживает и увеличение размера элементов, можно воспользоваться операциями Adapt и Free Triangular. Все три названные операции создают новые или перемещают имеющиеся узлы сетки на криволинейной поверхности, аппроксимирующей исходную сетку. Таким образом, чем меньше размер элементов сетки, тем более гладко сетка воспроизводит криволинейные поверхности, как показано ниже. В статье блога «How to Refine and Adapt Imported Meshes» об этом рассказано более подробно.

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

Грубая треугольная сетка для сферической поверхности.
Грубая треугольная сетка для сферической поверхности. В верхней части размер элементов сетки немного меньше, чем в остальной части поверхности.

Чтобы сравнить результаты выполнения операций Refine, Adapt и Free Triangular, импортируем грубую сетку для сферической поверхности в три разные модели. Характерный размер самых больших треугольных элементов равен примерно 0.6 м. В окне настройки узла Refine укажем, что операция уменьшения элементов должна быть выполнена один раз. В результате каждый треугольник будет разбит на четыре новых треугольника меньшего размера. Если в окне настройки узла Adapt для параметра Solution выбрать опцию None, а для параметра Type of expression выбрать Absolute, тогда можно задать целевой размер элемента (в данном случае 0.3 м), который будет использован алгоритмом адаптации сетки. Для операции Free Triangular можно задать максимальный размер элемента; в данном примере он равен 0.3 м. При выполнении этой сеточной операции в фоновом режиме незаметно для пользователя создается гладкая геометрическая поверхность, на которой и строится новая сетка.

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

Уменьшение размеров элементов грубой сетки сферической поверхности с помощью операции Refine (слева). В центре показан результат применения операции Adapt . Сетка, показанная справа, перестроена с помощью операции Free Triangular.

Как видно на рисунке, операция Refine уменьшает размер всех треугольных элементов, даже тех, которые изначально имеют меньший размер. Операция Adapt увеличивает размер мелких элементов сетки в верхней части и уменьшает размер более крупных элементов, в результате чего различие в размере элементов сокращается. Для построения сетки с элементами практически одинакового размера можно воспользоваться операцией Free Triangular.

Поскольку в процессе выполнения операции Free Triangular создаётся базовая гладкая геометрическая поверхность, а операция Adapt может изменять импортированную сетку, увеличивая размер её элементов, иногда целесообразно использовать эти операции для сглаживания небольших неровностей поверхности. Добавление нескольких одинаковых операций или любой их комбинации для одной и той же границы ещё сильнее сгладит итоговую сетку, поскольку информация о том, как выглядела сетка до перестроения, не сохраняется.

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

Сглаживание неровностей импортированной STL-сетки (слева) низкого качества. В центре показан результат двукратного выполнения операции Adapt . Справа показана сетка, построенная с помощью однократного выполнения операции Free Triangular.

Соединение двух импортированных сеток с помощью построения рёбер и граней

Операции Create Vertices, Create Edges и Create Faces позволяют строить сеточные элементы в пустом пространстве. На слайдах ниже показано, как использовать операции для устранения разрыва между двумя импортированными сетками, разделёнными зазором. Импортированы две независимые сетки цилиндрических поверхностей — одна с овальным поперечным сечением (S-образная трубка слева), другая с круглым поперечным сечением (трубка справа). Необходимо соединить рёбра, выделенные синим цветом, чтобы объединить два объекта.

Сначала воспользуемся операцией Create Vertices, чтобы обеспечить одинаковое количество узлов на рёбрах обеих сеток. Соединим узлы рёбрами с помощью операции Create Edges. Построенные этой операцией рёбра всегда прямые. Затем на каждом контуре, сформированном рёбрами, построим поверхности с помощью операции Create Faces. Наконец, соединим поверхности, и перестроим на них сетку с помощью операции Free Triangular. Как видно на последнем рисунке, повторное перестроение сетки для объединенной поверхности делает её более гладкой, и теперь трудно заметить, что изначально трубки не были соединены.

  • Синим цветом отмечены рёбра на сетках двух цилиндрических поверхностей.
    Синим цветом отмечены рёбра на сетках двух цилиндрических поверхностей.
  • Результат соединения вершин элементов с помощью операции Create Edges.
    Результат соединения вершин элементов с помощью операции Create Edges.
  • Для каждого замкнутого контура из ребёр сеток построены новые грани.
    Для каждого замкнутого контура из ребёр сеток построены новые грани.
  • Сетка после объединения двух цилиндрических поверхностей.
    Сетка после объединения двух цилиндрических поверхностей.


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

Пересечение и разделение поверхностной сетки

Если две импортированные поверхностные сетки пересекаются, то построить границу пересечения и обновить информацию о доменах расчётной области можно с помощью операции Union. Зачастую целесообразно перестроить или адаптировать поверхностную сетку, чтобы улучшить качество элементов, как показано ниже.

Показаны пересекающиеся сетки цилиндрической и сферической поверхностей.
Сетка после объединения и модификации.

Слева показаны две импортированные пересекающиеся сетки, а справа сетка, построенная с помощью операций Union и Adapt.

Иногда импортированную сетку нужно разбить или рассечь, чтобы получить грани для постановки необходимых граничных условий. Давайте рассмотрим важное различие между этими операциями на примере импортированной сетки, которую нужно разбить или рассечь плоскостью z = 1. Как показано на рисунке ниже, секущая плоскость проходит через ребра треугольников. Операция рассечения разделит элементы сетки секущей плоскостью и построит новое геометрическое ребро. Операция же разбиения построит геометрическое ребро вдоль существующих рёбер элементов сетки, которые расположены вблизи секущей плоскости.

Операция Intersect with Plane применима только к поверхностным сеткам. Она рассекает элементы сетки, то есть треугольные элементы разделяются секущей плоскостью с построением новых узлов, рёбер и треугольников. В результате рассекаемые поверхности делятся прямым ребром, как показано на рисунке слева. При необходимости с помощью алгоритма Cleanup of resulting mesh можно удалить короткие рёбра сетки и мелкие элементы, которые могли появиться в результате выполнения операции.

Примечание: ещё один пример использования операции Intersect with Plane с подробными комментариями можно найти в учебной модели STL Import Tutorial Series.

Увеличенное изображение сетки до выполнения операции Intersect with Plane.
Увеличенное изображение сетки после выполнения операции Intersect with Plane, измененная область выделена синим цветом.

На рисунке показана сетка до (слева) и после (справа) выполнения операции Intersect with plane. Сетка рассекается выделенной голубым цветом секущей плоскостью z = 1 (слева). Плоскость рассекает сетку по верхней грани голубой области. Образованная после выполнения операции верхняя грань (выделена синим цветом) имеет прямую нижнюю границу (справа).

Операция разбиения применима к объёмным и поверхностным сеткам. Домены и поверхности можно разбивать с помощью объектов разной формы:

  • шара
  • параллелепипеда
  • сферы
  • формы, заданной пользовательским уравнением

Название разбиение в данном случае означает, что новые объекты формируются в зависимости от того, попадает ли элемент в заданную ограниченную область или нет. При выполнении этой операции элементы и рёбра сетки не разделяются. Таким образом, количество элементов сетки в доменах и на поверхностях остается неизменным, а построенные рёбра будут совпадать с существующими рёбрами сетки, как показано на рисунке внизу справа.

Увеличенное изображение сетки до выполнения операции Partition with Box
Увеличенное изображение сетки после выполнения операции Partition with Box

На рисунке показана сетка до и после выполнения операции Partition with Box . Слева: исходная сетка и секущая плоскость z = 1, выделенная голубым цветом, которая является гранью параллелепипеда, разбивающего сетку. Справа: построенная геометрическая грань проходит по ребрам уже имеющихся сеточных элементов, ближайших к плоскости z = 1.

Сравнение операций разбиения и построения рёбер

Разделить поверхность можно не только разбиением, но и с помощью операции Create Edges. Операции разбиения выполняются быстро, но при этом ограничены использованием определённых геометрических фигур и логических выражений. Операция же Create Edges является более гибкой, поскольку каждое ребро сетки выбирается вручную. Эта операция обычно используется, когда нужно отделить небольшое количество элементов сетки.

Примечание: операция Create Edges используется в учебной модели STL Import Tutorial Series. Скачайте файлы модели, чтобы узнать об этой операции больше.

Например, мы можем использовать операцию Partition with ball, чтобы отделить часть поверхности, образующую мелкий выступ, как показано на рисунках ниже. Параметры разбиения можно задать так, чтобы в область разбиения были включены все треугольные элементы, вершины которых расположены внутри заданной сферы. Альтернативным вариантом является использование операции Create Edges. Она позволяет более точно настроить выбор ребёр сетки, которые будут использованы для формирования граней, ограничивающих новую поверхность.

Сетка с мелким выступом, выделенным синим цветом, и розовым кругом, описывающим область применения операции Partition with ball.
Сетка с мелким выступом, выделенным синим цветом, и розовым кругом, описывающим область применения операции Partition with ball.

На рисунке слева в область разбиения включаются элементы, все вершины которых находятся внутри заданной сферы, а на рисунке справа в область разбиения включаются элементы, хотя бы одна вершина которых лежит внутри сферы. В обоих случаях граница новой поверхности (выделена синим цветом) становится ломаной.

Увеличенное изображение мелкого выступа на поверхности, рёбра которого выбраны вручную (выделены синим цветом).
Увеличенное изображение мелкого выступа после выполнения операции Create Edges. Граница отделенной поверхности имеет более ровную форму.

В данном случае рёбра элементов сетки выбраны с помощью курсора мышки в графическом окне (слева). Это довольно быстрая процедура, в результате которой нижняя граница выделенной поверхности приобретает более ровную форму (справа, выделен синим цветом).

Автоматизация часто используемых операций

Некоторые операции или целые последовательности операций используются при редактировании и исправлении импортированных сеток чаще других. Одним из вариантов автоматизации рабочего процесса построения или настройки модели является создание макросов или макросов-надстроек.

Например, в импортированных сетках пористых структур часто имеются узкие перемычки, соединяющие одну часть сетки с другой. Такие перемычки могут создать проблемы при построении геометрической модели или при регенерации сетки, поскольку поверхность перемычки легко становится самопересекающейся. Иногда такие проблемные зоны целесообразно удалить. Проще всего это сделать, если сначала задать центр вращения на границе, кликнув средней кнопкой мыши. Затем с помощью макроса-надстройки Ball Partition добавить и настроить операцию Partition with ball в сферической области с заданным центром (рисунок ниже слева). В результате часть поверхности будет выделена в виде отдельной границы.

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

Поверхностная сетка пористой структуры. Перемычка в центре соединяет одну часть поверхности с другой. Мы зафиксировали на перемычке центральную точку (рисунок слева) и воспользовались макросом-надстройкой Ball Partition, чтобы задать область разбиения для операции Partition with Ball (рисунок справа).

Этот макрос-надстройка позволяет достаточно просто удалить перемычку и закрыть образовавшиеся в результате отверстия.

Сетка с отделенной перемычкой, выделенной синим цветом.
Исправленная сетка без перемычки.

Перемычка, которую нужно удалить, выбрана и выделена как отдельная граница (показана синим цветом на рисунке слева). На рисунке справа показана исправленная сетка.

Объёмные сетки

Если импортированную объёмную сетку нужно перестроить, то в настройках операции Import нужно отключить опцию Import domain elements. Альтернативным вариантом является непосредственное удаление объёмных элементов с сохранением поверхностной сетки и доменов без объёмной сетки. Воспользуйтесь операцией Delete Entities, выберите домены, в которых требуется удалить элементы, и включите опцию Keep as unmeshed domains.

Окно настройки операции импорта в графической оболочке COMSOL Multiphysics.
Окно настройки операции Delete Entities в графической оболочке COMSOL Multiphysics.

Чтобы достроить трёхмерную тетраэдральную сетку в доменах, воспользуйтесь операцией Free Tetrahedral.

Заключение

Импортированные сетки можно редактировать и дорабатывать разными способами, и COMSOL® предлагает множество функций, которые позволяют это сделать.

Если вы хотите самостоятельно поработать с импортированными сетками, воспользуйтесь серией учебных моделей из Библиотеки приложений. В первой части серии показано, как построить геометрию на основе STL-сетки и найти её пересечение с построенным в COMSOL параллелепипедом. Во второй части серии в модель импортируются две поверхностные сетки, на основе которых затем непосредственно строится трёхмерная тетраэдральная сетка, без промежуточного создания геометрической модели. Эти примеры позволят вам получить общее представление об инструментах редактирования и исправления импортированных поверхностных сеток.

Дополнительные ресурсы

Узнать больше о работе с сетками в COMSOL можно с помощью следующих материалов:


Комментарии (0)

Оставить комментарий
Войти | Регистрация
Загрузка...
РУБРИКАТОР БЛОГА COMSOL
РУБРИКИ
ТЕГИ