Стаття Гідродинаміка · ≈ ⏱ 11 хв читання

Чисельне рішення Нав'є-Стокса: FDM vs FVM vs LBM

Рівняння Нав'є-Стокса не мають загального аналітичного розв'язку, тож кожен CFD-солвер (обчислювальна гідродинаміка) змушений якось їх дискретизувати. У практиці домінують три родини методів: скінченних різниць, скінченних об'ємів та ґраткового Больцмана. Кожен робить свій компроміс між точністю, гнучкістю геометрії та тим, наскільки добре він лягає на GPU.

Коротко: FDM замінює похідні різницями на сітці — найпростіший підхід, але погано працює зі складною геометрією; FVM відстежує потоки через грані контрольних об'ємів, тому зберігає масу й імпульс точно і домінує в промисловому CFD на неструктурованих сітках; LBM моделює популяції часток на ґратці, чудово розпаралелюється на GPU і обробляє складні границі простими локальними правилами bounce-back.

1. Навіщо дискретизувати?

Нестисливі рівняння Нав'є-Стокса описують збереження імпульсу та маси для в'язкої рідини:

Імпульс ∂u/∂t + (u·∇)u = −∇p/ρ + ν∇²u + f

Нерозривність (нестисливість) ∇·u = 0

Нелінійний доданок адвекції (u·∇)u та зв'язок між швидкістю u та тиском p означають, що, окрім кількох ідеалізованих випадків (течія Пуазея, потік Стокса навколо сфери), аналітичного розв'язку не існує. Чисельні методи замінюють неперервне PDE скінченним набором алгебраїчних рівнянь, розв'язуваних у дискретних точках, комірках або вузлах ґратки. FDM, FVM і LBM відрізняються переважно тим, що саме дискретизується — похідні напряму, закони збереження над контрольними об'ємами, чи базовий кінетичний (розподіл часток) опис рідини.

2. Метод скінченних різниць (FDM)

FDM замінює похідні алгебраїчними різницевими відношеннями на структурованій сітці. Найпростіша центральна різниця для другої похідної (в'язкий член дифузії):

Центральна різниця (2-га похідна) ∂²u/∂x² ≈ (ui+1 − 2ui + ui−1) / Δx²

Класичний нестисливий солвер на базі FDM — метод проекції Чоріна: спочатку просуваємо швидкість, ігноруючи тиск, потім розв'язуємо рівняння Пуассона для тиску та віднімаємо його градієнт, щоб забезпечити ∇·u = 0.

Метод проекції (3 кроки) 1. u* = uⁿ + Δt·(−(u·∇)u + ν∇²u) (адвекція + дифузія, без тиску)
2. ∇²p = (ρ/Δt)·∇·u* (рівняння Пуассона для тиску)
3. un+1 = u* − (Δt/ρ)·∇p (проекція на бездивергентне поле)

Переваги: концептуально просто, легко реалізувати на рівномірних сітках — стандартний вибір для real-time солверів у стилі "stable fluids" для диму/води (див. нашу статтю Нав'є-Стокс у WebGL).

Недоліки: погано працює з нерегулярною геометрією — вигнута стінка циліндра не вирівняна з декартовою сіткою, тому граничні умови потребують спеціальних технік immersed-boundary. Збереження маси лише наближене, якщо розв'язок Пуассона недостатньо збіжний, а стабільність вимагає умови CFL: Δt ≤ Δx/|u|max.

3. Метод скінченних об'ємів (FVM)

FVM виходить з інтегральної форми законів збереження замість диференціальної. Область розбивається на малі контрольні об'єми (комірки), і для кожної комірки метод відстежує чистий потік маси та імпульсу крізь її грані:

Інтегральне збереження (загальний скаляр φ) d/dt ∫V φ dV + ∮∂V (φu·n̂) dA = ∮∂V (Γ∇φ·n̂) dA + ∫V S dV

Оскільки теорема про дивергенцію перетворює об'ємні інтеграли похідних на поверхневі інтеграли потоків, FVM консервативний за побудовою — все, що покидає одну комірку крізь грань, точно (до машинної точності) потрапляє в сусідню комірку крізь ту саму грань. Це головна причина, чому FVM домінує в промисловому CFD (OpenFOAM, Fluent, StarCCM+): захоплення ударних хвиль, баланс маси та неструктуровані (тетраедричні/поліедричні) сітки навколо складної геометрії — кузов авто, лопатки турбіни, циліндр — усе випливає природно.

Компроміс — складність реалізації: схеми реконструкції потоків (upwind, QUICK, TVD-лімітери) та структури даних неструктурованих сіток значно об'ємніші за простий декартовий шаблон FDM, а реконструкція градієнта в центрах комірок вносить власну чисельну дифузію, якщо зроблена недбало.

4. Метод ґраткового Больцмана (LBM)

LBM бере зовсім іншу відправну точку: замість дискретизації макроскопічних рівнянь Нав'є-Стокса він дискретизує транспортне рівняння Больцмана для спрощеної кінетичної моделі рідини — популяцій уявних часток fi(x, t), які можуть рухатись лише вздовж малого, фіксованого набору напрямків ґратки (9 у 2D, модель "D2Q9").

Рівняння ґраткового BGK fi(x + eiΔt, t + Δt) = fi(x, t) − (1/τ)·[fi(x, t) − fieq(x, t)]

Кожен часовий крок — це рівно дві локальні операції: зіткнення (релаксація розподілів кожного вузла до локальної рівноваги feq, яка є функцією лише локальної густини та швидкості) та стрімінг (зсув кожного розподілу на один крок ґратки вздовж свого напрямку). Найважливіше — макроскопічна поведінка Нав'є-Стокса, включно з точним тиском та в'язкістю, виникає з цього мікроскопічного правила через розклад Чепмена-Енскога, без жодного разу складання чи розв'язання глобальної лінійної системи.

Переваги: обидва кроки вище торкаються лише вузла та його безпосередніх сусідів, тож LBM надзвичайно паралелізується — ідеально для GPU compute shaders. Складні границі (циліндр, зразок пористої породи) обробляються простими локальними правилами bounce-back замість глобальної генерації сітки. Саме це — метод за нашою статтею Метод Больцмана на ґратці у 200 рядках JS та симуляцією вихорів Кармана.

Недоліки: стандартна ґратка рівномірна, тому локальне подрібнення сітки біля стінки (де градієнти пограничного шару найкрутіші) потребує спеціальних multi-block або адаптивних технік. Дуже високе число Рейнольдса, сильно стисливі чи стратифіковані потоки виводять метод за межі його «зони комфорту» без розширень (multi-relaxation time, ентропійний LBM, каскадний оператор зіткнення).

5. Порівняльна таблиця

ВластивістьFDMFVMLBM
Що дискретизуєтьсяПохідні PDE в точках сіткиІнтегральне збереження над контрольними об'ємамиКінетичне рівняння Больцмана на швидкісній ґратці
ЗбереженняНаближенеТочне (за побудовою)Точне (маса й імпульс — моменти f)
Складна геометріяПогано (потрібен immersed boundary)Відмінно (неструктуровані сітки)Добре (локальний bounce-back, але рівномірна ґратка)
Розв'язок тискуГлобальне рівняння Пуассона щокрокуГлобальна корекція тиску (SIMPLE, PISO)Не потрібен — тиск є локальним моментом f (p = cs²ρ)
Паралелізм / GPUДобре (структуровані шаблони)Помірно (неструктурований, нерегулярний доступ до пам'яті)Відмінно (повністю локальні оновлення)
Типове застосуванняНавчання, real-time графіка/димПромисловий CFD, авіація, автопромПористі середовища, мікрофлюїдика, real-time GPU CFD
Стисливий потікТак, з обережністюТак, стандартноОбмежено (за замовчуванням наближення низького Маха)
Спільне для всіх

Усі три методи повинні задовольняти межу стабільності, пов'язану зі швидкістю поширення інформації: умова CFL для FDM/FVM та аналогічне обмеження швидкості ґратки (u < cs/√3 ≈ 0.577 у ґраткових одиницях) для LBM.

6. Який метод обрати?

  • Вивчення основ або real-time демо диму/води: FDM з методом проекції — найменше коду, добре задокументовано ("Stable Fluids" Йоса Стама).
  • Симуляція обтікання реального авто, крила чи лопатки турбіни з сертифікованою точністю: FVM — галузевий стандарт із зрілими моделями турбулентності (k-ε, k-ω SST) та валідованими солверами.
  • Інтерактивний GPU-прискорений CFD, пористі середовища чи мікрофлюїдика: LBM — тривіальний паралелізм та проста обробка границь виграють, коли потрібно багато кроків при інтерактивному фреймрейті.

На практиці професійні пайплайни часто комбінують методи: FVM для високоточного сертифікаційного розрахунку, LBM для швидкого дослідження простору проєктування, і FDM-солвери для художніх real-time превʼю в іграх та власних браузерних симуляціях цього сайту.

▶ Демо наживо

🧮 Спробуйте солвер Нав'є-Стокса

Ейлерів сітковий солвер із методом проекції, описаним вище — малюйте дим, спостерігайте, як завихрення закручуються в реальному часі.

Відкрити симуляцію →

🔗 Пов'язані симуляції

🌀Вихори Кармана 💨NS-солвер 🏊Коефіцієнт опору