ГоловнаСтаттіОбчислювальна Рідша́рдна Механіка

Латте́йс-Болтцма́ннський Потік: Динаміка Рідин з Кінетичної Тео́рії

Не потрібно безпосередньо розв’язувати рівняння Навієра-Стоксa — симулюйте зіткнення популяцій частинок на невеликій решітці, і рух рідини виникне як наслідок.

mysimulator teamОновлено — червень 2026≈ 12 хв читання▶ Відкрити симуляцію

Мезоскопічний обхід навколо рівнянь Нав'є-Стоксa

Більшість кодових систем чисельного гідродинамічного моделювання безпосередньо атакують рівняння Нав’є-Стоксa: дискретизують макроскопічні поля — щільність ρ, швидкість u, тиск p — на сітку та просувають їх вперед, зазвичай вимагаючи глобального розв’язку тиску-Пойссона кожного кроку для підтримки відмінності потоку. Метод Латте-Болцмана (ЛБМ) використовує зовсім інший підхід, запозичений з кінетичної теорії: замість макроскопічних полів він відстежує популяції вигаданих частинок, що перестрибують між сусідніми клітинками сітки та взаємодіють локально. Щільність і швидкість відновлюються пізніше як прості суми — поведінка рідини не нав’язується, вона виникає.

Неперервне рівняння Болцмана, ∂f/∂t + ξ·∇f = Ω(f), розбиває еволюцію рідини на потоковий термін (частинки, що вільно рухаються) та термін зіткнення Ω, який повертає розподіл f до локального рівноваги. Ключова хитрость ЛБМ полягає в дискретизації як простору, так і швидкості одночасно: простір стає регулярною сіткою, а неперервний простір швидкостей колапсує до кількох фіксованих напрямків на вузол. Незважаючи на значне спрощення, розширення Чапмена-Енскога показує, що оновлення відновлює безразрядні рівняння Нав’є-Стоксa другого порядку відносно числа Маха.

жива демонстрація · пов'язана симуляція● LIVE

D2Q9 – дев'ять напрямків на вузол

Найбільш поширеною двовимірною сіткою є D2Q9: 2 виміри, 9 дискретних напрямків швидкості на вузол – вісім напрямків компасу плюс стан спокою. Кожен напрямок несе вагу, обрану таким чином, щоб сітка правильно відтворювала моменти маси та імпульсу безперервного рівноважного розподілу:

e0=(0,0) rest              w0 = 4/9
e1..4 = axis-aligned N/E/S/W    w1..4 = 1/9
e5..8 = diagonal NE/NW/SE/SW    w5..8 = 1/36

// Σ w_i = 1  → conserves mass
// speed of sound on the lattice: c_s² = 1/3

Зіткнення, потім потік

Кожен крок часу робить точно дві речі в кожній ноді. По-перше, зіткнення: кожна з дев'яти популяцій f_i повертається до свого локального рівноважного значення f_i^eq з частотою, встановленою часом розслаблення τ — BGK-апроксимація (Bhatnagar-Gross-Krook), яка замінює повний інтеграл зіткнень на єдину лінійну релаксацію:

f_i* = f_i − (1/τ) · (f_i − f_i^eq) // зіткнення f_i^eq = w_i · ρ · [1 + 3(e_i·u) + 4.5(e_i·u)² − 1.5·u²] кінематична в'язкість: ν = (τ − 0.5) / 3 // τ встановлює в'язкість безпосередньо По-друге, потік: кожна популяція f_i*, що утворилася після зіткнення, переміщується точно на одну комірку у своєму напрямку e_i, тобто f_i(x + e_i, t+1) = f_i*(x, t). Крок зіткнення повністю локальний — кожна нода оновлюється незалежно від своїх сусідів, використовуючи лише свої дев'ять чисел — тоді як потік потребує лише даних першого сусіда. Ця локальність є причиною того, чому LBM так добре паралелізується на GPU: глобальної лінійної системи для розв’язку не потрібно ні в якому разі у циклі.

τ повинен залишатися вище 0.5 для стабільності, і практично число Маха |u|/c_s повинно залишатися комфортно нижчим приблизно 0.3 — якщо будь-який з цих лімітів буде порушено, то припущення про низьку швидкість, що лежить в основі всієї схеми, руйнується і симуляція розвалюється.

f_i* = f_i − (1/τ) · (f_i − f_i^eq)         // collision

f_i^eq = w_i · ρ · [1 + 3(e_i·u) + 4.5(e_i·u)² − 1.5·u²]

kinematic viscosity:  ν = (τ − 0.5) / 3      // τ sets viscosity directly

Восстановление плотности и скорости

Макроскопические величины, которые действительно важны для пользователя — плотность и скорость — это моменты из девяти популяций, находящихся в узле, вычисленные за один проход по локальным данным:

ρ(x,t) = Σ_i f_i(x,t) // нулевой момент: масса ρ·u_x(x,t) = Σ_i f_i(x,t) · e_ix // первый момент: импульс ρ·u_y(x,t) = Σ_i f_i(x,t) · e_iy давление (идеальный газ, единицы решетки): p = ρ·c_s² = ρ/3 Твердые границы используют самый простой доступный трюк «отскок» — популяция, достигающая узла стены, отражается прямо в направлении, откуда она пришла, что воспроизводит нулевую скорость на стене с помощью только локальных операций. Входы и выходы с заданной скоростью или давлением используют более слобшую схему Zou-He, которая аналитически решает неизвестные входящие популяции на границе.

ρ(x,t)    = Σ_i f_i(x,t)              // zeroth moment: mass
ρ·u_x(x,t) = Σ_i f_i(x,t) · e_ix       // first moment: momentum
ρ·u_y(x,t) = Σ_i f_i(x,t) · e_iy

pressure (ideal-gas form, lattice units): p = ρ·c_s² = ρ/3

Як використовується симуляція тут

Симуляція на цьому сайті запускає повний цикл зіткнень потоків на сітці D2Q9 кожного кадру, з твердим об'єктом, який знаходиться в рівномірному поточному струмі та відбивається на його межі. При помірній роздільній здатності сітки весь цикл — зіткнення, потоки, обробка меж і рендеринг за кольором швидкості — комфортно запускається з 60 кадрами в секунду в простому JavaScript на масивах типів; не потрібен прохід WebGL compute до тих пір, поки сітка не стане значно більшою. Спостерігайте за потоком при помірному числовому поточності та ви побачите класичну вулицю Кармана віхтів за об'єктом — чергуючі віхти, що відшаровуються, повністю як наслідок того ж локального правила зіткнення, яке запускається на кожній ноді, без будь-якої логіки вивітрювання віхтів написано в коді.

Часті запитання

Чому метод Латтецу-Болтцмана моделює вигадані частинки замість безпосереднього розв’язання рівнянь Навіє-Стокс?

LBM працює на мезоскопічному рівні, відстежуючи розподіли популяцій частинок у невеликому фіксованому наборі напрямків решітки та дозволяючи простому локальному правилу зіткнень їх розслабляти до стану рівноваги. Розширення Чампена-Енскога показує, що це відновлює незмінені рівняння Навіє-Стокс як наслідок, тоді як фактичний обчислення на кожному кроці є лише локальними додаваннями та пошуками, які природніше паралелізуються, ніж розв’язання глобальної рівняння тиску-Пойссона на кожному кроці.

Що саме контролює час релаксації τ на етапі зіткнення BGK?

τ встановлює кінематичну в’язкість симульованої рідини, через ν = (τ − 0.5)/3 в одиницях решітки. Більший τ означає більш в'язку, сиропну рідину; τ, що наближається до 0.5, означає, що в’язкість наближається до нуля. Симуляція стає чисельно нестабільною, коли τ стає занадто близьким до 0.5, особливо при вищих швидкостях потоку, тому реальні реалізації підтримують число Маха невеликим і τ комфортно вище цього значення.

Чому використовується відбиття від стін замість просто встановлення швидкості до нуля?

Відбиття від стін відображає кожну щойно прибулу популяцію частинок назад у напрямку, з якого вона прийшла, на вузлі стіни, що відтворює безтертюву межу (нульову швидкість на поверхні) за допомогою локальних операцій першого сусіда, які відповідають потоковій структурі LBM. Безпосереднє застосування швидкості вимагало б розв’язання відповідних функцій розподілу на межі, що робить схема Zou-He, коли потрібно забезпечити конкретну швидкість вхідного або вихідного потоку замість простої твердої стіни.

Спробуйте наживо

Усе, що вище, працює прямо у вашому браузері — відкрийте the simulation і змінюйте параметри під час роботи. Нічого не встановлюється, нічого не завантажується на сервер, уся модель живе в одній вкладці.

▶ Відкрити симуляцію the simulation

Що ви знайшли?

Додати кроки відтворення (опційно)