Отказ от уравнений Навье-Стокса в пользу статистической механики
Традиционные методы CFD (Computational Fluid Dynamics) опираются на уравнения Навье-Стокса, которые требуют сложной дискретизации и генерации сеток, особенно для сложных геометрий. Статья демонстрирует альтернативу — Метод решеточных уравнений Больцмана (LBM). Вместо поиска поля скоростей, LBM моделирует жидкость как статистическое распределение частиц. Макроскопические свойства (вихри, давление) возникают как следствие микроскопических столкновений, а не задаются явно.
Аппроксимация BGK и физический смысл параметра τ
Ключевое упрощение — аппроксимация BGK (Bhatnagar-Gross-Krook), предложенная в 1954 году. Она заменяет сложный интеграл столкновений на релаксацию к равновесию с временем τ. Это позволяет восстановить уравнения Навье-Стокса в пределе малых чисел Кнудсена. Параметр τ становится единственным физическим «ручкой» настройки вязкости:
| Параметр | Значение/Действие | Физический эффект |
|---|---|---|
| τ (время релаксации) | Увеличение значения | Рост вязкости (медленное течение) |
| τ (время релаксации) | Приближение к 0.5 | Высокое число Рейнольдса (турбулентность) |
| τ (время релаксации) | Менее ~0.55 | Численная неустойчивость (риск краха симуляции) |
| Скорость звука (cs) | 1/√3 (в решеточных единицах) | Ограничивает допустимую скорость потока (низкое число Маха) |
Реализация D2Q9 и алгоритм из ~200 строк
Для 2D-симуляций используется решетка D2Q9 (2 измерения, 9 направлений скорости): 1 покоящаяся частица, 4 осевых и 4 диагональных. Веса фиксированы для обеспечения изотропии. Алгоритм состоит из двух основных шагов на каждом такте:
- Collision (Столкновение): Локальная релаксация распределения f к равновесному состоянию feq. Не требует обмена данными между узлами.
- Streaming (Поток): Перенос частиц в соседние узлы. Здесь критична оптимизация памяти: использование паттерна pull (сбор данных) вместо push (запись) предотвращает ложное разделение кэша (false sharing) и ускоряет вычисления.
Масштабирование на суперкомпьютере MareNostrum 5
Автор не ограничился локальной реализацией на Python/NumPy, но и портировал код на C++ с использованием OpenMP для параллелизма. Тестирование проводилось на суперкомпьютере MareNostrum 5. Такой подход демонстрирует, что LBM, будучи «embarrassingly parallelizable» (легко параллелизуемым), эффективно использует современные высокопроизводительные вычислительные системы для моделирования сложных явлений, таких как уличка Кармана за препятствиями.
Источник: Towards Data Science ↗
