Strona głównaArtykułyDynamika płynów

Równania w płytkiej wodzie: Przebicia zapór, rowy i rozwiązanie Roe

Jak dwie zasady zachowania i liniowe rozwiązanie Riemanna odtwarzają tsunami, pływowe rowy i zniszczoną zapórę od podstaw.

mysimulator teamZaktualizowano — czerwiec 2026≈ 10 min czytania▶ Otwórz symulację

Spadanie złożonych przepływów 3D do dwóch równań

Równania płytkiej wody (zwane również równaniami Saint-Venanta) opisują cienką warstwę płynu, w której wymiar poziomy znacznie przewyższa jej głębokość – rzeka, zalana łąka, tsunami przecinający ocean basen lub duże systemy pogodowe atmosfery. Uśrednianie pogłębienia pełnych, trójwymiarowych równań inkompresyjnych Navier-Stoksa pod założeniem hydrostatycznym redukuje całą strukturę pionową do dwóch zachowanych wielkości na punkt: głębokość h i uśredniony przez głębokość moment p hu.

∂U/∂t + ∂F(U)/∂x = S U = [h, hu]ᵀ, F(U) = [hu, hu² + ½gh²]ᵀ Prędkości fal (wartości własne Jacobiego przepływu): λ = u ± c, c = √(gh) Liczba Froude’a: Fr = |u| / c → Fr1 krytyczny Celeritas c = √(gh) pełni tę samą rolę co prędkość dźwięku w dynamice gazów, a Fr jest bezpośrednim analogiem liczby Froude'a w płytkiej wodzie – dlatego też ta sama maszyna obliczeniowa zbudowana dla aerodynamiki sprężonej przenosi się niemal bez zmian.

∂U/∂t + ∂F(U)/∂x = S      U = [h, hu]ᵀ,  F(U) = [hu, hu² + ½gh²]ᵀ
Wave speeds (eigenvalues of the flux Jacobian): λ = u ± c,  c = √(gh)
Froude number: Fr = |u| / c   →  Fr<1 subcritical, Fr>1 supercritical

Przybliżony rozpuszczalnik Riemanna dla Roesa

Schemat skończonych objętości aktualizuje każdą komórkę z przepływów na jej dwóch interfejsach. Obliczanie przepływu na granicy między dwoma różnymi stanami — "problem Riemanna" — ma dokładne rozwiązanie, ale jest ono nieliniowe i iteracyjne. Sztuczka Phila Roesa z 1981 roku polega na jego liniaryzacji: buduje się specjalnie ważony średni stan (û, ĉ) z komórek po lewej i prawej oraz rozwiązuje to wynikający z tego problem liniowy dokładnie.

û = (√h_L·u_L + √h_R·u_R) / (√h_L + √h_R) Przeciętna prędkość Roesa ĉ = √( g·(h_L + h_R)/2 ) Przeciętna prędkość celeracji Roesa F_i+½ = ½(F_L + F_R) − ½ Σ |λ̂ₖ| αₖ rₖ termin |λ̂| reprezentuje dyfuzję numeryczną Ten termin dyfuzyjny to co utrzymuje schemat stabilny w przypadku fali uderzeniowej — rozmywa discontynuitet na kilka komórek zamiast oscylować wokół niego — ale sam jest tylko pierwszego rzędu dokładności. Rekonstrukcja MUSCL (Monotone Upstream-Centred Schemes for Conservation Laws) odzyskuje drugi rząd poprzez interpolację ograniczonego profilu liniowego wewnątrz każdej komórki przed rozwiązaniem Roesa, używając ogranicznika nachylenia — minmod, van Leer lub superbee — który tłumi fałszywe oscylacje, które mogłyby powstać przy naiwnym liniowym wyciąganiu wniosków w pobliżu fali uderzeniowej.

û = (√h_L·u_L + √h_R·u_R) / (√h_L + √h_R)     Roe-averaged velocity
ĉ = √( g·(h_L + h_R)/2 )                      Roe-averaged celerity
F_i+½ = ½(F_L + F_R) − ½ Σ |λ̂ₖ| αₖ rₖ          the |λ̂| term is numerical diffusion

Warunek CFL: jak daleko można się przędzić jednym krokiem

Ponieważ schemat jest analityczny, krok czasowy nie może przekroczyć najszybszej fali w domenie. Warunek Courant-Friedrichschlewy ogranicza Δt tak, aby informacja nie przemieszczała się więcej niż o jedną komórkę na krok:

Δt ≤ CFL · Δx / max(|u| + c)     safe CFL ≈ 0.9 first-order, ≈ 0.5 with MUSCL+RK2
demo na żywo · powiązana symulacja● LIVE

Problem z suchym podłożem

Symulacje powodziowe standardowo muszą uwzględniać suche obszary, gdzie h → 0. Jest to niebezpieczne obliczeniowo: prędkość celerity c = √(gh) zanika, prędkość u = hu/h staje się dzieleniem przez zero, a naiwny solver Roe może generować ujemne głębokości i całkowicie się wyłamać. Rozwiązania praktyczne obejmują próg głębokości, który traktuje komórki o bliskiej wartości zerowej jako solidne ściany, ograniczniki zachowujące dodatniość, które przycinają h ≥ 0 po każdym kroku, oraz – bardziej rygorystyczną opcję – hydrostatyczna rekonstrukcja (Audusse et al., 2004), która rekonstruuje głębokości interfejsu na podstawie nachylenia krawędzi, aby zapewnić, że są one gwarantowane jako nieujemne. Ta sama rekonstrukcja nadaje schematowi właściwość dobrze zbalansowaną: jezioro w spoczynku z nierównym dnem pozostaje dokładnie w spoczynku, zamiast dryfować pod wpływem szumów numerycznych wynikających z niedokładnie skorygowanych członów przepływu i źródłowych.

Jedna równanie, wiele zjawisk

Ten sam system dwóch równań, z różnymi źródłami termów włączonymi, odtwarza szeroki zakres rzeczywistych przepływów. Nagła awaria tamy jest niemal czystym drywem i ciśnieniem, rozpadając się na rozrzedzenie fali uciekającej do góry strumienia i falę szokową uciekającą w dół strumienia – problem Riemanna z podręcznika, który symulacja tego artykułu rozwiązuje bezpośrednio. Turlin pływowy dodaje tarcia dna do tego równowagi. Czwartorzęd morski jest dominowany przez ciśnienie na ogromnych skalach długości, poruszający się z prędkością blisko 200 m/s w głębokich wodach. Dodanie termu Coriolis f = 2Ω sin(φ) opisuje geostroficzne prążkowania oceaniczne i sztormowe podmuchy, gdzie obrót Ziemi zbalansowuje gradient ciśnienia na skalach setek kilometrów lub więcej.

Frequently asked questions

Co to jest liczba Froude i dlaczego ma ona znaczenie dla równań dla wody płytkiej?

Liczba Froude Fr = |u|/c porównuje prędkość przepływu u do prędkości rozchodzenia się fal w wodzie płytkiej c = √(gh). Fr 1 oznacza przepływ supercriticalny (strzelający), w którym nie mogą. Fr = 1 wskazuje na przeskok hydrauliczny, analogiczny do fali uderzeniowej w wodzie płytkiej.

Dlaczego używa się przybliżonego rozwiązania równania Riemanna zamiast rozwiązywania dokładnie problemu Riemanna?

Dokładne rozwiązanie problemu Riemanna dla równań dla wody płytkiej wymaga iteracyjnego, nieliniowego rozwiązania w każdym elemencie interfejsowym, w każdym kroku czasowym. Linearyzacja Roe'go zastępuje to pojedynczym krokiem algebry liniowej przy użyciu specjalnie uśrednionego stanu, który jest szybki, konserwatywny i wystarczająco dokładny do symulacji powodzi i fal morskich.

Dlaczego proste solvery zawodzą na suchym dnie?

Wraz ze zmniejszaniem się głębokości h, prędkość rozchodzenia się fal c = √(gh) również zbliża się do zera, a prędkość u = hu/h staje się dzieleniem przez liczbę niewyobrażalnie małą, co powoduje ogromne lub ujemne wartości głębokości. Naprawy obejmują progi głębokości, które traktują bliskie-suchych komórki jako ściany, ograniczniki zachowujące dodatniość, które przycinają h po każdym kroku oraz hydrostatyczną rekonstrukcję, która gwarantuje nieujemne wartości głębokości dzięki konstrukcji.

Wypróbuj na żywo

Wszystko powyżej działa bezpośrednio w Twojej przeglądarce — otwórz the simulation i zmieniaj parametry podczas działania. Nic nie jest instalowane ani przesyłane na serwer, cały model działa w jednej karcie.

▶ Otwórz symulację the simulation

Co znalazłeś?

Dodaj kroki odtworzenia (opcjonalnie)