Добавить в корзинуПозвонить
Найти в Дзене
Numerical Simulations

Когда сетка не стыкуется: спектральные элементы на неконформных сетках

В мире спектральных элементов есть одна железная константа: сетка должна быть гексаэдральной (или четырехугольной в 2D). Это дает высокий порядок, экспоненциальную сходимость и удобную явную схему интегрирования. Но есть и обратная сторона: построить гексаэдральную сетку для сложной геометрии — задача, способная испортить настроение на несколько месяцев. А если добавить геофизику, где скорости волн в разных слоях различаются в разы? Тогда шаг сетки должен быть везде разным: в медленном слое — мелко, чтобы разрешить короткую длину волны, в быстром — крупно, чтобы не переплачивать за ненужные степени свободы. В конформной гексаэдральной сетке это означает либо равномерное измельчение всей области (дорого), либо построение изощренных переходных слоев (сложно). Неконформные сетки предлагают элегантный выход: разбиваем область на подобласти, в каждой строим свою регулярную сетку с нужным шагом, а на границах позволяем узлам не совпадать. Пример на Рисунке 1 из работы: сверху крупные элемент

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

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

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

Но как заставить спектральный метод работать на такой «рваной» сетке? Ведь базисные функции на соседних подобластях теперь не стыкуются естественным образом.

Решение — ввести на границе вспомогательную функцию λ(t, γ), которая задает перемещения и обеспечивает непрерывность давления. Математически это выглядит как вариация граничного условия: мы ищем такую функцию, которая одновременно удовлетворяет условиям склейки и делает решение единым.

В дискретном виде это приводит к системе матричных уравнений, где появляется матрица перехода B, связывающая базисы двух подобластей на границе. Ключевое наблюдение: эта матрица ненулевая только для узлов на границе, а комбинация (D·M⁻¹·c²·B)⁻¹ вычисляется один раз на этапе инициализации. На каждом шаге по времени остается только применить уже готовое преобразование.

В вычислительном эксперименте для трехслойной модели с газогидратной прослойкой (скорости: 3000, 600 и 4000 м/с) неконформная сетка позволила использовать в каждом слое свой шаг — 15 м, 3 м и 20 м соответственно. Результат: 1878 элементов против примерно 7500 для равномерной сетки с минимальным шагом. В четыре раза меньше.

-2

-3

-4

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

Главный вывод: неконформность — это не баг, а фича. Она позволяет строить сетки там, где конформные либо невозможны, либо неоправданно дороги. А метод с вариацией граничного условия делает такую сетку работоспособной без потери спектральной точности.

-5