Перейти к статье

 

Генерация сетки по схеме Протяжка

Область применения: объемы.

Краткая характеристика: Создание регулярной сетки из элементов-гексаэдров (sweep).

Используемые команды:

volume <range> scheme sweep [source [surface] <range>]
      [target [surface] <range>] [propagate_bias]
      [sweep_smooth {auto | smart_affine | linear | residual | Winslow}]
      [sweep_transform {LEAST_SQUARES | translate}]
      [autosmooth_target [off | ON]

volume <range> scheme sweep vector <xval yval zval>

volume <range> autosmooth_target [off | ON]

Родственные команды:

set multisweep [on | off]

multisweep smoothing {ON | off}

multisweep volume <range> remove

volume <range> redistribute nodes {ON | off}

Пояснения: Алгоритм, реализующий схему Протяжка [Knupp, 1998, Scott et.al, 2005], генерирует в объемных геометрических объектах сетку из элементов-гексаэдров. Генерация осуществляется путем "протягивания" (экструзии) поверхностной сетки, созданной на начальной поверхности объекта (исходной поверхности, или источнике), до топологически идентичной конечной поверхности (целевой поверхности, или цели). Движение протягиваемой поверхностной сетки в поперечных (относительно оси протяжки) направлениях ограничивается связывающими поверхностями. На Рис. 1 и 2 представлены примеры сеток, сгенерированных по схеме Протяжка, с указанием начальных, конечных и связывающих поверхностей.

Рис. 1 - Примеры генерации объемных сеток по схеме Протяжка

 

Рис. 2 - Генерация сетки протяжкой с множеством связывающих поверхностей

Пользователь может задать начальную и конечную поверхности. Он может также задать вектор, определяющий направление протяжки; при этом начальная и конечная поверхности определяются автоматически. Можно указать только начальную поверхность, а выбор конечной поверхности "поручить" программе. Вообще возможен автоматический выбор схемы с помощью команды scheme auto.

При использовании описываемой схемы на начальной поверхности строится  Регулярная сетка (верхняя модель на Рис. 1) или Неструктурированная сетка (нижняя модель на Рис. 1). Связывающие поверхности разбиваются по схеме Регулярная сетка либо Кусочно-регулярная сетка. Алгоритм протяжки может оперировать со множеством связывающих поверхностей (см. Рис. 2). При этом число интервалов на каждой их кромке, идущей от исходной поверхности к конечной, должно быть одним и тем же. После построения сетки на исходной поверхности и задания интервалов разбиения вдоль направления протяжки можно вызвать команду генерации mesh для построения объемной сетки.

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

Иногда для обеспечения протяжки требуется выполнить разбиение кривых, исходя из требований, дополнительных к стандартно устанавливаемым ограничениям на соответствие интервалов. Например, между начальной и конечной поверхностями должно располагаться одно и то же число слоев гексаэдров независимо от кривой, представляющей путь протяжки. Таким образом ограничивается число ребер кривых на связывающих поверхностях. Например, число интервалов на кривых, идущих вдоль поверхностей отверстий на Рис. 1, должно быть таким же, как на внешней поверхности.

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

Вводимое значение параметра sweep_transform определяет метод выполнения аффинных преобразований при создании проекций точек между начальной и конечной поверхностями и соединения их для формирования гексаэдров:

LEAST_SQUARES - по умолчанию аффинное преобразование выполняется по методу наименьших квадратов;

translate - выполняется простое аффинное преобразование на основе центров начальной и конечной поверхностей.

С помощью параметра sweep_smooth задается схема сглаживания положений внутренних узлов сетки, создаваемой протяжкой. Желаемое значение этого параметра (одно из 5 возможных) должно быть введено до непосредственного выполнения протяжки:

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

smart_affine - выполняется минимальное сглаживание внутренних узлов; аффинные преобразования используются для проецирования начальной и конечной поверхностей на срединную поверхность объема; положение каждого узла срединной поверхности определяется как среднее положений проецируемых узлов начальной и конечной поверхностей; вычисляется погрешность проецирования и линейно перераспределяется между начальной и конечной поверхностями;

residual - вычисляются корректирующие поправки для внутренних узлов, исходя из "разностей", полученных для граничных узлов; "разность" представляет собой расстояние между положением граничного узла, определенным поверхностной сеткой, и идеальным положением, определенным путем аффинного преобразования на основе предыдущего слоя; "разности" вычисляются в направлении от начальной поверхности к конечной и обратно для получения лучших положений узлов;

Winslow - сглаживание по Уинслоу, при котором каждый слой обрабатывается с помощью взвешенного эллиптического алгоритма; веса вычисляются по начальной сетке; при этом учитывается ее возможное сгущение;

AUTO - значение по умолчанию, которое позволяет алгоритму автоматически выбирать между сглаживанием согласно smart_affine и residual; автоматический выбор не гарантирует отсутствия отрицательных якобианов, но в большинстве случаев дает удовлетворительные результаты.

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

Опция autosmooth_target или аналогичная ей команда volume <range> autosmooth_target управляют положением узлов на конечной поверхности. При их использовании со значением off проецирование узлов с начальной поверхности на конечную будет производиться без последующего автоматического сглаживания с целью повышения качества сетки. Результатом является относительное расположение узлов, возможно близкое к расположению узлов на начальной поверхности. Это оправдано при построении сетки в достаточно тонких объемах, когда сглаживание может привести к скошенной сетке в пределах каждого тонкого слоя, образуемого при протяжке. Осесимметричные модели так же могут требовать "выключения" автоматического сглаживания, чтобы узлы располагались в плоскостях симметрии идентичным образом.

При использовании описываемой опции или соответствующей ей команды со значением on после первоначального проецирования узлов на конечную поверхность будет выполняться сглаживание их положения для улучшения качества поверхностной сетки (качество элементов-гексаэдров при этом не рассматривается) У команды volume <range> autosmooth_target on есть следующие опции:

fixed_imprints [on | OFF]

smart smooth [ON | off] tolerance <val 0.0 to 1.0=0.2>

nlayers <val>=0=5>

По умолчанию эта команда подвергает сглаживанию все узлы на конечной поверхности. С помощью опции fixed_imprint on из процедуры сглаживания исключаются узлы, являющиеся проекциями узлов исходных кривых или вершин. Сглаживаться будут только проекции узлов начальной поверхности. Опция smart smooth on обеспечивает управление сглаживанием со стороны пользователя. При этом в процессе сглаживания будут сдвигаться только узлы, которые находятся внутри диапазона nlayers <val> относительно четырехугольного элемента конечной поверхности, который имеет метрику качества якобиана, меньшую заданного значения tolerance.

Множественная протяжка

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

Рис. 3 - Примеры множественной протяжки

Протяжка группы объемов

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

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

group sweep volumes

В результате создается группа с именем "sweep_groups", которую можно разбить на элементы с помощью команды:

mesh sweep_groups

В некоторых автоматизированных системах генерации сеток начальная и конечная поверхности именуются на основе определенных правил (шаблонов). Например, всем начальным поверхностям даются названия "xxx.source", а всем конечным - "xxx.target". Это позволяет при автоматическом выборе направления протяжки использовать предопределенные имена, а не идентификационные номера. Задание начальных и конечных поверхностей протяжки на основе шаблонов имен осуществляется с помощью команды:

set {source | target} surface pattern '<pattern>' [include volume name]

Значение параметра pattern ('<pattern>') применяется для проверки всех поверхностей в модели посредством сравнения наименований с учетом регистра. Поверхность, содержащая соответствующую строку в своем имени, рассматривается либо как начальная, либо как конечная, в зависимости от опции, выбранной пользователем. Например:

br x 10
surface 1 name 'brick.top'
surface 2 name 'brick.bottom'
set source surface pattern 'top'
set target surface pattern 'bottom'
volume 1 scheme sweep
list volume 1 brief

Перераспределение узлов

Для перераспределения узлов сетки с целью избежать ее скошенности, применима команда:

volume <range> redistribute nodes {ON | off}

Если выбрать значение ON, то граничные узлы поверхности, разбитой по схеме Регулярная сетка, перемещаются пока расстояние между узлами не станет равным расстоянию между двумя противоположными кривыми. Ниже показана  сетка для связывающих поверхностей (см. Рис. 4), построенная по схеме Регулярная сетка. Видна сильная скошенность и низкое качество элементов объемной сетки, сгенерированной протяжкой, без перераспределения узлов (см. Рис. 5 и 6). Перераспределение узлов позволяет значительно уменьшить скошенность и повысить качество элементов (см. Рис. 7 и 8).

Примечания:

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

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

Рис. 4 - Связывающие поверхности объема, разбиваемого протяжкой, при наличии нескольких начальных поверхностей и одной конечной

Рис. 5 - Сильно скошенные элементы на связывающей поверхности, разбитой по схеме Регулярная сетка, без перераспределения узлов (redistribute nodes off)

Рис. 6 - Качество сетки без перераспределения узлов (redistribute nodes off)

Рис. 7 - Сетка, полученная в результате перераспределения узлов (redistribute nodes on)

Рис. 8 - Качество сетки с перераспределением узлов (redistribute nodes on)