💧 Симуляція рідини в реальному часі

2D-розв'язувач Нав'є–Стокса на основі безумовно стабільного напів-лагранжевого методу Жо Стама. Клацніть та перетягуйте канвас, щоб вводити швидкість і барвник. Розв'язувач обробляє дифузію, адвекцію та проєкцію тиску у кожному кадрі, підтримуючи поле течії безрозривним (нестисливим). 🇬🇧 English

Відображення

Початкові умови

Макс. швидкість0
Загальна щільність0
Розмір сітки

Рівняння Нав'є–Стокса

Рівняння Нав'є–Стокса для нестисливої рідини описують рух: ∂u/∂t = −(u·∇)u + ν∇²u + f разом з умовою нерозривності ∇·u = 0. Метод Стама розбиває кожен крок на три етапи: (1) Сили — введення швидкості/щільності від миші; (2) Дифузія — розмазування величин неявним методом Гаусса–Зейделя; (3) Адвекція — напів-лагранжеве перенесення часток назад у часі з інтерполяцією; (4) Проєкція — усунення дивергенції з поля швидкостей за допомогою розкладання Гельмгольца. Метод є безумовно стійким при будь-якому кроці часу.

Про симуляцію руху рідини в реальному часі

Ця симуляція розв'язує рівняння Нав'є–Стокса для нестисливої рідини на сітці 100×100, щоб змоделювати рух 2D-рідини та поширення барвника, який вона переносить. Використано безумовно стійку схему Йоса Стама: кожен кадр додає сили, розсіює швидкість і густину за допомогою неявного розв'язувача Гаусса–Зейделя, переносить величини, простежуючи характеристики назад у часі (напівлагранжів метод), а потім проєктує поле швидкості, щоб усунути дивергенцію (∇·u = 0).

Перетягуйте вказівник по полотну, щоб додати швидкість і барвник. Повзунок В'язкість задає, наскільки сильно згладжується імпульс, Дифузія керує поширенням барвника, а Згасання зменшує густину кожен кадр, тож сліди розсіюються. Кнопки Густина, Швидкість і Обидва перемикають кольорову карту, а пресети Вихор, Зсув і Струмінь задають класичні картини течії. Такі розв'язувачі забезпечують ефекти диму, води та вогню в іграх, кіно та візуальних ефектах.

Поширені запитання

Що насправді показує ця симуляція?

Вона показує нестисливу 2D-рідину в русі, візуалізовану або як поле кольорового барвника (густина), або як поле швидкості, забарвлене за напрямком, або як їх поєднання. Коли ви перетягуєте по полотну, ви додаєте імпульс і барвник, а розв'язувач переносить і розсіює їх кадр за кадром, тож ви бачите, як утворюються завихрення, струмені та зсувні шари.

Який метод використовується для розв'язання рівнянь рідини?

Реалізовано метод "Стійкі рідини" Йоса Стама. Кожен крок за часом поділено на стадії додавання сил, дифузії, переносу та проєкції. Дифузія та розв'язання тиску використовують приблизно 20 ітерацій лінійного розв'язувача Гаусса–Зейделя, а перенос застосовує напівлагранжеве зворотне простежування, що робить метод безумовно стійким за будь-якого кроку за часом.

Що робить крок проєкції?

Проєкція забезпечує нестисливість (∇·u = 0), обчислюючи поле тиску, градієнт якого віднімається від швидкості. Це розклад Гельмгольца–Ходжа: він прибирає дивергентну частину течії, зберігаючи масу рідини, тож вона не стискається й не розширюється.

Що контролює повзунок В'язкість?

В'язкість задає, наскільки швидко згладжуються відмінності швидкості, моделюючи внутрішнє тертя рідини (член ν∇²u). Повзунок відображає логарифмічно приблизно від 1e-6 до 1e-2; низькі значення дають тонку, турбулентну, завихрену течію, а високі — густий, сиропоподібний рух, що швидко згасає.

Яка різниця між В'язкістю та Дифузією?

В'язкість діє на поле швидкості, згладжуючи імпульс, тож сусідні ділянки гальмують одна одну. Дифузія діє на поле барвника (густини), поширюючи видимий колір назовні незалежно від течії. Можна мати рідину з низькою в'язкістю, що швидко рухається, але має дуже дифузний, розмитий барвник, або навпаки.

Що робить повзунок Згасання?

Згасання множить поле густини на коефіцієнт (0.80–1.00) кожен кадр, тож барвник поступово розсіюється, а не накопичується вічно. За 0.99 сліди затримуються й накопичуються; нижчі значення змушують доданий барвник швидко зникати, що корисно для спостереження поточної швидкості, а не всієї історії.

Що роблять пресети Вихор, Зсув і Струмінь?

Вихор задає обертове поле швидкості в центральному диску, створюючи закручений вир. Зсув задає протилежні горизонтальні швидкості у верхній і нижній половинах, формуючи зсувний шар у стилі Кельвіна–Гельмгольца. Струмінь упорскує спрямовану вгору швидкість і барвник уздовж низу, утворюючи висхідний струмінь рідини.

Чи фізично точна ця симуляція?

Це достовірний якісний розв'язувач рівнянь Нав'є–Стокса для нестисливої рідини, але він не кількісно точний. Напівлагранжів перенос додає числову дифузію, що згладжує дрібномасштабні деталі, сітка лише 100×100, і немає плавучості чи гравітації, тож він віддає перевагу візуальній стійкості та швидкості над точною інженерною достовірністю.

Що означає відображена статистика?

Максимальна швидкість — це найбільша величина швидкості, знайдена будь-де на сітці, у клітинках за секунду. Загальна густина — це сумарна кількість барвника по всіх клітинках, що зменшується через коефіцієнт Згасання. Розмір сітки показує роздільність симуляції, тут 100×100 внутрішніх клітинок плюс однокліткове граничне кільце.

Де такі розв'язувачі застосовуються в реальному світі?

Розв'язувачі стійких рідин лежать в основі ефектів диму, вогню, води та хмар у реальному часі у відеоіграх і кінематографічних візуальних ефектах, де швидкість і стійкість важливіші за точну фізику. Ті самі рівняння Нав'є–Стокса, розв'язані методами вищої точності, рухають інженерну обчислювальну гідродинаміку для аеродинаміки, погоди та потоку в трубах.