Поверхня води h(x,t) — синє заповнення, дно коричневе
Швидкість u(x,t) та число Фруда Fr(x)

Про цю симуляцію

Ця симуляція розв'язує одновимірні рівняння мілкої води (Сен-Венана) — збереження маси ∂h/∂t + ∂(hu)/∂t = 0 та імпульсу ∂(hu)/∂t + ∂(hu²+½gh²)/∂x = 0 — методом скінченних об'ємів із потоком типу Лакса-Фрідріхса та адаптивним кроком за часом, обмеженим числом CFL, щоб схема лишалась стійкою навіть коли швидкість хвилі змінюється. Чотири сценарії використовують один і той самий розв'язувач: класичний прорив дамби (стрибок глибини h), хлюпання у резервуарі (синусоїдальна початкова поверхня), хвильовий потяг від межі та рухомий гідравлічний перепад — це дозволяє порівняти, як та сама фізика мілкої води породжує бори, коливання хлюпання та усталені хвильові потяги.

🔬 Що показано

Одновимірний стовпчик води з висотою h(x) та усередненим за глибиною імпульсом hu(x), що покроково обчислюється методом скінченних об'ємів. Функція потоку обчислює hu та hu·u+½gh² на кожній грані комірки, а умова CFL dt = CFL·dx/max(|u|+√(gh)) утримує явну схему стійкою навіть коли бор від прориву дамби прискорюється.

🎮 Як користуватись

Оберіть сценарій (Прорив дамби, Хлюпання, Хвиля, Перепад), потім рухайте повзунки Лівої та Правої висоти, щоб задати початкові глибини води по обидва боки від дамби, налаштуйте коефіцієнт шорсткості Маннінга для тертя об дно та число CFL, щоб обрати компроміс між стійкістю та швидкістю. Загальна маса відстежується відносно початкового значення (mass0), тож можна перевіряти закон збереження під час роботи симуляції.

💡 Чи знали ви?

Задача про прорив дамби має точний аналітичний (Ріттера) розв'язок для дна без тертя, тому вона є стандартним підручниковим тестом для перевірки будь-якої нової числової схеми мілкої води перед застосуванням до річок, цунамі чи заплав.

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

Що таке рівняння мілкої води (Сен-Венана)?

Це спрощення рівнянь Нав'є-Стокса, усереднене за глибиною, справедливе коли горизонтальний масштаб набагато більший за глибину води. Вони відстежують лише висоту h(x,t) та інтегрований за глибиною імпульс hu(x,t), тому їх можна дешево розв'язувати в 1D, зберігаючи при цьому хвилі, бори та хлюпання.

Що фізично відбувається у сценарії прориву дамби?

Задання різних лівої (hL) та правої (hR) висот і їх звільнення моделює раптове руйнування дамби: вищий стовпчик обвалюється у нижчий, породжуючи удароподібний бор, що просувається у мілку сторону, та хвилю розрідження, що відступає у глибоку сторону — точнісінько як при реальному паводковому підйомі.

Навіщо симуляції потрібен крок за часом, обмежений CFL?

Явні схеми скінченних об'ємів стійкі лише якщо інформація не може перетнути більш ніж одну комірку сітки за крок. Оскільки швидкість хвилі дорівнює u±√(gh), код перераховує dt = CFL·dx/max_швидкість_хвилі на кожному кроці, щоб швидкий бор у сценарії Дамби чи швидкий Перепад не випередив числову схему й не спричинив розбіжність.

Що контролює повзунок шорсткості Маннінга?

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

Навіщо відстежується загальна маса під час симуляції?

Оскільки дискретизовані рівняння записані у консервативній формі (різниці потоків між сусідніми комірками), загальний об'єм води Σh·dx має лишатись рівним початковому значенню mass0 для будь-якого замкненого чи періодичного домену — відстеження цього значення є живою перевіркою того, що числова схема штучно не створює й не знищує воду.