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

 

Сглаживание сетки

После генерации сетки иногда бывает необходимо модифицировать ее с помощью либо изменения положений отдельных узлов, либо полной замены. С этой целью в Fidesys включен ряд схем сглаживания сетки. При этом область сглаживания может быть ограничена - путем указания узлов или геометрических объектов, положение которых не должно изменяться. Доступны следующие схемы сглаживания (в скобках приведены англоязычные названия):

Родственными темами являются следующие:

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

Выбор схемы сглаживания осуществляется с помощью команды:

{curve | surface | volume} <range> smooth scheme <scheme>

В качестве <scheme> указывается любая приемлемая схема сглаживания из доступных (см. выше).

Сглаживание выполняется следующими командами:

smooth curve <range>

smooth surface <range> [global]

smooth {body | volume | group} <range>

Параметр глобального сглаживания (global) рассматривается ниже. Если задано ключевое слово body, то сглаживается сетка на  всех  входящих в тело объемах. При задании group производится сглаживание только объемных сеток в составе указанной группы; сглаживание поверхностных сеток не выполняется.

Глобальное сглаживание

Глобальное сглаживание, задаваемое в команде посредством параметра global, применимо при сглаживании набора поверхностей. Если у двух соседних поверхностей допустимо передвигать узлы на их границе, то использование глобального сглаживания дает в районе граничной кривой (или кривых) сетку наиболее высокого качества.

Сфокусированное сглаживание групп сеточных объектов

Сеточные объекты - такие, как гексаэдры или треугольные элементы, - могут подвергаться сглаживанию индивидуально или сгруппированными путем задания их перечня:

smooth {hex | tet} <range> [scheme {equipotential | Laplacian | random}]

Для сглаживания отдельных граней (фасет) или треугольников используется команда:

smooth {face | tri} <range> [scheme {Laplacian | centroid | Winslow}] [target surface <ID>]

Задание целевой поверхности (target surface <ID>) позволяет передвинуть ребра сетки с какой-либо поверхности на эту поверхность. Грани или треугольники могут сглаживаться независимо от того, принадлежат ли они определенной поверхности. Таким образом, эта опция может оказаться особенно полезной при сглаживании свободной сетки. Опционное задание схемы сглаживания позволяет применять при использовании целевой поверхности релаксационные алгоритмы, реализующие, например, сглаживание растягиванием к центрам (centroid), лапласово сглаживание (Laplacian), сглаживание Уинслоу (Winslow). В настоящее время такая возможность недоступна для алгоритмов сглаживания на основе оптимизации.

Сглаживание отдельных ребер, принадлежащих какой-либо кривой, выполняется с помощью команды:

smooth edge <ID_range> [scheme Laplacian] [target curve <ID>]

Задание целевой кривой (target curve <ID>) обеспечивает перемещение на нее ребер сетки с другой кривой. В настоящее время в рамках этого варианта команды возможно использование только лапласова сглаживания.

Точность сглаживания

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

[set] smooth tolerance <tol>

Значение <tol> означает, что остановить передвижение узлов следует, когда их абсолютные величины станут меньше, чем tol*local_minimum_edge_length, где local_minimum_edge_length - местная минимальная длина ребра. Значение tol по умолчанию равно 0,05.

Максимальное число итераций так же может быть определено пользователем. Для объемов точность сглаживания и максимальное число итераций определяются с помощью команд:

volume smooth tolerance <tol>

volume smooth iterations <iters>

Сглаживание сетки на границах

Если при сглаживании сетки нужно обеспечить передвижение узлов на границах объектов, можно использовать команды:

{curve | surface | volume} <range> node position {fixed | free}

node <range> position {fixed | free}

Ключевое слово free позволяет узлам, лежащим на граничных сеточных объектах, "плавать" по этим объектам; без такого ключевого слова узлы на границе остаются зафиксированными.

В случае использования fixed положения узлов фиксируются так, что ни одна схема сглаживания, ни явная, ни неявная, не сможет передвинуть их.

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

{curve | surface | volume} mesh {fixed | free}

В исследовательских целях доступны дополнительные схемы сглаживания сетки; они активируются в режиме разработчика посредством команды set developer on. К таким схемам относится, в частности, рандомизированное сглаживание.