Построение трехмерных нерегулярных сеток

реклама
ПОСТРОЕНИЕ ТРЁХМЕРНЫХ АДАПТИВНЫХ НЕРЕГУЛЯРНЫХ СЕТОК
ДЕФОРМИРОВАНИЕМ ЯЧЕЕК К ГЕКСАЭДРИЧЕСКОМУ ШАБЛОНУ
Г.В. ИОНОВ
Российский Федеральный Ядерный Центр – ВНИИ технической физики, Россия, Снежинск, g.v.ionov@vniitf.ru
Введение
Развитие вычислительной мощности компьютерной техники позволяет увеличивать сложность задач газодинамики и теплопроводности, которые можно просчитать за приемлемое время. Таким образом, моделирование физических процессов всё чаще производится в трёхмерном пространстве. Для моделирования конечно-разностными
методами нужно создать сетку в расчётной области. Большинство конечно-разностных схем дают меньшую погрешность на сетках, состоящих из гексаэдрических ячеек, близких по форме к кубическим ячейкам. В то же время,
описать произвольную расчётную область регулярной сеткой из кубических ячеек невозможно. Поэтому задача генерации сеток в произвольной области с преобладанием гексаэдрических ячеек является актуальной.
Существующие методы построения сеток с преобладанием гексаэдрических ячеек делятся на два класса [1]:
• прямые методы, в которых ячейки добавляются непосредственно, обычно начиная с поверхностей;
• непрямые методы, в которых построение сетки осуществляется через промежуточную тетраэдрическую сетку.
В данной работе использован третий подход, в котором работа на начальных этапах ведётся с узлами без формирования ячеек.
Краткий алгоритм следующий.
1. Описание расчётной области.
2. Заполнение расчётной области только узлами без задания ячеек, граней и рёбер.
3. Молекулярная динамика узлов, которая обеспечивает их выведение на поверхность расчётной области и снятие
напряжений в поликристаллической упаковке.
4. Генерация гексаэдрических ячеек.
В связи с многостадийностью и итерационностью алгоритма он не является быстрым, однако, может быть сделан масштабируемым. То есть, время построения сетки будет расти пропорционально N*log(N), где N – это количество узлов сетки.
1. Описание расчётной области
Описание расчётной области можно провести двумя способами. Первый способ состоит в описании ограничивающих поверхностей сеткой, состоящей из многоугольников. Второй способ – задание ограничивающих поверхностей в аналитическом виде. В данном алгоритме использован второй подход. Первый способ может также быть
реализован, если зафиксировать узлы поверхностной сетки и задать многоугольные грани аналитически.
2. Заполнение расчётной области узлами
Область, ограниченная аналитическими поверхностями заполняется узлами с помощью шаблона, состоящего из
двух первых координационных сфер кубической решётки (рис. 1). При этом шаблон масштабируется на заданный в
узле размер ячейки и ориентируется вдоль нормали к ближайшей поверхности. Размер ячейки определяется заказчиком сетки и описывается трёхмерной функцией S(x,y,z), которая адаптирует сетку к физическим особенностям
задачи.
Можно строить сетки для областей с произвольной геометрией, проиллюстрируем все этапы работы алгоритма
Рисунок 2. Шаблон окружения узла сетки из гексаэдрических ячеек.
Рисунок 1. Начальное множество точек.
на достаточно простой задаче построения сетки в кубической области, то есть в области пространства от -1.0 до
+1.0 по каждому измерению. При этом зададим функцию размера ячеек в виде S(x,y,z) = 0.1 + 0.03*(z+1). В конце
приведём примеры сеток построенных в более сложных областях.
Заполнение начинается с точки, максимально удалённой от всех поверхностей. Так как аналитически эту точку в
общем случае найти сложно, то методом Монте-Карло ищется точка достаточно далёкая от всех поверхностей. Находится параллелепипед, описанный вокруг расчётной области, и в нём случайно выбираются точки. При достаточно большом размере выборки найденная точка лежит достаточно близко к искомой. Вокруг найденной точки строится множество из 3х3х3 точек, образующее 8 равных кубических ячеек со стороной, определяемой значением
функции размера ячейки в центральной точке (рис. 2).
Для дальнейшего процесса добавления и выравнивания точек вводится шаблон узла кубической решётки (рис.
2). Он охватывает первые две координационные сферы кубической решётки. Первая координационная сфера на рисунке изображена кружками, а вторая – выколотыми точками. Для данного узла, обозначенного крестиком, находится соответствие между точками шаблона и окружающими его узлами.
После этого производится корректировка шаблона к локальным условиям, накладываемым на сетку. Для этого
сначала шаблон с помощью метода наименьших квадратов приводится в наилучшее соответствие с имеющимися
узлами. Затем его размер изменяется так, чтобы сторона ячейки соответствовала заданной функции размера ячейки,
опредёлённой в точке положения центрального узла.
Желательно, чтобы ячейки вблизи поверхностей повторяли их изгибы. Это достигается ориентированием шаблона вдоль нормали к ближайшей поверхности.
После масштабирования и разворота шаблона производится частичное смещение узлов к положениям точек
шаблона.
Далее точки шаблона, которые остались без соответствующих узлов, порождают новые узлы сетки, если они не
лежат слишком далёко за пределами расчётной области (не дальше, чем на расстоянии пол-ячейки от поверхности).
На рисунке 3 порождённые узлы обозначены кляксами.
Создание новых узлов приводит к росту занятой узлами области. При этом встаёт вопрос о заполнении областей,
состоящих из нескольких отдельных частей. Если зазор между поверхностями двух частей многосвязной области
превысит размер ячейки, то процесс заполнения не сможет перекинуться из первой области во вторую. Для обхода
этого препятствия к заполнению узлами всей расчётной области можно производить дополнительные поиски свободных пространств после того, как узлы перестают добавляться.
Надо заметить, что кроме добавления новых узлов предусмотрена также процедура удаления пар узлов, которые
оказались слишком близко друг к другу по сравнению с функцией размера ячеек.
Построение шаблонов для всех существующих узлов итерационно повторяется, пока количество узлов не перестанет возрастать в течение нескольких итераций.
Решение алгоритма имеет следующие свойства. Плавные изгибы поверхностей, тупые или острые углы, которые
невозможно описать одним доменом прямоугольной сетки, приводят к автоматическому разбиению пространства
на несколько «кристаллов» с различной ориентацией ячеек. Меняющаяся в пространстве расчётной области функция размера ячеек также может привести к большим напряжениям и образованию нескольких доменов. При этом на
границе доменов расстояние между соседними узлами оказывается близким к величине заданной функцией размера
ячеек.
Множество узлов, полученное для рассматриваемого примера, показано на рисунке 4. Видно, что часть точек
оказалась за пределами области потому, что мы допустили создание узлов вблизи поверхности за пределами расчётной области. Это было сделано с целью дальнейшего выведения части узлов на поверхность.
Рисунок 3. Добавление новых узлов.
Рисунок 4. Сетка после первого этапа работы
алгоритма.
Рисунок 5. Силы, действующие между узлами.
Рисунок 6. Сетка после второго этапа работы алгоритма.
3. Выведение узлов на поверхность расчётной области и снятие напряжений в поликристаллической упаковке узлов
На данном этапе, как и на предыдущем, алгоритм работает также только с узлами, причём не изменяет их количество. Он предназначен для переноса узлов на поверхность и снятия сильных напряжений внутри доменов и между
ними. Такая аналогия с поликристаллическим образцом позволяет использовать молекулярно-динамический подход
для решения задачи. Все узлы полагаются материальными точками единичной массы, между которыми действуют
силы, зависящие от взаимного расстояния и топологии.
Для расчёта сил (рис. 1) строится шаблон для каждого узла. Между найденными парами узлов (обозначены
стрелками) действует сила притяжения или отталкивания пропорциональная отклонению расстояния между ними
от равновесного значения, определяемого функцией размера ячеек. Равнодействующая сила приводит к ускорению
каждого узла.
При расчёте движения точек используется сила трения пропорциональная первой и третей степени скорости.
Первое слагаемое приводит к постепенной потере полной энергии системой узлов, что обеспечивает снятие напряжений и замораживание системы. Второе слагаемое гасит быстрые движения отдельных частиц и обеспечивает устойчивость расчёта.
На рисунке 6 представлено положение узлов после проведения 5000 шагов молекулярной динамики. Видно, что
узлы вышли на поверхности куба, но в то же время часть узлов была вынуждена нарушить строгий порядок. Возможно, что для более качественного размещения узлов в области нужно проводить отжиг, то есть повышать температуру системы до частичного или полного расплавления системы, а потом совершать медленное охлаждение. Это
приведёт к автоматическому выкристаллизовыванию кубической решётки, но может занять существенно больше
расчётного времени.
Таким образом, необходима оптимизация работы этого шага алгоритма. Так как основное время тратится на расчёт топологии взаимодействующих узлов то можно делать несколько шагов молекулярной динамики без пересчёта
топологии. Значительная часть времени также уходит на проверку пересечения узлом границ области в то время,
Рисунок 7. Триангуляция Делоне.
Рисунок 8. После работы алгоритма получения гексаэдрических ячеек.
как многие узлы лежат глубоко и никогда не пересекают границ. Этот факт также можно учесть.
4. Генерация гексаэдрических ячеек
Целью работы данного алгоритма является построение сетки, которую можно описать как множество ячеек полностью покрывающих область без зазоров. Гарантированным и наиболее простым способом построения такой сетки
является триангуляция Делоне. Производится она с помощью библиотеки CGAL[4].
Полученное множество тетраэдрических ячеек служит исходным набором для построения гексаэдрических ячеек. Построение производится посредством итерационного объединения ячеек и граней.
Каждая ячейка проверяется сначала на возможность объединения с другой ячейкой, затем проверяется возможность объединения граней ячейки.
Объединение ячеек происходит через грань с максимальной площадью, если она содержит три узла или узлы не
лежат в одной плоскости. В результате объединения ячеек могут образоваться рёбра, к которым примыкает лишь
две грани. Такие грани, затем, сливаются в одну.
Объединение ячеек производится, если каждая из них имеет меньше 6 граней. После завершения работы такого
алгоритма объединения ячеек остаются преимущественно гексагональные ячейки. Остальные ячейки могут иметь
треугольные грани, но их количество невелико.
Если для задачи недопустимо наличие треугольных граней или ячеек отличных от гексаэдрических, то нужно
применение дополнительных алгоритмов, подобных используемым в работе [3] способам перестроения сетки вблизи особенных ячеек.
Результат слияния ячеек для нашей задачи показан на рисунке 8. За исключением небольшого количества ячейки
получились гегсаэдрическими, и соответствующими размеру заданному функцией S(x,y,z). При этом, двухмерные
сетки на гранях куба имеют также прямоугольный характер и хорошо описывают поверхность.
Пример построения сетки в области между сферой и поверхностью куба
В качестве примера приведём работу алгоритма в более сложной области. Рассмотрим построение сетки в пространстве между сферой и поверхностью куба.
В куб с длиной ребра равной 2 помешена сфера радиусом 0.75. Сфера смещена в сторону одной из граней куба
(на рисунке 9 вправо и ближе к нам). Задана функция размера ячеек в виде S(x,y,z) = 0.07 + 0.03*(z+1).
Построение сетки привело к возникновению нескольких (порядка десяти) доменов с различной ориентацией
ячеек. На рисунке 10 показан фрагмент сетки, открывающий центральную сферическую полость. Сетка к поверхности сферы прилегает преимущественно квадратными гранями. Домены возле сферы изгибаются, пытаясь повторить
её профиль. Размер ячеек также меняется в соответствии с заданной функцией.
Здесь стоит отметить, что построение регулярной прямоугольной сетки вблизи поверхности сферы невозможно.
Здесь ситуация осложняется тем, что должен меняться размер ячейки. Это приводит к довольно большому числу
особенных ячеек вблизи поверхности сферы, которые компенсируют повороты и напряжения.
Заключение
Разработан алгоритм автоматического построения адаптивных сеток с преобладанием гексаэдрических ячеек в
областях произвольной формы, которые могут быть описаны аналитически заданными поверхностями. Входными
параметрами являются: описание области пространства, в которой должна быть построена сетка; функция желательного размера ячейки, зависящая от точки в пространстве. Результатом работы является множество ячеек, преимущественно гексаэдрической формы, покрывающих область построения сетки без зазоров и перекрытий.
В дальнейшем предполагается проведение работы по оптимизации времени работы алгоритма, увеличению разнообразия аналитически задаваемых поверхностей, построению сеток в несвязных областях, дополнительной чистке сетки от ячеек отличных от гексаэдрических.
Рисунок 9. Вид извне.
Рисунок 10. Срез через сферическую полость.
Список литературы
1. Steve Owen. “An Introduction to Mesh Generation Algorithms”, http://www.andrew.cmu.edu/~sowen/mesh.html.
2. Steven J. Owen, David R. White “Mesh-based geometry: a systematic approach to constructing geometry from a
finite element mesh.”
3. Steven J. Owen “HEX-dominant mesh generation using3D constrained triangulation”, SAND2000-1355J
4. “CGAL User and Reference Manual”, http://www.cgal.org
Скачать